Add the Labs projects provided in the V10.2.1_191129 zip file.
diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/DemoTasks/SimpleHTTPSExamples.c b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/DemoTasks/SimpleHTTPSExamples.c
new file mode 100644
index 0000000..a543fae
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/DemoTasks/SimpleHTTPSExamples.c
@@ -0,0 +1,520 @@
+/*

+ * FreeRTOS Kernel V10.2.1

+ * 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://www.FreeRTOS.org

+ * http://aws.amazon.com/freertos

+ *

+ * 1 tab == 4 spaces!

+ */

+

+/*

+ * This file contains the common functions for plain text, basic TLS, and mutual

+ * authentication HTTPS demos. Aside from the difference in security level during

+ * connect, the three demos perform the same interaction with a HTTPS host. The

+ * demo creates a singe application task that loops through a set of examples

+ * demonstrating how to the connect to the server, send a few types of requests to

+ * the server (GET, HEAD, PUT, POST), and disconnect from the server again. All

+ * of the responses and their associated HTTPS response status codes are printed

+ * to the console.

+ *

+ * The plain text HTTP demo does not authenticate the server nor the client. The

+ * basic TLS HTTPS demo builds on top of the plain text demo, adding broker

+ * authentication and encryption. The mutual authentication HTTPS demo builds on

+ * top of the basic TLS demo, enabling both server and client authentication.

+ *

+ * For more information regarding the HTTPS library and the demo, please refer to:

+ * https://www.freertos.org/https/index.html

+ */

+

+/* Standard includes. */

+#include <string.h>

+#include <stdio.h>

+

+/* Kernel includes. */

+#include "FreeRTOS.h"

+#include "task.h"

+

+/* FreeRTOS+TCP includes. */

+#include "FreeRTOS_IP.h"

+

+/* IoT SDK includes. */

+#include "iot_https_client.h"

+#include "iot_taskpool_freertos.h"

+#include "platform/iot_network_freertos.h"

+

+/* HTTPS Demo Select */

+#include "demo_config.h"

+

+/* Select HTTPS profile based on the setting in demo_config.h */

+#if ( democonfigPROFILE_USE_AWS_IOT == 1 )

+	#include "aws_iot_demo_profile.h"

+#else

+	#include "https_demo_profile.h"

+#endif

+

+/* Preprocessor check iot configuration */

+#include "aws_iot_setup_check.h"

+

+/*

+ * Set the connection profile based on settings in demo_config.h. For more

+ * information on each variable, please refer to the respective *_profile.h

+ * file in FreeRTOS-Labs\Demo\FreeRTOS_IoT_Libraries\include.

+ *

+ * Note that if you are running the https_tls_mutual_auth demo please make sure

+ * to visit the following link for setup:

+ * https://www.freertos.org/https/preconfiguredexamplesMA.html

+ */

+#if defined( AWS_IOT_DEMO_PROFILE_H )

+	#define httpsexampleHTTPS_SERVER_ADDRESS		awsiotdemoprofileAWS_ENDPOINT

+	#define httpsexampleHTTPS_SERVER_PORT			awsiotdemoprofileAWS_HTTPS_PORT

+	#define httpsexampleHTTPS_SERVER_CERTIFICATE	awsiotdemoprofileAWS_CERTIFICATE_PEM

+	#define httpsexampleCLIENT_CERTIFICATE_PEM		awsiotdemoprofileCLIENT_CERTIFICATE_PEM

+	#define httpsexampleCLIENT_PRIVATE_KEY_PEM		awsiotdemoprofileCLIENT_PRIVATE_KEY_PEM

+#elif defined( HTTPS_DEMO_PROFILE_H )

+	#define httpsexampleHTTPS_SERVER_ADDRESS		httpsdemoprofileSERVER_ADDRESS

+	#define httpsexampleHTTPS_SERVER_PORT			httpsdemoprofileSERVER_PORT

+	#define httpsexampleHTTPS_SERVER_CERTIFICATE	httpsdemoprofileSERVER_CERTIFICATE_PEM

+#endif

+

+/*

+ * Each preconfigured host supports different request paths. In this demo, we

+ * are using httpbin and AWS IoT.

+ *

+ * In the demos that uses httpbin.org see http://httpbin.org/#/HTTP_Methods for

+ * details on supported REST API.

+ **/

+#if defined( AWS_IOT_DEMO_PROFILE_H )

+	#define httpsexampleHTTPS_POST_PATH	   "/topics/" awsiotdemoprofileCLIENT_IDENTIFIER

+#elif defined( HTTPS_DEMO_PROFILE_H )

+	#define httpsexampleHTTPS_GET_PATH	   "/ip"

+	#define httpsexampleHTTPS_HEAD_PATH	   "/ip"

+	#define httpsexampleHTTPS_PUT_PATH	   "/put"

+	#define httpsexampleHTTPS_POST_PATH	   "/post"

+#endif

+

+/**

+ * @brief The length in bytes of the user buffer to store the HTTPS Client library

+ * connection context.

+ *

+ * The minimum size can be found in @ref connectionUserBufferMinimumSize.

+ */

+#define httpsexampleCONNECTION_USER_BUFFER_LENGTH	 ( 512 )

+

+/**

+ * @brief The length in bytes of the user buffer to store the HTTPS Client library

+ * request context.

+ *

+ * The minimum size can be found in @ref requestUserBufferMinimumSize.

+ */

+#define httpsexampleREQUEST_USER_BUFFER_LENGTH		 ( 512 )

+

+/**

+ * @brief The length in bytes of the user buffer to store the HTTPS Client library

+ * response context.

+ */

+#define httpsexampleRESPONSE_USER_BUFFER_LENGTH		 ( 512 )

+

+/**

+ * @brief Some text to send as the request body for a PUT and POST request in

+ * this examples.

+ */

+#define httpsexampleREQUEST_BODY_TEXT				 "Hello, world!"

+

+/**

+ * @brief The length in bytes of the buffer used to receive the response body.

+ */

+#define httpsexampleRESPONSE_BODY_BUFFER_LENGTH		 ( 512 )

+

+/**

+ * @brief Timeout in ms for HTTPS operations in this example.

+ */

+#define httpsexampleHTTPS_TIMEOUT_MS				 ( 5000 )

+

+/*-----------------------------------------------------------*/

+

+/**

+ * @brief The HTTPS connection handle used in this example.

+ */

+static IotHttpsConnectionHandle_t xHTTPSConnection = IOT_HTTPS_CONNECTION_HANDLE_INITIALIZER;

+

+/**

+ * @brief A buffer used to store the HTTPS Client library's connection context.

+ */

+static uint8_t ucHTTPSConnectionUserBuffer[ httpsexampleCONNECTION_USER_BUFFER_LENGTH ] = { 0 };

+

+/**

+ * @brief A buffer used to store the HTTPS Client library's request context and

+ * some headers.

+ */

+static uint8_t ucHTTPSRequestUserBuffer[ httpsexampleREQUEST_USER_BUFFER_LENGTH ] = { 0 };

+

+/**

+ * @brief A buffer used to store the HTTPS Client library's response context and

+ * some headers.

+ */

+static uint8_t ucHTTPSResponseUserBuffer[ httpsexampleRESPONSE_USER_BUFFER_LENGTH ] = { 0 };

+

+/**

+ * @brief The request body.

+ */

+static char cHTTPSRequestBodyBuffer[] = httpsexampleREQUEST_BODY_TEXT;

+

+/**

+ * @brief A buffer used to receive the HTTPS Client library's response body.

+ */

+static uint8_t ucHTTPSResponseBodyBuffer[ httpsexampleRESPONSE_BODY_BUFFER_LENGTH ] = { 0 };

+

+/**

+ * @brief The task used to demonstrate the HTTPS Client API.

+ *

+ * @param[in] pvParameters Parameters as passed at the time of task creation. Not

+ *            used in this example.

+ */

+static void prvHTTPSDemoTask( void * pvParameters );

+

+/**

+ * @brief Connects to the HTTPS server as specified in httpsexampleHTTPS_SERVER_ADDRESS

+ * and httpsexampleHTTPS_SERVER_PORT.

+ */

+static void prvHTTPSConnect( void );

+

+/**

+ * @brief Creates and sends an HTTPS request to the HTTPS server specified in

+ * httpsexampleHTTPS_SERVER_ADDRESS and httpsexampleHTTPS_SERVER_PORT.

+ *

+ * @param[in] xMethod The HTTPS method to use. Please #IotHttpsMethod_t for

+ *            possible parameters.

+ * @param[in] pcPath The path for the HTTPS request.

+ * @param[in] ulPathLength The length of the input pcPath.

+ */

+static void prvHTTPSRequest( IotHttpsMethod_t xMethod,

+							 const char * pcPath,

+							 uint32_t ulPathLength );

+

+/**

+ * @brief Disconnects from the HTTPS server.

+ */

+static void prvHTTPSDisconnect( void );

+

+/**

+* @brief Initializes the IoT libraries used by this demo.

+*/

+static void prvInitialiseLibraries( void );

+

+/*-----------------------------------------------------------*/

+

+/**

+ * @brief Parameters used to create the system task pool.

+ */

+static const IotTaskPoolInfo_t xTaskPoolParameters =

+{

+	/* Minimum number of threads in a task pool.

+	 * Note the slimmed down version of the task

+	 * pool used by this library does not auto-scale

+	 * the number of tasks in the pool so in this

+	 * case this sets the number of tasks in the

+	 * pool. */

+	1,

+

+	/* Maximum number of threads in a task pool.

+	 * Note the slimmed down version of the task

+	 * pool used by this library does not auto-scale

+	 * the number of tasks in the pool so in this

+	 * case this parameter is just ignored. */

+	1,

+

+	/* Stack size for every task pool thread - in

+	 * bytes, hence multiplying by the number of bytes

+	 * in a word as configMINIMAL_STACK_SIZE is

+	 * specified in words. */

+	configMINIMAL_STACK_SIZE * sizeof( portSTACK_TYPE ),

+	/* Priority for every task pool thread. */

+	tskIDLE_PRIORITY,

+};

+/*-----------------------------------------------------------*/

+

+static const IotHttpsConnectionInfo_t xConnectionInfo =

+{

+	/* No connection to the HTTPS server has been established yet and we want to

+	 * establish a new connection. */

+	.pAddress = httpsexampleHTTPS_SERVER_ADDRESS,

+	.addressLen = sizeof( httpsexampleHTTPS_SERVER_ADDRESS ) - 1,

+	.port = httpsexampleHTTPS_SERVER_PORT,

+	.userBuffer.pBuffer = ucHTTPSConnectionUserBuffer,

+	.userBuffer.bufferLen = sizeof( ucHTTPSConnectionUserBuffer ),

+

+	/* Use FreeRTOS+TCP network. */

+	.pNetworkInterface = IOT_NETWORK_INTERFACE_FREERTOS,

+

+	/* The HTTPS Client library uses TLS by default as indicated by the "S"

+	 * postfixed to "HTTP" in the name of the library and its types and

+	 * functions. There are no configurations in the flags to enable TLS. */

+	.flags = 0,

+

+	/* Optional TLS extensions. For this demo, they are disabled. */

+	.pAlpnProtocols = NULL,

+	.alpnProtocolsLen = 0,

+

+	/* Provide the certificate for authenticating the server. */

+	#if ( democonfigENABLE_TLS == 1 )

+		.pCaCert = httpsexampleHTTPS_SERVER_CERTIFICATE,

+		.caCertLen = sizeof( httpsexampleHTTPS_SERVER_CERTIFICATE ),

+	#else

+		.pCaCert = NULL,

+		.caCertLen = 0,

+	#endif

+

+	/* The HTTPS server at httpbin.org:443 does not require client certificates,

+	 * but AWS IoT does.

+	 * If the server were to require a client certificate, the following members

+	 * need to be set. */

+	#if ( democonfigENABLE_MUTUAL_AUTH == 1 )

+		.pClientCert = httpsexampleCLIENT_CERTIFICATE_PEM,

+		.clientCertLen = sizeof( httpsexampleCLIENT_CERTIFICATE_PEM ),

+		.pPrivateKey = httpsexampleCLIENT_PRIVATE_KEY_PEM,

+		.privateKeyLen = sizeof( httpsexampleCLIENT_PRIVATE_KEY_PEM )

+	#else

+		.pClientCert = NULL,

+		.clientCertLen = 0,

+		.pPrivateKey = NULL,

+		.privateKeyLen = 0

+	#endif

+};

+/*-----------------------------------------------------------*/

+

+void vStartSimpleHTTPSDemo( void )

+{

+	/* This example uses a single application task, which in turn is used to

+	* connect, send a few requests, and disconnect from the HTTPS server. */

+	xTaskCreate( prvHTTPSDemoTask,         /* Function that implements the task. */

+				 "HTTPSDemo",              /* Text name for the task - only used for debugging. */

+				 democonfigDEMO_STACKSIZE, /* Size of stack (in words, not bytes) to allocate for the task. */

+				 NULL,                     /* Task parameter - not used in this case. */

+				 tskIDLE_PRIORITY,         /* Task priority, must be between 0 and configMAX_PRIORITIES - 1. */

+				 NULL );                   /* Used to pass out a handle to the created task - not used in this case. */

+}

+/*-----------------------------------------------------------*/

+

+static void prvHTTPSDemoTask( void * pvParameters )

+{

+	/* Remove compiler warnings about unused parameters. */

+	( void ) pvParameters;

+

+	/* One time initialization of the libraries used by this demo. */

+	prvInitialiseLibraries();

+

+	for( ; ; )

+	{

+		/****************************** Connect. ******************************/

+

+		/* Establish a connection to the HTTPS server. This example connects to

+		 * the HTTPS server as specified in httpsexampleHTTPS_SERVER_ADDRESS and

+		 * httpsexampleHTTPS_SERVER_PORT at the top of this file. Please change

+		 * it to the HTTPS server you want to connect to. */

+		configPRINTF( ( "Attempt to connect to %s:%d\r\n", httpsexampleHTTPS_SERVER_ADDRESS, httpsexampleHTTPS_SERVER_PORT ) );

+		prvHTTPSConnect();

+		configPRINTF( ( "Connected to %s:%d\r\n", httpsexampleHTTPS_SERVER_ADDRESS, httpsexampleHTTPS_SERVER_PORT ) );

+

+		/*********************** Send HTTPS requests. ************************/

+

+		/* The client is now connected to the server. This example will send a

+		 * GET, HEAD, PUT, and POST request. For AWS IoT profile, the example will

+		 * only send a POST request.

+		 **/

+		#if defined( httpsexampleHTTPS_GET_PATH )

+			configPRINTF( ( "Sending HTTPS GET request...\r\n" ) );

+			prvHTTPSRequest( IOT_HTTPS_METHOD_GET,

+							 httpsexampleHTTPS_GET_PATH,

+							 sizeof( httpsexampleHTTPS_GET_PATH ) - 1 );

+		#endif

+		#if defined( httpsexampleHTTPS_HEAD_PATH )

+			configPRINTF( ( "Sending HTTPS HEAD request...\r\n" ) );

+			prvHTTPSRequest( IOT_HTTPS_METHOD_HEAD,

+							 httpsexampleHTTPS_HEAD_PATH,

+							 sizeof( httpsexampleHTTPS_HEAD_PATH ) - 1 );

+		#endif

+		#if defined( httpsexampleHTTPS_PUT_PATH )

+			configPRINTF( ( "Sending HTTPS PUT request...\r\n" ) );

+			prvHTTPSRequest( IOT_HTTPS_METHOD_PUT,

+							 httpsexampleHTTPS_PUT_PATH,

+							 sizeof( httpsexampleHTTPS_PUT_PATH ) - 1 );

+		#endif

+		#if defined( httpsexampleHTTPS_POST_PATH )

+			configPRINTF( ( "Sending HTTPS POST request...\r\n" ) );

+			prvHTTPSRequest( IOT_HTTPS_METHOD_POST,

+							 httpsexampleHTTPS_POST_PATH,

+							 sizeof( httpsexampleHTTPS_POST_PATH ) - 1 );

+		#endif

+

+		/**************************** Disconnect. *****************************/

+

+		prvHTTPSDisconnect();

+		configPRINTF( ( "Disconnected from %s:%d\r\n\r\n", httpsexampleHTTPS_SERVER_ADDRESS, httpsexampleHTTPS_SERVER_PORT ) );

+

+		/* Wait between iterations to avoid server throttling. */

+

+		configPRINTF( ( "prvHTTPSDemoTask() completed an iteration successfully. "

+						"Total free heap is %u\r\n",

+						xPortGetFreeHeapSize() ) );

+		configPRINTF( ( "Demo completed successfully.\r\n" ) );

+		configPRINTF( ( "Short delay before starting the next iteration.... \r\n\r\n" ) );

+		vTaskDelay( pdMS_TO_TICKS( httpsexampleHTTPS_TIMEOUT_MS ) );

+	}

+}

+

+/*-----------------------------------------------------------*/

+

+static void prvHTTPSConnect( void )

+{

+IotHttpsReturnCode_t xHTTPSClientResult;

+

+	/* Establish the connection to the HTTPS server - It is a blocking call and

+	 * will return only when the connection is complete or a timeout occurs. */

+	xHTTPSClientResult = IotHttpsClient_Connect( &( xHTTPSConnection ),

+												 &( xConnectionInfo ) );

+	configASSERT( xHTTPSClientResult == IOT_HTTPS_OK );

+}

+

+/*-----------------------------------------------------------*/

+

+static void prvHTTPSRequest( IotHttpsMethod_t xMethod,

+							 const char * pcPath,

+							 uint32_t ulPathLength )

+{

+IotHttpsReturnCode_t xHTTPSClientResult;

+IotHttpsRequestInfo_t xHTTPSRequestInfo = IOT_HTTPS_REQUEST_INFO_INITIALIZER;

+IotHttpsResponseInfo_t xHTTPSResponseInfo = IOT_HTTPS_RESPONSE_INFO_INITIALIZER;

+IotHttpsRequestHandle_t xHTTPSRequest = IOT_HTTPS_REQUEST_HANDLE_INITIALIZER;

+IotHttpsResponseHandle_t xHTTPSResponse = IOT_HTTPS_RESPONSE_HANDLE_INITIALIZER;

+IotHttpsSyncInfo_t xHTTPSSyncRequestInfo = IOT_HTTPS_SYNC_INFO_INITIALIZER;

+IotHttpsSyncInfo_t xHTTPSSyncResponseInfo = IOT_HTTPS_SYNC_INFO_INITIALIZER;

+uint16_t usResponseStatus = 0;

+

+	configASSERT( pcPath != NULL );

+

+	/************************** HTTPS request setup. ***************************/

+

+	if( ( xMethod == IOT_HTTPS_METHOD_PUT ) || ( xMethod == IOT_HTTPS_METHOD_POST ) )

+	{

+		xHTTPSSyncRequestInfo.pBody = ( uint8_t * ) cHTTPSRequestBodyBuffer;

+		xHTTPSSyncRequestInfo.bodyLen = sizeof( cHTTPSRequestBodyBuffer );

+	}

+	else

+	{

+		xHTTPSSyncRequestInfo.pBody = NULL;

+		xHTTPSSyncRequestInfo.bodyLen = 0;

+	}

+

+	xHTTPSRequestInfo.pHost = httpsexampleHTTPS_SERVER_ADDRESS;

+	xHTTPSRequestInfo.hostLen = sizeof( httpsexampleHTTPS_SERVER_ADDRESS ) - 1;

+	xHTTPSRequestInfo.pPath = pcPath;

+	xHTTPSRequestInfo.pathLen = ulPathLength;

+	xHTTPSRequestInfo.method = xMethod;

+	xHTTPSRequestInfo.isNonPersistent = false;

+	xHTTPSRequestInfo.userBuffer.pBuffer = ucHTTPSRequestUserBuffer;

+	xHTTPSRequestInfo.userBuffer.bufferLen = sizeof( ucHTTPSRequestUserBuffer ) - 1;

+	xHTTPSRequestInfo.isAsync = false;

+	xHTTPSRequestInfo.u.pSyncInfo = &xHTTPSSyncRequestInfo;

+

+	xHTTPSClientResult = IotHttpsClient_InitializeRequest( &( xHTTPSRequest ),

+														   &( xHTTPSRequestInfo ) );

+	configASSERT( xHTTPSClientResult == IOT_HTTPS_OK );

+

+	/************************** HTTPS response setup. **************************/

+

+	memset( ucHTTPSResponseBodyBuffer, 0, sizeof( ucHTTPSResponseBodyBuffer ) );

+

+	if( xMethod == IOT_HTTPS_METHOD_HEAD )

+	{

+		xHTTPSSyncResponseInfo.pBody = NULL;

+		xHTTPSSyncResponseInfo.bodyLen = 0;

+	}

+	else

+	{

+		xHTTPSSyncResponseInfo.pBody = ucHTTPSResponseBodyBuffer;

+		xHTTPSSyncResponseInfo.bodyLen = sizeof( ucHTTPSResponseBodyBuffer );

+	}

+

+	xHTTPSResponseInfo.userBuffer.pBuffer = ucHTTPSResponseUserBuffer;

+	xHTTPSResponseInfo.userBuffer.bufferLen = sizeof( ucHTTPSResponseUserBuffer );

+	xHTTPSResponseInfo.pSyncInfo = &xHTTPSSyncResponseInfo;

+

+	/*************************** Send HTTPS request. ***************************/

+

+	/* This synchronous send function blocks until the full response is received

+	 * from the network. */

+	xHTTPSClientResult = IotHttpsClient_SendSync( xHTTPSConnection,

+												  xHTTPSRequest,

+												  &( xHTTPSResponse ),

+												  &( xHTTPSResponseInfo ),

+												  httpsexampleHTTPS_TIMEOUT_MS );

+	configASSERT( xHTTPSClientResult == IOT_HTTPS_OK );

+

+	/* The response status is only available if the httpsexampleRESPONSE_USER_BUFFER

+	 * is large enough to fit not only the HTTPS Client response context, but

+	 * also the Status-Line of the response. The Status-Line and the response

+	 * headers are stored in the provided ucHTTPSResponseUserBuffer right after

+	 * the HTTPS Client response context. */

+	xHTTPSClientResult = IotHttpsClient_ReadResponseStatus( xHTTPSResponse,

+															&usResponseStatus );

+	configASSERT( xHTTPSClientResult == IOT_HTTPS_OK );

+

+	configPRINTF( ( "Response status: %d\r\n", usResponseStatus ) );

+	configPRINTF( ( "Response body: \r\n%s\r\n", ucHTTPSResponseBodyBuffer ) );

+

+	/* The response body may be too large for the print buffer. These extra

+	 * carriage returns and newlines help with clobbering. */

+	configPRINTF( ( "\r\n\r\n" ) );

+}

+

+/*-----------------------------------------------------------*/

+

+static void prvHTTPSDisconnect( void )

+{

+IotHttpsReturnCode_t xHTTPSClientResult;

+

+	/* The application must always explicitly disconnect from the server with

+	 * this API if the last request sent on the connection was a persistent

+	 * request. */

+	xHTTPSClientResult = IotHttpsClient_Disconnect( xHTTPSConnection );

+	configASSERT( xHTTPSClientResult == IOT_HTTPS_OK );

+}

+

+

+static void prvInitialiseLibraries( void )

+{

+IotTaskPoolError_t xTaskPoolResult;

+IotHttpsReturnCode_t xHTTPSClientResult;

+IotNetworkError_t xNetworkResult;

+

+	/* The HTTPS Client library needs a task pool, so create the system task pool. */

+	xTaskPoolResult = IotTaskPool_CreateSystemTaskPool( &( xTaskPoolParameters ) );

+	configASSERT( xTaskPoolResult == IOT_TASKPOOL_SUCCESS );

+

+	/* Initialize the network stack abstraction for FreeRTOS. */

+	xNetworkResult = IotNetworkFreeRTOS_Init();

+	configASSERT( xNetworkResult == IOT_NETWORK_SUCCESS );

+

+	/* HTTPS Client library must be initialized before it can be used. This is

+	 * just one time initialization. */

+	xHTTPSClientResult = IotHttpsClient_Init();

+	configASSERT( xHTTPSClientResult == IOT_HTTPS_OK );

+}

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/Packet32.h b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/Packet32.h
new file mode 100644
index 0000000..1e0eacd
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/Packet32.h
@@ -0,0 +1,359 @@
+/*

+ * Copyright (c) 1999 - 2005 NetGroup, Politecnico di Torino (Italy)

+ * Copyright (c) 2005 - 2007 CACE Technologies, Davis (California)

+ * All rights reserved.

+ *

+ * Redistribution and use in source and binary forms, with or without

+ * modification, are permitted provided that the following conditions

+ * are met:

+ *

+ * 1. Redistributions of source code must retain the above copyright

+ * notice, this list of conditions and the following disclaimer.

+ * 2. Redistributions in binary form must reproduce the above copyright

+ * notice, this list of conditions and the following disclaimer in the

+ * documentation and/or other materials provided with the distribution.

+ * 3. Neither the name of the Politecnico di Torino, CACE Technologies 

+ * nor the names of its contributors may be used to endorse or promote 

+ * products derived from this software without specific prior written 

+ * permission.

+ *

+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS

+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT

+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR

+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT

+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,

+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT

+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY

+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT

+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE

+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+ *

+ */

+

+/** @ingroup packetapi

+ *  @{ 

+ */

+

+/** @defgroup packet32h Packet.dll definitions and data structures

+ *  Packet32.h contains the data structures and the definitions used by packet.dll.

+ *  The file is used both by the Win9x and the WinNTx versions of packet.dll, and can be included

+ *  by the applications that use the functions of this library

+ *  @{

+ */

+

+#ifndef __PACKET32

+#define __PACKET32

+

+#include <winsock2.h>

+

+#ifdef HAVE_AIRPCAP_API

+#include <airpcap.h>

+#else

+#if !defined(AIRPCAP_HANDLE__EAE405F5_0171_9592_B3C2_C19EC426AD34__DEFINED_)

+#define AIRPCAP_HANDLE__EAE405F5_0171_9592_B3C2_C19EC426AD34__DEFINED_

+typedef struct _AirpcapHandle *PAirpcapHandle;

+#endif /* AIRPCAP_HANDLE__EAE405F5_0171_9592_B3C2_C19EC426AD34__DEFINED_ */

+#endif /* HAVE_AIRPCAP_API */

+

+#ifdef HAVE_DAG_API

+#include <dagc.h>

+#endif /* HAVE_DAG_API */

+

+// Working modes

+#define PACKET_MODE_CAPT 0x0 ///< Capture mode

+#define PACKET_MODE_STAT 0x1 ///< Statistical mode

+#define PACKET_MODE_MON 0x2 ///< Monitoring mode

+#define PACKET_MODE_DUMP 0x10 ///< Dump mode

+#define PACKET_MODE_STAT_DUMP MODE_DUMP | MODE_STAT ///< Statistical dump Mode

+

+

+/// Alignment macro. Defines the alignment size.

+#define Packet_ALIGNMENT sizeof(int)

+/// Alignment macro. Rounds up to the next even multiple of Packet_ALIGNMENT. 

+#define Packet_WORDALIGN(x) (((x)+(Packet_ALIGNMENT-1))&~(Packet_ALIGNMENT-1))

+

+#define NdisMediumNull	-1		///< Custom linktype: NDIS doesn't provide an equivalent

+#define NdisMediumCHDLC	-2		///< Custom linktype: NDIS doesn't provide an equivalent

+#define NdisMediumPPPSerial	-3	///< Custom linktype: NDIS doesn't provide an equivalent

+#define NdisMediumBare80211	-4	///< Custom linktype: NDIS doesn't provide an equivalent

+#define NdisMediumRadio80211	-5	///< Custom linktype: NDIS doesn't provide an equivalent

+#define NdisMediumPpi		-6	///< Custom linktype: NDIS doesn't provide an equivalent

+

+// Loopback behaviour definitions

+#define NPF_DISABLE_LOOPBACK	1	///< Drop the packets sent by the NPF driver

+#define NPF_ENABLE_LOOPBACK		2	///< Capture the packets sent by the NPF driver

+

+/*!

+  \brief Network type structure.

+

+  This structure is used by the PacketGetNetType() function to return information on the current adapter's type and speed.

+*/

+typedef struct NetType

+{

+	UINT LinkType;	///< The MAC of the current network adapter (see function PacketGetNetType() for more information)

+	ULONGLONG LinkSpeed;	///< The speed of the network in bits per second

+}NetType;

+

+

+//some definitions stolen from libpcap

+

+#ifndef BPF_MAJOR_VERSION

+

+/*!

+  \brief A BPF pseudo-assembly program.

+

+  The program will be injected in the kernel by the PacketSetBPF() function and applied to every incoming packet. 

+*/

+struct bpf_program 

+{

+	UINT bf_len;				///< Indicates the number of instructions of the program, i.e. the number of struct bpf_insn that will follow.

+	struct bpf_insn *bf_insns;	///< A pointer to the first instruction of the program.

+};

+

+/*!

+  \brief A single BPF pseudo-instruction.

+

+  bpf_insn contains a single instruction for the BPF register-machine. It is used to send a filter program to the driver.

+*/

+struct bpf_insn 

+{

+	USHORT	code;		///< Instruction type and addressing mode.

+	UCHAR 	jt;			///< Jump if true

+	UCHAR 	jf;			///< Jump if false

+	int k;				///< Generic field used for various purposes.

+};

+

+/*!

+  \brief Structure that contains a couple of statistics values on the current capture.

+

+  It is used by packet.dll to return statistics about a capture session.

+*/

+struct bpf_stat 

+{

+	UINT bs_recv;		///< Number of packets that the driver received from the network adapter 

+						///< from the beginning of the current capture. This value includes the packets 

+						///< lost by the driver.

+	UINT bs_drop;		///< number of packets that the driver lost from the beginning of a capture. 

+						///< Basically, a packet is lost when the the buffer of the driver is full. 

+						///< In this situation the packet cannot be stored and the driver rejects it.

+	UINT ps_ifdrop;		///< drops by interface. XXX not yet supported

+	UINT bs_capt;		///< number of packets that pass the filter, find place in the kernel buffer and

+						///< thus reach the application.

+};

+

+/*!

+  \brief Packet header.

+

+  This structure defines the header associated with every packet delivered to the application.

+*/

+struct bpf_hdr 

+{

+	struct timeval	bh_tstamp;	///< The timestamp associated with the captured packet. 

+								///< It is stored in a TimeVal structure.

+	UINT	bh_caplen;			///< Length of captured portion. The captured portion <b>can be different</b>

+								///< from the original packet, because it is possible (with a proper filter)

+								///< to instruct the driver to capture only a portion of the packets.

+	UINT	bh_datalen;			///< Original length of packet

+	USHORT		bh_hdrlen;		///< Length of bpf header (this struct plus alignment padding). In some cases,

+								///< a padding could be added between the end of this structure and the packet

+								///< data for performance reasons. This filed can be used to retrieve the actual data 

+								///< of the packet.

+};

+

+/*!

+  \brief Dump packet header.

+

+  This structure defines the header associated with the packets in a buffer to be used with PacketSendPackets().

+  It is simpler than the bpf_hdr, because it corresponds to the header associated by WinPcap and libpcap to a

+  packet in a dump file. This makes straightforward sending WinPcap dump files to the network.

+*/

+struct dump_bpf_hdr{

+    struct timeval	ts;			///< Time stamp of the packet

+    UINT			caplen;		///< Length of captured portion. The captured portion can smaller than the 

+								///< the original packet, because it is possible (with a proper filter) to 

+								///< instruct the driver to capture only a portion of the packets. 

+    UINT			len;		///< Length of the original packet (off wire).

+};

+

+

+#endif

+

+struct bpf_stat;

+

+#define        DOSNAMEPREFIX   TEXT("Packet_")	///< Prefix added to the adapters device names to create the WinPcap devices

+#define        MAX_LINK_NAME_LENGTH	64			//< Maximum length of the devices symbolic links

+#define        NMAX_PACKET 65535

+

+/*!

+  \brief Addresses of a network adapter.

+

+  This structure is used by the PacketGetNetInfoEx() function to return the IP addresses associated with 

+  an adapter.

+*/

+typedef struct npf_if_addr {

+	struct sockaddr_storage IPAddress;	///< IP address.

+	struct sockaddr_storage SubnetMask;	///< Netmask for that address.

+	struct sockaddr_storage Broadcast;	///< Broadcast address.

+}npf_if_addr;

+

+

+#define ADAPTER_NAME_LENGTH 256 + 12	///<  Maximum length for the name of an adapter. The value is the same used by the IP Helper API.

+#define ADAPTER_DESC_LENGTH 128			///<  Maximum length for the description of an adapter. The value is the same used by the IP Helper API.

+#define MAX_MAC_ADDR_LENGTH 8			///<  Maximum length for the link layer address of an adapter. The value is the same used by the IP Helper API.

+#define MAX_NETWORK_ADDRESSES 16		///<  Maximum length for the link layer address of an adapter. The value is the same used by the IP Helper API.

+

+

+typedef struct WAN_ADAPTER_INT WAN_ADAPTER; ///< Describes an opened wan (dialup, VPN...) network adapter using the NetMon API

+typedef WAN_ADAPTER *PWAN_ADAPTER; ///< Describes an opened wan (dialup, VPN...) network adapter using the NetMon API

+

+#define INFO_FLAG_NDIS_ADAPTER		0	///< Flag for ADAPTER_INFO: this is a traditional ndis adapter

+#define INFO_FLAG_NDISWAN_ADAPTER	1	///< Flag for ADAPTER_INFO: this is a NdisWan adapter, and it's managed by WANPACKET

+#define INFO_FLAG_DAG_CARD			2	///< Flag for ADAPTER_INFO: this is a DAG card

+#define INFO_FLAG_DAG_FILE			6	///< Flag for ADAPTER_INFO: this is a DAG file

+#define INFO_FLAG_DONT_EXPORT		8	///< Flag for ADAPTER_INFO: when this flag is set, the adapter will not be listed or openend by winpcap. This allows to prevent exporting broken network adapters, like for example FireWire ones.

+#define INFO_FLAG_AIRPCAP_CARD		16	///< Flag for ADAPTER_INFO: this is an airpcap card

+#define INFO_FLAG_NPFIM_DEVICE		32

+

+/*!

+  \brief Describes an opened network adapter.

+

+  This structure is the most important for the functioning of packet.dll, but the great part of its fields

+  should be ignored by the user, since the library offers functions that avoid to cope with low-level parameters

+*/

+typedef struct _ADAPTER  { 

+	HANDLE hFile;				///< \internal Handle to an open instance of the NPF driver.

+	CHAR  SymbolicLink[MAX_LINK_NAME_LENGTH]; ///< \internal A string containing the name of the network adapter currently opened.

+	int NumWrites;				///< \internal Number of times a packets written on this adapter will be repeated 

+								///< on the wire.

+	HANDLE ReadEvent;			///< A notification event associated with the read calls on the adapter.

+								///< It can be passed to standard Win32 functions (like WaitForSingleObject

+								///< or WaitForMultipleObjects) to wait until the driver's buffer contains some 

+								///< data. It is particularly useful in GUI applications that need to wait 

+								///< concurrently on several events. In Windows NT/2000 the PacketSetMinToCopy()

+								///< function can be used to define the minimum amount of data in the kernel buffer

+								///< that will cause the event to be signalled. 

+	

+	UINT ReadTimeOut;			///< \internal The amount of time after which a read on the driver will be released and 

+								///< ReadEvent will be signaled, also if no packets were captured

+	CHAR Name[ADAPTER_NAME_LENGTH];

+	PWAN_ADAPTER pWanAdapter;

+	UINT Flags;					///< Adapter's flags. Tell if this adapter must be treated in a different way, using the Netmon API or the dagc API.

+

+#ifdef HAVE_AIRPCAP_API

+	PAirpcapHandle	AirpcapAd;

+#endif // HAVE_AIRPCAP_API

+

+#ifdef HAVE_NPFIM_API

+	void* NpfImHandle;

+#endif // HAVE_NPFIM_API

+

+#ifdef HAVE_DAG_API

+	dagc_t *pDagCard;			///< Pointer to the dagc API adapter descriptor for this adapter

+	PCHAR DagBuffer;			///< Pointer to the buffer with the packets that is received from the DAG card

+	struct timeval DagReadTimeout;	///< Read timeout. The dagc API requires a timeval structure

+	unsigned DagFcsLen;			///< Length of the frame check sequence attached to any packet by the card. Obtained from the registry

+	DWORD DagFastProcess;		///< True if the user requests fast capture processing on this card. Higher level applications can use this value to provide a faster but possibly unprecise capture (for example, libpcap doesn't convert the timestamps).

+#endif // HAVE_DAG_API

+}  ADAPTER, *LPADAPTER;

+

+/*!

+  \brief Structure that contains a group of packets coming from the driver.

+

+  This structure defines the header associated with every packet delivered to the application.

+*/

+typedef struct _PACKET {  

+	HANDLE       hEvent;		///< \deprecated Still present for compatibility with old applications.

+	OVERLAPPED   OverLapped;	///< \deprecated Still present for compatibility with old applications.

+	PVOID        Buffer;		///< Buffer with containing the packets. See the PacketReceivePacket() for

+								///< details about the organization of the data in this buffer

+	UINT         Length;		///< Length of the buffer

+	DWORD        ulBytesReceived;	///< Number of valid bytes present in the buffer, i.e. amount of data

+									///< received by the last call to PacketReceivePacket()

+	BOOLEAN      bIoComplete;	///< \deprecated Still present for compatibility with old applications.

+}  PACKET, *LPPACKET;

+

+/*!

+  \brief Structure containing an OID request.

+

+  It is used by the PacketRequest() function to send an OID to the interface card driver. 

+  It can be used, for example, to retrieve the status of the error counters on the adapter, its MAC address, 

+  the list of the multicast groups defined on it, and so on.

+*/

+struct _PACKET_OID_DATA {

+    ULONG Oid;					///< OID code. See the Microsoft DDK documentation or the file ntddndis.h

+								///< for a complete list of valid codes.

+    ULONG Length;				///< Length of the data field

+    UCHAR Data[1];				///< variable-lenght field that contains the information passed to or received 

+								///< from the adapter.

+}; 

+typedef struct _PACKET_OID_DATA PACKET_OID_DATA, *PPACKET_OID_DATA;

+

+#ifdef __cplusplus

+extern "C" {

+#endif

+

+/**

+ *  @}

+ */

+

+/*

+BOOLEAN QueryWinPcapRegistryStringA(CHAR *SubKeyName,

+								 CHAR *Value,

+								 UINT *pValueLen,

+								 CHAR *DefaultVal);

+

+BOOLEAN QueryWinPcapRegistryStringW(WCHAR *SubKeyName,

+								 WCHAR *Value,

+								 UINT *pValueLen,

+								 WCHAR *DefaultVal);

+*/

+								 

+//---------------------------------------------------------------------------

+// EXPORTED FUNCTIONS

+//---------------------------------------------------------------------------

+

+PCHAR PacketGetVersion();

+PCHAR PacketGetDriverVersion();

+BOOLEAN PacketSetMinToCopy(LPADAPTER AdapterObject,int nbytes);

+BOOLEAN PacketSetNumWrites(LPADAPTER AdapterObject,int nwrites);

+BOOLEAN PacketSetMode(LPADAPTER AdapterObject,int mode);

+BOOLEAN PacketSetReadTimeout(LPADAPTER AdapterObject,int timeout);

+BOOLEAN PacketSetBpf(LPADAPTER AdapterObject,struct bpf_program *fp);

+BOOLEAN PacketSetLoopbackBehavior(LPADAPTER  AdapterObject, UINT LoopbackBehavior);

+INT PacketSetSnapLen(LPADAPTER AdapterObject,int snaplen);

+BOOLEAN PacketGetStats(LPADAPTER AdapterObject,struct bpf_stat *s);

+BOOLEAN PacketGetStatsEx(LPADAPTER AdapterObject,struct bpf_stat *s);

+BOOLEAN PacketSetBuff(LPADAPTER AdapterObject,int dim);

+BOOLEAN PacketGetNetType (LPADAPTER AdapterObject,NetType *type);

+LPADAPTER PacketOpenAdapter(PCHAR AdapterName);

+BOOLEAN PacketSendPacket(LPADAPTER AdapterObject,LPPACKET pPacket,BOOLEAN Sync);

+INT PacketSendPackets(LPADAPTER AdapterObject,PVOID PacketBuff,ULONG Size, BOOLEAN Sync);

+LPPACKET PacketAllocatePacket(void);

+VOID PacketInitPacket(LPPACKET lpPacket,PVOID  Buffer,UINT  Length);

+VOID PacketFreePacket(LPPACKET lpPacket);

+BOOLEAN PacketReceivePacket(LPADAPTER AdapterObject,LPPACKET lpPacket,BOOLEAN Sync);

+BOOLEAN PacketSetHwFilter(LPADAPTER AdapterObject,ULONG Filter);

+BOOLEAN PacketGetAdapterNames(PTSTR pStr,PULONG  BufferSize);

+BOOLEAN PacketGetNetInfoEx(PCHAR AdapterName, npf_if_addr* buffer, PLONG NEntries);

+BOOLEAN PacketRequest(LPADAPTER  AdapterObject,BOOLEAN Set,PPACKET_OID_DATA  OidData);

+HANDLE PacketGetReadEvent(LPADAPTER AdapterObject);

+BOOLEAN PacketSetDumpName(LPADAPTER AdapterObject, void *name, int len);

+BOOLEAN PacketSetDumpLimits(LPADAPTER AdapterObject, UINT maxfilesize, UINT maxnpacks);

+BOOLEAN PacketIsDumpEnded(LPADAPTER AdapterObject, BOOLEAN sync);

+BOOL PacketStopDriver();

+VOID PacketCloseAdapter(LPADAPTER lpAdapter);

+BOOLEAN PacketStartOem(PCHAR errorString, UINT errorStringLength);

+BOOLEAN PacketStartOemEx(PCHAR errorString, UINT errorStringLength, ULONG flags);

+PAirpcapHandle PacketGetAirPcapHandle(LPADAPTER AdapterObject);

+

+//

+// Used by PacketStartOemEx

+//

+#define PACKET_START_OEM_NO_NETMON	0x00000001

+

+#ifdef __cplusplus

+}

+#endif 

+

+#endif //__PACKET32

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/PacketData.h b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/PacketData.h
new file mode 100644
index 0000000..8124db6
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/PacketData.h
@@ -0,0 +1,267 @@
+char pkt1[] = {

+0x00, 0x01, 0x02, 0x45, 0x09, 0x11, 0x00, 0x14,

+0x22, 0xcb, 0x18, 0x2d, 0x08, 0x00, 0x45, 0x00,

+0x00, 0x30, 0x09, 0x9c, 0x40, 0x00, 0x80, 0x06,

+0x6f, 0x07, 0xc0, 0xa8, 0x00, 0xc8, 0xc0, 0xa8,

+0x00, 0x0c, 0x0f, 0xe2, 0x00, 0x50, 0x09, 0xe7,

+0xc7, 0x35, 0x00, 0x00, 0x00, 0x00, 0x70, 0x02,

+0x40, 0x00, 0xdf, 0xab, 0x00, 0x00, 0x02, 0x04,

+0x05, 0xb4, 0x01, 0x01, 0x04, 0x02 };

+

+char pkt2[] = {

+0x00, 0x14, 0x22, 0xcb, 0x18, 0x2d, 0x00, 0x01,

+0x02, 0x45, 0x09, 0x11, 0x08, 0x00, 0x45, 0x00,

+0x00, 0x2c, 0x00, 0x01, 0x00, 0x00, 0x40, 0x06,

+0xf8, 0xa6, 0xc0, 0xa8, 0x00, 0x0c, 0xc0, 0xa8,

+0x00, 0xc8, 0x00, 0x50, 0x0f, 0xe2, 0x00, 0x00,

+0x06, 0x68, 0x09, 0xe7, 0xc7, 0x36, 0x60, 0x12,

+0x05, 0x92, 0x28, 0xca, 0x00, 0x00, 0x02, 0x04,

+0x05, 0x92 };

+

+char pkt3[] = {

+0x00, 0x01, 0x02, 0x45, 0x09, 0x11, 0x00, 0x14,

+0x22, 0xcb, 0x18, 0x2d, 0x08, 0x00, 0x45, 0x00,

+0x00, 0x28, 0x09, 0x9e, 0x40, 0x00, 0x80, 0x06,

+0x6f, 0x0d, 0xc0, 0xa8, 0x00, 0xc8, 0xc0, 0xa8,

+0x00, 0x0c, 0x0f, 0xe2, 0x00, 0x50, 0x09, 0xe7,

+0xc7, 0x36, 0x00, 0x00, 0x06, 0x69, 0x50, 0x10,

+0x42, 0xd8, 0x82, 0x3f, 0x00, 0x00 };

+

+char pkt4[] = {

+0x00, 0x01, 0x02, 0x45, 0x09, 0x11, 0x00, 0x14,

+0x22, 0xcb, 0x18, 0x2d, 0x08, 0x00, 0x45, 0x00,

+0x02, 0x27, 0x09, 0x9f, 0x40, 0x00, 0x80, 0x06,

+0x6d, 0x0d, 0xc0, 0xa8, 0x00, 0xc8, 0xc0, 0xa8,

+0x00, 0x0c, 0x0f, 0xe2, 0x00, 0x50, 0x09, 0xe7,

+0xc7, 0x36, 0x00, 0x00, 0x06, 0x69, 0x50, 0x18,

+0x42, 0xd8, 0x84, 0x3e, 0x00, 0x00, 0x47, 0x45,

+0x54, 0x20, 0x2f, 0x20, 0x48, 0x54, 0x54, 0x50,

+0x2f, 0x31, 0x2e, 0x31, 0x0d, 0x0a, 0x41, 0x63,

+0x63, 0x65, 0x70, 0x74, 0x3a, 0x20, 0x69, 0x6d,

+0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0x2c,

+0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x78,

+0x2d, 0x78, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x70,

+0x2c, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f,

+0x6a, 0x70, 0x65, 0x67, 0x2c, 0x20, 0x69, 0x6d,

+0x61, 0x67, 0x65, 0x2f, 0x70, 0x6a, 0x70, 0x65,

+0x67, 0x2c, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69,

+0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76,

+0x6e, 0x64, 0x2e, 0x6d, 0x73, 0x2d, 0x65, 0x78,

+0x63, 0x65, 0x6c, 0x2c, 0x20, 0x61, 0x70, 0x70,

+0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,

+0x2f, 0x6d, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x2c,

+0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61,

+0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x6e, 0x64,

+0x2e, 0x6d, 0x73, 0x2d, 0x70, 0x6f, 0x77, 0x65,

+0x72, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2c, 0x20,

+0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74,

+0x69, 0x6f, 0x6e, 0x2f, 0x78, 0x2d, 0x6d, 0x73,

+0x2d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61,

+0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x61, 0x70,

+0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,

+0x6e, 0x2f, 0x78, 0x2d, 0x6d, 0x73, 0x2d, 0x78,

+0x62, 0x61, 0x70, 0x2c, 0x20, 0x61, 0x70, 0x70,

+0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,

+0x2f, 0x76, 0x6e, 0x64, 0x2e, 0x6d, 0x73, 0x2d,

+0x78, 0x70, 0x73, 0x64, 0x6f, 0x63, 0x75, 0x6d,

+0x65, 0x6e, 0x74, 0x2c, 0x20, 0x61, 0x70, 0x70,

+0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,

+0x2f, 0x78, 0x61, 0x6d, 0x6c, 0x2b, 0x78, 0x6d,

+0x6c, 0x2c, 0x20, 0x2a, 0x2f, 0x2a, 0x0d, 0x0a,

+0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d, 0x4c,

+0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x3a,

+0x20, 0x65, 0x6e, 0x2d, 0x67, 0x62, 0x0d, 0x0a,

+0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d, 0x45,

+0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x3a,

+0x20, 0x67, 0x7a, 0x69, 0x70, 0x2c, 0x20, 0x64,

+0x65, 0x66, 0x6c, 0x61, 0x74, 0x65, 0x0d, 0x0a,

+0x55, 0x73, 0x65, 0x72, 0x2d, 0x41, 0x67, 0x65,

+0x6e, 0x74, 0x3a, 0x20, 0x4d, 0x6f, 0x7a, 0x69,

+0x6c, 0x6c, 0x61, 0x2f, 0x34, 0x2e, 0x30, 0x20,

+0x28, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69,

+0x62, 0x6c, 0x65, 0x3b, 0x20, 0x4d, 0x53, 0x49,

+0x45, 0x20, 0x36, 0x2e, 0x30, 0x3b, 0x20, 0x57,

+0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x20, 0x4e,

+0x54, 0x20, 0x35, 0x2e, 0x31, 0x3b, 0x20, 0x53,

+0x56, 0x31, 0x3b, 0x20, 0x47, 0x6f, 0x6f, 0x67,

+0x6c, 0x65, 0x54, 0x35, 0x3b, 0x20, 0x2e, 0x4e,

+0x45, 0x54, 0x20, 0x43, 0x4c, 0x52, 0x20, 0x32,

+0x2e, 0x30, 0x2e, 0x35, 0x30, 0x37, 0x32, 0x37,

+0x3b, 0x20, 0x2e, 0x4e, 0x45, 0x54, 0x20, 0x43,

+0x4c, 0x52, 0x20, 0x33, 0x2e, 0x30, 0x2e, 0x30,

+0x34, 0x35, 0x30, 0x36, 0x2e, 0x36, 0x34, 0x38,

+0x3b, 0x20, 0x2e, 0x4e, 0x45, 0x54, 0x20, 0x43,

+0x4c, 0x52, 0x20, 0x33, 0x2e, 0x35, 0x2e, 0x32,

+0x31, 0x30, 0x32, 0x32, 0x29, 0x0d, 0x0a, 0x48,

+0x6f, 0x73, 0x74, 0x3a, 0x20, 0x31, 0x39, 0x32,

+0x2e, 0x31, 0x36, 0x38, 0x2e, 0x30, 0x2e, 0x31,

+0x32, 0x0d, 0x0a, 0x43, 0x6f, 0x6e, 0x6e, 0x65,

+0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x4b,

+0x65, 0x65, 0x70, 0x2d, 0x41, 0x6c, 0x69, 0x76,

+0x65, 0x0d, 0x0a, 0x0d, 0x0a };

+

+char pkt5[] = {

+0x00, 0x14, 0x22, 0xcb, 0x18, 0x2d, 0x00, 0x01,

+0x02, 0x45, 0x09, 0x11, 0x08, 0x00, 0x45, 0x00,

+0x00, 0x2c, 0x00, 0x02, 0x00, 0x00, 0x40, 0x06,

+0xf8, 0xa5, 0xc0, 0xa8, 0x00, 0x0c, 0xc0, 0xa8,

+0x00, 0xc8, 0x00, 0x50, 0x0f, 0xe2, 0x00, 0x00,

+0x06, 0x68, 0x09, 0xe7, 0xc7, 0x36, 0x60, 0x12,

+0x05, 0x92, 0x28, 0xca, 0x00, 0x00, 0x02, 0x04,

+0x05, 0x92 };

+

+char pkt6[] = {

+0x00, 0x01, 0x02, 0x45, 0x09, 0x11, 0x00, 0x14,

+0x22, 0xcb, 0x18, 0x2d, 0x08, 0x00, 0x45, 0x00,

+0x00, 0x28, 0x09, 0xa1, 0x40, 0x00, 0x80, 0x06,

+0x6f, 0x0a, 0xc0, 0xa8, 0x00, 0xc8, 0xc0, 0xa8,

+0x00, 0x0c, 0x0f, 0xe2, 0x00, 0x50, 0x09, 0xe7,

+0xc9, 0x35, 0x00, 0x00, 0x06, 0x69, 0x50, 0x10,

+0x42, 0xd8, 0x82, 0x3f, 0x00, 0x00 };

+

+char pkt7[] = {

+0x00, 0x01, 0x02, 0x45, 0x09, 0x11, 0x00, 0x14,

+0x22, 0xcb, 0x18, 0x2d, 0x08, 0x00, 0x45, 0x00,

+0x02, 0x27, 0x09, 0xa2, 0x40, 0x00, 0x80, 0x06,

+0x6d, 0x0a, 0xc0, 0xa8, 0x00, 0xc8, 0xc0, 0xa8,

+0x00, 0x0c, 0x0f, 0xe2, 0x00, 0x50, 0x09, 0xe7,

+0xc7, 0x36, 0x00, 0x00, 0x06, 0x69, 0x50, 0x18,

+0x42, 0xd8, 0x84, 0x3e, 0x00, 0x00, 0x47, 0x45,

+0x54, 0x20, 0x2f, 0x20, 0x48, 0x54, 0x54, 0x50,

+0x2f, 0x31, 0x2e, 0x31, 0x0d, 0x0a, 0x41, 0x63,

+0x63, 0x65, 0x70, 0x74, 0x3a, 0x20, 0x69, 0x6d,

+0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0x2c,

+0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x78,

+0x2d, 0x78, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x70,

+0x2c, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f,

+0x6a, 0x70, 0x65, 0x67, 0x2c, 0x20, 0x69, 0x6d,

+0x61, 0x67, 0x65, 0x2f, 0x70, 0x6a, 0x70, 0x65,

+0x67, 0x2c, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69,

+0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76,

+0x6e, 0x64, 0x2e, 0x6d, 0x73, 0x2d, 0x65, 0x78,

+0x63, 0x65, 0x6c, 0x2c, 0x20, 0x61, 0x70, 0x70,

+0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,

+0x2f, 0x6d, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x2c,

+0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61,

+0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x6e, 0x64,

+0x2e, 0x6d, 0x73, 0x2d, 0x70, 0x6f, 0x77, 0x65,

+0x72, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2c, 0x20,

+0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74,

+0x69, 0x6f, 0x6e, 0x2f, 0x78, 0x2d, 0x6d, 0x73,

+0x2d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61,

+0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x61, 0x70,

+0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,

+0x6e, 0x2f, 0x78, 0x2d, 0x6d, 0x73, 0x2d, 0x78,

+0x62, 0x61, 0x70, 0x2c, 0x20, 0x61, 0x70, 0x70,

+0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,

+0x2f, 0x76, 0x6e, 0x64, 0x2e, 0x6d, 0x73, 0x2d,

+0x78, 0x70, 0x73, 0x64, 0x6f, 0x63, 0x75, 0x6d,

+0x65, 0x6e, 0x74, 0x2c, 0x20, 0x61, 0x70, 0x70,

+0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,

+0x2f, 0x78, 0x61, 0x6d, 0x6c, 0x2b, 0x78, 0x6d,

+0x6c, 0x2c, 0x20, 0x2a, 0x2f, 0x2a, 0x0d, 0x0a,

+0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d, 0x4c,

+0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x3a,

+0x20, 0x65, 0x6e, 0x2d, 0x67, 0x62, 0x0d, 0x0a,

+0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d, 0x45,

+0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x3a,

+0x20, 0x67, 0x7a, 0x69, 0x70, 0x2c, 0x20, 0x64,

+0x65, 0x66, 0x6c, 0x61, 0x74, 0x65, 0x0d, 0x0a,

+0x55, 0x73, 0x65, 0x72, 0x2d, 0x41, 0x67, 0x65,

+0x6e, 0x74, 0x3a, 0x20, 0x4d, 0x6f, 0x7a, 0x69,

+0x6c, 0x6c, 0x61, 0x2f, 0x34, 0x2e, 0x30, 0x20,

+0x28, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69,

+0x62, 0x6c, 0x65, 0x3b, 0x20, 0x4d, 0x53, 0x49,

+0x45, 0x20, 0x36, 0x2e, 0x30, 0x3b, 0x20, 0x57,

+0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x20, 0x4e,

+0x54, 0x20, 0x35, 0x2e, 0x31, 0x3b, 0x20, 0x53,

+0x56, 0x31, 0x3b, 0x20, 0x47, 0x6f, 0x6f, 0x67,

+0x6c, 0x65, 0x54, 0x35, 0x3b, 0x20, 0x2e, 0x4e,

+0x45, 0x54, 0x20, 0x43, 0x4c, 0x52, 0x20, 0x32,

+0x2e, 0x30, 0x2e, 0x35, 0x30, 0x37, 0x32, 0x37,

+0x3b, 0x20, 0x2e, 0x4e, 0x45, 0x54, 0x20, 0x43,

+0x4c, 0x52, 0x20, 0x33, 0x2e, 0x30, 0x2e, 0x30,

+0x34, 0x35, 0x30, 0x36, 0x2e, 0x36, 0x34, 0x38,

+0x3b, 0x20, 0x2e, 0x4e, 0x45, 0x54, 0x20, 0x43,

+0x4c, 0x52, 0x20, 0x33, 0x2e, 0x35, 0x2e, 0x32,

+0x31, 0x30, 0x32, 0x32, 0x29, 0x0d, 0x0a, 0x48,

+0x6f, 0x73, 0x74, 0x3a, 0x20, 0x31, 0x39, 0x32,

+0x2e, 0x31, 0x36, 0x38, 0x2e, 0x30, 0x2e, 0x31,

+0x32, 0x0d, 0x0a, 0x43, 0x6f, 0x6e, 0x6e, 0x65,

+0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x4b,

+0x65, 0x65, 0x70, 0x2d, 0x41, 0x6c, 0x69, 0x76,

+0x65, 0x0d, 0x0a, 0x0d, 0x0a };

+

+char pkt8[] = {

+0x00, 0x14, 0x22, 0xcb, 0x18, 0x2d, 0x00, 0x01,

+0x02, 0x45, 0x09, 0x11, 0x08, 0x00, 0x45, 0x00,

+0x00, 0x2c, 0x00, 0x03, 0x00, 0x00, 0x40, 0x06,

+0xf8, 0xa4, 0xc0, 0xa8, 0x00, 0x0c, 0xc0, 0xa8,

+0x00, 0xc8, 0x00, 0x50, 0x0f, 0xe2, 0x00, 0x00,

+0x06, 0x68, 0x09, 0xe7, 0xc7, 0x36, 0x60, 0x12,

+0x05, 0x92, 0x28, 0xca, 0x00, 0x00, 0x02, 0x04,

+0x05, 0x92 };

+

+char pkt9[] = {

+0x00, 0x01, 0x02, 0x45, 0x09, 0x11, 0x00, 0x14,

+0x22, 0xcb, 0x18, 0x2d, 0x08, 0x00, 0x45, 0x00,

+0x00, 0x28, 0x09, 0xa3, 0x40, 0x00, 0x80, 0x06,

+0x6f, 0x08, 0xc0, 0xa8, 0x00, 0xc8, 0xc0, 0xa8,

+0x00, 0x0c, 0x0f, 0xe2, 0x00, 0x50, 0x09, 0xe7,

+0xc9, 0x35, 0x00, 0x00, 0x06, 0x69, 0x50, 0x10,

+0x42, 0xd8, 0x82, 0x3f, 0x00, 0x00 };

+

+char pkt10[] = {

+0x00, 0x14, 0x22, 0xcb, 0x18, 0x2d, 0x00, 0x01,

+0x02, 0x45, 0x09, 0x11, 0x08, 0x00, 0x45, 0x00,

+0x00, 0x2c, 0x00, 0x04, 0x00, 0x00, 0x40, 0x06,

+0xf8, 0xa3, 0xc0, 0xa8, 0x00, 0x0c, 0xc0, 0xa8,

+0x00, 0xc8, 0x00, 0x50, 0x0f, 0xe2, 0x00, 0x00,

+0x06, 0x68, 0x09, 0xe7, 0xc7, 0x36, 0x60, 0x12,

+0x05, 0x92, 0x28, 0xca, 0x00, 0x00, 0x02, 0x04,

+0x05, 0x92 };

+

+char pkt11[] = {

+0x00, 0x01, 0x02, 0x45, 0x09, 0x11, 0x00, 0x14,

+0x22, 0xcb, 0x18, 0x2d, 0x08, 0x00, 0x45, 0x00,

+0x00, 0x28, 0x09, 0xa6, 0x40, 0x00, 0x80, 0x06,

+0x6f, 0x05, 0xc0, 0xa8, 0x00, 0xc8, 0xc0, 0xa8,

+0x00, 0x0c, 0x0f, 0xe2, 0x00, 0x50, 0x09, 0xe7,

+0xc9, 0x35, 0x00, 0x00, 0x06, 0x69, 0x50, 0x10,

+0x42, 0xd8, 0x82, 0x3f, 0x00, 0x00 };

+

+char pkt12[] = {

+0x00, 0x01, 0x02, 0x45, 0x09, 0x11, 0x00, 0x14,

+0x22, 0xcb, 0x18, 0x2d, 0x08, 0x00, 0x45, 0x00,

+0x00, 0x28, 0x09, 0xa7, 0x40, 0x00, 0x80, 0x06,

+0x6f, 0x04, 0xc0, 0xa8, 0x00, 0xc8, 0xc0, 0xa8,

+0x00, 0x0c, 0x0f, 0xe2, 0x00, 0x50, 0x09, 0xe7,

+0xc9, 0x35, 0x00, 0x00, 0x06, 0x69, 0x50, 0x14,

+0x00, 0x00, 0x43, 0xf4, 0x00, 0x00 };

+

+

+typedef struct

+{

+	char *pcData;

+	int iDataLen;

+} xPacketData;

+

+xPacketData xAllPackets[] =

+{

+	{ pkt1, sizeof( pkt1 ) },

+//	{ pkt2, sizeof( pkt2 ) },

+	{ pkt3, sizeof( pkt3 ) },

+	{ pkt4, sizeof( pkt4 ) },

+//	{ pkt5, sizeof( pkt5 ) },

+	{ pkt6, sizeof( pkt6 ) },

+	{ pkt7, sizeof( pkt7 ) },

+	{ pkt8, sizeof( pkt8 ) },

+	{ pkt9, sizeof( pkt9 ) },

+	{ pkt10, sizeof( pkt10 ) },

+//	{ pkt11, sizeof( pkt11 ) },

+//	{ pkt12, sizeof( pkt12 ) },

+//	{ pkt13, sizeof( pkt13 ) },

+//	{ pkt14, sizeof( pkt14 ) },

+//	{ pkt15, sizeof( pkt15 ) },

+//	{ pkt16, sizeof( pkt16 ) },

+};

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/Win32-Extensions.h b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/Win32-Extensions.h
new file mode 100644
index 0000000..be71c85
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/Win32-Extensions.h
@@ -0,0 +1,114 @@
+/*

+ * Copyright (c) 1999 - 2005 NetGroup, Politecnico di Torino (Italy)

+ * Copyright (c) 2005 - 2006 CACE Technologies, Davis (California)

+ * All rights reserved.

+ *

+ * Redistribution and use in source and binary forms, with or without

+ * modification, are permitted provided that the following conditions

+ * are met:

+ *

+ * 1. Redistributions of source code must retain the above copyright

+ * notice, this list of conditions and the following disclaimer.

+ * 2. Redistributions in binary form must reproduce the above copyright

+ * notice, this list of conditions and the following disclaimer in the

+ * documentation and/or other materials provided with the distribution.

+ * 3. Neither the name of the Politecnico di Torino, CACE Technologies 

+ * nor the names of its contributors may be used to endorse or promote 

+ * products derived from this software without specific prior written 

+ * permission.

+ *

+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS

+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT

+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR

+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT

+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,

+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT

+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY

+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT

+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE

+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+ *

+ */

+

+

+#ifndef __WIN32_EXTENSIONS_H__

+#define __WIN32_EXTENSIONS_H__

+

+#ifdef __cplusplus

+extern "C" {

+#endif

+

+/* Definitions */

+

+/*!

+  \brief A queue of raw packets that will be sent to the network with pcap_sendqueue_transmit().

+*/

+struct pcap_send_queue

+{

+	u_int maxlen;		///< Maximum size of the the queue, in bytes. This variable contains the size of the buffer field.

+	u_int len;			///< Current size of the queue, in bytes.

+	char *buffer;		///< Buffer containing the packets to be sent.

+};

+

+typedef struct pcap_send_queue pcap_send_queue;

+

+/*!

+  \brief This typedef is a support for the pcap_get_airpcap_handle() function

+*/

+#if !defined(AIRPCAP_HANDLE__EAE405F5_0171_9592_B3C2_C19EC426AD34__DEFINED_)

+#define AIRPCAP_HANDLE__EAE405F5_0171_9592_B3C2_C19EC426AD34__DEFINED_

+typedef struct _AirpcapHandle *PAirpcapHandle;

+#endif

+

+#define		BPF_MEM_EX_IMM	0xc0

+#define		BPF_MEM_EX_IND	0xe0

+

+/*used for ST*/

+#define		BPF_MEM_EX		0xc0

+#define		BPF_TME					0x08

+

+#define		BPF_LOOKUP				0x90   

+#define		BPF_EXECUTE				0xa0

+#define		BPF_INIT				0xb0

+#define		BPF_VALIDATE			0xc0

+#define		BPF_SET_ACTIVE			0xd0

+#define		BPF_RESET				0xe0

+#define		BPF_SET_MEMORY			0x80

+#define		BPF_GET_REGISTER_VALUE	0x70

+#define		BPF_SET_REGISTER_VALUE	0x60

+#define		BPF_SET_WORKING			0x50

+#define		BPF_SET_ACTIVE_READ		0x40

+#define		BPF_SET_AUTODELETION	0x30

+#define		BPF_SEPARATION			0xff

+

+/* Prototypes */

+pcap_send_queue* pcap_sendqueue_alloc(u_int memsize);

+

+void pcap_sendqueue_destroy(pcap_send_queue* queue);

+

+int pcap_sendqueue_queue(pcap_send_queue* queue, const struct pcap_pkthdr *pkt_header, const u_char *pkt_data);

+

+u_int pcap_sendqueue_transmit(pcap_t *p, pcap_send_queue* queue, int sync);

+

+HANDLE pcap_getevent(pcap_t *p);

+

+struct pcap_stat *pcap_stats_ex(pcap_t *p, int *pcap_stat_size);

+

+int pcap_setuserbuffer(pcap_t *p, int size);

+

+int pcap_live_dump(pcap_t *p, char *filename, int maxsize, int maxpacks);

+

+int pcap_live_dump_ended(pcap_t *p, int sync);

+

+int pcap_offline_filter(struct bpf_program *prog, const struct pcap_pkthdr *header, const u_char *pkt_data);

+

+int pcap_start_oem(char* err_str, int flags);

+

+PAirpcapHandle pcap_get_airpcap_handle(pcap_t *p);

+

+#ifdef __cplusplus

+}

+#endif

+

+#endif //__WIN32_EXTENSIONS_H__

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/arch.c b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/arch.c
new file mode 100644
index 0000000..02bf82b
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/arch.c
@@ -0,0 +1,336 @@
+/*

+ * FreeRTOS Kernel V10.2.1

+ * 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://www.FreeRTOS.org

+ * http://aws.amazon.com/freertos

+ *

+ * 1 tab == 4 spaces!

+ */

+

+/* WinPCap includes. */

+#include "pcap.h"

+#include "remote-ext.h"

+

+/* uIP includes. */

+#include "net/uip.h"

+#include "net/uip_arp.h"

+#include "net/clock-arch.h"

+

+/* FreeRTOS includes. */

+#include "FreeRTOS.h"

+#include "task.h"

+#include "queue.h"

+

+/*

+ * Query the computer the simulation is being executed on to find the network

+ * interfaces it has installed.

+ */

+static pcap_if_t * prvPrintAvailableNetworkInterfaces( void );

+

+/*

+ * Open the network interface.  The number of the interface to be opened is set

+ * by the configNETWORK_INTERFACE_TO_USE constant in FreeRTOSConfig.h.

+ */

+static void prvOpenSelectedNetworkInterface( pcap_if_t *pxAllNetworkInterfaces );

+

+/*

+ * Configure the capture filter to allow blocking reads, and to filter out

+ * packets that are not of interest to this demo.

+ */

+static void prvConfigureCaptureBehaviour( void );

+

+pcap_t *pxOpenedInterfaceHandle = NULL;

+LARGE_INTEGER freq, sys_start_time;

+

+#define archNUM_BUFFERS	5

+#define archNUM_BUFFER_POINTERS ( archNUM_BUFFERS - 1 )

+

+static void prvInterruptSimulator( void *pvParameters );

+

+static unsigned char ucEthernetBuffer[ archNUM_BUFFERS ][ UIP_CONF_BUFFER_SIZE ];

+static unsigned char *pucEthernetBufferPointers[ archNUM_BUFFER_POINTERS ];

+

+static long lLengthOfDataInBuffer[ archNUM_BUFFER_POINTERS ] = { 0 };

+static unsigned char ucNextBufferToFill = 0U, ucNextBufferToProcess = 0U;

+

+unsigned char *uip_buf = NULL;

+char cErrorBuffer[PCAP_ERRBUF_SIZE];

+

+void vNetifTx( void )

+{

+	pcap_sendpacket( pxOpenedInterfaceHandle, uip_buf, uip_len );

+	pcap_sendpacket( pxOpenedInterfaceHandle, uip_buf, uip_len );

+}

+/*-----------------------------------------------------------*/

+

+UBaseType_t uxNetifRx( void )

+{

+UBaseType_t xDataLen;

+unsigned char *pucTemp;

+

+	/* Check there is really data available. */

+	xDataLen = lLengthOfDataInBuffer[ ucNextBufferToProcess ];

+	if( xDataLen != 0L )

+	{

+

+		/* The buffer pointed to by uip_buf is going to change.  Remember which

+		buffer uip_buf is currently pointing to. */

+		pucTemp = uip_buf;

+

+		/* Point uip_buf at the next buffer that contains data. */

+		uip_buf = pucEthernetBufferPointers[ ucNextBufferToProcess ];

+

+		/* The buffer pointed to by 

+		pucEthernetBufferPointeres[ ucNextBufferToProcess ] is now in use by

+		uip_buf, but the buffer uip_buf was pointing to on entry to this

+		function is free.  Set 

+		pucEthernetBufferPointeres[ ucNextBufferToProcess ] to the free 

+		buffer. */

+		pucEthernetBufferPointers[ ucNextBufferToProcess ] = pucTemp;

+		lLengthOfDataInBuffer[ ucNextBufferToProcess ] = 0L;

+

+		ucNextBufferToProcess++;

+		if( ucNextBufferToProcess >= archNUM_BUFFER_POINTERS )

+		{

+			ucNextBufferToProcess = 0L;

+		}

+	}

+

+	return xDataLen;

+}

+/*-----------------------------------------------------------*/

+

+BaseType_t xNetifInit( void )

+{

+BaseType_t x;

+pcap_if_t *pxAllNetworkInterfaces;

+

+	/* Allocate a free buffer to each buffer pointer. */

+	for( x = 0; x < sizeof( pucEthernetBufferPointers ) / sizeof( unsigned char * ); x++ )

+	{

+		pucEthernetBufferPointers[ x ] = &( ucEthernetBuffer[ x ][ 0 ] );

+	}

+

+	/* Start with uip_buf pointing to a buffer that is not referenced from the

+	pucEthernetBufferPointers[] array. */

+	uip_buf = &( ucEthernetBuffer[ archNUM_BUFFERS - 1 ][ 0 ] );

+

+	/* Query the computer the simulation is being executed on to find the 

+	network interfaces it has installed. */

+	pxAllNetworkInterfaces = prvPrintAvailableNetworkInterfaces();

+	

+	/* Open the network interface.  The number of the interface to be opened is 

+	set by the configNETWORK_INTERFACE_TO_USE constant in FreeRTOSConfig.h.

+	Calling this function will set the pxOpenedInterfaceHandle variable.  If,

+	after calling this function, pxOpenedInterfaceHandle is equal to NULL, then

+	the interface could not be opened. */

+	if( pxAllNetworkInterfaces != NULL )

+	{

+		prvOpenSelectedNetworkInterface( pxAllNetworkInterfaces );

+	}

+	

+

+	return x;

+}

+/*-----------------------------------------------------------*/

+

+static pcap_if_t * prvPrintAvailableNetworkInterfaces( void )

+{    

+pcap_if_t * pxAllNetworkInterfaces = NULL, *xInterface;

+long lInterfaceNumber = 1;

+

+    if( pcap_findalldevs_ex( PCAP_SRC_IF_STRING, NULL, &pxAllNetworkInterfaces, cErrorBuffer ) == -1 )

+    {

+        printf( "\r\nCould not obtain a list of network interfaces\r\n%s\r\n", cErrorBuffer );

+        pxAllNetworkInterfaces = NULL;

+    }

+

+	if( pxAllNetworkInterfaces != NULL )

+	{

+		/* Print out the list of network interfaces.  The first in the list

+		is interface '1', not interface '0'. */

+		for( xInterface = pxAllNetworkInterfaces; xInterface != NULL; xInterface = xInterface->next )

+		{

+			printf( "%d. %s", lInterfaceNumber, xInterface->name );

+			

+			if( xInterface->description != NULL )

+			{

+				printf( " (%s)\r\n", xInterface->description );

+			}

+			else

+			{

+				printf( " (No description available)\r\n") ;

+			}

+			

+			lInterfaceNumber++;

+		}

+	}

+

+    if( lInterfaceNumber == 1 )

+    {

+		/* The interface number was never incremented, so the above for() loop

+		did not execute meaning no interfaces were found. */

+        printf( " \r\nNo network interfaces were found.\r\n" );

+        pxAllNetworkInterfaces = NULL;

+    }

+

+	printf( "\r\nThe interface that will be opened is set by configNETWORK_INTERFACE_TO_USE which should be defined in FreeRTOSConfig.h\r\n" );

+	printf( "Attempting to open interface number %d.\r\n", configNETWORK_INTERFACE_TO_USE );

+	

+    if( ( configNETWORK_INTERFACE_TO_USE < 1L ) || ( configNETWORK_INTERFACE_TO_USE > lInterfaceNumber ) )

+    {

+        printf("\r\nconfigNETWORK_INTERFACE_TO_USE is not in the valid range.\r\n" );

+		

+		if( pxAllNetworkInterfaces != NULL )

+		{

+			/* Free the device list, as no devices are going to be opened. */

+			pcap_freealldevs( pxAllNetworkInterfaces );

+			pxAllNetworkInterfaces = NULL;

+		}

+    }

+

+	return pxAllNetworkInterfaces;

+}

+/*-----------------------------------------------------------*/

+

+static void prvOpenSelectedNetworkInterface( pcap_if_t *pxAllNetworkInterfaces )

+{

+pcap_if_t *xInterface;

+long x;

+

+    /* Walk the list of devices until the selected device is located. */

+	xInterface = pxAllNetworkInterfaces;

+    for( x = 0L; x < ( configNETWORK_INTERFACE_TO_USE - 1L ); x++ )

+	{

+		xInterface = xInterface->next;

+	}

+

+    /* Open the selected interface. */

+	pxOpenedInterfaceHandle = pcap_open(	xInterface->name,          	/* The name of the selected interface. */

+											UIP_CONF_BUFFER_SIZE, 		/* The size of the packet to capture. */

+											PCAP_OPENFLAG_PROMISCUOUS,	/* Open in promiscious mode as the MAC and 

+																		IP address is going to be "simulated", and 

+																		not be the real MAC and IP address.  This allows

+																		trafic to the simulated IP address to be routed

+																		to uIP, and trafic to the real IP address to be

+																		routed to the Windows TCP/IP stack. */

+											0xfffffffL,             	/* The read time out.  This is going to block

+																		until data is available. */

+											NULL,             			/* No authentication is required as this is

+																		not a remote capture session. */

+											cErrorBuffer            

+									   );

+									   

+    if ( pxOpenedInterfaceHandle == NULL )

+    {

+        printf( "\r\n%s is not supported by WinPcap and cannot be opened\r\n", xInterface->name );

+    }

+	else

+	{

+		/* Configure the capture filter to allow blocking reads, and to filter 

+		out packets that are not of interest to this demo. */

+		prvConfigureCaptureBehaviour();

+	}

+

+	/* The device list is no longer required. */

+	pcap_freealldevs( pxAllNetworkInterfaces );

+}

+/*-----------------------------------------------------------*/

+

+static void prvConfigureCaptureBehaviour( void )

+{

+struct bpf_program xFilterCode;

+const long lMinBytesToCopy = 10L, lBlocking = 0L;

+unsigned long ulNetMask;

+

+	/* Unblock a read as soon as anything is received. */

+	pcap_setmintocopy( pxOpenedInterfaceHandle, lMinBytesToCopy );

+

+	/* Allow blocking. */

+	pcap_setnonblock( pxOpenedInterfaceHandle, lBlocking, cErrorBuffer );

+

+	/* Set up a filter so only the packets of interest are passed to the uIP

+	stack.  cErrorBuffer is used for convenience to create the string.  Don't

+	confuse this with an error message. */

+	sprintf( cErrorBuffer, "broadcast or multicast or host %d.%d.%d.%d", configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 );

+

+	ulNetMask = ( configNET_MASK3 << 24UL ) | ( configNET_MASK2 << 16UL ) | ( configNET_MASK1 << 8L ) | configNET_MASK0;

+

+	if( pcap_compile(pxOpenedInterfaceHandle, &xFilterCode, cErrorBuffer, 1, ulNetMask ) < 0 )

+    {

+        printf("\r\nThe packet filter string is invalid\r\n" );

+    }

+	else

+	{    

+		if( pcap_setfilter( pxOpenedInterfaceHandle, &xFilterCode ) < 0 )

+		{

+			printf( "\r\nAn error occurred setting the packet filter.\r\n" );

+		}

+	}

+

+	/* Create a task that simulates an interrupt in a real system.  This will

+	block waiting for packets, then send a message to the uIP task when data

+	is available. */

+	xTaskCreate( prvInterruptSimulator, ( signed char * ) "MAC_ISR", configMINIMAL_STACK_SIZE, NULL, ( configuIP_TASK_PRIORITY - 1 ), NULL );

+}

+/*-----------------------------------------------------------*/

+

+static void prvInterruptSimulator( void *pvParameters )

+{

+static struct pcap_pkthdr *pxHeader;

+const unsigned char *pucPacketData;

+extern QueueHandle_t xEMACEventQueue;

+const unsigned long ulRxEvent = uipETHERNET_RX_EVENT;

+long lResult;

+

+	/* Just to kill the compiler warning. */

+	( void ) pvParameters;

+

+	for( ;; )

+	{

+		/* Get the next packet. */

+		lResult = pcap_next_ex( pxOpenedInterfaceHandle, &pxHeader, &pucPacketData );

+		if( lResult )

+		{

+			/* Is the next buffer into which data should be placed free? */

+			if( lLengthOfDataInBuffer[ ucNextBufferToFill ] == 0L )

+			{

+				/* Copy the data from the captured packet into the buffer. */

+				memcpy( pucEthernetBufferPointers[ ucNextBufferToFill ], pucPacketData, pxHeader->len );

+

+				/* Note the amount of data that was copied. */

+				lLengthOfDataInBuffer[ ucNextBufferToFill ] = pxHeader->len;

+

+				/* Move onto the next buffer, wrapping around if necessary. */

+				ucNextBufferToFill++;

+				if( ucNextBufferToFill >= archNUM_BUFFER_POINTERS )

+				{

+					ucNextBufferToFill = 0U;

+				}

+

+				/* Data was received and stored.  Send a message to the uIP task

+				to let it know. */

+				xQueueSendToBack( xEMACEventQueue, &ulRxEvent, portMAX_DELAY );

+			}

+		}

+	}

+}

+

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/bittypes.h b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/bittypes.h
new file mode 100644
index 0000000..fcacd45
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/bittypes.h
@@ -0,0 +1,137 @@
+/*

+ * Copyright (C) 1999 WIDE Project.

+ * All rights reserved.

+ * 

+ * Redistribution and use in source and binary forms, with or without

+ * modification, are permitted provided that the following conditions

+ * are met:

+ * 1. Redistributions of source code must retain the above copyright

+ *    notice, this list of conditions and the following disclaimer.

+ * 2. Redistributions in binary form must reproduce the above copyright

+ *    notice, this list of conditions and the following disclaimer in the

+ *    documentation and/or other materials provided with the distribution.

+ * 3. Neither the name of the project nor the names of its contributors

+ *    may be used to endorse or promote products derived from this software

+ *    without specific prior written permission.

+ * 

+ * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND

+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE

+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE

+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS

+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)

+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT

+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY

+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF

+ * SUCH DAMAGE.

+ */

+#ifndef _BITTYPES_H

+#define _BITTYPES_H

+

+#ifndef HAVE_U_INT8_T

+

+#if SIZEOF_CHAR == 1

+typedef unsigned char u_int8_t;

+typedef signed char _int8_t;

+#elif SIZEOF_INT == 1

+typedef unsigned int u_int8_t;

+typedef signed int int8_t;

+#else  /* XXX */

+#error "there's no appropriate type for u_int8_t"

+#endif

+#define HAVE_U_INT8_T 1

+#define HAVE_INT8_T 1

+

+#endif /* HAVE_U_INT8_T */

+

+#ifndef HAVE_U_INT16_T 

+

+#if SIZEOF_SHORT == 2

+typedef unsigned short u_int16_t;

+typedef signed short _int16_t;

+#elif SIZEOF_INT == 2

+typedef unsigned int u_int16_t;

+typedef signed int int16_t;

+#elif SIZEOF_CHAR == 2

+typedef unsigned char u_int16_t;

+typedef signed char int16_t;

+#else  /* XXX */

+#error "there's no appropriate type for u_int16_t"

+#endif

+#define HAVE_U_INT16_T 1

+#define HAVE_INT16_T 1

+

+#endif /* HAVE_U_INT16_T */

+

+#ifndef HAVE_U_INT32_T

+

+#if SIZEOF_INT == 4

+typedef unsigned int u_int32_t;

+typedef signed int _int32_t;

+#elif SIZEOF_LONG == 4

+typedef unsigned long u_int32_t;

+typedef signed long int32_t;

+#elif SIZEOF_SHORT == 4

+typedef unsigned short u_int32_t;

+typedef signed short int32_t;

+#else  /* XXX */

+#error "there's no appropriate type for u_int32_t"

+#endif

+#define HAVE_U_INT32_T 1

+#define HAVE_INT32_T 1

+

+#endif /* HAVE_U_INT32_T */

+

+#ifndef HAVE_U_INT64_T

+#if SIZEOF_LONG_LONG == 8

+typedef unsigned long long u_int64_t;

+typedef long long int64_t;

+#elif defined(_MSC_EXTENSIONS)

+typedef unsigned _int64 u_int64_t;

+typedef _int64 int64_t;

+#elif SIZEOF_INT == 8

+typedef unsigned int u_int64_t;

+#elif SIZEOF_LONG == 8

+typedef unsigned long u_int64_t;

+#elif SIZEOF_SHORT == 8

+typedef unsigned short u_int64_t;

+#else  /* XXX */

+#error "there's no appropriate type for u_int64_t"

+#endif

+

+#endif /* HAVE_U_INT64_T */

+

+#ifndef PRId64

+#ifdef _MSC_EXTENSIONS

+#define PRId64	"I64d"

+#else /* _MSC_EXTENSIONS */

+#define PRId64	"lld"

+#endif /* _MSC_EXTENSIONS */

+#endif /* PRId64 */

+

+#ifndef PRIo64

+#ifdef _MSC_EXTENSIONS

+#define PRIo64	"I64o"

+#else /* _MSC_EXTENSIONS */

+#define PRIo64	"llo"

+#endif /* _MSC_EXTENSIONS */

+#endif /* PRIo64 */

+

+#ifndef PRIx64

+#ifdef _MSC_EXTENSIONS

+#define PRIx64	"I64x"

+#else /* _MSC_EXTENSIONS */

+#define PRIx64	"llx"

+#endif /* _MSC_EXTENSIONS */

+#endif /* PRIx64 */

+

+#ifndef PRIu64

+#ifdef _MSC_EXTENSIONS

+#define PRIu64	"I64u"

+#else /* _MSC_EXTENSIONS */

+#define PRIu64	"llu"

+#endif /* _MSC_EXTENSIONS */

+#endif /* PRIu64 */

+

+#endif /* _BITTYPES_H */

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/ip6_misc.h b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/ip6_misc.h
new file mode 100644
index 0000000..96822d0
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/ip6_misc.h
@@ -0,0 +1,163 @@
+/*

+ * Copyright (c) 1993, 1994, 1997

+ *	The Regents of the University of California.  All rights reserved.

+ *

+ * Redistribution and use in source and binary forms, with or without

+ * modification, are permitted provided that: (1) source code distributions

+ * retain the above copyright notice and this paragraph in its entirety, (2)

+ * distributions including binary code include the above copyright notice and

+ * this paragraph in its entirety in the documentation or other materials

+ * provided with the distribution, and (3) all advertising materials mentioning

+ * features or use of this software display the following acknowledgement:

+ * ``This product includes software developed by the University of California,

+ * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of

+ * the University nor the names of its contributors may be used to endorse

+ * or promote products derived from this software without specific prior

+ * written permission.

+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED

+ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF

+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.

+ *

+ * @(#) $Header: /tcpdump/master/libpcap/Win32/Include/ip6_misc.h,v 1.5 2006-01-22 18:02:18 gianluca Exp $ (LBL)

+ */

+

+/*

+ * This file contains a collage of declarations for IPv6 from FreeBSD not present in Windows

+ */

+

+#include <winsock2.h>

+

+#include <ws2tcpip.h>

+

+#ifndef __MINGW32__

+#define	IN_MULTICAST(a)		IN_CLASSD(a)

+#endif

+

+#define	IN_EXPERIMENTAL(a)	((((u_int32_t) (a)) & 0xf0000000) == 0xf0000000)

+

+#define	IN_LOOPBACKNET		127

+

+#if defined(__MINGW32__) && defined(DEFINE_ADDITIONAL_IPV6_STUFF)

+/* IPv6 address */

+struct in6_addr

+  {

+    union

+      {

+	u_int8_t		u6_addr8[16];

+	u_int16_t	u6_addr16[8];

+	u_int32_t	u6_addr32[4];

+      } in6_u;

+#define s6_addr			in6_u.u6_addr8

+#define s6_addr16		in6_u.u6_addr16

+#define s6_addr32		in6_u.u6_addr32

+#define s6_addr64		in6_u.u6_addr64

+  };

+

+#define IN6ADDR_ANY_INIT { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }

+#define IN6ADDR_LOOPBACK_INIT { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 }

+#endif /* __MINGW32__ */

+

+

+#if (defined _MSC_VER) || (defined(__MINGW32__) && defined(DEFINE_ADDITIONAL_IPV6_STUFF))

+typedef unsigned short	sa_family_t;

+#endif

+

+

+#if defined(__MINGW32__) && defined(DEFINE_ADDITIONAL_IPV6_STUFF)

+

+#define	__SOCKADDR_COMMON(sa_prefix) \

+  sa_family_t sa_prefix##family

+

+/* Ditto, for IPv6.  */

+struct sockaddr_in6

+  {

+    __SOCKADDR_COMMON (sin6_);

+    u_int16_t sin6_port;		/* Transport layer port # */

+    u_int32_t sin6_flowinfo;	/* IPv6 flow information */

+    struct in6_addr sin6_addr;	/* IPv6 address */

+  };

+

+#define IN6_IS_ADDR_V4MAPPED(a) \

+	((((u_int32_t *) (a))[0] == 0) && (((u_int32_t *) (a))[1] == 0) && \

+	 (((u_int32_t *) (a))[2] == htonl (0xffff)))

+

+#define IN6_IS_ADDR_MULTICAST(a) (((u_int8_t *) (a))[0] == 0xff)

+

+#define IN6_IS_ADDR_LINKLOCAL(a) \

+	((((u_int32_t *) (a))[0] & htonl (0xffc00000)) == htonl (0xfe800000))

+

+#define IN6_IS_ADDR_LOOPBACK(a) \

+	(((u_int32_t *) (a))[0] == 0 && ((u_int32_t *) (a))[1] == 0 && \

+	 ((u_int32_t *) (a))[2] == 0 && ((u_int32_t *) (a))[3] == htonl (1))

+#endif /* __MINGW32__ */

+

+#define ip6_vfc   ip6_ctlun.ip6_un2_vfc

+#define ip6_flow  ip6_ctlun.ip6_un1.ip6_un1_flow

+#define ip6_plen  ip6_ctlun.ip6_un1.ip6_un1_plen

+#define ip6_nxt   ip6_ctlun.ip6_un1.ip6_un1_nxt

+#define ip6_hlim  ip6_ctlun.ip6_un1.ip6_un1_hlim

+#define ip6_hops  ip6_ctlun.ip6_un1.ip6_un1_hlim

+

+#define nd_rd_type               nd_rd_hdr.icmp6_type

+#define nd_rd_code               nd_rd_hdr.icmp6_code

+#define nd_rd_cksum              nd_rd_hdr.icmp6_cksum

+#define nd_rd_reserved           nd_rd_hdr.icmp6_data32[0]

+

+/*

+ *	IPV6 extension headers

+ */

+#define IPPROTO_HOPOPTS		0	/* IPv6 hop-by-hop options	*/

+#define IPPROTO_IPV6		41  /* IPv6 header.  */

+#define IPPROTO_ROUTING		43	/* IPv6 routing header		*/

+#define IPPROTO_FRAGMENT	44	/* IPv6 fragmentation header	*/

+#define IPPROTO_ESP		50	/* encapsulating security payload */

+#define IPPROTO_AH		51	/* authentication header	*/

+#define IPPROTO_ICMPV6		58	/* ICMPv6			*/

+#define IPPROTO_NONE		59	/* IPv6 no next header		*/

+#define IPPROTO_DSTOPTS		60	/* IPv6 destination options	*/

+#define IPPROTO_PIM			103 /* Protocol Independent Multicast.  */

+

+#define	 IPV6_RTHDR_TYPE_0 0

+

+/* Option types and related macros */

+#define IP6OPT_PAD1		0x00	/* 00 0 00000 */

+#define IP6OPT_PADN		0x01	/* 00 0 00001 */

+#define IP6OPT_JUMBO		0xC2	/* 11 0 00010 = 194 */

+#define IP6OPT_JUMBO_LEN	6

+#define IP6OPT_ROUTER_ALERT	0x05	/* 00 0 00101 */

+

+#define IP6OPT_RTALERT_LEN	4

+#define IP6OPT_RTALERT_MLD	0	/* Datagram contains an MLD message */

+#define IP6OPT_RTALERT_RSVP	1	/* Datagram contains an RSVP message */

+#define IP6OPT_RTALERT_ACTNET	2 	/* contains an Active Networks msg */

+#define IP6OPT_MINLEN		2

+

+#define IP6OPT_BINDING_UPDATE	0xc6	/* 11 0 00110 */

+#define IP6OPT_BINDING_ACK	0x07	/* 00 0 00111 */

+#define IP6OPT_BINDING_REQ	0x08	/* 00 0 01000 */

+#define IP6OPT_HOME_ADDRESS	0xc9	/* 11 0 01001 */

+#define IP6OPT_EID		0x8a	/* 10 0 01010 */

+

+#define IP6OPT_TYPE(o)		((o) & 0xC0)

+#define IP6OPT_TYPE_SKIP	0x00

+#define IP6OPT_TYPE_DISCARD	0x40

+#define IP6OPT_TYPE_FORCEICMP	0x80

+#define IP6OPT_TYPE_ICMP	0xC0

+

+#define IP6OPT_MUTABLE		0x20

+

+

+#if defined(__MINGW32__) && defined(DEFINE_ADDITIONAL_IPV6_STUFF)

+#ifndef EAI_ADDRFAMILY

+struct addrinfo {

+	int	ai_flags;	/* AI_PASSIVE, AI_CANONNAME */

+	int	ai_family;	/* PF_xxx */

+	int	ai_socktype;	/* SOCK_xxx */

+	int	ai_protocol;	/* 0 or IPPROTO_xxx for IPv4 and IPv6 */

+	size_t	ai_addrlen;	/* length of ai_addr */

+	char	*ai_canonname;	/* canonical name for hostname */

+	struct sockaddr *ai_addr;	/* binary address */

+	struct addrinfo *ai_next;	/* next structure in linked list */

+};

+#endif

+#endif /* __MINGW32__ */

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/netif.h b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/netif.h
new file mode 100644
index 0000000..2d51478
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/netif.h
@@ -0,0 +1,52 @@
+/*

+ * FreeRTOS Kernel V10.2.1

+ * 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://www.FreeRTOS.org

+ * http://aws.amazon.com/freertos

+ *

+ * 1 tab == 4 spaces!

+ */

+

+#ifndef NET_IF_H

+#define NET_IF_H

+

+/*

+ * Send uip_len bytes from uip_buf to the network interface selected by the 

+ * configNETWORK_INTERFACE_TO_USE constant (defined in FreeRTOSConfig.h). 

+ */

+void vNetifTx( void );

+

+/*

+ * Receive bytes from the network interface selected by the 

+ * configNETWORK_INTERFACE_TO_USE constant (defined in FreeRTOSConfig.h).  The

+ * bytes are placed in uip_buf.  The number of bytes copied into uip_buf is

+ * returned.

+ */

+UBaseType_t uxNetifRx( void );

+

+/*

+ * Prepare a packet capture session.  This will print out all the network 

+ * interfaces available, and the one actually used is set by the 

+ * configNETWORK_INTERFACE_TO_USE constant that is defined in 

+ * FreeRTOSConfig.h. */

+BaseType_t xNetifInit( void );

+

+#endif /* NET_IF_H */

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/pcap-bpf.h b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/pcap-bpf.h
new file mode 100644
index 0000000..ff5b6e0
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/pcap-bpf.h
@@ -0,0 +1,47 @@
+/*-

+ * Copyright (c) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997

+ *	The Regents of the University of California.  All rights reserved.

+ *

+ * This code is derived from the Stanford/CMU enet packet filter,

+ * (net/enet.c) distributed as part of 4.3BSD, and code contributed

+ * to Berkeley by Steven McCanne and Van Jacobson both of Lawrence 

+ * Berkeley Laboratory.

+ *

+ * Redistribution and use in source and binary forms, with or without

+ * modification, are permitted provided that the following conditions

+ * are met:

+ * 1. Redistributions of source code must retain the above copyright

+ *    notice, this list of conditions and the following disclaimer.

+ * 2. Redistributions in binary form must reproduce the above copyright

+ *    notice, this list of conditions and the following disclaimer in the

+ *    documentation and/or other materials provided with the distribution.

+ * 3. All advertising materials mentioning features or use of this software

+ *    must display the following acknowledgement:

+ *      This product includes software developed by the University of

+ *      California, Berkeley and its contributors.

+ * 4. Neither the name of the University nor the names of its contributors

+ *    may be used to endorse or promote products derived from this software

+ *    without specific prior written permission.

+ *

+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND

+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE

+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE

+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS

+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)

+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT

+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY

+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF

+ * SUCH DAMAGE.

+ *

+ * @(#) $Header: /tcpdump/master/libpcap/pcap-bpf.h,v 1.50 2007/04/01 21:43:55 guy Exp $ (LBL)

+ */

+

+/*

+ * For backwards compatibility.

+ *

+ * Note to OS vendors: do NOT get rid of this file!  Some applications

+ * might expect to be able to include <pcap-bpf.h>.

+ */

+#include <pcap/bpf.h>

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/pcap-namedb.h b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/pcap-namedb.h
new file mode 100644
index 0000000..ee6715f
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/pcap-namedb.h
@@ -0,0 +1,42 @@
+/*

+ * Copyright (c) 1994, 1996

+ *	The Regents of the University of California.  All rights reserved.

+ *

+ * Redistribution and use in source and binary forms, with or without

+ * modification, are permitted provided that the following conditions

+ * are met:

+ * 1. Redistributions of source code must retain the above copyright

+ *    notice, this list of conditions and the following disclaimer.

+ * 2. Redistributions in binary form must reproduce the above copyright

+ *    notice, this list of conditions and the following disclaimer in the

+ *    documentation and/or other materials provided with the distribution.

+ * 3. All advertising materials mentioning features or use of this software

+ *    must display the following acknowledgement:

+ *	This product includes software developed by the Computer Systems

+ *	Engineering Group at Lawrence Berkeley Laboratory.

+ * 4. Neither the name of the University nor of the Laboratory may be used

+ *    to endorse or promote products derived from this software without

+ *    specific prior written permission.

+ *

+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND

+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE

+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE

+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS

+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)

+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT

+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY

+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF

+ * SUCH DAMAGE.

+ *

+ * @(#) $Header: /tcpdump/master/libpcap/pcap-namedb.h,v 1.13 2006/10/04 18:13:32 guy Exp $ (LBL)

+ */

+

+/*

+ * For backwards compatibility.

+ *

+ * Note to OS vendors: do NOT get rid of this file!  Some applications

+ * might expect to be able to include <pcap-namedb.h>.

+ */

+#include <pcap/namedb.h>

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/pcap-stdinc.h b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/pcap-stdinc.h
new file mode 100644
index 0000000..cbd62d1
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/pcap-stdinc.h
@@ -0,0 +1,93 @@
+/*

+ * Copyright (c) 2002 - 2005 NetGroup, Politecnico di Torino (Italy)

+ * Copyright (c) 2005 - 2009 CACE Technologies, Inc. Davis (California)

+ * All rights reserved.

+ *

+ * Redistribution and use in source and binary forms, with or without

+ * modification, are permitted provided that the following conditions

+ * are met:

+ *

+ * 1. Redistributions of source code must retain the above copyright

+ * notice, this list of conditions and the following disclaimer.

+ * 2. Redistributions in binary form must reproduce the above copyright

+ * notice, this list of conditions and the following disclaimer in the

+ * documentation and/or other materials provided with the distribution.

+ * 3. Neither the name of the Politecnico di Torino nor the names of its

+ * contributors may be used to endorse or promote products derived from

+ * this software without specific prior written permission.

+ *

+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS

+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT

+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR

+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT

+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,

+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT

+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY

+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT

+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE

+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+ *

+ * @(#) $Header: /tcpdump/master/libpcap/pcap-stdinc.h,v 1.10.2.1 2008-10-06 15:38:39 gianluca Exp $ (LBL)

+ */

+

+#define SIZEOF_CHAR 1

+#define SIZEOF_SHORT 2

+#define SIZEOF_INT 4

+#ifndef _MSC_EXTENSIONS

+#define SIZEOF_LONG_LONG 8

+#endif

+

+/*

+ * Avoids a compiler warning in case this was already defined      

+ * (someone defined _WINSOCKAPI_ when including 'windows.h', in order

+ * to prevent it from including 'winsock.h')

+ */

+#ifdef _WINSOCKAPI_

+#undef _WINSOCKAPI_

+#endif

+#include <winsock2.h>

+

+#include <fcntl.h>

+

+#include "bittypes.h"

+#include <time.h>

+#include <io.h>

+

+#ifndef __MINGW32__

+#include "IP6_misc.h"

+#endif

+

+#define caddr_t char*

+

+#if _MSC_VER < 1500

+#define snprintf _snprintf

+#define vsnprintf _vsnprintf

+#define strdup _strdup

+#endif

+

+#define inline __inline 

+

+#ifdef __MINGW32__

+#include <stdint.h>

+#else /*__MINGW32__*/

+/* MSVC compiler */

+#ifndef _UINTPTR_T_DEFINED

+#ifdef  _WIN64

+typedef unsigned __int64    uintptr_t;

+#else

+typedef _W64 unsigned int   uintptr_t;

+#endif

+#define _UINTPTR_T_DEFINED

+#endif

+

+#ifndef _INTPTR_T_DEFINED

+#ifdef  _WIN64

+typedef __int64    intptr_t;

+#else

+typedef _W64 int   intptr_t;

+#endif

+#define _INTPTR_T_DEFINED

+#endif 

+

+#endif /*__MINGW32__*/

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/pcap.h b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/pcap.h
new file mode 100644
index 0000000..2eea075
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/pcap.h
@@ -0,0 +1,45 @@
+/*

+ * Copyright (c) 1993, 1994, 1995, 1996, 1997

+ *	The Regents of the University of California.  All rights reserved.

+ *

+ * Redistribution and use in source and binary forms, with or without

+ * modification, are permitted provided that the following conditions

+ * are met:

+ * 1. Redistributions of source code must retain the above copyright

+ *    notice, this list of conditions and the following disclaimer.

+ * 2. Redistributions in binary form must reproduce the above copyright

+ *    notice, this list of conditions and the following disclaimer in the

+ *    documentation and/or other materials provided with the distribution.

+ * 3. All advertising materials mentioning features or use of this software

+ *    must display the following acknowledgement:

+ *	This product includes software developed by the Computer Systems

+ *	Engineering Group at Lawrence Berkeley Laboratory.

+ * 4. Neither the name of the University nor of the Laboratory may be used

+ *    to endorse or promote products derived from this software without

+ *    specific prior written permission.

+ *

+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND

+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE

+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE

+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS

+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)

+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT

+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY

+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF

+ * SUCH DAMAGE.

+ *

+ * @(#) $Header: /tcpdump/master/libpcap/pcap.h,v 1.59 2006/10/04 18:09:22 guy Exp $ (LBL)

+ */

+

+/*

+ * For backwards compatibility.

+ *

+ * Note to OS vendors: do NOT get rid of this file!  Many applications

+ * expect to be able to include <pcap.h>, and at least some of them

+ * go through contortions in their configure scripts to try to detect

+ * OSes that have "helpfully" moved pcap.h to <pcap/pcap.h> without

+ * leaving behind a <pcap.h> file.

+ */

+#include <pcap/pcap.h>

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/pcap/bluetooth.h b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/pcap/bluetooth.h
new file mode 100644
index 0000000..28b991f
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/pcap/bluetooth.h
@@ -0,0 +1,48 @@
+/*

+ * Copyright (c) 2006 Paolo Abeni (Italy)

+ * All rights reserved.

+ *

+ * Redistribution and use in source and binary forms, with or without

+ * modification, are permitted provided that the following conditions

+ * are met:

+ *

+ * 1. Redistributions of source code must retain the above copyright

+ * notice, this list of conditions and the following disclaimer.

+ * 2. Redistributions in binary form must reproduce the above copyright

+ * notice, this list of conditions and the following disclaimer in the

+ * documentation and/or other materials provided with the distribution.

+ * 3. The name of the author may not be used to endorse or promote 

+ * products derived from this software without specific prior written 

+ * permission.

+ *

+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS

+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT

+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR

+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT

+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,

+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT

+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY

+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT

+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE

+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+ *

+ * bluetooth data struct

+ * By Paolo Abeni <paolo.abeni@email.it>

+ *

+ * @(#) $Header: /tcpdump/master/libpcap/pcap/bluetooth.h,v 1.1 2007/09/22 02:10:17 guy Exp $

+ */

+ 

+#ifndef _PCAP_BLUETOOTH_STRUCTS_H__

+#define _PCAP_BLUETOOTH_STRUCTS_H__

+

+/*

+ * Header prepended libpcap to each bluetooth h:4 frame.

+ * fields are in network byte order

+ */

+typedef struct _pcap_bluetooth_h4_header {

+	u_int32_t direction; /* if first bit is set direction is incoming */

+} pcap_bluetooth_h4_header;

+

+

+#endif

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/pcap/bpf.h b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/pcap/bpf.h
new file mode 100644
index 0000000..b6d2596
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/pcap/bpf.h
@@ -0,0 +1,934 @@
+/*-

+ * Copyright (c) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997

+ *	The Regents of the University of California.  All rights reserved.

+ *

+ * This code is derived from the Stanford/CMU enet packet filter,

+ * (net/enet.c) distributed as part of 4.3BSD, and code contributed

+ * to Berkeley by Steven McCanne and Van Jacobson both of Lawrence 

+ * Berkeley Laboratory.

+ *

+ * Redistribution and use in source and binary forms, with or without

+ * modification, are permitted provided that the following conditions

+ * are met:

+ * 1. Redistributions of source code must retain the above copyright

+ *    notice, this list of conditions and the following disclaimer.

+ * 2. Redistributions in binary form must reproduce the above copyright

+ *    notice, this list of conditions and the following disclaimer in the

+ *    documentation and/or other materials provided with the distribution.

+ * 3. All advertising materials mentioning features or use of this software

+ *    must display the following acknowledgement:

+ *      This product includes software developed by the University of

+ *      California, Berkeley and its contributors.

+ * 4. Neither the name of the University nor the names of its contributors

+ *    may be used to endorse or promote products derived from this software

+ *    without specific prior written permission.

+ *

+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND

+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE

+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE

+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS

+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)

+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT

+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY

+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF

+ * SUCH DAMAGE.

+ *

+ *      @(#)bpf.h       7.1 (Berkeley) 5/7/91

+ *

+ * @(#) $Header: /tcpdump/master/libpcap/pcap/bpf.h,v 1.19.2.8 2008-09-22 20:16:01 guy Exp $ (LBL)

+ */

+

+/*

+ * This is libpcap's cut-down version of bpf.h; it includes only

+ * the stuff needed for the code generator and the userland BPF

+ * interpreter, and the libpcap APIs for setting filters, etc..

+ *

+ * "pcap-bpf.c" will include the native OS version, as it deals with

+ * the OS's BPF implementation.

+ *

+ * XXX - should this all just be moved to "pcap.h"?

+ */

+

+#ifndef BPF_MAJOR_VERSION

+

+#ifdef __cplusplus

+extern "C" {

+#endif

+

+/* BSD style release date */

+#define BPF_RELEASE 199606

+

+#ifdef MSDOS /* must be 32-bit */

+typedef long          bpf_int32;

+typedef unsigned long bpf_u_int32;

+#else

+typedef	int bpf_int32;

+typedef	u_int bpf_u_int32;

+#endif

+

+/*

+ * Alignment macros.  BPF_WORDALIGN rounds up to the next 

+ * even multiple of BPF_ALIGNMENT. 

+ */

+#ifndef __NetBSD__

+#define BPF_ALIGNMENT sizeof(bpf_int32)

+#else

+#define BPF_ALIGNMENT sizeof(long)

+#endif

+#define BPF_WORDALIGN(x) (((x)+(BPF_ALIGNMENT-1))&~(BPF_ALIGNMENT-1))

+

+#define BPF_MAXBUFSIZE 0x8000

+#define BPF_MINBUFSIZE 32

+

+/*

+ * Structure for "pcap_compile()", "pcap_setfilter()", etc..

+ */

+struct bpf_program {

+	u_int bf_len;

+	struct bpf_insn *bf_insns;

+};

+ 

+/*

+ * Struct return by BIOCVERSION.  This represents the version number of 

+ * the filter language described by the instruction encodings below.

+ * bpf understands a program iff kernel_major == filter_major &&

+ * kernel_minor >= filter_minor, that is, if the value returned by the

+ * running kernel has the same major number and a minor number equal

+ * equal to or less than the filter being downloaded.  Otherwise, the

+ * results are undefined, meaning an error may be returned or packets

+ * may be accepted haphazardly.

+ * It has nothing to do with the source code version.

+ */

+struct bpf_version {

+	u_short bv_major;

+	u_short bv_minor;

+};

+/* Current version number of filter architecture. */

+#define BPF_MAJOR_VERSION 1

+#define BPF_MINOR_VERSION 1

+

+/*

+ * Data-link level type codes.

+ *

+ * Do *NOT* add new values to this list without asking

+ * "tcpdump-workers@lists.tcpdump.org" for a value.  Otherwise, you run

+ * the risk of using a value that's already being used for some other

+ * purpose, and of having tools that read libpcap-format captures not

+ * being able to handle captures with your new DLT_ value, with no hope

+ * that they will ever be changed to do so (as that would destroy their

+ * ability to read captures using that value for that other purpose).

+ */

+

+/*

+ * These are the types that are the same on all platforms, and that

+ * have been defined by <net/bpf.h> for ages.

+ */

+#define DLT_NULL	0	/* BSD loopback encapsulation */

+#define DLT_EN10MB	1	/* Ethernet (10Mb) */

+#define DLT_EN3MB	2	/* Experimental Ethernet (3Mb) */

+#define DLT_AX25	3	/* Amateur Radio AX.25 */

+#define DLT_PRONET	4	/* Proteon ProNET Token Ring */

+#define DLT_CHAOS	5	/* Chaos */

+#define DLT_IEEE802	6	/* 802.5 Token Ring */

+#define DLT_ARCNET	7	/* ARCNET, with BSD-style header */

+#define DLT_SLIP	8	/* Serial Line IP */

+#define DLT_PPP		9	/* Point-to-point Protocol */

+#define DLT_FDDI	10	/* FDDI */

+

+/*

+ * These are types that are different on some platforms, and that

+ * have been defined by <net/bpf.h> for ages.  We use #ifdefs to

+ * detect the BSDs that define them differently from the traditional

+ * libpcap <net/bpf.h>

+ *

+ * XXX - DLT_ATM_RFC1483 is 13 in BSD/OS, and DLT_RAW is 14 in BSD/OS,

+ * but I don't know what the right #define is for BSD/OS.

+ */

+#define DLT_ATM_RFC1483	11	/* LLC-encapsulated ATM */

+

+#ifdef __OpenBSD__

+#define DLT_RAW		14	/* raw IP */

+#else

+#define DLT_RAW		12	/* raw IP */

+#endif

+

+/*

+ * Given that the only OS that currently generates BSD/OS SLIP or PPP

+ * is, well, BSD/OS, arguably everybody should have chosen its values

+ * for DLT_SLIP_BSDOS and DLT_PPP_BSDOS, which are 15 and 16, but they

+ * didn't.  So it goes.

+ */

+#if defined(__NetBSD__) || defined(__FreeBSD__)

+#ifndef DLT_SLIP_BSDOS

+#define DLT_SLIP_BSDOS	13	/* BSD/OS Serial Line IP */

+#define DLT_PPP_BSDOS	14	/* BSD/OS Point-to-point Protocol */

+#endif

+#else

+#define DLT_SLIP_BSDOS	15	/* BSD/OS Serial Line IP */

+#define DLT_PPP_BSDOS	16	/* BSD/OS Point-to-point Protocol */

+#endif

+

+/*

+ * 17 is used for DLT_OLD_PFLOG in OpenBSD;

+ *     OBSOLETE: DLT_PFLOG is 117 in OpenBSD now as well. See below.

+ * 18 is used for DLT_PFSYNC in OpenBSD; don't use it for anything else.

+ */

+

+#define DLT_ATM_CLIP	19	/* Linux Classical-IP over ATM */

+

+/*

+ * Apparently Redback uses this for its SmartEdge 400/800.  I hope

+ * nobody else decided to use it, too.

+ */

+#define DLT_REDBACK_SMARTEDGE	32

+

+/*

+ * These values are defined by NetBSD; other platforms should refrain from

+ * using them for other purposes, so that NetBSD savefiles with link

+ * types of 50 or 51 can be read as this type on all platforms.

+ */

+#define DLT_PPP_SERIAL	50	/* PPP over serial with HDLC encapsulation */

+#define DLT_PPP_ETHER	51	/* PPP over Ethernet */

+

+/*

+ * The Axent Raptor firewall - now the Symantec Enterprise Firewall - uses

+ * a link-layer type of 99 for the tcpdump it supplies.  The link-layer

+ * header has 6 bytes of unknown data, something that appears to be an

+ * Ethernet type, and 36 bytes that appear to be 0 in at least one capture

+ * I've seen.

+ */

+#define DLT_SYMANTEC_FIREWALL	99

+

+/*

+ * Values between 100 and 103 are used in capture file headers as

+ * link-layer types corresponding to DLT_ types that differ

+ * between platforms; don't use those values for new DLT_ new types.

+ */

+

+/*

+ * This value was defined by libpcap 0.5; platforms that have defined

+ * it with a different value should define it here with that value -

+ * a link type of 104 in a save file will be mapped to DLT_C_HDLC,

+ * whatever value that happens to be, so programs will correctly

+ * handle files with that link type regardless of the value of

+ * DLT_C_HDLC.

+ *

+ * The name DLT_C_HDLC was used by BSD/OS; we use that name for source

+ * compatibility with programs written for BSD/OS.

+ *

+ * libpcap 0.5 defined it as DLT_CHDLC; we define DLT_CHDLC as well,

+ * for source compatibility with programs written for libpcap 0.5.

+ */

+#define DLT_C_HDLC	104	/* Cisco HDLC */

+#define DLT_CHDLC	DLT_C_HDLC

+

+#define DLT_IEEE802_11	105	/* IEEE 802.11 wireless */

+

+/*

+ * 106 is reserved for Linux Classical IP over ATM; it's like DLT_RAW,

+ * except when it isn't.  (I.e., sometimes it's just raw IP, and

+ * sometimes it isn't.)  We currently handle it as DLT_LINUX_SLL,

+ * so that we don't have to worry about the link-layer header.)

+ */

+

+/*

+ * Frame Relay; BSD/OS has a DLT_FR with a value of 11, but that collides

+ * with other values.

+ * DLT_FR and DLT_FRELAY packets start with the Q.922 Frame Relay header

+ * (DLCI, etc.).

+ */

+#define DLT_FRELAY	107

+

+/*

+ * OpenBSD DLT_LOOP, for loopback devices; it's like DLT_NULL, except

+ * that the AF_ type in the link-layer header is in network byte order.

+ *

+ * DLT_LOOP is 12 in OpenBSD, but that's DLT_RAW in other OSes, so

+ * we don't use 12 for it in OSes other than OpenBSD.

+ */

+#ifdef __OpenBSD__

+#define DLT_LOOP	12

+#else

+#define DLT_LOOP	108

+#endif

+

+/*

+ * Encapsulated packets for IPsec; DLT_ENC is 13 in OpenBSD, but that's

+ * DLT_SLIP_BSDOS in NetBSD, so we don't use 13 for it in OSes other

+ * than OpenBSD.

+ */

+#ifdef __OpenBSD__

+#define DLT_ENC		13

+#else

+#define DLT_ENC		109

+#endif

+

+/*

+ * Values between 110 and 112 are reserved for use in capture file headers

+ * as link-layer types corresponding to DLT_ types that might differ

+ * between platforms; don't use those values for new DLT_ types

+ * other than the corresponding DLT_ types.

+ */

+

+/*

+ * This is for Linux cooked sockets.

+ */

+#define DLT_LINUX_SLL	113

+

+/*

+ * Apple LocalTalk hardware.

+ */

+#define DLT_LTALK	114

+

+/*

+ * Acorn Econet.

+ */

+#define DLT_ECONET	115

+

+/*

+ * Reserved for use with OpenBSD ipfilter.

+ */

+#define DLT_IPFILTER	116

+

+/*

+ * OpenBSD DLT_PFLOG; DLT_PFLOG is 17 in OpenBSD, but that's DLT_LANE8023

+ * in SuSE 6.3, so we can't use 17 for it in capture-file headers.

+ *

+ * XXX: is there a conflict with DLT_PFSYNC 18 as well?

+ */

+#ifdef __OpenBSD__

+#define DLT_OLD_PFLOG	17

+#define DLT_PFSYNC	18

+#endif

+#define DLT_PFLOG	117

+

+/*

+ * Registered for Cisco-internal use.

+ */

+#define DLT_CISCO_IOS	118

+

+/*

+ * For 802.11 cards using the Prism II chips, with a link-layer

+ * header including Prism monitor mode information plus an 802.11

+ * header.

+ */

+#define DLT_PRISM_HEADER	119

+

+/*

+ * Reserved for Aironet 802.11 cards, with an Aironet link-layer header

+ * (see Doug Ambrisko's FreeBSD patches).

+ */

+#define DLT_AIRONET_HEADER	120

+

+/*

+ * Reserved for Siemens HiPath HDLC.

+ */

+#define DLT_HHDLC		121

+

+/*

+ * This is for RFC 2625 IP-over-Fibre Channel.

+ *

+ * This is not for use with raw Fibre Channel, where the link-layer

+ * header starts with a Fibre Channel frame header; it's for IP-over-FC,

+ * where the link-layer header starts with an RFC 2625 Network_Header

+ * field.

+ */

+#define DLT_IP_OVER_FC		122

+

+/*

+ * This is for Full Frontal ATM on Solaris with SunATM, with a

+ * pseudo-header followed by an AALn PDU.

+ *

+ * There may be other forms of Full Frontal ATM on other OSes,

+ * with different pseudo-headers.

+ *

+ * If ATM software returns a pseudo-header with VPI/VCI information

+ * (and, ideally, packet type information, e.g. signalling, ILMI,

+ * LANE, LLC-multiplexed traffic, etc.), it should not use

+ * DLT_ATM_RFC1483, but should get a new DLT_ value, so tcpdump

+ * and the like don't have to infer the presence or absence of a

+ * pseudo-header and the form of the pseudo-header.

+ */

+#define DLT_SUNATM		123	/* Solaris+SunATM */

+

+/* 

+ * Reserved as per request from Kent Dahlgren <kent@praesum.com>

+ * for private use.

+ */

+#define DLT_RIO                 124     /* RapidIO */

+#define DLT_PCI_EXP             125     /* PCI Express */

+#define DLT_AURORA              126     /* Xilinx Aurora link layer */

+

+/*

+ * Header for 802.11 plus a number of bits of link-layer information

+ * including radio information, used by some recent BSD drivers as

+ * well as the madwifi Atheros driver for Linux.

+ */

+#define DLT_IEEE802_11_RADIO	127	/* 802.11 plus radiotap radio header */

+

+/*

+ * Reserved for the TZSP encapsulation, as per request from

+ * Chris Waters <chris.waters@networkchemistry.com>

+ * TZSP is a generic encapsulation for any other link type,

+ * which includes a means to include meta-information

+ * with the packet, e.g. signal strength and channel

+ * for 802.11 packets.

+ */

+#define DLT_TZSP                128     /* Tazmen Sniffer Protocol */

+

+/*

+ * BSD's ARCNET headers have the source host, destination host,

+ * and type at the beginning of the packet; that's what's handed

+ * up to userland via BPF.

+ *

+ * Linux's ARCNET headers, however, have a 2-byte offset field

+ * between the host IDs and the type; that's what's handed up

+ * to userland via PF_PACKET sockets.

+ *

+ * We therefore have to have separate DLT_ values for them.

+ */

+#define DLT_ARCNET_LINUX	129	/* ARCNET */

+

+/*

+ * Juniper-private data link types, as per request from

+ * Hannes Gredler <hannes@juniper.net>.  The DLT_s are used

+ * for passing on chassis-internal metainformation such as

+ * QOS profiles, etc..

+ */

+#define DLT_JUNIPER_MLPPP       130

+#define DLT_JUNIPER_MLFR        131

+#define DLT_JUNIPER_ES          132

+#define DLT_JUNIPER_GGSN        133

+#define DLT_JUNIPER_MFR         134

+#define DLT_JUNIPER_ATM2        135

+#define DLT_JUNIPER_SERVICES    136

+#define DLT_JUNIPER_ATM1        137

+

+/*

+ * Apple IP-over-IEEE 1394, as per a request from Dieter Siegmund

+ * <dieter@apple.com>.  The header that's presented is an Ethernet-like

+ * header:

+ *

+ *	#define FIREWIRE_EUI64_LEN	8

+ *	struct firewire_header {

+ *		u_char  firewire_dhost[FIREWIRE_EUI64_LEN];

+ *		u_char  firewire_shost[FIREWIRE_EUI64_LEN];

+ *		u_short firewire_type;

+ *	};

+ *

+ * with "firewire_type" being an Ethernet type value, rather than,

+ * for example, raw GASP frames being handed up.

+ */

+#define DLT_APPLE_IP_OVER_IEEE1394	138

+

+/*

+ * Various SS7 encapsulations, as per a request from Jeff Morriss

+ * <jeff.morriss[AT]ulticom.com> and subsequent discussions.

+ */

+#define DLT_MTP2_WITH_PHDR	139	/* pseudo-header with various info, followed by MTP2 */

+#define DLT_MTP2		140	/* MTP2, without pseudo-header */

+#define DLT_MTP3		141	/* MTP3, without pseudo-header or MTP2 */

+#define DLT_SCCP		142	/* SCCP, without pseudo-header or MTP2 or MTP3 */

+

+/*

+ * DOCSIS MAC frames.

+ */

+#define DLT_DOCSIS		143

+

+/*

+ * Linux-IrDA packets. Protocol defined at http://www.irda.org.

+ * Those packets include IrLAP headers and above (IrLMP...), but

+ * don't include Phy framing (SOF/EOF/CRC & byte stuffing), because Phy

+ * framing can be handled by the hardware and depend on the bitrate.

+ * This is exactly the format you would get capturing on a Linux-IrDA

+ * interface (irdaX), but not on a raw serial port.

+ * Note the capture is done in "Linux-cooked" mode, so each packet include

+ * a fake packet header (struct sll_header). This is because IrDA packet

+ * decoding is dependant on the direction of the packet (incomming or

+ * outgoing).

+ * When/if other platform implement IrDA capture, we may revisit the

+ * issue and define a real DLT_IRDA...

+ * Jean II

+ */

+#define DLT_LINUX_IRDA		144

+

+/*

+ * Reserved for IBM SP switch and IBM Next Federation switch.

+ */

+#define DLT_IBM_SP		145

+#define DLT_IBM_SN		146

+

+/*

+ * Reserved for private use.  If you have some link-layer header type

+ * that you want to use within your organization, with the capture files

+ * using that link-layer header type not ever be sent outside your

+ * organization, you can use these values.

+ *

+ * No libpcap release will use these for any purpose, nor will any

+ * tcpdump release use them, either.

+ *

+ * Do *NOT* use these in capture files that you expect anybody not using

+ * your private versions of capture-file-reading tools to read; in

+ * particular, do *NOT* use them in products, otherwise you may find that

+ * people won't be able to use tcpdump, or snort, or Ethereal, or... to

+ * read capture files from your firewall/intrusion detection/traffic

+ * monitoring/etc. appliance, or whatever product uses that DLT_ value,

+ * and you may also find that the developers of those applications will

+ * not accept patches to let them read those files.

+ *

+ * Also, do not use them if somebody might send you a capture using them

+ * for *their* private type and tools using them for *your* private type

+ * would have to read them.

+ *

+ * Instead, ask "tcpdump-workers@lists.tcpdump.org" for a new DLT_ value,

+ * as per the comment above, and use the type you're given.

+ */

+#define DLT_USER0		147

+#define DLT_USER1		148

+#define DLT_USER2		149

+#define DLT_USER3		150

+#define DLT_USER4		151

+#define DLT_USER5		152

+#define DLT_USER6		153

+#define DLT_USER7		154

+#define DLT_USER8		155

+#define DLT_USER9		156

+#define DLT_USER10		157

+#define DLT_USER11		158

+#define DLT_USER12		159

+#define DLT_USER13		160

+#define DLT_USER14		161

+#define DLT_USER15		162

+

+/*

+ * For future use with 802.11 captures - defined by AbsoluteValue

+ * Systems to store a number of bits of link-layer information

+ * including radio information:

+ *

+ *	http://www.shaftnet.org/~pizza/software/capturefrm.txt

+ *

+ * but it might be used by some non-AVS drivers now or in the

+ * future.

+ */

+#define DLT_IEEE802_11_RADIO_AVS 163	/* 802.11 plus AVS radio header */

+

+/*

+ * Juniper-private data link type, as per request from

+ * Hannes Gredler <hannes@juniper.net>.  The DLT_s are used

+ * for passing on chassis-internal metainformation such as

+ * QOS profiles, etc..

+ */

+#define DLT_JUNIPER_MONITOR     164

+

+/*

+ * Reserved for BACnet MS/TP.

+ */

+#define DLT_BACNET_MS_TP	165

+

+/*

+ * Another PPP variant as per request from Karsten Keil <kkeil@suse.de>.

+ *

+ * This is used in some OSes to allow a kernel socket filter to distinguish

+ * between incoming and outgoing packets, on a socket intended to

+ * supply pppd with outgoing packets so it can do dial-on-demand and

+ * hangup-on-lack-of-demand; incoming packets are filtered out so they

+ * don't cause pppd to hold the connection up (you don't want random

+ * input packets such as port scans, packets from old lost connections,

+ * etc. to force the connection to stay up).

+ *

+ * The first byte of the PPP header (0xff03) is modified to accomodate

+ * the direction - 0x00 = IN, 0x01 = OUT.

+ */

+#define DLT_PPP_PPPD		166

+

+/*

+ * Names for backwards compatibility with older versions of some PPP

+ * software; new software should use DLT_PPP_PPPD.

+ */

+#define DLT_PPP_WITH_DIRECTION	DLT_PPP_PPPD

+#define DLT_LINUX_PPP_WITHDIRECTION	DLT_PPP_PPPD

+

+/*

+ * Juniper-private data link type, as per request from

+ * Hannes Gredler <hannes@juniper.net>.  The DLT_s are used

+ * for passing on chassis-internal metainformation such as

+ * QOS profiles, cookies, etc..

+ */

+#define DLT_JUNIPER_PPPOE       167

+#define DLT_JUNIPER_PPPOE_ATM   168

+

+#define DLT_GPRS_LLC		169	/* GPRS LLC */

+#define DLT_GPF_T		170	/* GPF-T (ITU-T G.7041/Y.1303) */

+#define DLT_GPF_F		171	/* GPF-F (ITU-T G.7041/Y.1303) */

+

+/*

+ * Requested by Oolan Zimmer <oz@gcom.com> for use in Gcom's T1/E1 line

+ * monitoring equipment.

+ */

+#define DLT_GCOM_T1E1		172

+#define DLT_GCOM_SERIAL		173

+

+/*

+ * Juniper-private data link type, as per request from

+ * Hannes Gredler <hannes@juniper.net>.  The DLT_ is used

+ * for internal communication to Physical Interface Cards (PIC)

+ */

+#define DLT_JUNIPER_PIC_PEER    174

+

+/*

+ * Link types requested by Gregor Maier <gregor@endace.com> of Endace

+ * Measurement Systems.  They add an ERF header (see

+ * http://www.endace.com/support/EndaceRecordFormat.pdf) in front of

+ * the link-layer header.

+ */

+#define DLT_ERF_ETH		175	/* Ethernet */

+#define DLT_ERF_POS		176	/* Packet-over-SONET */

+

+/*

+ * Requested by Daniele Orlandi <daniele@orlandi.com> for raw LAPD

+ * for vISDN (http://www.orlandi.com/visdn/).  Its link-layer header

+ * includes additional information before the LAPD header, so it's

+ * not necessarily a generic LAPD header.

+ */

+#define DLT_LINUX_LAPD		177

+

+/*

+ * Juniper-private data link type, as per request from

+ * Hannes Gredler <hannes@juniper.net>. 

+ * The DLT_ are used for prepending meta-information

+ * like interface index, interface name

+ * before standard Ethernet, PPP, Frelay & C-HDLC Frames

+ */

+#define DLT_JUNIPER_ETHER       178

+#define DLT_JUNIPER_PPP         179

+#define DLT_JUNIPER_FRELAY      180

+#define DLT_JUNIPER_CHDLC       181

+

+/*

+ * Multi Link Frame Relay (FRF.16)

+ */

+#define DLT_MFR                 182

+

+/*

+ * Juniper-private data link type, as per request from

+ * Hannes Gredler <hannes@juniper.net>. 

+ * The DLT_ is used for internal communication with a

+ * voice Adapter Card (PIC)

+ */

+#define DLT_JUNIPER_VP          183

+

+/*

+ * Arinc 429 frames.

+ * DLT_ requested by Gianluca Varenni <gianluca.varenni@cacetech.com>.

+ * Every frame contains a 32bit A429 label.

+ * More documentation on Arinc 429 can be found at

+ * http://www.condoreng.com/support/downloads/tutorials/ARINCTutorial.pdf

+ */

+#define DLT_A429                184

+

+/*

+ * Arinc 653 Interpartition Communication messages.

+ * DLT_ requested by Gianluca Varenni <gianluca.varenni@cacetech.com>.

+ * Please refer to the A653-1 standard for more information.

+ */

+#define DLT_A653_ICM            185

+

+/*

+ * USB packets, beginning with a USB setup header; requested by

+ * Paolo Abeni <paolo.abeni@email.it>.

+ */

+#define DLT_USB			186

+

+/*

+ * Bluetooth HCI UART transport layer (part H:4); requested by

+ * Paolo Abeni.

+ */

+#define DLT_BLUETOOTH_HCI_H4	187

+

+/*

+ * IEEE 802.16 MAC Common Part Sublayer; requested by Maria Cruz

+ * <cruz_petagay@bah.com>.

+ */

+#define DLT_IEEE802_16_MAC_CPS	188

+

+/*

+ * USB packets, beginning with a Linux USB header; requested by

+ * Paolo Abeni <paolo.abeni@email.it>.

+ */

+#define DLT_USB_LINUX		189

+

+/*

+ * Controller Area Network (CAN) v. 2.0B packets.

+ * DLT_ requested by Gianluca Varenni <gianluca.varenni@cacetech.com>.

+ * Used to dump CAN packets coming from a CAN Vector board.

+ * More documentation on the CAN v2.0B frames can be found at

+ * http://www.can-cia.org/downloads/?269

+ */

+#define DLT_CAN20B              190

+

+/*

+ * IEEE 802.15.4, with address fields padded, as is done by Linux

+ * drivers; requested by Juergen Schimmer.

+ */

+#define DLT_IEEE802_15_4_LINUX	191

+

+/*

+ * Per Packet Information encapsulated packets.

+ * DLT_ requested by Gianluca Varenni <gianluca.varenni@cacetech.com>.

+ */

+#define DLT_PPI			192

+

+/*

+ * Header for 802.16 MAC Common Part Sublayer plus a radiotap radio header;

+ * requested by Charles Clancy.

+ */

+#define DLT_IEEE802_16_MAC_CPS_RADIO	193

+

+/*

+ * Juniper-private data link type, as per request from

+ * Hannes Gredler <hannes@juniper.net>. 

+ * The DLT_ is used for internal communication with a

+ * integrated service module (ISM).

+ */

+#define DLT_JUNIPER_ISM         194

+

+/*

+ * IEEE 802.15.4, exactly as it appears in the spec (no padding, no

+ * nothing); requested by Mikko Saarnivala <mikko.saarnivala@sensinode.com>.

+ */

+#define DLT_IEEE802_15_4	195

+

+/*

+ * Various link-layer types, with a pseudo-header, for SITA

+ * (http://www.sita.aero/); requested by Fulko Hew (fulko.hew@gmail.com).

+ */

+#define DLT_SITA		196

+

+/*

+ * Various link-layer types, with a pseudo-header, for Endace DAG cards;

+ * encapsulates Endace ERF records.  Requested by Stephen Donnelly

+ * <stephen@endace.com>.

+ */

+#define DLT_ERF			197

+

+/*

+ * Special header prepended to Ethernet packets when capturing from a

+ * u10 Networks board.  Requested by Phil Mulholland

+ * <phil@u10networks.com>.

+ */

+#define DLT_RAIF1		198

+

+/*

+ * IPMB packet for IPMI, beginning with the I2C slave address, followed

+ * by the netFn and LUN, etc..  Requested by Chanthy Toeung

+ * <chanthy.toeung@ca.kontron.com>.

+ */

+#define DLT_IPMB		199

+

+/*

+ * Juniper-private data link type, as per request from

+ * Hannes Gredler <hannes@juniper.net>. 

+ * The DLT_ is used for capturing data on a secure tunnel interface.

+ */

+#define DLT_JUNIPER_ST          200

+

+/*

+ * Bluetooth HCI UART transport layer (part H:4), with pseudo-header

+ * that includes direction information; requested by Paolo Abeni.

+ */

+#define DLT_BLUETOOTH_HCI_H4_WITH_PHDR	201

+

+/*

+ * AX.25 packet with a 1-byte KISS header; see

+ *

+ *	http://www.ax25.net/kiss.htm

+ *

+ * as per Richard Stearn <richard@rns-stearn.demon.co.uk>.

+ */

+#define DLT_AX25_KISS		202

+

+/*

+ * LAPD packets from an ISDN channel, starting with the address field,

+ * with no pseudo-header.

+ * Requested by Varuna De Silva <varunax@gmail.com>.

+ */

+#define DLT_LAPD		203

+

+/*

+ * Variants of various link-layer headers, with a one-byte direction

+ * pseudo-header prepended - zero means "received by this host",

+ * non-zero (any non-zero value) means "sent by this host" - as per

+ * Will Barker <w.barker@zen.co.uk>.

+ */

+#define DLT_PPP_WITH_DIR	204	/* PPP - don't confuse with DLT_PPP_WITH_DIRECTION */

+#define DLT_C_HDLC_WITH_DIR	205	/* Cisco HDLC */

+#define DLT_FRELAY_WITH_DIR	206	/* Frame Relay */

+#define DLT_LAPB_WITH_DIR	207	/* LAPB */

+

+/*

+ * 208 is reserved for an as-yet-unspecified proprietary link-layer

+ * type, as requested by Will Barker.

+ */

+

+/*

+ * IPMB with a Linux-specific pseudo-header; as requested by Alexey Neyman

+ * <avn@pigeonpoint.com>.

+ */

+#define DLT_IPMB_LINUX		209

+

+/*

+ * FlexRay automotive bus - http://www.flexray.com/ - as requested

+ * by Hannes Kaelber <hannes.kaelber@x2e.de>.

+ */

+#define DLT_FLEXRAY		210

+

+/*

+ * Media Oriented Systems Transport (MOST) bus for multimedia

+ * transport - http://www.mostcooperation.com/ - as requested

+ * by Hannes Kaelber <hannes.kaelber@x2e.de>.

+ */

+#define DLT_MOST		211

+

+/*

+ * Local Interconnect Network (LIN) bus for vehicle networks -

+ * http://www.lin-subbus.org/ - as requested by Hannes Kaelber

+ * <hannes.kaelber@x2e.de>.

+ */

+#define DLT_LIN			212

+

+/*

+ * X2E-private data link type used for serial line capture,

+ * as requested by Hannes Kaelber <hannes.kaelber@x2e.de>.

+ */

+#define DLT_X2E_SERIAL		213

+

+/*

+ * X2E-private data link type used for the Xoraya data logger

+ * family, as requested by Hannes Kaelber <hannes.kaelber@x2e.de>.

+ */

+#define DLT_X2E_XORAYA		214

+

+/*

+ * IEEE 802.15.4, exactly as it appears in the spec (no padding, no

+ * nothing), but with the PHY-level data for non-ASK PHYs (4 octets

+ * of 0 as preamble, one octet of SFD, one octet of frame length+

+ * reserved bit, and then the MAC-layer data, starting with the

+ * frame control field).

+ *

+ * Requested by Max Filippov <jcmvbkbc@gmail.com>.

+ */

+#define DLT_IEEE802_15_4_NONASK_PHY	215

+

+

+/*

+ * DLT and savefile link type values are split into a class and

+ * a member of that class.  A class value of 0 indicates a regular

+ * DLT_/LINKTYPE_ value.

+ */

+#define DLT_CLASS(x)		((x) & 0x03ff0000)

+

+/*

+ * NetBSD-specific generic "raw" link type.  The class value indicates

+ * that this is the generic raw type, and the lower 16 bits are the

+ * address family we're dealing with.  Those values are NetBSD-specific;

+ * do not assume that they correspond to AF_ values for your operating

+ * system.

+ */

+#define	DLT_CLASS_NETBSD_RAWAF	0x02240000

+#define	DLT_NETBSD_RAWAF(af)	(DLT_CLASS_NETBSD_RAWAF | (af))

+#define	DLT_NETBSD_RAWAF_AF(x)	((x) & 0x0000ffff)

+#define	DLT_IS_NETBSD_RAWAF(x)	(DLT_CLASS(x) == DLT_CLASS_NETBSD_RAWAF)

+

+

+/*

+ * The instruction encodings.

+ */

+/* instruction classes */

+#define BPF_CLASS(code) ((code) & 0x07)

+#define		BPF_LD		0x00

+#define		BPF_LDX		0x01

+#define		BPF_ST		0x02

+#define		BPF_STX		0x03

+#define		BPF_ALU		0x04

+#define		BPF_JMP		0x05

+#define		BPF_RET		0x06

+#define		BPF_MISC	0x07

+

+/* ld/ldx fields */

+#define BPF_SIZE(code)	((code) & 0x18)

+#define		BPF_W		0x00

+#define		BPF_H		0x08

+#define		BPF_B		0x10

+#define BPF_MODE(code)	((code) & 0xe0)

+#define		BPF_IMM 	0x00

+#define		BPF_ABS		0x20

+#define		BPF_IND		0x40

+#define		BPF_MEM		0x60

+#define		BPF_LEN		0x80

+#define		BPF_MSH		0xa0

+

+/* alu/jmp fields */

+#define BPF_OP(code)	((code) & 0xf0)

+#define		BPF_ADD		0x00

+#define		BPF_SUB		0x10

+#define		BPF_MUL		0x20

+#define		BPF_DIV		0x30

+#define		BPF_OR		0x40

+#define		BPF_AND		0x50

+#define		BPF_LSH		0x60

+#define		BPF_RSH		0x70

+#define		BPF_NEG		0x80

+#define		BPF_JA		0x00

+#define		BPF_JEQ		0x10

+#define		BPF_JGT		0x20

+#define		BPF_JGE		0x30

+#define		BPF_JSET	0x40

+#define BPF_SRC(code)	((code) & 0x08)

+#define		BPF_K		0x00

+#define		BPF_X		0x08

+

+/* ret - BPF_K and BPF_X also apply */

+#define BPF_RVAL(code)	((code) & 0x18)

+#define		BPF_A		0x10

+

+/* misc */

+#define BPF_MISCOP(code) ((code) & 0xf8)

+#define		BPF_TAX		0x00

+#define		BPF_TXA		0x80

+

+/*

+ * The instruction data structure.

+ */

+struct bpf_insn {

+	u_short	code;

+	u_char 	jt;

+	u_char 	jf;

+	bpf_u_int32 k;

+};

+

+/*

+ * Macros for insn array initializers.

+ */

+#define BPF_STMT(code, k) { (u_short)(code), 0, 0, k }

+#define BPF_JUMP(code, k, jt, jf) { (u_short)(code), jt, jf, k }

+

+#if __STDC__ || defined(__cplusplus)

+extern int bpf_validate(const struct bpf_insn *, int);

+extern u_int bpf_filter(const struct bpf_insn *, const u_char *, u_int, u_int);

+#else

+extern int bpf_validate();

+extern u_int bpf_filter();

+#endif

+

+/*

+ * Number of scratch memory words (for BPF_LD|BPF_MEM and BPF_ST).

+ */

+#define BPF_MEMWORDS 16

+

+#ifdef __cplusplus

+}

+#endif

+

+#endif

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/pcap/namedb.h b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/pcap/namedb.h
new file mode 100644
index 0000000..8298e35
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/pcap/namedb.h
@@ -0,0 +1,89 @@
+/*

+ * Copyright (c) 1994, 1996

+ *	The Regents of the University of California.  All rights reserved.

+ *

+ * Redistribution and use in source and binary forms, with or without

+ * modification, are permitted provided that the following conditions

+ * are met:

+ * 1. Redistributions of source code must retain the above copyright

+ *    notice, this list of conditions and the following disclaimer.

+ * 2. Redistributions in binary form must reproduce the above copyright

+ *    notice, this list of conditions and the following disclaimer in the

+ *    documentation and/or other materials provided with the distribution.

+ * 3. All advertising materials mentioning features or use of this software

+ *    must display the following acknowledgement:

+ *	This product includes software developed by the Computer Systems

+ *	Engineering Group at Lawrence Berkeley Laboratory.

+ * 4. Neither the name of the University nor of the Laboratory may be used

+ *    to endorse or promote products derived from this software without

+ *    specific prior written permission.

+ *

+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND

+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE

+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE

+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS

+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)

+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT

+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY

+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF

+ * SUCH DAMAGE.

+ *

+ * @(#) $Header: /tcpdump/master/libpcap/pcap/namedb.h,v 1.1 2006/10/04 18:09:22 guy Exp $ (LBL)

+ */

+

+#ifndef lib_pcap_namedb_h

+#define lib_pcap_namedb_h

+

+#ifdef __cplusplus

+extern "C" {

+#endif

+

+/*

+ * As returned by the pcap_next_etherent()

+ * XXX this stuff doesn't belong in this interface, but this

+ * library already must do name to address translation, so

+ * on systems that don't have support for /etc/ethers, we

+ * export these hooks since they'll

+ */

+struct pcap_etherent {

+	u_char addr[6];

+	char name[122];

+};

+#ifndef PCAP_ETHERS_FILE

+#define PCAP_ETHERS_FILE "/etc/ethers"

+#endif

+struct	pcap_etherent *pcap_next_etherent(FILE *);

+u_char *pcap_ether_hostton(const char*);

+u_char *pcap_ether_aton(const char *);

+

+bpf_u_int32 **pcap_nametoaddr(const char *);

+#ifdef INET6

+struct addrinfo *pcap_nametoaddrinfo(const char *);

+#endif

+bpf_u_int32 pcap_nametonetaddr(const char *);

+

+int	pcap_nametoport(const char *, int *, int *);

+int	pcap_nametoportrange(const char *, int *, int *, int *);

+int	pcap_nametoproto(const char *);

+int	pcap_nametoeproto(const char *);

+int	pcap_nametollc(const char *);

+/*

+ * If a protocol is unknown, PROTO_UNDEF is returned.

+ * Also, pcap_nametoport() returns the protocol along with the port number.

+ * If there are ambiguous entried in /etc/services (i.e. domain

+ * can be either tcp or udp) PROTO_UNDEF is returned.

+ */

+#define PROTO_UNDEF		-1

+

+/* XXX move these to pcap-int.h? */

+int __pcap_atodn(const char *, bpf_u_int32 *);

+int __pcap_atoin(const char *, bpf_u_int32 *);

+u_short	__pcap_nametodnaddr(const char *);

+

+#ifdef __cplusplus

+}

+#endif

+

+#endif

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/pcap/pcap.h b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/pcap/pcap.h
new file mode 100644
index 0000000..fbf8341
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/pcap/pcap.h
@@ -0,0 +1,407 @@
+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: 1; c-basic-offset: 8; -*- */

+/*

+ * Copyright (c) 1993, 1994, 1995, 1996, 1997

+ *	The Regents of the University of California.  All rights reserved.

+ *

+ * Redistribution and use in source and binary forms, with or without

+ * modification, are permitted provided that the following conditions

+ * are met:

+ * 1. Redistributions of source code must retain the above copyright

+ *    notice, this list of conditions and the following disclaimer.

+ * 2. Redistributions in binary form must reproduce the above copyright

+ *    notice, this list of conditions and the following disclaimer in the

+ *    documentation and/or other materials provided with the distribution.

+ * 3. All advertising materials mentioning features or use of this software

+ *    must display the following acknowledgement:

+ *	This product includes software developed by the Computer Systems

+ *	Engineering Group at Lawrence Berkeley Laboratory.

+ * 4. Neither the name of the University nor of the Laboratory may be used

+ *    to endorse or promote products derived from this software without

+ *    specific prior written permission.

+ *

+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND

+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE

+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE

+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS

+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)

+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT

+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY

+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF

+ * SUCH DAMAGE.

+ *

+ * @(#) $Header: /tcpdump/master/libpcap/pcap/pcap.h,v 1.4.2.11 2008-10-06 15:38:39 gianluca Exp $ (LBL)

+ */

+

+#ifndef lib_pcap_pcap_h

+#define lib_pcap_pcap_h

+

+#if defined(WIN32)

+  #include <pcap-stdinc.h>

+#elif defined(MSDOS)

+  #include <sys/types.h>

+  #include <sys/socket.h>  /* u_int, u_char etc. */

+#else /* UN*X */

+  #include <sys/types.h>

+  #include <sys/time.h>

+#endif /* WIN32/MSDOS/UN*X */

+

+#ifndef PCAP_DONT_INCLUDE_PCAP_BPF_H

+#include <pcap/bpf.h>

+#endif

+

+#include <stdio.h>

+

+#ifdef HAVE_REMOTE

+	// We have to define the SOCKET here, although it has been defined in sockutils.h

+	// This is to avoid the distribution of the 'sockutils.h' file around

+	// (for example in the WinPcap developer's pack)

+	#ifndef SOCKET

+		#ifdef WIN32

+			#define SOCKET unsigned int

+		#else

+			#define SOCKET int

+		#endif

+	#endif

+#endif

+

+#ifdef __cplusplus

+extern "C" {

+#endif

+

+#define PCAP_VERSION_MAJOR 2

+#define PCAP_VERSION_MINOR 4

+

+#define PCAP_ERRBUF_SIZE 256

+

+/*

+ * Compatibility for systems that have a bpf.h that

+ * predates the bpf typedefs for 64-bit support.

+ */

+#if BPF_RELEASE - 0 < 199406

+typedef	int bpf_int32;

+typedef	u_int bpf_u_int32;

+#endif

+

+typedef struct pcap pcap_t;

+typedef struct pcap_dumper pcap_dumper_t;

+typedef struct pcap_if pcap_if_t;

+typedef struct pcap_addr pcap_addr_t;

+

+/*

+ * The first record in the file contains saved values for some

+ * of the flags used in the printout phases of tcpdump.

+ * Many fields here are 32 bit ints so compilers won't insert unwanted

+ * padding; these files need to be interchangeable across architectures.

+ *

+ * Do not change the layout of this structure, in any way (this includes

+ * changes that only affect the length of fields in this structure).

+ *

+ * Also, do not change the interpretation of any of the members of this

+ * structure, in any way (this includes using values other than

+ * LINKTYPE_ values, as defined in "savefile.c", in the "linktype"

+ * field).

+ *

+ * Instead:

+ *

+ *	introduce a new structure for the new format, if the layout

+ *	of the structure changed;

+ *

+ *	send mail to "tcpdump-workers@lists.tcpdump.org", requesting

+ *	a new magic number for your new capture file format, and, when

+ *	you get the new magic number, put it in "savefile.c";

+ *

+ *	use that magic number for save files with the changed file

+ *	header;

+ *

+ *	make the code in "savefile.c" capable of reading files with

+ *	the old file header as well as files with the new file header

+ *	(using the magic number to determine the header format).

+ *

+ * Then supply the changes as a patch at

+ *

+ *	http://sourceforge.net/projects/libpcap/

+ *

+ * so that future versions of libpcap and programs that use it (such as

+ * tcpdump) will be able to read your new capture file format.

+ */

+struct pcap_file_header {

+	bpf_u_int32 magic;

+	u_short version_major;

+	u_short version_minor;

+	bpf_int32 thiszone;	/* gmt to local correction */

+	bpf_u_int32 sigfigs;	/* accuracy of timestamps */

+	bpf_u_int32 snaplen;	/* max length saved portion of each pkt */

+	bpf_u_int32 linktype;	/* data link type (LINKTYPE_*) */

+};

+

+/*

+ * Macros for the value returned by pcap_datalink_ext().

+ * 

+ * If LT_FCS_LENGTH_PRESENT(x) is true, the LT_FCS_LENGTH(x) macro

+ * gives the FCS length of packets in the capture.

+ */

+#define LT_FCS_LENGTH_PRESENT(x)	((x) & 0x04000000)

+#define LT_FCS_LENGTH(x)		(((x) & 0xF0000000) >> 28)

+#define LT_FCS_DATALINK_EXT(x)		((((x) & 0xF) << 28) | 0x04000000)

+

+typedef enum {

+       PCAP_D_INOUT = 0,

+       PCAP_D_IN,

+       PCAP_D_OUT

+} pcap_direction_t;

+

+/*

+ * Generic per-packet information, as supplied by libpcap.

+ *

+ * The time stamp can and should be a "struct timeval", regardless of

+ * whether your system supports 32-bit tv_sec in "struct timeval",

+ * 64-bit tv_sec in "struct timeval", or both if it supports both 32-bit

+ * and 64-bit applications.  The on-disk format of savefiles uses 32-bit

+ * tv_sec (and tv_usec); this structure is irrelevant to that.  32-bit

+ * and 64-bit versions of libpcap, even if they're on the same platform,

+ * should supply the appropriate version of "struct timeval", even if

+ * that's not what the underlying packet capture mechanism supplies.

+ */

+struct pcap_pkthdr {

+	struct timeval ts;	/* time stamp */

+	bpf_u_int32 caplen;	/* length of portion present */

+	bpf_u_int32 len;	/* length this packet (off wire) */

+};

+

+/*

+ * As returned by the pcap_stats()

+ */

+struct pcap_stat {

+	u_int ps_recv;		/* number of packets received */

+	u_int ps_drop;		/* number of packets dropped */

+	u_int ps_ifdrop;	/* drops by interface XXX not yet supported */

+#ifdef HAVE_REMOTE

+	u_int ps_capt;		/* number of packets that are received by the application; please get rid off the Win32 ifdef */

+	u_int ps_sent;		/* number of packets sent by the server on the network */

+	u_int ps_netdrop;	/* number of packets lost on the network */

+#endif /* HAVE_REMOTE */

+};

+

+#ifdef MSDOS

+/*

+ * As returned by the pcap_stats_ex()

+ */

+struct pcap_stat_ex {

+       u_long  rx_packets;        /* total packets received       */

+       u_long  tx_packets;        /* total packets transmitted    */

+       u_long  rx_bytes;          /* total bytes received         */

+       u_long  tx_bytes;          /* total bytes transmitted      */

+       u_long  rx_errors;         /* bad packets received         */

+       u_long  tx_errors;         /* packet transmit problems     */

+       u_long  rx_dropped;        /* no space in Rx buffers       */

+       u_long  tx_dropped;        /* no space available for Tx    */

+       u_long  multicast;         /* multicast packets received   */

+       u_long  collisions;

+

+       /* detailed rx_errors: */

+       u_long  rx_length_errors;

+       u_long  rx_over_errors;    /* receiver ring buff overflow  */

+       u_long  rx_crc_errors;     /* recv'd pkt with crc error    */

+       u_long  rx_frame_errors;   /* recv'd frame alignment error */

+       u_long  rx_fifo_errors;    /* recv'r fifo overrun          */

+       u_long  rx_missed_errors;  /* recv'r missed packet         */

+

+       /* detailed tx_errors */

+       u_long  tx_aborted_errors;

+       u_long  tx_carrier_errors;

+       u_long  tx_fifo_errors;

+       u_long  tx_heartbeat_errors;

+       u_long  tx_window_errors;

+     };

+#endif

+

+/*

+ * Item in a list of interfaces.

+ */

+struct pcap_if {

+	struct pcap_if *next;

+	char *name;		/* name to hand to "pcap_open_live()" */

+	char *description;	/* textual description of interface, or NULL */

+	struct pcap_addr *addresses;

+	bpf_u_int32 flags;	/* PCAP_IF_ interface flags */

+};

+

+#define PCAP_IF_LOOPBACK	0x00000001	/* interface is loopback */

+

+/*

+ * Representation of an interface address.

+ */

+struct pcap_addr {

+	struct pcap_addr *next;

+	struct sockaddr *addr;		/* address */

+	struct sockaddr *netmask;	/* netmask for that address */

+	struct sockaddr *broadaddr;	/* broadcast address for that address */

+	struct sockaddr *dstaddr;	/* P2P destination address for that address */

+};

+

+typedef void (*pcap_handler)(u_char *, const struct pcap_pkthdr *,

+			     const u_char *);

+

+/*

+ * Error codes for the pcap API.

+ * These will all be negative, so you can check for the success or

+ * failure of a call that returns these codes by checking for a

+ * negative value.

+ */

+#define PCAP_ERROR			-1	/* generic error code */

+#define PCAP_ERROR_BREAK		-2	/* loop terminated by pcap_breakloop */

+#define PCAP_ERROR_NOT_ACTIVATED	-3	/* the capture needs to be activated */

+#define PCAP_ERROR_ACTIVATED		-4	/* the operation can't be performed on already activated captures */

+#define PCAP_ERROR_NO_SUCH_DEVICE	-5	/* no such device exists */

+#define PCAP_ERROR_RFMON_NOTSUP		-6	/* this device doesn't support rfmon (monitor) mode */

+#define PCAP_ERROR_NOT_RFMON		-7	/* operation supported only in monitor mode */

+#define PCAP_ERROR_PERM_DENIED		-8	/* no permission to open the device */

+#define PCAP_ERROR_IFACE_NOT_UP		-9	/* interface isn't up */

+

+/*

+ * Warning codes for the pcap API.

+ * These will all be positive and non-zero, so they won't look like

+ * errors.

+ */

+#define PCAP_WARNING			1	/* generic warning code */

+#define PCAP_WARNING_PROMISC_NOTSUP	2	/* this device doesn't support promiscuous mode */

+

+char	*pcap_lookupdev(char *);

+int	pcap_lookupnet(const char *, bpf_u_int32 *, bpf_u_int32 *, char *);

+

+pcap_t	*pcap_create(const char *, char *);

+int	pcap_set_snaplen(pcap_t *, int);

+int	pcap_set_promisc(pcap_t *, int);

+int	pcap_can_set_rfmon(pcap_t *);

+int	pcap_set_rfmon(pcap_t *, int);

+int	pcap_set_timeout(pcap_t *, int);

+int	pcap_set_buffer_size(pcap_t *, int);

+int	pcap_activate(pcap_t *);

+

+pcap_t	*pcap_open_live(const char *, int, int, int, char *);

+pcap_t	*pcap_open_dead(int, int);

+pcap_t	*pcap_open_offline(const char *, char *);

+#if defined(WIN32)

+pcap_t  *pcap_hopen_offline(intptr_t, char *);

+#if !defined(LIBPCAP_EXPORTS)

+#define pcap_fopen_offline(f,b) \

+	pcap_hopen_offline(_get_osfhandle(_fileno(f)), b)

+#else /*LIBPCAP_EXPORTS*/

+static pcap_t *pcap_fopen_offline(FILE *, char *);

+#endif

+#else /*WIN32*/

+pcap_t	*pcap_fopen_offline(FILE *, char *);

+#endif /*WIN32*/

+

+void	pcap_close(pcap_t *);

+int	pcap_loop(pcap_t *, int, pcap_handler, u_char *);

+int	pcap_dispatch(pcap_t *, int, pcap_handler, u_char *);

+const u_char*

+	pcap_next(pcap_t *, struct pcap_pkthdr *);

+int 	pcap_next_ex(pcap_t *, struct pcap_pkthdr **, const u_char **);

+void	pcap_breakloop(pcap_t *);

+int	pcap_stats(pcap_t *, struct pcap_stat *);

+int	pcap_setfilter(pcap_t *, struct bpf_program *);

+int 	pcap_setdirection(pcap_t *, pcap_direction_t);

+int	pcap_getnonblock(pcap_t *, char *);

+int	pcap_setnonblock(pcap_t *, int, char *);

+int	pcap_inject(pcap_t *, const void *, size_t);

+int	pcap_sendpacket(pcap_t *, const u_char *, int);

+const char *pcap_statustostr(int);

+const char *pcap_strerror(int);

+char	*pcap_geterr(pcap_t *);

+void	pcap_perror(pcap_t *, char *);

+int	pcap_compile(pcap_t *, struct bpf_program *, const char *, int,

+	    bpf_u_int32);

+int	pcap_compile_nopcap(int, int, struct bpf_program *,

+	    const char *, int, bpf_u_int32);

+void	pcap_freecode(struct bpf_program *);

+int	pcap_offline_filter(struct bpf_program *, const struct pcap_pkthdr *,

+	    const u_char *);

+int	pcap_datalink(pcap_t *);

+int	pcap_datalink_ext(pcap_t *);

+int	pcap_list_datalinks(pcap_t *, int **);

+int	pcap_set_datalink(pcap_t *, int);

+void	pcap_free_datalinks(int *);

+int	pcap_datalink_name_to_val(const char *);

+const char *pcap_datalink_val_to_name(int);

+const char *pcap_datalink_val_to_description(int);

+int	pcap_snapshot(pcap_t *);

+int	pcap_is_swapped(pcap_t *);

+int	pcap_major_version(pcap_t *);

+int	pcap_minor_version(pcap_t *);

+

+/* XXX */

+FILE	*pcap_file(pcap_t *);

+int	pcap_fileno(pcap_t *);

+

+pcap_dumper_t *pcap_dump_open(pcap_t *, const char *);

+pcap_dumper_t *pcap_dump_fopen(pcap_t *, FILE *fp);

+FILE	*pcap_dump_file(pcap_dumper_t *);

+long	pcap_dump_ftell(pcap_dumper_t *);

+int	pcap_dump_flush(pcap_dumper_t *);

+void	pcap_dump_close(pcap_dumper_t *);

+void	pcap_dump(u_char *, const struct pcap_pkthdr *, const u_char *);

+

+int	pcap_findalldevs(pcap_if_t **, char *);

+void	pcap_freealldevs(pcap_if_t *);

+

+const char *pcap_lib_version(void);

+

+/* XXX this guy lives in the bpf tree */

+u_int	bpf_filter(const struct bpf_insn *, const u_char *, u_int, u_int);

+int	bpf_validate(const struct bpf_insn *f, int len);

+char	*bpf_image(const struct bpf_insn *, int);

+void	bpf_dump(const struct bpf_program *, int);

+

+#if defined(WIN32)

+

+/*

+ * Win32 definitions

+ */

+

+int pcap_setbuff(pcap_t *p, int dim);

+int pcap_setmode(pcap_t *p, int mode);

+int pcap_setmintocopy(pcap_t *p, int size);

+

+#ifdef WPCAP

+/* Include file with the wpcap-specific extensions */

+#include <Win32-Extensions.h>

+#endif /* WPCAP */

+

+#define MODE_CAPT 0

+#define MODE_STAT 1

+#define MODE_MON 2

+

+#elif defined(MSDOS)

+

+/*

+ * MS-DOS definitions

+ */

+

+int  pcap_stats_ex (pcap_t *, struct pcap_stat_ex *);

+void pcap_set_wait (pcap_t *p, void (*yield)(void), int wait);

+u_long pcap_mac_packets (void);

+

+#else /* UN*X */

+

+/*

+ * UN*X definitions

+ */

+

+int	pcap_get_selectable_fd(pcap_t *);

+

+#endif /* WIN32/MSDOS/UN*X */

+

+#ifdef HAVE_REMOTE

+/* Includes most of the public stuff that is needed for the remote capture */

+#include <remote-ext.h>

+#endif	 /* HAVE_REMOTE */

+

+#ifdef __cplusplus

+}

+#endif

+

+#endif

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/pcap/sll.h b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/pcap/sll.h
new file mode 100644
index 0000000..5907bed
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/pcap/sll.h
@@ -0,0 +1,129 @@
+/*-

+ * Copyright (c) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997

+ *	The Regents of the University of California.  All rights reserved.

+ *

+ * This code is derived from the Stanford/CMU enet packet filter,

+ * (net/enet.c) distributed as part of 4.3BSD, and code contributed

+ * to Berkeley by Steven McCanne and Van Jacobson both of Lawrence

+ * Berkeley Laboratory.

+ *

+ * Redistribution and use in source and binary forms, with or without

+ * modification, are permitted provided that the following conditions

+ * are met:

+ * 1. Redistributions of source code must retain the above copyright

+ *    notice, this list of conditions and the following disclaimer.

+ * 2. Redistributions in binary form must reproduce the above copyright

+ *    notice, this list of conditions and the following disclaimer in the

+ *    documentation and/or other materials provided with the distribution.

+ * 3. All advertising materials mentioning features or use of this software

+ *    must display the following acknowledgement:

+ *      This product includes software developed by the University of

+ *      California, Berkeley and its contributors.

+ * 4. Neither the name of the University nor the names of its contributors

+ *    may be used to endorse or promote products derived from this software

+ *    without specific prior written permission.

+ *

+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND

+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE

+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE

+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS

+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)

+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT

+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY

+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF

+ * SUCH DAMAGE.

+ *

+ * @(#) $Header: /tcpdump/master/libpcap/pcap/sll.h,v 1.2.2.1 2008-05-30 01:36:06 guy Exp $ (LBL)

+ */

+

+/*

+ * For captures on Linux cooked sockets, we construct a fake header

+ * that includes:

+ *

+ *	a 2-byte "packet type" which is one of:

+ *

+ *		LINUX_SLL_HOST		packet was sent to us

+ *		LINUX_SLL_BROADCAST	packet was broadcast

+ *		LINUX_SLL_MULTICAST	packet was multicast

+ *		LINUX_SLL_OTHERHOST	packet was sent to somebody else

+ *		LINUX_SLL_OUTGOING	packet was sent *by* us;

+ *

+ *	a 2-byte Ethernet protocol field;

+ *

+ *	a 2-byte link-layer type;

+ *

+ *	a 2-byte link-layer address length;

+ *

+ *	an 8-byte source link-layer address, whose actual length is

+ *	specified by the previous value.

+ *

+ * All fields except for the link-layer address are in network byte order.

+ *

+ * DO NOT change the layout of this structure, or change any of the

+ * LINUX_SLL_ values below.  If you must change the link-layer header

+ * for a "cooked" Linux capture, introduce a new DLT_ type (ask

+ * "tcpdump-workers@lists.tcpdump.org" for one, so that you don't give it

+ * a value that collides with a value already being used), and use the

+ * new header in captures of that type, so that programs that can

+ * handle DLT_LINUX_SLL captures will continue to handle them correctly

+ * without any change, and so that capture files with different headers

+ * can be told apart and programs that read them can dissect the

+ * packets in them.

+ */

+

+#ifndef lib_pcap_sll_h

+#define lib_pcap_sll_h

+

+/*

+ * A DLT_LINUX_SLL fake link-layer header.

+ */

+#define SLL_HDR_LEN	16		/* total header length */

+#define SLL_ADDRLEN	8		/* length of address field */

+

+struct sll_header {

+	u_int16_t sll_pkttype;		/* packet type */

+	u_int16_t sll_hatype;		/* link-layer address type */

+	u_int16_t sll_halen;		/* link-layer address length */

+	u_int8_t sll_addr[SLL_ADDRLEN];	/* link-layer address */

+	u_int16_t sll_protocol;		/* protocol */

+};

+

+/*

+ * The LINUX_SLL_ values for "sll_pkttype"; these correspond to the

+ * PACKET_ values on Linux, but are defined here so that they're

+ * available even on systems other than Linux, and so that they

+ * don't change even if the PACKET_ values change.

+ */

+#define LINUX_SLL_HOST		0

+#define LINUX_SLL_BROADCAST	1

+#define LINUX_SLL_MULTICAST	2

+#define LINUX_SLL_OTHERHOST	3

+#define LINUX_SLL_OUTGOING	4

+

+/*

+ * The LINUX_SLL_ values for "sll_protocol"; these correspond to the

+ * ETH_P_ values on Linux, but are defined here so that they're

+ * available even on systems other than Linux.  We assume, for now,

+ * that the ETH_P_ values won't change in Linux; if they do, then:

+ *

+ *	if we don't translate them in "pcap-linux.c", capture files

+ *	won't necessarily be readable if captured on a system that

+ *	defines ETH_P_ values that don't match these values;

+ *

+ *	if we do translate them in "pcap-linux.c", that makes life

+ *	unpleasant for the BPF code generator, as the values you test

+ *	for in the kernel aren't the values that you test for when

+ *	reading a capture file, so the fixup code run on BPF programs

+ *	handed to the kernel ends up having to do more work.

+ *

+ * Add other values here as necessary, for handling packet types that

+ * might show up on non-Ethernet, non-802.x networks.  (Not all the ones

+ * in the Linux "if_ether.h" will, I suspect, actually show up in

+ * captures.)

+ */

+#define LINUX_SLL_P_802_3	0x0001	/* Novell 802.3 frames without 802.2 LLC header */

+#define LINUX_SLL_P_802_2	0x0004	/* 802.2 frames (not D/I/X Ethernet) */

+

+#endif

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/pcap/usb.h b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/pcap/usb.h
new file mode 100644
index 0000000..f150d3b
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/pcap/usb.h
@@ -0,0 +1,90 @@
+/*

+ * Copyright (c) 2006 Paolo Abeni (Italy)

+ * All rights reserved.

+ *

+ * Redistribution and use in source and binary forms, with or without

+ * modification, are permitted provided that the following conditions

+ * are met:

+ *

+ * 1. Redistributions of source code must retain the above copyright

+ * notice, this list of conditions and the following disclaimer.

+ * 2. Redistributions in binary form must reproduce the above copyright

+ * notice, this list of conditions and the following disclaimer in the

+ * documentation and/or other materials provided with the distribution.

+ * 3. The name of the author may not be used to endorse or promote 

+ * products derived from this software without specific prior written 

+ * permission.

+ *

+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS

+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT

+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR

+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT

+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,

+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT

+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY

+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT

+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE

+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+ *

+ * Basic USB data struct

+ * By Paolo Abeni <paolo.abeni@email.it>

+ *

+ * @(#) $Header: /tcpdump/master/libpcap/pcap/usb.h,v 1.6 2007/09/22 02:06:08 guy Exp $

+ */

+ 

+#ifndef _PCAP_USB_STRUCTS_H__

+#define _PCAP_USB_STRUCTS_H__

+

+/* 

+ * possible transfer mode

+ */

+#define URB_TRANSFER_IN   0x80

+#define URB_ISOCHRONOUS   0x0

+#define URB_INTERRUPT     0x1

+#define URB_CONTROL       0x2

+#define URB_BULK          0x3

+

+/*

+ * possible event type

+ */

+#define URB_SUBMIT        'S'

+#define URB_COMPLETE      'C'

+#define URB_ERROR         'E'

+

+/*

+ * USB setup header as defined in USB specification.

+ * Appears at the front of each packet in DLT_USB captures.

+ */

+typedef struct _usb_setup {

+	u_int8_t bmRequestType;

+	u_int8_t bRequest;

+	u_int16_t wValue;

+	u_int16_t wIndex;

+	u_int16_t wLength;

+} pcap_usb_setup;

+

+

+/*

+ * Header prepended by linux kernel to each event.

+ * Appears at the front of each packet in DLT_USB_LINUX captures.

+ */

+typedef struct _usb_header {

+	u_int64_t id;

+	u_int8_t event_type;

+	u_int8_t transfer_type;

+	u_int8_t endpoint_number;

+	u_int8_t device_address;

+	u_int16_t bus_id;

+	char setup_flag;/*if !=0 the urb setup header is not present*/

+	char data_flag; /*if !=0 no urb data is present*/

+	int64_t ts_sec;

+	int32_t ts_usec;

+	int32_t status;

+	u_int32_t urb_len;

+	u_int32_t data_len; /* amount of urb data really present in this event*/

+	pcap_usb_setup setup;

+} pcap_usb_header;

+

+

+#endif

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/pcap/vlan.h b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/pcap/vlan.h
new file mode 100644
index 0000000..00ed9b6
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/pcap/vlan.h
@@ -0,0 +1,46 @@
+/*-

+ * Copyright (c) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997

+ *	The Regents of the University of California.  All rights reserved.

+ *

+ * Redistribution and use in source and binary forms, with or without

+ * modification, are permitted provided that the following conditions

+ * are met:

+ * 1. Redistributions of source code must retain the above copyright

+ *    notice, this list of conditions and the following disclaimer.

+ * 2. Redistributions in binary form must reproduce the above copyright

+ *    notice, this list of conditions and the following disclaimer in the

+ *    documentation and/or other materials provided with the distribution.

+ * 3. All advertising materials mentioning features or use of this software

+ *    must display the following acknowledgement:

+ *      This product includes software developed by the University of

+ *      California, Berkeley and its contributors.

+ * 4. Neither the name of the University nor the names of its contributors

+ *    may be used to endorse or promote products derived from this software

+ *    without specific prior written permission.

+ *

+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND

+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE

+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE

+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS

+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)

+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT

+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY

+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF

+ * SUCH DAMAGE.

+ *

+ * @(#) $Header: /tcpdump/master/libpcap/pcap/vlan.h,v 1.1.2.2 2008-08-06 07:45:59 guy Exp $

+ */

+

+#ifndef lib_pcap_vlan_h

+#define lib_pcap_vlan_h

+

+struct vlan_tag {

+	u_int16_t	vlan_tpid;		/* ETH_P_8021Q */

+	u_int16_t	vlan_tci;		/* VLAN TCI */

+};

+

+#define VLAN_TAG_LEN	4

+

+#endif

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/remote-ext.h b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/remote-ext.h
new file mode 100644
index 0000000..9f54d69
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/remote-ext.h
@@ -0,0 +1,444 @@
+/*

+ * Copyright (c) 2002 - 2003

+ * NetGroup, Politecnico di Torino (Italy)

+ * All rights reserved.

+ * 

+ * Redistribution and use in source and binary forms, with or without 

+ * modification, are permitted provided that the following conditions 

+ * are met:

+ * 

+ * 1. Redistributions of source code must retain the above copyright 

+ * notice, this list of conditions and the following disclaimer.

+ * 2. Redistributions in binary form must reproduce the above copyright 

+ * notice, this list of conditions and the following disclaimer in the 

+ * documentation and/or other materials provided with the distribution. 

+ * 3. Neither the name of the Politecnico di Torino nor the names of its 

+ * contributors may be used to endorse or promote products derived from 

+ * this software without specific prior written permission. 

+ * 

+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 

+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 

+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 

+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 

+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 

+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 

+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 

+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 

+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 

+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 

+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+ * 

+ */

+

+

+#ifndef __REMOTE_EXT_H__

+#define __REMOTE_EXT_H__

+

+

+#ifndef HAVE_REMOTE

+#error Please do not include this file directly. Just define HAVE_REMOTE and then include pcap.h

+#endif

+

+// Definition for Microsoft Visual Studio

+#if _MSC_VER > 1000

+#pragma once

+#endif

+

+#ifdef __cplusplus

+extern "C" {

+#endif

+

+/*!

+	\file remote-ext.h

+

+	The goal of this file it to include most of the new definitions that should be

+	placed into the pcap.h file.

+

+	It includes all new definitions (structures and functions like pcap_open().

+    Some of the functions are not really a remote feature, but, right now, 

+	they are placed here.

+*/

+

+

+

+// All this stuff is public

+/*! \addtogroup remote_struct

+	\{

+*/

+

+

+

+

+/*!

+	\brief Defines the maximum buffer size in which address, port, interface names are kept.

+

+	In case the adapter name or such is larger than this value, it is truncated.

+	This is not used by the user; however it must be aware that an hostname / interface

+	name longer than this value will be truncated.

+*/

+#define PCAP_BUF_SIZE 1024

+

+

+/*! \addtogroup remote_source_ID

+	\{

+*/

+

+

+/*!

+	\brief Internal representation of the type of source in use (file, 

+	remote/local interface).

+

+	This indicates a file, i.e. the user want to open a capture from a local file.

+*/

+#define PCAP_SRC_FILE 2

+/*!

+	\brief Internal representation of the type of source in use (file, 

+	remote/local interface).

+

+	This indicates a local interface, i.e. the user want to open a capture from 

+	a local interface. This does not involve the RPCAP protocol.

+*/

+#define PCAP_SRC_IFLOCAL 3

+/*!

+	\brief Internal representation of the type of source in use (file, 

+	remote/local interface).

+

+	This indicates a remote interface, i.e. the user want to open a capture from 

+	an interface on a remote host. This does involve the RPCAP protocol.

+*/

+#define PCAP_SRC_IFREMOTE 4

+

+/*!

+	\}

+*/

+

+

+

+/*! \addtogroup remote_source_string

+

+	The formats allowed by the pcap_open() are the following:

+	- file://path_and_filename [opens a local file]

+	- rpcap://devicename [opens the selected device devices available on the local host, without using the RPCAP protocol]

+	- rpcap://host/devicename [opens the selected device available on a remote host]

+	- rpcap://host:port/devicename [opens the selected device available on a remote host, using a non-standard port for RPCAP]

+	- adaptername [to open a local adapter; kept for compability, but it is strongly discouraged]

+	- (NULL) [to open the first local adapter; kept for compability, but it is strongly discouraged]

+

+	The formats allowed by the pcap_findalldevs_ex() are the following:

+	- file://folder/ [lists all the files in the given folder]

+	- rpcap:// [lists all local adapters]

+	- rpcap://host:port/ [lists the devices available on a remote host]

+

+	Referring to the 'host' and 'port' paramters, they can be either numeric or literal. Since

+	IPv6 is fully supported, these are the allowed formats:

+

+	- host (literal): e.g. host.foo.bar

+	- host (numeric IPv4): e.g. 10.11.12.13

+	- host (numeric IPv4, IPv6 style): e.g. [10.11.12.13]

+	- host (numeric IPv6): e.g. [1:2:3::4]

+	- port: can be either numeric (e.g. '80') or literal (e.g. 'http')

+

+	Here you find some allowed examples:

+	- rpcap://host.foo.bar/devicename [everything literal, no port number]

+	- rpcap://host.foo.bar:1234/devicename [everything literal, with port number]

+	- rpcap://10.11.12.13/devicename [IPv4 numeric, no port number]

+	- rpcap://10.11.12.13:1234/devicename [IPv4 numeric, with port number]

+	- rpcap://[10.11.12.13]:1234/devicename [IPv4 numeric with IPv6 format, with port number]

+	- rpcap://[1:2:3::4]/devicename [IPv6 numeric, no port number]

+	- rpcap://[1:2:3::4]:1234/devicename [IPv6 numeric, with port number]

+	- rpcap://[1:2:3::4]:http/devicename [IPv6 numeric, with literal port number]

+	

+	\{

+*/

+

+

+/*!

+	\brief String that will be used to determine the type of source in use (file,

+	remote/local interface).

+

+	This string will be prepended to the interface name in order to create a string

+	that contains all the information required to open the source.

+

+	This string indicates that the user wants to open a capture from a local file.

+*/

+#define PCAP_SRC_FILE_STRING "file://"

+/*!

+	\brief String that will be used to determine the type of source in use (file,

+	remote/local interface).

+

+	This string will be prepended to the interface name in order to create a string

+	that contains all the information required to open the source.

+

+	This string indicates that the user wants to open a capture from a network interface.

+	This string does not necessarily involve the use of the RPCAP protocol. If the

+	interface required resides on the local host, the RPCAP protocol is not involved

+	and the local functions are used.

+*/

+#define PCAP_SRC_IF_STRING "rpcap://"

+

+/*!

+	\}

+*/

+

+

+

+

+

+/*!

+	\addtogroup remote_open_flags

+	\{

+*/

+

+/*!

+	\brief Defines if the adapter has to go in promiscuous mode.

+

+	It is '1' if you have to open the adapter in promiscuous mode, '0' otherwise.

+	Note that even if this parameter is false, the interface could well be in promiscuous

+	mode for some other reason (for example because another capture process with 

+	promiscuous mode enabled is currently using that interface).

+	On on Linux systems with 2.2 or later kernels (that have the "any" device), this

+	flag does not work on the "any" device; if an argument of "any" is supplied,

+	the 'promisc' flag is ignored.

+*/

+#define PCAP_OPENFLAG_PROMISCUOUS		1

+

+/*!

+	\brief Defines if the data trasfer (in case of a remote

+	capture) has to be done with UDP protocol.

+

+	If it is '1' if you want a UDP data connection, '0' if you want

+	a TCP data connection; control connection is always TCP-based.

+	A UDP connection is much lighter, but it does not guarantee that all

+	the captured packets arrive to the client workstation. Moreover, 

+	it could be harmful in case of network congestion.

+	This flag is meaningless if the source is not a remote interface.

+	In that case, it is simply ignored.

+*/

+#define PCAP_OPENFLAG_DATATX_UDP			2

+

+

+/*!

+	\brief Defines if the remote probe will capture its own generated traffic.

+

+	In case the remote probe uses the same interface to capture traffic and to send

+	data back to the caller, the captured traffic includes the RPCAP traffic as well.

+	If this flag is turned on, the RPCAP traffic is excluded from the capture, so that

+	the trace returned back to the collector is does not include this traffic.

+*/

+#define PCAP_OPENFLAG_NOCAPTURE_RPCAP	4

+

+/*!

+	\brief Defines if the local adapter will capture its own generated traffic.

+

+	This flag tells the underlying capture driver to drop the packets that were sent by itself. 

+	This is usefult when building applications like bridges, that should ignore the traffic

+	they just sent.

+*/

+#define PCAP_OPENFLAG_NOCAPTURE_LOCAL	8

+

+/*!

+	\brief This flag configures the adapter for maximum responsiveness.

+

+	In presence of a large value for nbytes, WinPcap waits for the arrival of several packets before 

+	copying the data to the user. This guarantees a low number of system calls, i.e. lower processor usage, 

+	i.e. better performance, which is good for applications like sniffers. If the user sets the 

+	PCAP_OPENFLAG_MAX_RESPONSIVENESS flag, the capture driver will copy the packets as soon as the application 

+	is ready to receive them. This is suggested for real time applications (like, for example, a bridge) 

+	that need the best responsiveness.*/

+#define PCAP_OPENFLAG_MAX_RESPONSIVENESS	16

+

+/*!

+	\}

+*/

+

+

+/*!

+	\addtogroup remote_samp_methods

+	\{

+*/

+

+/*!

+	\brief No sampling has to be done on the current capture.

+

+	In this case, no sampling algorithms are applied to the current capture.

+*/

+#define PCAP_SAMP_NOSAMP	0

+

+/*!

+	\brief It defines that only 1 out of N packets must be returned to the user.

+

+	In this case, the 'value' field of the 'pcap_samp' structure indicates the

+	number of packets (minus 1) that must be discarded before one packet got accepted.

+	In other words, if 'value = 10', the first packet is returned to the caller, while

+	the following 9 are discarded.

+*/

+#define PCAP_SAMP_1_EVERY_N	1

+

+/*!

+	\brief It defines that we have to return 1 packet every N milliseconds.

+

+	In this case, the 'value' field of the 'pcap_samp' structure indicates the 'waiting

+	time' in milliseconds before one packet got accepted.

+	In other words, if 'value = 10', the first packet is returned to the caller; the next 

+	returned one will be the first packet that arrives when 10ms have elapsed. 

+*/

+#define PCAP_SAMP_FIRST_AFTER_N_MS 2

+

+/*!

+	\}

+*/

+

+

+/*!

+	\addtogroup remote_auth_methods

+	\{

+*/

+

+/*!

+	\brief It defines the NULL authentication.

+

+	This value has to be used within the 'type' member of the pcap_rmtauth structure.

+	The 'NULL' authentication has to be equal to 'zero', so that old applications

+	can just put every field of struct pcap_rmtauth to zero, and it does work.

+*/

+#define RPCAP_RMTAUTH_NULL 0

+/*!

+	\brief It defines the username/password authentication.

+

+	With this type of authentication, the RPCAP protocol will use the username/

+	password provided to authenticate the user on the remote machine. If the

+	authentication is successful (and the user has the right to open network devices)

+	the RPCAP connection will continue; otherwise it will be dropped.

+

+	This value has to be used within the 'type' member of the pcap_rmtauth structure.

+*/

+#define RPCAP_RMTAUTH_PWD 1

+

+/*!

+	\}

+*/

+

+

+

+

+/*!

+

+	\brief This structure keeps the information needed to autheticate

+	the user on a remote machine.

+	

+	The remote machine can either grant or refuse the access according 

+	to the information provided.

+	In case the NULL authentication is required, both 'username' and

+	'password' can be NULL pointers.

+	

+	This structure is meaningless if the source is not a remote interface;

+	in that case, the functions which requires such a structure can accept

+	a NULL pointer as well.

+*/

+struct pcap_rmtauth

+{

+	/*!

+		\brief Type of the authentication required.

+

+		In order to provide maximum flexibility, we can support different types

+		of authentication based on the value of this 'type' variable. The currently 

+		supported authentication methods are defined into the

+		\link remote_auth_methods Remote Authentication Methods Section\endlink.

+

+	*/

+	int type;

+	/*!

+		\brief Zero-terminated string containing the username that has to be 

+		used on the remote machine for authentication.

+		

+		This field is meaningless in case of the RPCAP_RMTAUTH_NULL authentication

+		and it can be NULL.

+	*/

+	char *username;

+	/*!

+		\brief Zero-terminated string containing the password that has to be 

+		used on the remote machine for authentication.

+		

+		This field is meaningless in case of the RPCAP_RMTAUTH_NULL authentication

+		and it can be NULL.

+	*/

+	char *password;

+};

+

+

+/*!

+	\brief This structure defines the information related to sampling.

+

+	In case the sampling is requested, the capturing device should read

+	only a subset of the packets coming from the source. The returned packets depend

+	on the sampling parameters.

+

+	\warning The sampling process is applied <strong>after</strong> the filtering process.

+	In other words, packets are filtered first, then the sampling process selects a

+	subset of the 'filtered' packets and it returns them to the caller.

+*/

+struct pcap_samp

+{

+	/*!

+		Method used for sampling. Currently, the supported methods are listed in the

+		\link remote_samp_methods Sampling Methods Section\endlink.

+	*/

+	int method;

+

+	/*!

+		This value depends on the sampling method defined. For its meaning, please check

+		at the \link remote_samp_methods Sampling Methods Section\endlink.

+	*/

+	int value;

+};

+

+

+

+

+//! Maximum lenght of an host name (needed for the RPCAP active mode)

+#define RPCAP_HOSTLIST_SIZE 1024

+

+

+/*!

+	\}

+*/ // end of public documentation

+

+

+// Exported functions

+

+

+

+/** \name New WinPcap functions

+

+	This section lists the new functions that are able to help considerably in writing

+	WinPcap programs because of their easiness of use.

+ */

+//\{

+pcap_t *pcap_open(const char *source, int snaplen, int flags, int read_timeout, struct pcap_rmtauth *auth, char *errbuf);

+int pcap_createsrcstr(char *source, int type, const char *host, const char *port, const char *name, char *errbuf);

+int pcap_parsesrcstr(const char *source, int *type, char *host, char *port, char *name, char *errbuf);

+int pcap_findalldevs_ex(char *source, struct pcap_rmtauth *auth, pcap_if_t **alldevs, char *errbuf);

+struct pcap_samp *pcap_setsampling(pcap_t *p);

+

+//\}

+// End of new winpcap functions

+

+

+

+/** \name Remote Capture functions

+ */

+//\{ 

+SOCKET pcap_remoteact_accept(const char *address, const char *port, const char *hostlist, char *connectinghost, struct pcap_rmtauth *auth, char *errbuf);

+int pcap_remoteact_list(char *hostlist, char sep, int size, char *errbuf);

+int pcap_remoteact_close(const char *host, char *errbuf);

+void pcap_remoteact_cleanup();

+//\}

+// End of remote capture functions

+

+#ifdef __cplusplus

+}

+#endif

+

+

+#endif

+

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/wpcap.lib b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/wpcap.lib
new file mode 100644
index 0000000..f832e04
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/WinPCap/wpcap.lib
Binary files differ
diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/atomic.h b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/atomic.h
new file mode 100644
index 0000000..565c280
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/atomic.h
@@ -0,0 +1,547 @@
+/*

+ * FreeRTOS Kernel V10.2.0

+ * 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://www.FreeRTOS.org

+ * http://aws.amazon.com/freertos

+ *

+ * 1 tab == 4 spaces!

+ */

+

+/**

+ * @file atomic.h

+ * @brief FreeRTOS atomic operation support.

+ *

+ * Two implementations of atomic are given in this header file:

+ * 1. Disabling interrupt globally.

+ * 2. ISA native atomic support.

+ * The former is available to all ports (compiler-architecture combination),

+ * while the latter is only available to ports compiling with GCC (version at

+ * least 4.7.0), which also have ISA atomic support.

+ *

+ * User can select which implementation to use by:

+ * setting/clearing configUSE_ATOMIC_INSTRUCTION in FreeRTOSConfig.h.

+ * Define AND set configUSE_ATOMIC_INSTRUCTION to 1 for ISA native atomic support.

+ * Undefine OR clear configUSE_ATOMIC_INSTRUCTION for disabling global interrupt

+ * implementation.

+ *

+ * @see GCC Built-in Functions for Memory Model Aware Atomic Operations

+ *      https://gcc.gnu.org/onlinedocs/gcc/_005f_005fatomic-Builtins.html

+ */

+

+#ifndef ATOMIC_H

+#define ATOMIC_H

+

+#ifndef INC_FREERTOS_H

+    #error "include FreeRTOS.h must appear in source files before include atomic.h"

+#endif

+

+/* Standard includes. */

+#include <stdint.h>

+

+#ifdef __cplusplus

+extern "C" {

+#endif

+

+#if defined ( configUSE_GCC_BUILTIN_ATOMICS ) && ( configUSE_GCC_BUILTIN_ATOMICS == 1 )

+

+    /* Needed for __atomic_compare_exchange() weak=false. */

+    #include <stdbool.h>

+

+    /* This branch is for GCC compiler and GCC compiler only. */

+    #ifndef portFORCE_INLINE

+        #define portFORCE_INLINE  inline __attribute__((always_inline))

+    #endif

+

+#else

+

+    /* Port specific definitions -- entering/exiting critical section.

+     * Refer template -- ./lib/FreeRTOS/portable/Compiler/Arch/portmacro.h

+     *

+     * Every call to ATOMIC_EXIT_CRITICAL() must be closely paired with

+     * ATOMIC_ENTER_CRITICAL().

+     */

+    #if defined( portSET_INTERRUPT_MASK_FROM_ISR )

+

+        /* Nested interrupt scheme is supported in this port. */

+        #define ATOMIC_ENTER_CRITICAL()     \

+            UBaseType_t uxCriticalSectionType = portSET_INTERRUPT_MASK_FROM_ISR()

+

+        #define ATOMIC_EXIT_CRITICAL()      \

+            portCLEAR_INTERRUPT_MASK_FROM_ISR( uxCriticalSectionType )

+

+    #else

+

+        /* Nested interrupt scheme is NOT supported in this port. */

+        #define ATOMIC_ENTER_CRITICAL()     portENTER_CRITICAL()

+        #define ATOMIC_EXIT_CRITICAL()      portEXIT_CRITICAL()

+

+    #endif /* portSET_INTERRUPT_MASK_FROM_ISR() */

+

+    /* Port specific definition -- "always inline". 

+     * Inline is compiler specific, and may not always get inlined depending on your optimization level. 

+     * For atomic operations, inline is considered a performance optimization.

+     * Thus, if portFORCE_INLINE is not provided by portmacro.h, instead of resulting error,

+     * simply define it. 

+     */

+    #ifndef portFORCE_INLINE

+        #define portFORCE_INLINE 

+    #endif

+

+#endif /* configUSE_GCC_BUILTIN_ATOMICS */

+

+#define ATOMIC_COMPARE_AND_SWAP_SUCCESS     0x1U        /**< Compare and swap succeeded, swapped. */

+#define ATOMIC_COMPARE_AND_SWAP_FAILURE     0x0U        /**< Compare and swap failed, did not swap. */

+

+/*----------------------------- Swap && CAS ------------------------------*/

+

+/**

+ * Atomic compare-and-swap

+ *

+ * @brief Performs an atomic compare-and-swap operation on the specified values.

+ *

+ * @param[in, out] pDestination  Pointer to memory location from where value is

+ *                               to be loaded and checked.

+ * @param[in] ulExchange         If condition meets, write this value to memory.

+ * @param[in] ulComparand        Swap condition.

+ *

+ * @return Unsigned integer of value 1 or 0. 1 for swapped, 0 for not swapped.

+ *

+ * @note This function only swaps *pDestination with ulExchange, if previous

+ *       *pDestination value equals ulComparand.

+ */

+static portFORCE_INLINE uint32_t Atomic_CompareAndSwap_u32(

+        uint32_t volatile * pDestination,

+        uint32_t ulExchange,

+        uint32_t ulComparand )

+{

+

+    uint32_t ulReturnValue = ATOMIC_COMPARE_AND_SWAP_FAILURE;

+

+#if defined ( configUSE_GCC_BUILTIN_ATOMICS ) && ( configUSE_GCC_BUILTIN_ATOMICS == 1 )

+

+    if ( __atomic_compare_exchange( pDestination,

+                                    &ulComparand,

+                                    &ulExchange,

+                                    false,

+                                    __ATOMIC_SEQ_CST,

+                                    __ATOMIC_SEQ_CST ) )

+    {

+        ulReturnValue = ATOMIC_COMPARE_AND_SWAP_SUCCESS;

+    }

+

+#else

+

+    ATOMIC_ENTER_CRITICAL();

+

+    if ( *pDestination == ulComparand )

+    {

+        *pDestination = ulExchange;

+        ulReturnValue = ATOMIC_COMPARE_AND_SWAP_SUCCESS;

+    }

+

+    ATOMIC_EXIT_CRITICAL();

+

+#endif

+

+    return ulReturnValue;

+

+}

+

+/**

+ * Atomic swap (pointers)

+ *

+ * @brief Atomically sets the address pointed to by *ppDestination to the value

+ *        of *pExchange.

+ *

+ * @param[in, out] ppDestination  Pointer to memory location from where a pointer

+ *                                value is to be loaded and written back to.

+ * @param[in] pExchange           Pointer value to be written to *ppDestination.

+ *

+ * @return The initial value of *ppDestination.

+ */

+static portFORCE_INLINE void * Atomic_SwapPointers_p32(

+        void * volatile * ppDestination,

+        void * pExchange )

+{

+    void * pReturnValue;

+

+#if defined ( configUSE_GCC_BUILTIN_ATOMICS ) && ( configUSE_GCC_BUILTIN_ATOMICS == 1 )

+

+    __atomic_exchange( ppDestination, &pExchange, &pReturnValue, __ATOMIC_SEQ_CST );

+

+#else

+

+    ATOMIC_ENTER_CRITICAL();

+

+    pReturnValue = *ppDestination;

+

+    *ppDestination = pExchange;

+

+    ATOMIC_EXIT_CRITICAL();

+

+#endif

+

+    return pReturnValue;

+}

+

+/**

+ * Atomic compare-and-swap (pointers)

+ *

+ * @brief Performs an atomic compare-and-swap operation on the specified pointer

+ *        values.

+ *

+ * @param[in, out] ppDestination  Pointer to memory location from where a pointer

+ *                                value is to be loaded and checked.

+ * @param[in] pExchange           If condition meets, write this value to memory.

+ * @param[in] pComparand          Swap condition.

+ *

+ * @return Unsigned integer of value 1 or 0. 1 for swapped, 0 for not swapped.

+ *

+ * @note This function only swaps *ppDestination with pExchange, if previous

+ *       *ppDestination value equals pComparand.

+ */

+static portFORCE_INLINE uint32_t Atomic_CompareAndSwapPointers_p32(

+        void * volatile * ppDestination,

+        void * pExchange, void * pComparand )

+{

+    uint32_t ulReturnValue = ATOMIC_COMPARE_AND_SWAP_FAILURE;

+

+#if defined ( configUSE_GCC_BUILTIN_ATOMICS ) && ( configUSE_GCC_BUILTIN_ATOMICS == 1 )

+    if ( __atomic_compare_exchange( ppDestination,

+                                    &pComparand,

+                                    &pExchange,

+                                    false,

+                                    __ATOMIC_SEQ_CST,

+                                    __ATOMIC_SEQ_CST ) )

+    {

+        ulReturnValue = ATOMIC_COMPARE_AND_SWAP_SUCCESS;

+    }

+

+#else

+

+    ATOMIC_ENTER_CRITICAL();

+

+    if ( *ppDestination == pComparand )

+    {

+        *ppDestination = pExchange;

+        ulReturnValue = ATOMIC_COMPARE_AND_SWAP_SUCCESS;

+    }

+

+    ATOMIC_EXIT_CRITICAL();

+

+#endif

+

+    return ulReturnValue;

+}

+

+

+/*----------------------------- Arithmetic ------------------------------*/

+

+/**

+ * Atomic add

+ *

+ * @brief Atomically adds count to the value of the specified pointer points to.

+ *

+ * @param[in,out] pAddend  Pointer to memory location from where value is to be

+ *                         loaded and written back to.

+ * @param[in] ulCount      Value to be added to *pAddend.

+ *

+ * @return previous *pAddend value.

+ */

+static portFORCE_INLINE uint32_t Atomic_Add_u32(

+        uint32_t volatile * pAddend,

+        uint32_t ulCount )

+{

+#if defined ( configUSE_GCC_BUILTIN_ATOMICS ) && ( configUSE_GCC_BUILTIN_ATOMICS == 1 )

+

+    return __atomic_fetch_add(pAddend, ulCount, __ATOMIC_SEQ_CST);

+

+#else

+

+    uint32_t ulCurrent;

+

+    ATOMIC_ENTER_CRITICAL();

+

+    ulCurrent = *pAddend;

+

+    *pAddend += ulCount;

+

+    ATOMIC_EXIT_CRITICAL();

+

+    return ulCurrent;

+

+#endif

+}

+

+/**

+ * Atomic subtract

+ *

+ * @brief Atomically subtracts count from the value of the specified pointer

+ *        pointers to.

+ *

+ * @param[in,out] pAddend  Pointer to memory location from where value is to be

+ *                         loaded and written back to.

+ * @param[in] ulCount      Value to be subtract from *pAddend.

+ *

+ * @return previous *pAddend value.

+ */

+static portFORCE_INLINE uint32_t Atomic_Subtract_u32(

+        uint32_t volatile * pAddend,

+        uint32_t ulCount )

+{

+#if defined ( configUSE_GCC_BUILTIN_ATOMICS ) && ( configUSE_GCC_BUILTIN_ATOMICS == 1 )

+

+    return __atomic_fetch_sub(pAddend, ulCount, __ATOMIC_SEQ_CST);

+

+#else

+

+    uint32_t ulCurrent;

+

+    ATOMIC_ENTER_CRITICAL();

+

+    ulCurrent = *pAddend;

+

+    *pAddend -= ulCount;

+

+    ATOMIC_EXIT_CRITICAL();

+

+    return ulCurrent;

+

+#endif

+}

+

+/**

+ * Atomic increment

+ *

+ * @brief Atomically increments the value of the specified pointer points to.

+ *

+ * @param[in,out] pAddend  Pointer to memory location from where value is to be

+ *                         loaded and written back to.

+ *

+ * @return *pAddend value before increment.

+ */

+static portFORCE_INLINE uint32_t Atomic_Increment_u32( uint32_t volatile * pAddend )

+{

+#if defined ( configUSE_GCC_BUILTIN_ATOMICS ) && ( configUSE_GCC_BUILTIN_ATOMICS == 1 )

+

+    return __atomic_fetch_add(pAddend, 1, __ATOMIC_SEQ_CST);

+

+#else

+

+    uint32_t ulCurrent;

+

+    ATOMIC_ENTER_CRITICAL();

+

+    ulCurrent = *pAddend;

+

+    *pAddend += 1;

+

+    ATOMIC_EXIT_CRITICAL();

+

+    return ulCurrent;

+

+#endif

+}

+

+/**

+ * Atomic decrement

+ *

+ * @brief Atomically decrements the value of the specified pointer points to

+ *

+ * @param[in,out] pAddend  Pointer to memory location from where value is to be

+ *                         loaded and written back to.

+ *

+ * @return *pAddend value before decrement.

+ */

+static portFORCE_INLINE uint32_t Atomic_Decrement_u32( uint32_t volatile * pAddend )

+{

+#if defined ( configUSE_GCC_BUILTIN_ATOMICS ) && ( configUSE_GCC_BUILTIN_ATOMICS == 1 )

+

+    return __atomic_fetch_sub(pAddend, 1, __ATOMIC_SEQ_CST);

+

+#else

+

+    uint32_t ulCurrent;

+

+    ATOMIC_ENTER_CRITICAL();

+

+    ulCurrent = *pAddend;

+

+    *pAddend -= 1;

+

+    ATOMIC_EXIT_CRITICAL();

+

+    return ulCurrent;

+

+#endif

+}

+

+/*----------------------------- Bitwise Logical ------------------------------*/

+

+/**

+ * Atomic OR

+ *

+ * @brief Performs an atomic OR operation on the specified values.

+ *

+ * @param [in, out] pDestination  Pointer to memory location from where value is

+ *                                to be loaded and written back to.

+ * @param [in] ulValue            Value to be ORed with *pDestination.

+ *

+ * @return The original value of *pDestination.

+ */

+static portFORCE_INLINE uint32_t Atomic_OR_u32(

+        uint32_t volatile * pDestination,

+        uint32_t ulValue )

+{

+#if defined ( configUSE_GCC_BUILTIN_ATOMICS ) && ( configUSE_GCC_BUILTIN_ATOMICS == 1 )

+

+    return __atomic_fetch_or(pDestination, ulValue, __ATOMIC_SEQ_CST);

+

+#else

+

+    uint32_t ulCurrent;

+

+    ATOMIC_ENTER_CRITICAL();

+

+    ulCurrent = *pDestination;

+

+    *pDestination |= ulValue;

+

+    ATOMIC_EXIT_CRITICAL();

+

+    return ulCurrent;

+

+#endif

+}

+

+/**

+ * Atomic AND

+ *

+ * @brief Performs an atomic AND operation on the specified values.

+ *

+ * @param [in, out] pDestination  Pointer to memory location from where value is

+ *                                to be loaded and written back to.

+ * @param [in] ulValue            Value to be ANDed with *pDestination.

+ *

+ * @return The original value of *pDestination.

+ */

+static portFORCE_INLINE uint32_t Atomic_AND_u32(

+        uint32_t volatile * pDestination,

+        uint32_t ulValue )

+{

+#if defined ( configUSE_GCC_BUILTIN_ATOMICS ) && ( configUSE_GCC_BUILTIN_ATOMICS == 1 )

+

+    return __atomic_fetch_and(pDestination, ulValue, __ATOMIC_SEQ_CST);

+

+#else

+

+    uint32_t ulCurrent;

+

+    ATOMIC_ENTER_CRITICAL();

+

+    ulCurrent = *pDestination;

+

+    *pDestination &= ulValue;

+

+    ATOMIC_EXIT_CRITICAL();

+

+    return ulCurrent;

+

+#endif

+}

+

+/**

+ * Atomic NAND

+ *

+ * @brief Performs an atomic NAND operation on the specified values.

+ *

+ * @param [in, out] pDestination  Pointer to memory location from where value is

+ *                                to be loaded and written back to.

+ * @param [in] ulValue            Value to be NANDed with *pDestination.

+ *

+ * @return The original value of *pDestination.

+ */

+static portFORCE_INLINE uint32_t Atomic_NAND_u32(

+        uint32_t volatile * pDestination,

+        uint32_t ulValue )

+{

+#if defined ( configUSE_GCC_BUILTIN_ATOMICS ) && ( configUSE_GCC_BUILTIN_ATOMICS == 1 )

+

+    return __atomic_fetch_nand(pDestination, ulValue, __ATOMIC_SEQ_CST);

+

+#else

+

+    uint32_t ulCurrent;

+

+    ATOMIC_ENTER_CRITICAL();

+

+    ulCurrent = *pDestination;

+

+    *pDestination = ~(ulCurrent & ulValue);

+

+    ATOMIC_EXIT_CRITICAL();

+

+    return ulCurrent;

+

+#endif

+}

+

+/**

+ * Atomic XOR

+ *

+ * @brief Performs an atomic XOR operation on the specified values.

+ *

+ * @param [in, out] pDestination  Pointer to memory location from where value is

+ *                                to be loaded and written back to.

+ * @param [in] ulValue            Value to be XORed with *pDestination.

+ *

+ * @return The original value of *pDestination.

+ */

+static portFORCE_INLINE uint32_t Atomic_XOR_u32(

+        uint32_t volatile * pDestination,

+        uint32_t ulValue )

+{

+#if defined ( configUSE_GCC_BUILTIN_ATOMICS ) && ( configUSE_GCC_BUILTIN_ATOMICS == 1 )

+

+    return __atomic_fetch_xor(pDestination, ulValue, __ATOMIC_SEQ_CST);

+

+#else

+

+    uint32_t ulCurrent;

+

+    ATOMIC_ENTER_CRITICAL();

+

+    ulCurrent = *pDestination;

+

+    *pDestination ^= ulValue;

+

+    ATOMIC_EXIT_CRITICAL();

+

+    return ulCurrent;

+

+#endif

+}

+

+#ifdef __cplusplus

+}

+#endif

+

+#endif /* ATOMIC_H */

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/demo_logging.c b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/demo_logging.c
new file mode 100644
index 0000000..2dc08cf
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/demo_logging.c
@@ -0,0 +1,527 @@
+/*

+ * FreeRTOS Kernel V10.2.1

+ * 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://www.FreeRTOS.org

+ * http://aws.amazon.com/freertos

+ *

+ * 1 tab == 4 spaces!

+ */

+

+/*

+ * Logging utility that allows FreeRTOS tasks to log to a UDP port, stdout, and

+ * disk file without making any Win32 system calls themselves.

+ *

+ * Messages logged to a UDP port are sent directly (using FreeRTOS+TCP), but as

+ * FreeRTOS tasks cannot make Win32 system calls messages sent to stdout or a

+ * disk file are sent via a stream buffer to a Win32 thread which then performs

+ * the actual output.

+ */

+

+/* Standard includes. */

+#include <stdio.h>

+#include <stdint.h>

+#include <stdarg.h>

+#include <io.h>

+#include <ctype.h>

+

+/* FreeRTOS includes. */

+#include <FreeRTOS.h>

+#include "task.h"

+

+/* FreeRTOS+TCP includes. */

+#include "FreeRTOS_IP.h"

+#include "FreeRTOS_Sockets.h"

+#include "FreeRTOS_Stream_Buffer.h"

+

+/* Demo includes. */

+#include "demo_logging.h"

+

+/*-----------------------------------------------------------*/

+

+/* The maximum size to which the log file may grow, before being renamed

+to .ful. */

+#define dlLOGGING_FILE_SIZE		( 40ul * 1024ul * 1024ul )

+

+/* Dimensions the arrays into which print messages are created. */

+#define dlMAX_PRINT_STRING_LENGTH	511

+

+/* The size of the stream buffer used to pass messages from FreeRTOS tasks to

+the Win32 thread that is responsible for making any Win32 system calls that are

+necessary for the selected logging method. */

+#define dlLOGGING_STREAM_BUFFER_SIZE  32768

+

+/* A block time of zero simply means don't block. */

+#define dlDONT_BLOCK	0

+

+/*-----------------------------------------------------------*/

+

+/*

+ * Called from vLoggingInit() to start a new disk log file.

+ */

+static void prvFileLoggingInit( void );

+

+/*

+ * Attempt to write a message to the file.

+ */

+static void prvLogToFile( const char *pcMessage, size_t xLength );

+

+/*

+ * Simply close the logging file, if it is open.

+ */

+static void prvFileClose( void );

+

+/*

+ * Before the scheduler is started this function is called directly.  After the

+ * scheduler has started it is called from the Windows thread dedicated to

+ * outputting log messages.  Only the windows thread actually performs the

+ * writing so as not to disrupt the simulation by making Windows system calls

+ * from FreeRTOS tasks.

+ */

+static void prvLoggingFlushBuffer( void );

+

+/*

+ * The windows thread that performs the actual writing of messages that require

+ * Win32 system calls.  Only the windows thread can make system calls so as not

+ * to disrupt the simulation by making Windows calls from FreeRTOS tasks.

+ */

+static DWORD WINAPI prvWin32LoggingThread( void *pvParam );

+

+/*

+ * Creates the socket to which UDP messages are sent.  This function is not

+ * called directly to prevent the print socket being created from within the IP

+ * task - which could result in a deadlock.  Instead the function call is

+ * deferred to run in the RTOS daemon task - hence it prototype.

+ */

+static void prvCreatePrintSocket( void *pvParameter1, uint32_t ulParameter2 );

+

+/*-----------------------------------------------------------*/

+

+/* Windows event used to wake the Win32 thread which performs any logging that

+needs Win32 system calls. */

+static void *pvLoggingThreadEvent = NULL;

+

+/* Stores the selected logging targets passed in as parameters to the

+vLoggingInit() function. */

+BaseType_t xStdoutLoggingUsed = pdFALSE, xDiskFileLoggingUsed = pdFALSE, xUDPLoggingUsed = pdFALSE;

+

+/* Circular buffer used to pass messages from the FreeRTOS tasks to the Win32

+thread that is responsible for making Win32 calls (when stdout or a disk log is

+used). */

+static StreamBuffer_t *xLogStreamBuffer = NULL;

+

+/* Handle to the file used for logging.  This is left open while there are

+messages waiting to be logged, then closed again in between logs. */

+static FILE *pxLoggingFileHandle = NULL;

+

+/* When true prints are performed directly.  After start up xDirectPrint is set

+to pdFALSE - at which time prints that require Win32 system calls are done by

+the Win32 thread responsible for logging. */

+BaseType_t xDirectPrint = pdTRUE;

+

+/* File names for the in use and complete (full) log files. */

+static const char *pcLogFileName = "RTOSDemo.log";

+static const char *pcFullLogFileName = "RTOSDemo.ful";

+

+/* As an optimization, the current file size is kept in a variable. */

+static size_t ulSizeOfLoggingFile = 0ul;

+

+/* The UDP socket and address on/to which print messages are sent. */

+Socket_t xPrintSocket = FREERTOS_INVALID_SOCKET;

+struct freertos_sockaddr xPrintUDPAddress;

+

+/*-----------------------------------------------------------*/

+

+void vLoggingInit( BaseType_t xLogToStdout, BaseType_t xLogToFile, BaseType_t xLogToUDP, uint32_t ulRemoteIPAddress, uint16_t usRemotePort )

+{

+	/* Can only be called before the scheduler has started. */

+	configASSERT( xTaskGetSchedulerState() == taskSCHEDULER_NOT_STARTED );

+

+	#if( ( ipconfigHAS_DEBUG_PRINTF == 1 ) || ( ipconfigHAS_PRINTF == 1 ) )

+	{

+		HANDLE Win32Thread;

+

+		/* Record which output methods are to be used. */

+		xStdoutLoggingUsed = xLogToStdout;

+		xDiskFileLoggingUsed = xLogToFile;

+		xUDPLoggingUsed = xLogToUDP;

+

+		/* If a disk file is used then initialize it now. */

+		if( xDiskFileLoggingUsed != pdFALSE )

+		{

+			prvFileLoggingInit();

+		}

+

+		/* If UDP logging is used then store the address to which the log data

+		will be sent - but don't create the socket yet because the network is

+		not initialized. */

+		if( xUDPLoggingUsed != pdFALSE )

+		{

+			/* Set the address to which the print messages are sent. */

+			xPrintUDPAddress.sin_port = FreeRTOS_htons( usRemotePort );

+			xPrintUDPAddress.sin_addr = ulRemoteIPAddress;

+		}

+

+		/* If a disk file or stdout are to be used then Win32 system calls will

+		have to be made.  Such system calls cannot be made from FreeRTOS tasks

+		so create a stream buffer to pass the messages to a Win32 thread, then

+		create the thread itself, along with a Win32 event that can be used to

+		unblock the thread. */

+		if( ( xStdoutLoggingUsed != pdFALSE ) || ( xDiskFileLoggingUsed != pdFALSE ) )

+		{

+			/* Create the buffer. */

+			xLogStreamBuffer = ( StreamBuffer_t * ) malloc( sizeof( *xLogStreamBuffer ) - sizeof( xLogStreamBuffer->ucArray ) + dlLOGGING_STREAM_BUFFER_SIZE + 1 );

+			configASSERT( xLogStreamBuffer );

+			memset( xLogStreamBuffer, '\0', sizeof( *xLogStreamBuffer ) - sizeof( xLogStreamBuffer->ucArray ) );

+			xLogStreamBuffer->LENGTH = dlLOGGING_STREAM_BUFFER_SIZE + 1;

+

+			/* Create the Windows event. */

+			pvLoggingThreadEvent = CreateEvent( NULL, FALSE, TRUE, "StdoutLoggingEvent" );

+

+			/* Create the thread itself. */

+			Win32Thread = CreateThread(

+				NULL,	/* Pointer to thread security attributes. */

+				0,		/* Initial thread stack size, in bytes. */

+				prvWin32LoggingThread,	/* Pointer to thread function. */

+				NULL,	/* Argument for new thread. */

+				0,		/* Creation flags. */

+				NULL );

+

+			/* Use the cores that are not used by the FreeRTOS tasks. */

+			SetThreadAffinityMask( Win32Thread, ~0x01u );

+			SetThreadPriorityBoost( Win32Thread, TRUE );

+			SetThreadPriority( Win32Thread, THREAD_PRIORITY_IDLE );

+		}

+	}

+	#else

+	{

+		/* FreeRTOSIPConfig is set such that no print messages will be output.

+		Avoid compiler warnings about unused parameters. */

+		( void ) xLogToStdout;

+		( void ) xLogToFile;

+		( void ) xLogToUDP;

+		( void ) usRemotePort;

+		( void ) ulRemoteIPAddress;

+	}

+	#endif /* ( ipconfigHAS_DEBUG_PRINTF == 1 ) || ( ipconfigHAS_PRINTF == 1 )  */

+}

+/*-----------------------------------------------------------*/

+

+static void prvCreatePrintSocket( void *pvParameter1, uint32_t ulParameter2 )

+{

+static const TickType_t xSendTimeOut = pdMS_TO_TICKS( 0 );

+Socket_t xSocket;

+

+	/* The function prototype is that of a deferred function, but the parameters

+	are not actually used. */

+	( void ) pvParameter1;

+	( void ) ulParameter2;

+

+	xSocket = FreeRTOS_socket( FREERTOS_AF_INET, FREERTOS_SOCK_DGRAM, FREERTOS_IPPROTO_UDP );

+

+	if( xSocket != FREERTOS_INVALID_SOCKET )

+	{

+		/* FreeRTOS+TCP decides which port to bind to. */

+		FreeRTOS_setsockopt( xSocket, 0, FREERTOS_SO_SNDTIMEO, &xSendTimeOut, sizeof( xSendTimeOut ) );

+		FreeRTOS_bind( xSocket, NULL, 0 );

+

+		/* Now the socket is bound it can be assigned to the print socket. */

+		xPrintSocket = xSocket;

+	}

+}

+/*-----------------------------------------------------------*/

+

+void vLoggingPrintf( const char *pcFormat, ... )

+{

+char cPrintString[ dlMAX_PRINT_STRING_LENGTH ];

+char cOutputString[ dlMAX_PRINT_STRING_LENGTH ];

+char *pcSource, *pcTarget, *pcBegin;

+size_t xLength, xLength2, rc;

+static BaseType_t xMessageNumber = 0;

+va_list args;

+uint32_t ulIPAddress;

+const char *pcTaskName;

+const char *pcNoTask = "None";

+int iOriginalPriority;

+HANDLE xCurrentTask;

+

+

+	if( ( xStdoutLoggingUsed != pdFALSE ) || ( xDiskFileLoggingUsed != pdFALSE ) || ( xUDPLoggingUsed != pdFALSE ) )

+	{

+		/* There are a variable number of parameters. */

+		va_start( args, pcFormat );

+

+		/* Additional info to place at the start of the log. */

+		if( xTaskGetSchedulerState() != taskSCHEDULER_NOT_STARTED )

+		{

+			pcTaskName = pcTaskGetName( NULL );

+		}

+		else

+		{

+			pcTaskName = pcNoTask;

+		}

+

+		if( strcmp( pcFormat, "\n" ) != 0 )

+		{

+			xLength = snprintf( cPrintString, dlMAX_PRINT_STRING_LENGTH, "%lu %lu [%s] ",

+				xMessageNumber++,

+				( unsigned long ) xTaskGetTickCount(),

+				pcTaskName );

+		}

+		else

+		{

+			xLength = 0;

+			memset( cPrintString, 0x00, dlMAX_PRINT_STRING_LENGTH );

+		}

+

+		xLength2 = vsnprintf( cPrintString + xLength, dlMAX_PRINT_STRING_LENGTH - xLength, pcFormat, args );

+

+		if( xLength2 <  0 )

+		{

+			/* Clean up. */

+			xLength2 = dlMAX_PRINT_STRING_LENGTH - 1 - xLength;

+			cPrintString[ dlMAX_PRINT_STRING_LENGTH - 1 ] = '\0';

+		}

+

+		xLength += xLength2;

+		va_end( args );

+

+		/* For ease of viewing, copy the string into another buffer, converting

+		IP addresses to dot notation on the way. */

+		pcSource = cPrintString;

+		pcTarget = cOutputString;

+

+		while( ( *pcSource ) != '\0' )

+		{

+			*pcTarget = *pcSource;

+			pcTarget++;

+			pcSource++;

+

+			/* Look forward for an IP address denoted by 'ip'. */

+			if( ( isxdigit( pcSource[ 0 ] ) != pdFALSE ) && ( pcSource[ 1 ] == 'i' ) && ( pcSource[ 2 ] == 'p' ) )

+			{

+				*pcTarget = *pcSource;

+				pcTarget++;

+				*pcTarget = '\0';

+				pcBegin = pcTarget - 8;

+

+				while( ( pcTarget > pcBegin ) && ( isxdigit( pcTarget[ -1 ] ) != pdFALSE ) )

+				{

+					pcTarget--;

+				}

+

+				sscanf( pcTarget, "%8X", &ulIPAddress );

+				rc = sprintf( pcTarget, "%lu.%lu.%lu.%lu",

+					( unsigned long ) ( ulIPAddress >> 24UL ),

+					( unsigned long ) ( (ulIPAddress >> 16UL) & 0xffUL ),

+					( unsigned long ) ( (ulIPAddress >> 8UL) & 0xffUL ),

+					( unsigned long ) ( ulIPAddress & 0xffUL ) );

+				pcTarget += rc;

+				pcSource += 3; /* skip "<n>ip" */

+			}

+		}

+

+		/* How far through the buffer was written? */

+		xLength = ( BaseType_t ) ( pcTarget - cOutputString );

+

+		/* If the message is to be logged to a UDP port then it can be sent directly

+		because it only uses FreeRTOS function (not Win32 functions). */

+		if( xUDPLoggingUsed != pdFALSE )

+		{

+			if( ( xPrintSocket == FREERTOS_INVALID_SOCKET ) && ( FreeRTOS_IsNetworkUp() != pdFALSE ) )

+			{

+				/* Create and bind the socket to which print messages are sent.  The

+				xTimerPendFunctionCall() function is used even though this is

+				not an interrupt because this function is called from the IP task

+				and the	IP task cannot itself wait for a socket to bind.  The

+				parameters to prvCreatePrintSocket() are not required so set to

+				NULL or 0. */

+				xTimerPendFunctionCall( prvCreatePrintSocket, NULL, 0, dlDONT_BLOCK );

+			}

+

+			if( xPrintSocket != FREERTOS_INVALID_SOCKET )

+			{

+				FreeRTOS_sendto( xPrintSocket, cOutputString, xLength, 0, &xPrintUDPAddress, sizeof( xPrintUDPAddress ) );

+

+				/* Just because the UDP data logger I'm using is dumb. */

+				FreeRTOS_sendto( xPrintSocket, "\r", sizeof( char ), 0, &xPrintUDPAddress, sizeof( xPrintUDPAddress ) );

+			}

+		}

+

+		/* If logging is also to go to either stdout or a disk file then it cannot

+		be output here - so instead write the message to the stream buffer and wake

+		the Win32 thread which will read it from the stream buffer and perform the

+		actual output. */

+		if( ( xStdoutLoggingUsed != pdFALSE ) || ( xDiskFileLoggingUsed != pdFALSE ) )

+		{

+			configASSERT( xLogStreamBuffer );

+

+			/* How much space is in the buffer? */

+			xLength2 = uxStreamBufferGetSpace( xLogStreamBuffer );

+

+			/* There must be enough space to write both the string and the length of

+			the string. */

+			if( xLength2 >= ( xLength + sizeof( xLength ) ) )

+			{

+				/* First write in the length of the data, then write in the data

+				itself.  Raising the thread priority is used as a critical section

+				as there are potentially multiple writers.  The stream buffer is

+				only thread safe when there is a single writer (likewise for

+				reading from the buffer). */

+				xCurrentTask = GetCurrentThread();

+				iOriginalPriority = GetThreadPriority( xCurrentTask );

+				SetThreadPriority( GetCurrentThread(), THREAD_PRIORITY_TIME_CRITICAL );

+				uxStreamBufferAdd( xLogStreamBuffer, 0, ( const uint8_t * ) &( xLength ), sizeof( xLength ) );

+				uxStreamBufferAdd( xLogStreamBuffer, 0, ( const uint8_t * ) cOutputString, xLength );

+				SetThreadPriority( GetCurrentThread(), iOriginalPriority );

+			}

+

+			/* xDirectPrint is initialized to pdTRUE, and while it remains true the

+			logging output function is called directly.  When the system is running

+			the output function cannot be called directly because it would get

+			called from both FreeRTOS tasks and Win32 threads - so instead wake the

+			Win32 thread responsible for the actual output. */

+			if( xDirectPrint != pdFALSE )

+			{

+				/* While starting up, the thread which calls prvWin32LoggingThread()

+				is not running yet and xDirectPrint will be pdTRUE. */

+				prvLoggingFlushBuffer();

+			}

+			else if( pvLoggingThreadEvent != NULL )

+			{

+				/* While running, wake up prvWin32LoggingThread() to send the

+				logging data. */

+				SetEvent( pvLoggingThreadEvent );

+			}

+		}

+	}

+}

+/*-----------------------------------------------------------*/

+

+static void prvLoggingFlushBuffer( void )

+{

+size_t xLength;

+char cPrintString[ dlMAX_PRINT_STRING_LENGTH ];

+

+	/* Is there more than the length value stored in the circular buffer

+	used to pass data from the FreeRTOS simulator into this Win32 thread? */

+	while( uxStreamBufferGetSize( xLogStreamBuffer ) > sizeof( xLength ) )

+	{

+		memset( cPrintString, 0x00, dlMAX_PRINT_STRING_LENGTH );

+		uxStreamBufferGet( xLogStreamBuffer, 0, ( uint8_t * ) &xLength, sizeof( xLength ), pdFALSE );

+		uxStreamBufferGet( xLogStreamBuffer, 0, ( uint8_t * ) cPrintString, xLength, pdFALSE );

+

+		/* Write the message to standard out if requested to do so when

+		vLoggingInit() was called, or if the network is not yet up. */

+		if( ( xStdoutLoggingUsed != pdFALSE ) || ( FreeRTOS_IsNetworkUp() == pdFALSE ) )

+		{

+			/* Write the message to stdout. */

+			printf( "%s", cPrintString ); /*_RB_ Replace with _write(). */

+			fflush( stdout );

+		}

+

+		/* Write the message to a file if requested to do so when

+		vLoggingInit() was called. */

+		if( xDiskFileLoggingUsed != pdFALSE )

+		{

+			prvLogToFile( cPrintString, xLength );

+		}

+	}

+

+	prvFileClose();

+}

+/*-----------------------------------------------------------*/

+

+static DWORD WINAPI prvWin32LoggingThread( void *pvParameter )

+{

+const DWORD xMaxWait = 1000;

+

+	( void ) pvParameter;

+

+	/* From now on, prvLoggingFlushBuffer() will only be called from this

+	Windows thread */

+	xDirectPrint = pdFALSE;

+

+	for( ;; )

+	{

+		/* Wait to be told there are message waiting to be logged. */

+		WaitForSingleObject( pvLoggingThreadEvent, xMaxWait );

+

+		/* Write out all waiting messages. */

+		prvLoggingFlushBuffer();

+	}

+}

+/*-----------------------------------------------------------*/

+

+static void prvFileLoggingInit( void )

+{

+FILE *pxHandle = fopen( pcLogFileName, "a" );

+

+	if( pxHandle != NULL )

+	{

+		fseek( pxHandle, SEEK_END, 0ul );

+		ulSizeOfLoggingFile = ftell( pxHandle );

+		fclose( pxHandle );

+	}

+	else

+	{

+		ulSizeOfLoggingFile = 0ul;

+	}

+}

+/*-----------------------------------------------------------*/

+

+static void prvFileClose( void )

+{

+	if( pxLoggingFileHandle != NULL )

+	{

+		fclose( pxLoggingFileHandle );

+		pxLoggingFileHandle = NULL;

+	}

+}

+/*-----------------------------------------------------------*/

+

+static void prvLogToFile( const char *pcMessage, size_t xLength )

+{

+	if( pxLoggingFileHandle == NULL )

+	{

+		pxLoggingFileHandle = fopen( pcLogFileName, "a" );

+	}

+

+	if( pxLoggingFileHandle != NULL )

+	{

+		fwrite( pcMessage, 1, xLength, pxLoggingFileHandle );

+		ulSizeOfLoggingFile += xLength;

+

+		/* If the file has grown to its maximum permissible size then close and

+		rename it - then start with a new file. */

+		if( ulSizeOfLoggingFile > ( size_t ) dlLOGGING_FILE_SIZE )

+		{

+			prvFileClose();

+			if( _access( pcFullLogFileName, 00 ) == 0 )

+			{

+				remove( pcFullLogFileName );

+			}

+			rename( pcLogFileName, pcFullLogFileName );

+			ulSizeOfLoggingFile = 0;

+		}

+	}

+}

+/*-----------------------------------------------------------*/

+

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/demo_logging.h b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/demo_logging.h
new file mode 100644
index 0000000..197b216
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/demo_logging.h
@@ -0,0 +1,48 @@
+/*

+ * FreeRTOS Kernel V10.2.1

+ * 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://www.FreeRTOS.org

+ * http://aws.amazon.com/freertos

+ *

+ * 1 tab == 4 spaces!

+ */

+

+#ifndef DEMO_LOGGING_H

+#define DEMO_LOGGING_H

+

+/*

+ * Initialize a logging system that can be used from FreeRTOS tasks and Win32

+ * threads.  Do not call printf() directly while the scheduler is running.

+ *

+ * Set xLogToStdout, xLogToFile and xLogToUDP to either pdTRUE or pdFALSE to

+ * lot to stdout, a disk file and a UDP port respectively.

+ *

+ * If xLogToUDP is pdTRUE then ulRemoteIPAddress and usRemotePort must be set

+ * to the IP address and port number to which UDP log messages will be sent.

+ */

+void vLoggingInit(	BaseType_t xLogToStdout,

+					BaseType_t xLogToFile,

+					BaseType_t xLogToUDP,

+					uint32_t ulRemoteIPAddress,

+					uint16_t usRemotePort );

+

+#endif /* DEMO_LOGGING_H */

+

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/main.c b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/main.c
new file mode 100644
index 0000000..dd485a6
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/main.c
@@ -0,0 +1,356 @@
+/*

+ * FreeRTOS Kernel V10.2.1

+ * 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://www.FreeRTOS.org

+ * http://aws.amazon.com/freertos

+ *

+ * 1 tab == 4 spaces!

+ */

+

+ /***

+  * See https://www.FreeRTOS.org/https/index.html for configuration and usage instructions.

+  ***/

+

+/* Standard includes. */

+#include <stdio.h>

+#include <time.h>

+

+/* Visual studio intrinsics used so the __debugbreak() function is available

+should an assert get hit. */

+#include <intrin.h>

+

+/* FreeRTOS includes. */

+#include <FreeRTOS.h>

+#include "task.h"

+

+/* TCP/IP stack includes. */

+#include "FreeRTOS_IP.h"

+#include "FreeRTOS_Sockets.h"

+

+/* Demo app includes. */

+#include "demo_logging.h"

+

+/*

+ * Prototypes for the demos that can be started from this project.  Note the

+ * HTTPS demo is not actually started until the network is already, which is

+ * indicated by vApplicationIPNetworkEventHook() executing - hence

+ * prvStartSimpleHTTPSDemo() is called from inside vApplicationIPNetworkEventHook().

+ */

+extern void vStartSimpleHTTPSDemo( void );

+

+/*

+ * Just seeds the simple pseudo random number generator.

+ *

+ * !!! NOTE !!!

+ * This is not a secure method of generating random numbers and production

+ * devices should use a true random number generator (TRNG).

+ */

+static void prvSRand( UBaseType_t ulSeed );

+

+/*

+ * Miscellaneous initialization including preparing the logging and seeding the

+ * random number generator.

+ */

+static void prvMiscInitialisation( void );

+

+/* The default IP and MAC address used by the demo.  The address configuration

+defined here will be used if ipconfigUSE_DHCP is 0, or if ipconfigUSE_DHCP is

+1 but a DHCP server could not be contacted.  See the online documentation for

+more information. */

+static const uint8_t ucIPAddress[ 4 ] = { configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 };

+static const uint8_t ucNetMask[ 4 ] = { configNET_MASK0, configNET_MASK1, configNET_MASK2, configNET_MASK3 };

+static const uint8_t ucGatewayAddress[ 4 ] = { configGATEWAY_ADDR0, configGATEWAY_ADDR1, configGATEWAY_ADDR2, configGATEWAY_ADDR3 };

+static const uint8_t ucDNSServerAddress[ 4 ] = { configDNS_SERVER_ADDR0, configDNS_SERVER_ADDR1, configDNS_SERVER_ADDR2, configDNS_SERVER_ADDR3 };

+

+/* Set the following constant to pdTRUE to log using the method indicated by the

+name of the constant, or pdFALSE to not log using the method indicated by the

+name of the constant.  Options include to standard out (xLogToStdout), to a disk

+file (xLogToFile), and to a UDP port (xLogToUDP).  If xLogToUDP is set to pdTRUE

+then UDP messages are sent to the IP address configured as the echo server

+address (see the configECHO_SERVER_ADDR0 definitions in FreeRTOSConfig.h) and

+the port number set by configPRINT_PORT in FreeRTOSConfig.h. */

+const BaseType_t xLogToStdout = pdTRUE, xLogToFile = pdFALSE, xLogToUDP = pdFALSE;

+

+/* Default MAC address configuration.  The demo creates a virtual network

+connection that uses this MAC address by accessing the raw Ethernet data

+to and from a real network connection on the host PC.  See the

+configNETWORK_INTERFACE_TO_USE definition for information on how to configure

+the real network connection to use. */

+const uint8_t ucMACAddress[ 6 ] = { configMAC_ADDR0, configMAC_ADDR1, configMAC_ADDR2, configMAC_ADDR3, configMAC_ADDR4, configMAC_ADDR5 };

+

+/* Use by the pseudo random number generator. */

+static UBaseType_t ulNextRand;

+/*-----------------------------------------------------------*/

+

+int main( void )

+{

+	/***

+	 * See https://www.FreeRTOS.org/https/index.html for configuration and usage instructions.

+	 ***/

+

+	/* Miscellaneous initialization including preparing the logging and seeding

+	the random number generator. */

+	prvMiscInitialisation();

+

+	/* Initialize the network interface.

+

+	***NOTE*** Tasks that use the network are created in the network event hook

+	when the network is connected and ready for use (see the implementation of

+	vApplicationIPNetworkEventHook() below).  The address values passed in here

+	are used if ipconfigUSE_DHCP is set to 0, or if ipconfigUSE_DHCP is set to 1

+	but a DHCP server cannot be contacted. */

+	FreeRTOS_IPInit( ucIPAddress, ucNetMask, ucGatewayAddress, ucDNSServerAddress, ucMACAddress );

+

+	/* Start the RTOS scheduler. */

+	vTaskStartScheduler();

+

+	/* If all is well, the scheduler will now be running, and the following

+	line will never be reached.  If the following line does execute, then

+	there was insufficient FreeRTOS heap memory available for the idle and/or

+	timer tasks to be created.  See the memory management section on the

+	FreeRTOS web site for more details (this is standard text that is not

+	really applicable to the Win32 simulator port). */

+	for( ;; )

+	{

+		__debugbreak();

+	}

+}

+/*-----------------------------------------------------------*/

+

+/* Called by FreeRTOS+TCP when the network connects or disconnects.  Disconnect

+events are only received if implemented in the MAC driver. */

+void vApplicationIPNetworkEventHook( eIPCallbackEvent_t eNetworkEvent )

+{

+uint32_t ulIPAddress, ulNetMask, ulGatewayAddress, ulDNSServerAddress;

+char cBuffer[ 16 ];

+static BaseType_t xTasksAlreadyCreated = pdFALSE;

+

+	/* If the network has just come up...*/

+	if( eNetworkEvent == eNetworkUp )

+	{

+		/* Create the tasks that use the IP stack if they have not already been

+		created. */

+		if( xTasksAlreadyCreated == pdFALSE )

+		{

+			/* Demos that use the network are created after the network is

+			up. */

+			configPRINTF( ( "---------STARTING DEMO---------\r\n" ) );

+			vStartSimpleHTTPSDemo();

+			xTasksAlreadyCreated = pdTRUE;

+		}

+

+		/* Print out the network configuration, which may have come from a DHCP

+		server. */

+		FreeRTOS_GetAddressConfiguration( &ulIPAddress, &ulNetMask, &ulGatewayAddress, &ulDNSServerAddress );

+		FreeRTOS_inet_ntoa( ulIPAddress, cBuffer );

+		FreeRTOS_printf( ( "\r\n\r\nIP Address: %s\r\n", cBuffer ) );/*_RB_ Should use IoT libraries logging. */

+

+		FreeRTOS_inet_ntoa( ulNetMask, cBuffer );

+		FreeRTOS_printf( ( "Subnet Mask: %s\r\n", cBuffer ) );

+

+		FreeRTOS_inet_ntoa( ulGatewayAddress, cBuffer );

+		FreeRTOS_printf( ( "Gateway Address: %s\r\n", cBuffer ) );

+

+		FreeRTOS_inet_ntoa( ulDNSServerAddress, cBuffer );

+		FreeRTOS_printf( ( "DNS Server Address: %s\r\n\r\n\r\n", cBuffer ) );

+	}

+}

+/*-----------------------------------------------------------*/

+

+void vAssertCalled( const char *pcFile, uint32_t ulLine )

+{

+	volatile uint32_t ulBlockVariable = 0UL;

+	volatile char *pcFileName = ( volatile char *  ) pcFile;

+	volatile uint32_t ulLineNumber = ulLine;

+

+	( void ) pcFileName;

+	( void ) ulLineNumber;

+

+	printf( "vAssertCalled( %s, %u\n", pcFile, ulLine );

+

+	/* Setting ulBlockVariable to a non-zero value in the debugger will allow

+	this function to be exited. */

+	taskDISABLE_INTERRUPTS();

+	{

+		while( ulBlockVariable == 0UL )

+		{

+			__debugbreak();

+		}

+	}

+	taskENABLE_INTERRUPTS();

+}

+/*-----------------------------------------------------------*/

+

+UBaseType_t uxRand( void )

+{

+const uint32_t ulMultiplier = 0x015a4e35UL, ulIncrement = 1UL;

+

+	/*

+	 * Utility function to generate a pseudo random number.

+	 *

+	 * !!!NOTE!!!

+	 * This is not a secure method of generating a random number.  Production

+	 * devices should use a True Random Number Generator (TRNG).

+	 */

+	ulNextRand = ( ulMultiplier * ulNextRand ) + ulIncrement;

+	return( ( int ) ( ulNextRand >> 16UL ) & 0x7fffUL );

+}

+/*-----------------------------------------------------------*/

+

+static void prvSRand( UBaseType_t ulSeed )

+{

+	/* Utility function to seed the pseudo random number generator. */

+	ulNextRand = ulSeed;

+}

+/*-----------------------------------------------------------*/

+

+static void prvMiscInitialisation( void )

+{

+time_t xTimeNow;

+uint32_t ulLoggingIPAddress;

+

+	ulLoggingIPAddress = FreeRTOS_inet_addr_quick( configECHO_SERVER_ADDR0, configECHO_SERVER_ADDR1, configECHO_SERVER_ADDR2, configECHO_SERVER_ADDR3 );

+	vLoggingInit( xLogToStdout, xLogToFile, xLogToUDP, ulLoggingIPAddress, configPRINT_PORT );

+

+	/*

+	* Seed random number generator.

+	*

+	* !!!NOTE!!!

+	* This is not a secure method of generating a random number.  Production

+	* devices should use a True Random Number Generator (TRNG).

+	*/

+	time( &xTimeNow );

+	FreeRTOS_debug_printf( ( "Seed for randomizer: %lu\n", xTimeNow ) );

+	prvSRand( ( uint32_t ) xTimeNow );

+	FreeRTOS_debug_printf( ( "Random numbers: %08X %08X %08X %08X\n", ipconfigRAND32(), ipconfigRAND32(), ipconfigRAND32(), ipconfigRAND32() ) );

+}

+/*-----------------------------------------------------------*/

+

+#if( ipconfigUSE_LLMNR != 0 ) || ( ipconfigUSE_NBNS != 0 ) || ( ipconfigDHCP_REGISTER_HOSTNAME == 1 )

+

+	const char *pcApplicationHostnameHook( void )

+	{

+		/* Assign the name "FreeRTOS" to this network node.  This function will

+		be called during the DHCP: the machine will be registered with an IP

+		address plus this name. */

+		return mainHOST_NAME;

+	}

+

+#endif

+/*-----------------------------------------------------------*/

+

+#if( ipconfigUSE_LLMNR != 0 ) || ( ipconfigUSE_NBNS != 0 )

+

+	BaseType_t xApplicationDNSQueryHook( const char *pcName )

+	{

+	BaseType_t xReturn;

+

+		/* Determine if a name lookup is for this node.  Two names are given

+		to this node: that returned by pcApplicationHostnameHook() and that set

+		by mainDEVICE_NICK_NAME. */

+		if( _stricmp( pcName, pcApplicationHostnameHook() ) == 0 )

+		{

+			xReturn = pdPASS;

+		}

+		else if( _stricmp( pcName, mainDEVICE_NICK_NAME ) == 0 )

+		{

+			xReturn = pdPASS;

+		}

+		else

+		{

+			xReturn = pdFAIL;

+		}

+

+		return xReturn;

+	}

+

+#endif

+/*-----------------------------------------------------------*/

+

+/*

+ * Callback that provides the inputs necessary to generate a randomized TCP

+ * Initial Sequence Number per RFC 6528.  THIS IS ONLY A DUMMY IMPLEMENTATION

+ * THAT RETURNS A PSEUDO RANDOM NUMBER SO IS NOT INTENDED FOR USE IN PRODUCTION

+ * SYSTEMS.

+ */

+extern uint32_t ulApplicationGetNextSequenceNumber( uint32_t ulSourceAddress,

+													uint16_t usSourcePort,

+													uint32_t ulDestinationAddress,

+													uint16_t usDestinationPort )

+{

+	( void ) ulSourceAddress;

+	( void ) usSourcePort;

+	( void ) ulDestinationAddress;

+	( void ) usDestinationPort;

+

+	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-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/mbedtls_config.h b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/mbedtls_config.h
new file mode 100644
index 0000000..0f2861a
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/mbedtls_config.h
@@ -0,0 +1,126 @@
+/*

+ * 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.

+ */

+

+/* This file configures mbed TLS for FreeRTOS. */

+

+#ifndef MBEDTLS_CONFIG_H_

+#define MBEDTLS_CONFIG_H_

+

+/* FreeRTOS include. */

+#include "FreeRTOS.h"

+

+/* Generate errors if deprecated functions are used. */

+#define MBEDTLS_DEPRECATED_REMOVED

+

+/* Place AES tables in ROM. */

+#define MBEDTLS_AES_ROM_TABLES

+

+/* Enable the following cipher modes. */

+#define MBEDTLS_CIPHER_MODE_CBC

+#define MBEDTLS_CIPHER_MODE_CFB

+#define MBEDTLS_CIPHER_MODE_CTR

+

+/* Enable the following cipher padding modes. */

+#define MBEDTLS_CIPHER_PADDING_PKCS7

+#define MBEDTLS_CIPHER_PADDING_ONE_AND_ZEROS

+#define MBEDTLS_CIPHER_PADDING_ZEROS_AND_LEN

+#define MBEDTLS_CIPHER_PADDING_ZEROS

+

+/* Cipher suite configuration. */

+#define MBEDTLS_REMOVE_ARC4_CIPHERSUITES

+#define MBEDTLS_ECP_DP_SECP256R1_ENABLED

+#define MBEDTLS_ECP_NIST_OPTIM

+#define MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED

+#define MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED

+

+/* Enable all SSL alert messages. */

+#define MBEDTLS_SSL_ALL_ALERT_MESSAGES

+

+/* Enable the following SSL features. */

+#define MBEDTLS_SSL_ENCRYPT_THEN_MAC

+#define MBEDTLS_SSL_EXTENDED_MASTER_SECRET

+#define MBEDTLS_SSL_MAX_FRAGMENT_LENGTH

+#define MBEDTLS_SSL_PROTO_TLS1_2

+#define MBEDTLS_SSL_ALPN

+#define MBEDTLS_SSL_SERVER_NAME_INDICATION

+

+/* Check certificate key usage. */

+#define MBEDTLS_X509_CHECK_KEY_USAGE

+#define MBEDTLS_X509_CHECK_EXTENDED_KEY_USAGE

+

+/* Disable platform entropy functions. */

+#define MBEDTLS_NO_PLATFORM_ENTROPY

+

+/* Enable the following mbed TLS features. */

+#define MBEDTLS_AES_C

+#define MBEDTLS_ASN1_PARSE_C

+#define MBEDTLS_ASN1_WRITE_C

+#define MBEDTLS_BASE64_C

+#define MBEDTLS_BIGNUM_C

+#define MBEDTLS_CIPHER_C

+#define MBEDTLS_CTR_DRBG_C

+#define MBEDTLS_ECDH_C

+#define MBEDTLS_ECDSA_C

+#define MBEDTLS_ECP_C

+#define MBEDTLS_ENTROPY_C

+#define MBEDTLS_GCM_C

+#define MBEDTLS_MD_C

+#define MBEDTLS_OID_C

+#define MBEDTLS_PEM_PARSE_C

+#define MBEDTLS_PK_C

+#define MBEDTLS_PK_PARSE_C

+#define MBEDTLS_PKCS1_V15

+#define MBEDTLS_PLATFORM_C

+#define MBEDTLS_RSA_C

+#define MBEDTLS_SHA1_C

+#define MBEDTLS_SHA256_C

+#define MBEDTLS_SSL_CLI_C

+#define MBEDTLS_SSL_TLS_C

+#define MBEDTLS_THREADING_ALT

+#define MBEDTLS_THREADING_C

+#define MBEDTLS_X509_USE_C

+#define MBEDTLS_X509_CRT_PARSE_C

+

+/* Set the memory allocation functions on FreeRTOS. */

+void * mbedtls_platform_calloc( size_t nmemb,

+                                size_t size );

+void mbedtls_platform_free( void * ptr );

+#define MBEDTLS_PLATFORM_MEMORY

+#define MBEDTLS_PLATFORM_CALLOC_MACRO    mbedtls_platform_calloc

+#define MBEDTLS_PLATFORM_FREE_MACRO      mbedtls_platform_free

+

+/* The network send and receive functions on FreeRTOS. */

+int mbedtls_platform_send( void * ctx,

+                           const unsigned char * buf,

+                           size_t len );

+int mbedtls_platform_recv( void * ctx,

+                           unsigned char * buf,

+                           size_t len );

+

+/* The entropy poll function. */

+int mbedtls_platform_entropy_poll( void * data,

+                                   unsigned char * output,

+                                   size_t len,

+                                   size_t * olen );

+

+#include "mbedtls/check_config.h"

+

+#endif /* ifndef MBEDTLS_CONFIG_H_ */

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/printf-stdarg.c b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/printf-stdarg.c
new file mode 100644
index 0000000..5505535
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/common/printf-stdarg.c
@@ -0,0 +1,667 @@
+/*

+	Copyright 2001, 2002 Georges Menie (www.menie.org)

+	stdarg version contributed by Christian Ettinger

+

+	This program is free software; you can redistribute it and/or modify

+	it under the terms of the GNU Lesser General Public License as published by

+	the Free Software Foundation; either version 2 of the License, or

+	(at your option) any later version.

+

+	Changes for the FreeRTOS ports:

+

+	- The dot in "%-8.8s"

+	- The specifiers 'l' (long) and 'L' (long long)

+	- The specifier 'u' for unsigned

+	- Dot notation for IP addresses:

+	  sprintf("IP = %xip\n", 0xC0A80164);

+      will produce "IP = 192.168.1.100\n"

+*/

+

+#include <stdarg.h>

+#include <stdio.h>

+#include <stdlib.h>

+#include <string.h>

+

+#include "FreeRTOS.h"

+

+#define PAD_RIGHT 1

+#define PAD_ZERO 2

+

+/*

+ * Return 1 for readable, 2 for writeable, 3 for both.

+ * Function must be provided by the application.

+ */

+extern BaseType_t xApplicationMemoryPermissions( uint32_t aAddress );

+

+extern void vOutputChar( const char cChar, const TickType_t xTicksToWait  );

+static const TickType_t xTicksToWait = pdMS_TO_TICKS( 20 );

+

+struct xPrintFlags

+{

+	int base;

+	int width;

+	int printLimit;

+	unsigned

+		pad : 8,

+		letBase : 8,

+		isSigned : 1,

+		isNumber : 1,

+		long32 : 1,

+		long64 : 1;

+};

+

+struct SStringBuf

+{

+	char *str;

+	const char *orgStr;

+	const char *nulPos;

+	int curLen;

+	struct xPrintFlags flags;

+};

+

+static void strbuf_init( struct SStringBuf *apStr, char *apBuf, const char *apMaxStr )

+{

+	apStr->str = apBuf;

+	apStr->orgStr = apBuf;

+	apStr->nulPos = apMaxStr-1;

+	apStr->curLen = 0;

+

+	memset( &apStr->flags, '\0', sizeof( apStr->flags ) );

+}

+/*-----------------------------------------------------------*/

+

+static BaseType_t strbuf_printchar( struct SStringBuf *apStr, int c )

+{

+	if( apStr->str == NULL )

+	{

+		vOutputChar( ( char ) c, xTicksToWait );

+		apStr->curLen++;

+		return pdTRUE;

+	}

+	if( apStr->str < apStr->nulPos )

+	{

+		*( apStr->str++ ) = c;

+		apStr->curLen++;

+		return pdTRUE;

+	}

+	if( apStr->str == apStr->nulPos )

+	{

+		*( apStr->str++ ) = '\0';

+	}

+	return pdFALSE;

+}

+/*-----------------------------------------------------------*/

+

+static portINLINE BaseType_t strbuf_printchar_inline( struct SStringBuf *apStr, int c )

+{

+	if( apStr->str == NULL )

+	{

+		vOutputChar( ( char ) c, xTicksToWait );

+		if( c == 0 )

+		{

+			return pdFALSE;

+		}

+		apStr->curLen++;

+		return pdTRUE;

+	}

+	if( apStr->str < apStr->nulPos )

+	{

+		*(apStr->str++) = c;

+		if( c == 0 )

+		{

+			return pdFALSE;

+		}

+		apStr->curLen++;

+		return pdTRUE;

+	}

+	if( apStr->str == apStr->nulPos )

+	{

+		*( apStr->str++ ) = '\0';

+	}

+	return pdFALSE;

+}

+/*-----------------------------------------------------------*/

+

+static portINLINE int i2hex( int aCh )

+{

+int iResult;

+

+	if( aCh < 10 )

+	{

+		iResult = '0' + aCh;

+	}

+	else

+	{

+		iResult = 'A' + aCh - 10;

+	}

+

+	return iResult;

+}

+/*-----------------------------------------------------------*/

+

+static BaseType_t prints(struct SStringBuf *apBuf, const char *apString )

+{

+	register int padchar = ' ';

+	int i,len;

+

+	if( xApplicationMemoryPermissions( ( uint32_t )apString ) == 0 )

+	{

+		/* The user has probably made a mistake with the parameter

+		for '%s', the memory is not readbale. */

+		apString = "INV_MEM";

+	}

+

+	if( apBuf->flags.width > 0 )

+	{

+		register int len = 0;

+		register const char *ptr;

+		for( ptr = apString; *ptr; ++ptr )

+		{

+			++len;

+		}

+

+		if( len >= apBuf->flags.width )

+		{

+			apBuf->flags.width = 0;

+		}

+		else

+		{

+			apBuf->flags.width -= len;

+		}

+

+		if( apBuf->flags.pad & PAD_ZERO )

+		{

+			padchar = '0';

+		}

+	}

+	if( ( apBuf->flags.pad & PAD_RIGHT ) == 0 )

+	{

+		for( ; apBuf->flags.width > 0; --apBuf->flags.width )

+		{

+			if( strbuf_printchar( apBuf, padchar ) == 0 )

+			{

+				return pdFALSE;

+			}

+		}

+	}

+	if( ( apBuf->flags.isNumber == pdTRUE ) && ( apBuf->flags.pad == pdTRUE ) )

+	{

+		/* The string to print represents an integer number.

+		 * In this case, printLimit is the min number of digits to print

+		 * If the length of the number to print is less than the min nb of i

+		 * digits to display, we add 0 before printing the number

+		 */

+		len = strlen( apString );

+

+		if( len < apBuf->flags.printLimit )

+		{

+			i = apBuf->flags.printLimit - len;

+			for( ; i; i-- )

+			{

+				if( strbuf_printchar( apBuf, '0' )  == 0 )

+				{

+					return pdFALSE;

+				}

+			}

+		}

+	}

+	/* The string to print is not the result of a number conversion to ascii.

+	 * For a string, printLimit is the max number of characters to display

+	 */

+	for( ; apBuf->flags.printLimit && *apString ; ++apString, --apBuf->flags.printLimit )

+	{

+		if( !strbuf_printchar( apBuf, *apString ) )

+		{

+			return pdFALSE;

+		}

+	}

+

+	for( ; apBuf->flags.width > 0; --apBuf->flags.width )

+	{

+		if( !strbuf_printchar( apBuf, padchar ) )

+		{

+			return pdFALSE;

+		}

+	}

+

+	return pdTRUE;

+}

+/*-----------------------------------------------------------*/

+

+/* the following should be enough for 32 bit int */

+#define PRINT_BUF_LEN 12	/* to print 4294967296 */

+

+#if	SPRINTF_LONG_LONG

+#warning 64-bit libraries will be included as well

+static BaseType_t printll( struct SStringBuf *apBuf, long long i )

+{

+	char print_buf[ 2 * PRINT_BUF_LEN ];

+	register char *s;

+	register int t, neg = 0;

+	register unsigned long long u = i;

+	lldiv_t lldiv_result;

+

+/* typedef struct

+ * {

+ * 	long long int quot; // quotient

+ * 	long long int rem;  // remainder

+ * } lldiv_t;

+ */

+

+	apBuf->flags.isNumber = pdTRUE;	/* Parameter for prints */

+	if( i == 0LL )

+	{

+		print_buf[ 0 ] = '0';

+		print_buf[ 1 ] = '\0';

+		return prints( apBuf, print_buf );

+	}

+

+	if( ( apBuf->flags.isSigned == pdTRUE ) && ( apBuf->flags.base == 10 ) && ( i < 0LL ) )

+	{

+		neg = 1;

+		u = -i;

+	}

+

+	s = print_buf + sizeof( print_buf ) - 1;

+

+	*s = '\0';

+	/* 18446744073709551616 */

+	while( u != 0 )

+	{

+		lldiv_result = lldiv( u, ( unsigned long long ) apBuf->flags.base );

+		t = lldiv_result.rem;

+		if( t >= 10 )

+		{

+			t += apBuf->flags.letBase - '0' - 10;

+		}

+		*( --s ) = t + '0';

+		u = lldiv_result.quot;

+	}

+

+	if( neg != 0 )

+	{

+		if( ( apBuf->flags.width != 0 ) && ( apBuf->flags.pad & PAD_ZERO ) )

+		{

+			if( !strbuf_printchar( apBuf, '-' ) )

+			{

+				return pdFALSE;

+			}

+			--apBuf->flags.width;

+		}

+		else

+		{

+			*( --s ) = '-';

+		}

+	}

+

+	return prints( apBuf, s );

+}

+#endif	/* SPRINTF_LONG_LONG */

+/*-----------------------------------------------------------*/

+

+static BaseType_t printi( struct SStringBuf *apBuf, int i )

+{

+	char print_buf[ PRINT_BUF_LEN ];

+	register char *s;

+	register int t, neg = 0;

+	register unsigned int u = i;

+	register unsigned base = apBuf->flags.base;

+

+	apBuf->flags.isNumber = pdTRUE;	/* Parameter for prints */

+

+	if( i == 0 )

+	{

+		print_buf[ 0 ] = '0';

+		print_buf[ 1 ] = '\0';

+		return prints( apBuf, print_buf );

+	}

+

+	if( ( apBuf->flags.isSigned == pdTRUE ) && ( base == 10 ) && ( i < 0 ) )

+	{

+		neg = 1;

+		u = -i;

+	}

+

+	s = print_buf + sizeof( print_buf ) - 1;

+

+	*s = '\0';

+	switch( base )

+	{

+	case 16:

+		while( u != 0 )

+		{

+			t = u & 0xF;

+			if( t >= 10 )

+			{

+				t += apBuf->flags.letBase - '0' - 10;

+			}

+			*( --s ) = t + '0';

+			u >>= 4;

+		}

+		break;

+

+	case 8:

+	case 10:

+		/* GCC compiles very efficient */

+		while( u )

+		{

+			t = u % base;

+			*( --s ) = t + '0';

+			u /= base;

+		}

+		break;

+/*

+	// The generic case, not yet in use

+	default:

+		while( u )

+		{

+			t = u % base;

+			if( t >= 10)

+			{

+				t += apBuf->flags.letBase - '0' - 10;

+			}

+			*( --s ) = t + '0';

+			u /= base;

+		}

+		break;

+*/

+	}

+

+	if( neg != 0 )

+	{

+		if( apBuf->flags.width && (apBuf->flags.pad & PAD_ZERO ) )

+		{

+			if( strbuf_printchar( apBuf, '-' ) == 0 )

+			{

+				return pdFALSE;

+			}

+			--apBuf->flags.width;

+		}

+		else

+		{

+			*( --s ) = '-';

+		}

+	}

+

+	return prints( apBuf, s );

+}

+/*-----------------------------------------------------------*/

+

+static BaseType_t printIp(struct SStringBuf *apBuf, unsigned i )

+{

+	char print_buf[16];

+

+	sprintf( print_buf, "%u.%u.%u.%u",

+		i >> 24,

+		( i >> 16 ) & 0xff,

+		( i >> 8 ) & 0xff,

+		i & 0xff );

+	apBuf->flags.isNumber = pdTRUE;	/* Parameter for prints */

+	prints( apBuf, print_buf );

+

+	return pdTRUE;

+}

+/*-----------------------------------------------------------*/

+

+static void tiny_print( struct SStringBuf *apBuf, const char *format, va_list args )

+{

+	char scr[2];

+

+	for( ; ; )

+	{

+		int ch = *( format++ );

+

+		if( ch != '%' )

+		{

+			do

+			{

+				/* Put the most like flow in a small loop */

+				if( strbuf_printchar_inline( apBuf, ch ) == 0 )

+				{

+					return;

+				}

+				ch = *( format++ );

+			} while( ch != '%' );

+		}

+		ch = *( format++ );

+		/* Now ch has character after '%', format pointing to next */

+

+		if( ch == '\0' )

+		{

+			break;

+		}

+		if( ch == '%' )

+		{

+			if( strbuf_printchar( apBuf, ch ) == 0 )

+			{

+				return;

+			}

+			continue;

+		}

+		memset( &apBuf->flags, '\0', sizeof( apBuf->flags ) );

+

+		if( ch == '-' )

+		{

+			ch = *( format++ );

+			apBuf->flags.pad = PAD_RIGHT;

+		}

+		while( ch == '0' )

+		{

+			ch = *( format++ );

+			apBuf->flags.pad |= PAD_ZERO;

+		}

+		if( ch == '*' )

+		{

+			ch = *( format++ );

+			apBuf->flags.width = va_arg( args, int );

+		}

+		else

+		{

+			while( ch >= '0' && ch <= '9' )

+			{

+				apBuf->flags.width *= 10;

+				apBuf->flags.width += ch - '0';

+				ch = *( format++ );

+			}

+		}

+		if( ch == '.' )

+		{

+			ch = *( format++ );

+			if( ch == '*' )

+			{

+				apBuf->flags.printLimit = va_arg( args, int );

+				ch = *( format++ );

+			}

+			else

+			{

+				while( ch >= '0' && ch <= '9' )

+				{

+					apBuf->flags.printLimit *= 10;

+					apBuf->flags.printLimit += ch - '0';

+					ch = *( format++ );

+				}

+			}

+		}

+		if( apBuf->flags.printLimit == 0 )

+		{

+			apBuf->flags.printLimit--;  /* -1: make it unlimited */

+		}

+		if( ch == 's' )

+		{

+			register char *s = ( char * )va_arg( args, int );

+			if( prints( apBuf, s ? s : "(null)" ) == 0 )

+			{

+				break;

+			}

+			continue;

+		}

+		if( ch == 'c' )

+		{

+			/* char are converted to int then pushed on the stack */

+			scr[0] = ( char ) va_arg( args, int );

+

+			if( strbuf_printchar( apBuf, scr[0] )  == 0 )

+			{

+				return;

+			}

+

+			continue;

+		}

+		if( ch == 'l' )

+		{

+			ch = *( format++ );

+			apBuf->flags.long32 = 1;

+			/* Makes not difference as u32 == long */

+		}

+		if( ch == 'L' )

+		{

+			ch = *( format++ );

+			apBuf->flags.long64 = 1;

+			/* Does make a difference */

+		}

+		apBuf->flags.base = 10;

+		apBuf->flags.letBase = 'a';

+

+		if( ch == 'd' || ch == 'u' )

+		{

+			apBuf->flags.isSigned = ( ch == 'd' );

+#if	SPRINTF_LONG_LONG

+			if( apBuf->flags.long64 != pdFALSE )

+			{

+				if( printll( apBuf, va_arg( args, long long ) ) == 0 )

+				{

+					break;

+				}

+			} else

+#endif	/* SPRINTF_LONG_LONG */

+			if( printi( apBuf, va_arg( args, int ) ) == 0 )

+			{

+				break;

+			}

+			continue;

+		}

+

+		apBuf->flags.base = 16;		/* From here all hexadecimal */

+

+		if( ch == 'x' && format[0] == 'i' && format[1] == 'p' )

+		{

+			format += 2;	/* eat the "xi" of "xip" */

+			/* Will use base 10 again */

+			if( printIp( apBuf, va_arg( args, int ) ) == 0 )

+			{

+				break;

+			}

+			continue;

+		}

+		if( ch == 'x' || ch == 'X' || ch == 'p' || ch == 'o' )

+		{

+			if( ch == 'X' )

+			{

+				apBuf->flags.letBase = 'A';

+			}

+			else if( ch == 'o' )

+			{

+				apBuf->flags.base = 8;

+			}

+#if	SPRINTF_LONG_LONG

+			if( apBuf->flags.long64 != pdFALSE )

+			{

+				if( printll( apBuf, va_arg( args, long long ) ) == 0 )

+				{

+					break;

+				}

+			} else

+#endif	/* SPRINTF_LONG_LONG */

+			if( printi( apBuf, va_arg( args, int ) ) == 0 )

+			{

+				break;

+			}

+			continue;

+		}

+	}

+	strbuf_printchar( apBuf, '\0' );

+}

+/*-----------------------------------------------------------*/

+

+int vsnprintf( char *apBuf, size_t aMaxLen, const char *apFmt, va_list args )

+{

+	struct SStringBuf strBuf;

+	strbuf_init( &strBuf, apBuf, ( const char* )apBuf + aMaxLen );

+	tiny_print( &strBuf, apFmt, args );

+

+	return strBuf.curLen;

+}

+/*-----------------------------------------------------------*/

+

+int snprintf( char *apBuf, size_t aMaxLen, const char *apFmt, ... )

+{

+	va_list args;

+

+	va_start( args,  apFmt );

+	struct SStringBuf strBuf;

+	strbuf_init( &strBuf, apBuf, ( const char* )apBuf + aMaxLen );

+	tiny_print( &strBuf, apFmt, args );

+	va_end( args );

+

+	return strBuf.curLen;

+}

+/*-----------------------------------------------------------*/

+

+int sprintf( char *apBuf, const char *apFmt, ... )

+{

+	va_list args;

+

+	va_start( args,  apFmt );

+	struct SStringBuf strBuf;

+	strbuf_init( &strBuf, apBuf, ( const char * )apBuf + 1024 );

+	tiny_print( &strBuf, apFmt, args );

+	va_end( args );

+

+	return strBuf.curLen;

+}

+/*-----------------------------------------------------------*/

+

+int vsprintf( char *apBuf, const char *apFmt, va_list args )

+{

+	struct SStringBuf strBuf;

+	strbuf_init( &strBuf, apBuf, ( const char* ) apBuf + 1024 );

+	tiny_print( &strBuf, apFmt, args );

+

+	return strBuf.curLen;

+}

+/*-----------------------------------------------------------*/

+

+const char *mkSize (unsigned long long aSize, char *apBuf, int aLen)

+{

+static char retString[33];

+size_t gb, mb, kb, sb;

+

+	if (apBuf == NULL) {

+		apBuf = retString;

+		aLen = sizeof( retString );

+	}

+	gb = aSize / (1024*1024*1024);

+	aSize -= gb * (1024*1024*1024);

+	mb = aSize / (1024*1024);

+	aSize -= mb * (1024*1024);

+	kb = aSize / (1024);

+	aSize -= kb * (1024);

+	sb = aSize;

+	if( gb )

+	{

+		snprintf (apBuf, aLen, "%u.%02u GB", ( unsigned ) gb, ( unsigned ) ( ( 100 * mb ) / 1024ul ) );

+	}

+	else if( mb )

+	{

+		snprintf (apBuf, aLen, "%u.%02u MB", ( unsigned ) mb, ( unsigned ) ( ( 100 * kb) / 1024ul ) );

+	}

+	else if( kb != 0ul )

+	{

+		snprintf (apBuf, aLen, "%u.%02u KB", ( unsigned ) kb, ( unsigned ) ( ( 100 * sb) / 1024ul ) );

+	}

+	else

+	{

+		snprintf (apBuf, aLen, "%u bytes", ( unsigned ) sb);

+	}

+	return apBuf;

+}

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/http_plain_text/FreeRTOSConfig.h b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/http_plain_text/FreeRTOSConfig.h
new file mode 100644
index 0000000..d58a0b8
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/http_plain_text/FreeRTOSConfig.h
@@ -0,0 +1,210 @@
+/*

+ * FreeRTOS Kernel V10.2.1

+ * 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://www.FreeRTOS.org

+ * http://aws.amazon.com/freertos

+ *

+ * 1 tab == 4 spaces!

+ */

+

+#ifndef FREERTOS_CONFIG_H

+#define FREERTOS_CONFIG_H

+

+/*-----------------------------------------------------------

+ * Application specific definitions.

+ *

+ * These definitions should be adjusted for your particular hardware and

+ * application requirements.

+ *

+ * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE

+ * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.

+ * http://www.freertos.org/a00110.html

+ *

+ * The bottom of this file contains some constants specific to running the UDP

+ * stack in this demo.  Constants specific to FreeRTOS+TCP itself (rather than

+ * the demo) are contained in FreeRTOSIPConfig.h.

+ *----------------------------------------------------------*/

+#define configUSE_PREEMPTION					1

+#define configUSE_PORT_OPTIMISED_TASK_SELECTION	1

+#define configMAX_PRIORITIES					( 7 )

+#define configTICK_RATE_HZ						( 1000 ) /* In this non-real time simulated environment the tick frequency has to be at least a multiple of the Win32 tick frequency, and therefore very slow. */

+#define configMINIMAL_STACK_SIZE				( ( unsigned short ) 60 ) /* In this simulated case, the stack only has to hold one small structure as the real stack is part of the Win32 thread. */

+#define configTOTAL_HEAP_SIZE					( ( size_t ) ( 2048U * 1024U ) )

+#define configMAX_TASK_NAME_LEN					( 15 )

+#define configUSE_TRACE_FACILITY				1

+#define configUSE_16_BIT_TICKS					0

+#define configIDLE_SHOULD_YIELD					1

+#define configUSE_CO_ROUTINES 					0

+#define configUSE_MUTEXES						1

+#define configUSE_RECURSIVE_MUTEXES				1

+#define configQUEUE_REGISTRY_SIZE				0

+#define configUSE_APPLICATION_TASK_TAG			0

+#define configUSE_COUNTING_SEMAPHORES			1

+#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

+#define configUSE_IDLE_HOOK				0

+#define configUSE_MALLOC_FAILED_HOOK	0

+#define configCHECK_FOR_STACK_OVERFLOW	0 /* Not applicable to the Win32 port. */

+

+/* Software timer related definitions. */

+#define configUSE_TIMERS				1

+#define configTIMER_TASK_PRIORITY		( configMAX_PRIORITIES - 1 )

+#define configTIMER_QUEUE_LENGTH		5

+#define configTIMER_TASK_STACK_DEPTH	( configMINIMAL_STACK_SIZE * 2 )

+

+/* Event group related definitions. */

+#define configUSE_EVENT_GROUPS			1

+

+/* Run time stats gathering definitions. */

+#define configGENERATE_RUN_TIME_STATS	0

+

+/* Co-routine definitions. */

+#define configUSE_CO_ROUTINES 			0

+#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )

+

+/* Set the following definitions to 1 to include the API function, or zero

+to exclude the API function. */

+#define INCLUDE_vTaskPrioritySet				1

+#define INCLUDE_uxTaskPriorityGet				1

+#define INCLUDE_vTaskDelete						1

+#define INCLUDE_vTaskCleanUpResources			0

+#define INCLUDE_vTaskSuspend					1

+#define INCLUDE_vTaskDelayUntil					1

+#define INCLUDE_vTaskDelay						1

+#define INCLUDE_uxTaskGetStackHighWaterMark		1

+#define INCLUDE_xTaskGetSchedulerState			1

+#define INCLUDE_xTimerGetTimerTaskHandle		0

+#define INCLUDE_xTaskGetIdleTaskHandle			0

+#define INCLUDE_xQueueGetMutexHolder			1

+#define INCLUDE_eTaskGetState					1

+#define INCLUDE_xEventGroupSetBitsFromISR		1

+#define INCLUDE_xTimerPendFunctionCall			1

+#define INCLUDE_pcTaskGetTaskName				1

+

+/* This demo makes use of one or more example stats formatting functions.  These

+format the raw data provided by the uxTaskGetSystemState() function in to human

+readable ASCII form.  See the notes in the implementation of vTaskList() within

+FreeRTOS/Source/tasks.c for limitations.  configUSE_STATS_FORMATTING_FUNCTIONS

+is set to 2 so the formatting functions are included without the stdio.h being

+included in tasks.c.  That is because this project defines its own sprintf()

+functions. */

+#define configUSE_STATS_FORMATTING_FUNCTIONS	1

+

+/* Assert call defined for debug builds. */

+#ifdef _DEBUG

+	extern void vAssertCalled( const char *pcFile, uint32_t ulLine );

+	#define configASSERT( x ) if( ( x ) == 0 ) vAssertCalled( __FILE__, __LINE__ )

+#endif /* _DEBUG */

+

+

+

+/* Application specific definitions follow. **********************************/

+

+/* Only used when running in the FreeRTOS Windows simulator.  Defines the

+priority of the task used to simulate Ethernet interrupts. */

+#define configMAC_ISR_SIMULATOR_PRIORITY	( configMAX_PRIORITIES - 1 )

+

+/* This demo creates a virtual network connection by accessing the raw Ethernet

+or WiFi data to and from a real network connection.  Many computers have more

+than one real network port, and configNETWORK_INTERFACE_TO_USE is used to tell

+the demo which real port should be used to create the virtual port.  The ports

+available are displayed on the console when the application is executed.  For

+example, on my development laptop setting configNETWORK_INTERFACE_TO_USE to 4

+results in the wired network being used, while setting

+configNETWORK_INTERFACE_TO_USE to 2 results in the wireless network being

+used. */

+#define configNETWORK_INTERFACE_TO_USE 1L

+

+/* The address of an echo server is only left in this project as it doubles as

+the address to which logging is sent should UDP logging be enabled. */

+#define configECHO_SERVER_ADDR0	192

+#define configECHO_SERVER_ADDR1 168

+#define configECHO_SERVER_ADDR2 0

+#define configECHO_SERVER_ADDR3 11

+

+/* 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		0x11

+#define configMAC_ADDR3		0x11

+#define configMAC_ADDR4		0x11

+#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. */

+#define configIP_ADDR0		10

+#define configIP_ADDR1		10

+#define configIP_ADDR2		10

+#define configIP_ADDR3		200

+

+/* Default gateway 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. */

+#define configGATEWAY_ADDR0	10

+#define configGATEWAY_ADDR1	10

+#define configGATEWAY_ADDR2	10

+#define configGATEWAY_ADDR3	1

+

+/* Default DNS server configuration.  OpenDNS addresses are 208.67.222.222 and

+208.67.220.220.  Used in ipconfigUSE_DNS is set to 0, or ipconfigUSE_DNS is set

+to 1 but a DNS server cannot be contacted.*/

+#define configDNS_SERVER_ADDR0 	208

+#define configDNS_SERVER_ADDR1 	67

+#define configDNS_SERVER_ADDR2 	222

+#define configDNS_SERVER_ADDR3 	222

+

+/* Default netmask configuration.  Used in ipconfigUSE_DNS is set to 0, or

+ipconfigUSE_DNS is set to 1 but a DNS server cannot be contacted. */

+#define configNET_MASK0		255

+#define configNET_MASK1		0

+#define configNET_MASK2		0

+#define configNET_MASK3		0

+

+/* The UDP port to which print messages are sent. */

+#define configPRINT_PORT	( 15000 )

+

+#if( defined( _MSC_VER ) && ( _MSC_VER <= 1600 ) && !defined( snprintf ) )

+	/* Map to Windows names. */

+	#define snprintf	_snprintf

+	#define vsnprintf	_vsnprintf

+#endif

+

+/* Visual studio does not have an implementation of strcasecmp(). */

+#define strcasecmp _stricmp

+#define strncasecmp _strnicmp

+#define strcmpi _strcmpi

+

+/* 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. */

+extern void vLoggingPrintf( const char *pcFormatString, ... );

+#define configPRINTF( X )    vLoggingPrintf X

+

+#endif /* FREERTOS_CONFIG_H */

+

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/http_plain_text/FreeRTOSIPConfig.h b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/http_plain_text/FreeRTOSIPConfig.h
new file mode 100644
index 0000000..92b7773
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/http_plain_text/FreeRTOSIPConfig.h
@@ -0,0 +1,310 @@
+/*

+ * FreeRTOS Kernel V10.2.1

+ * 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://www.FreeRTOS.org

+ * http://aws.amazon.com/freertos

+ *

+ * 1 tab == 4 spaces!

+ */

+

+

+/*****************************************************************************

+ *

+ * See the following URL for configuration information.

+ * http://www.freertos.org/FreeRTOS-Plus/FreeRTOS_Plus_TCP/TCP_IP_Configuration.html

+ *

+ *****************************************************************************/

+

+#ifndef FREERTOS_IP_CONFIG_H

+#define FREERTOS_IP_CONFIG_H

+

+/* 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. */

+extern void vLoggingPrintf( const char *pcFormatString, ... );

+

+/* Set to 1 to print out debug messages.  If ipconfigHAS_DEBUG_PRINTF is set to

+1 then FreeRTOS_debug_printf should be defined to the function used to print

+out the debugging messages. */

+#define ipconfigHAS_DEBUG_PRINTF	0

+#if( ipconfigHAS_DEBUG_PRINTF == 1 )

+	#define FreeRTOS_debug_printf(X)	vLoggingPrintf X

+#endif

+

+/* Set to 1 to print out non debugging messages, for example the output of the

+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			1

+#if( ipconfigHAS_PRINTF == 1 )

+	#define FreeRTOS_printf(X)			vLoggingPrintf X

+#endif

+

+/* Define the byte order of the target MCU (the MCU FreeRTOS+TCP is executing

+on).  Valid options are pdFREERTOS_BIG_ENDIAN and pdFREERTOS_LITTLE_ENDIAN. */

+#define ipconfigBYTE_ORDER pdFREERTOS_LITTLE_ENDIAN

+

+/* If the network card/driver includes checksum offloading (IP/TCP/UDP checksums)

+then set ipconfigDRIVER_INCLUDED_RX_IP_CHECKSUM to 1 to prevent the software

+stack repeating the checksum calculations. */

+#define ipconfigDRIVER_INCLUDED_RX_IP_CHECKSUM   1

+

+/* Several API's will block until the result is known, or the action has been

+performed, for example FreeRTOS_send() and FreeRTOS_recv().  The timeouts can be

+set per socket, using setsockopt().  If not set, the times below will be

+used as defaults. */

+#define ipconfigSOCK_DEFAULT_RECEIVE_BLOCK_TIME	( 2000 )

+#define	ipconfigSOCK_DEFAULT_SEND_BLOCK_TIME	( 5000 )

+

+/* Include support for LLMNR: Link-local Multicast Name Resolution

+(non-Microsoft) */

+#define ipconfigUSE_LLMNR					( 0 )

+

+/* Include support for NBNS: NetBIOS Name Service (Microsoft) */

+#define ipconfigUSE_NBNS					( 0 )

+

+/* Include support for DNS caching.  For TCP, having a small DNS cache is very

+useful.  When a cache is present, ipconfigDNS_REQUEST_ATTEMPTS can be kept low

+and also DNS may use small timeouts.  If a DNS reply comes in after the DNS

+socket has been destroyed, the result will be stored into the cache.  The next

+call to FreeRTOS_gethostbyname() will return immediately, without even creating

+a socket. */

+#define ipconfigUSE_DNS_CACHE				( 1 )

+#define ipconfigDNS_CACHE_NAME_LENGTH		( 32 )

+#define ipconfigDNS_CACHE_ENTRIES			( 4 )

+#define ipconfigDNS_REQUEST_ATTEMPTS		( 2 )

+

+/* The IP stack executes it its own task (although any application task can make

+use of its services through the published sockets API). ipconfigUDP_TASK_PRIORITY

+sets the priority of the task that executes the IP stack.  The priority is a

+standard FreeRTOS task priority so can take any value from 0 (the lowest

+priority) to (configMAX_PRIORITIES - 1) (the highest priority).

+configMAX_PRIORITIES is a standard FreeRTOS configuration parameter defined in

+FreeRTOSConfig.h, not FreeRTOSIPConfig.h. Consideration needs to be given as to

+the priority assigned to the task executing the IP stack relative to the

+priority assigned to tasks that use the IP stack. */

+#define ipconfigIP_TASK_PRIORITY			( configMAX_PRIORITIES - 2 )

+

+/* The size, in words (not bytes), of the stack allocated to the FreeRTOS+TCP

+task.  This setting is less important when the FreeRTOS Win32 simulator is used

+as the Win32 simulator only stores a fixed amount of information on the task

+stack.  FreeRTOS includes optional stack overflow detection, see:

+http://www.freertos.org/Stacks-and-stack-overflow-checking.html */

+#define ipconfigIP_TASK_STACK_SIZE_WORDS	( configMINIMAL_STACK_SIZE * 5 )

+

+/* ipconfigRAND32() is called by the IP stack to generate random numbers for

+things such as a DHCP transaction number or initial sequence number.  Random

+number generation is performed via this macro to allow applications to use their

+own random number generation method.  For example, it might be possible to

+generate a random number by sampling noise on an analogue input. */

+extern UBaseType_t uxRand();

+#define ipconfigRAND32()	uxRand()

+

+/* If ipconfigUSE_NETWORK_EVENT_HOOK is set to 1 then FreeRTOS+TCP will call the

+network event hook at the appropriate times.  If ipconfigUSE_NETWORK_EVENT_HOOK

+is not set to 1 then the network event hook will never be called.  See

+http://www.FreeRTOS.org/FreeRTOS-Plus/FreeRTOS_Plus_UDP/API/vApplicationIPNetworkEventHook.shtml

+*/

+#define ipconfigUSE_NETWORK_EVENT_HOOK 1

+

+/* Sockets have a send block time attribute.  If FreeRTOS_sendto() is called but

+a network buffer cannot be obtained then the calling task is held in the Blocked

+state (so other tasks can continue to executed) until either a network buffer

+becomes available or the send block time expires.  If the send block time expires

+then the send operation is aborted.  The maximum allowable send block time is

+capped to the value set by ipconfigMAX_SEND_BLOCK_TIME_TICKS.  Capping the

+maximum allowable send block time prevents prevents a deadlock occurring when

+all the network buffers are in use and the tasks that process (and subsequently

+free) the network buffers are themselves blocked waiting for a network buffer.

+ipconfigMAX_SEND_BLOCK_TIME_TICKS is specified in RTOS ticks.  A time in

+milliseconds can be converted to a time in ticks by dividing the time in

+milliseconds by portTICK_PERIOD_MS. */

+#define ipconfigUDP_MAX_SEND_BLOCK_TIME_TICKS ( 5000 / portTICK_PERIOD_MS )

+

+/* If ipconfigUSE_DHCP is 1 then FreeRTOS+TCP will attempt to retrieve an IP

+address, netmask, DNS server address and gateway address from a DHCP server.  If

+ipconfigUSE_DHCP is 0 then FreeRTOS+TCP will use a static IP address.  The

+stack will revert to using the static IP address even when ipconfigUSE_DHCP is

+set to 1 if a valid configuration cannot be obtained from a DHCP server for any

+reason.  The static configuration used is that passed into the stack by the

+FreeRTOS_IPInit() function call. */

+#define ipconfigUSE_DHCP	1

+

+/* When ipconfigUSE_DHCP is set to 1, DHCP requests will be sent out at

+increasing time intervals until either a reply is received from a DHCP server

+and accepted, or the interval between transmissions reaches

+ipconfigMAXIMUM_DISCOVER_TX_PERIOD.  The IP stack will revert to using the

+static IP address passed as a parameter to FreeRTOS_IPInit() if the

+re-transmission time interval reaches ipconfigMAXIMUM_DISCOVER_TX_PERIOD without

+a DHCP reply being received. */

+#define ipconfigMAXIMUM_DISCOVER_TX_PERIOD		( 120000 / portTICK_PERIOD_MS )

+

+/* The ARP cache is a table that maps IP addresses to MAC addresses.  The IP

+stack can only send a UDP message to a remove IP address if it knowns the MAC

+address associated with the IP address, or the MAC address of the router used to

+contact the remote IP address.  When a UDP message is received from a remote IP

+address the MAC address and IP address are added to the ARP cache.  When a UDP

+message is sent to a remote IP address that does not already appear in the ARP

+cache then the UDP message is replaced by a ARP message that solicits the

+required MAC address information.  ipconfigARP_CACHE_ENTRIES defines the maximum

+number of entries that can exist in the ARP table at any one time. */

+#define ipconfigARP_CACHE_ENTRIES		6

+

+/* ARP requests that do not result in an ARP response will be re-transmitted a

+maximum of ipconfigMAX_ARP_RETRANSMISSIONS times before the ARP request is

+aborted. */

+#define ipconfigMAX_ARP_RETRANSMISSIONS ( 5 )

+

+/* ipconfigMAX_ARP_AGE defines the maximum time between an entry in the ARP

+table being created or refreshed and the entry being removed because it is stale.

+New ARP requests are sent for ARP cache entries that are nearing their maximum

+age.  ipconfigMAX_ARP_AGE is specified in tens of seconds, so a value of 150 is

+equal to 1500 seconds (or 25 minutes). */

+#define ipconfigMAX_ARP_AGE			150

+

+/* Implementing FreeRTOS_inet_addr() necessitates the use of string handling

+routines, which are relatively large.  To save code space the full

+FreeRTOS_inet_addr() implementation is made optional, and a smaller and faster

+alternative called FreeRTOS_inet_addr_quick() is provided.  FreeRTOS_inet_addr()

+takes an IP in decimal dot format (for example, "192.168.0.1") as its parameter.

+FreeRTOS_inet_addr_quick() takes an IP address as four separate numerical octets

+(for example, 192, 168, 0, 1) as its parameters.  If

+ipconfigINCLUDE_FULL_INET_ADDR is set to 1 then both FreeRTOS_inet_addr() and

+FreeRTOS_indet_addr_quick() are available.  If ipconfigINCLUDE_FULL_INET_ADDR is

+not set to 1 then only FreeRTOS_indet_addr_quick() is available. */

+#define ipconfigINCLUDE_FULL_INET_ADDR	1

+

+/* ipconfigNUM_NETWORK_BUFFER_DESCRIPTORS defines the total number of network buffer that

+are available to the IP stack.  The total number of network buffers is limited

+to ensure the total amount of RAM that can be consumed by the IP stack is capped

+to a pre-determinable value. */

+#define ipconfigNUM_NETWORK_BUFFER_DESCRIPTORS		60

+

+/* A FreeRTOS queue is used to send events from application tasks to the IP

+stack.  ipconfigEVENT_QUEUE_LENGTH sets the maximum number of events that can

+be queued for processing at any one time.  The event queue must be a minimum of

+5 greater than the total number of network buffers. */

+#define ipconfigEVENT_QUEUE_LENGTH		( ipconfigNUM_NETWORK_BUFFER_DESCRIPTORS + 5 )

+

+/* The address of a socket is the combination of its IP address and its port

+number.  FreeRTOS_bind() is used to manually allocate a port number to a socket

+(to 'bind' the socket to a port), but manual binding is not normally necessary

+for client sockets (those sockets that initiate outgoing connections rather than

+wait for incoming connections on a known port number).  If

+ipconfigALLOW_SOCKET_SEND_WITHOUT_BIND is set to 1 then calling

+FreeRTOS_sendto() on a socket that has not yet been bound will result in the IP

+stack automatically binding the socket to a port number from the range

+socketAUTO_PORT_ALLOCATION_START_NUMBER to 0xffff.  If

+ipconfigALLOW_SOCKET_SEND_WITHOUT_BIND is set to 0 then calling FreeRTOS_sendto()

+on a socket that has not yet been bound will result in the send operation being

+aborted. */

+#define ipconfigALLOW_SOCKET_SEND_WITHOUT_BIND 1

+

+/* Defines the Time To Live (TTL) values used in outgoing UDP packets. */

+#define ipconfigUDP_TIME_TO_LIVE		128

+#define ipconfigTCP_TIME_TO_LIVE		128 /* also defined in FreeRTOSIPConfigDefaults.h */

+

+/* USE_TCP: Use TCP and all its features */

+#define ipconfigUSE_TCP				( 1 )

+

+/* Use the TCP socket wake context with a callback. */

+#define ipconfigSOCKET_HAS_USER_WAKE_CALLBACK_WITH_CONTEXT    ( 1 )

+

+/* USE_WIN: Let TCP use windowing mechanism. */

+#define ipconfigUSE_TCP_WIN			( 1 )

+

+/* The MTU is the maximum number of bytes the payload of a network frame can

+contain.  For normal Ethernet V2 frames the maximum MTU is 1500.  Setting a

+lower value can save RAM, depending on the buffer management scheme used.  If

+ipconfigCAN_FRAGMENT_OUTGOING_PACKETS is 1 then (ipconfigNETWORK_MTU - 28) must

+be divisible by 8. */

+#define ipconfigNETWORK_MTU		1200

+

+/* Set ipconfigUSE_DNS to 1 to include a basic DNS client/resolver.  DNS is used

+through the FreeRTOS_gethostbyname() API function. */

+#define ipconfigUSE_DNS			1

+

+/* If ipconfigREPLY_TO_INCOMING_PINGS is set to 1 then the IP stack will

+generate replies to incoming ICMP echo (ping) requests. */

+#define ipconfigREPLY_TO_INCOMING_PINGS				1

+

+/* If ipconfigSUPPORT_OUTGOING_PINGS is set to 1 then the

+FreeRTOS_SendPingRequest() API function is available. */

+#define ipconfigSUPPORT_OUTGOING_PINGS				0

+

+/* If ipconfigSUPPORT_SELECT_FUNCTION is set to 1 then the FreeRTOS_select()

+(and associated) API function is available. */

+#define ipconfigSUPPORT_SELECT_FUNCTION				1

+

+/* If ipconfigFILTER_OUT_NON_ETHERNET_II_FRAMES is set to 1 then Ethernet frames

+that are not in Ethernet II format will be dropped.  This option is included for

+potential future IP stack developments. */

+#define ipconfigFILTER_OUT_NON_ETHERNET_II_FRAMES  1

+

+/* If ipconfigETHERNET_DRIVER_FILTERS_FRAME_TYPES is set to 1 then it is the

+responsibility of the Ethernet interface to filter out packets that are of no

+interest.  If the Ethernet interface does not implement this functionality, then

+set ipconfigETHERNET_DRIVER_FILTERS_FRAME_TYPES to 0 to have the IP stack

+perform the filtering instead (it is much less efficient for the stack to do it

+because the packet will already have been passed into the stack).  If the

+Ethernet driver does all the necessary filtering in hardware then software

+filtering can be removed by using a value other than 1 or 0. */

+#define ipconfigETHERNET_DRIVER_FILTERS_FRAME_TYPES	1

+

+/* The windows simulator cannot really simulate MAC interrupts, and needs to

+block occasionally to allow other tasks to run. */

+#define configWINDOWS_MAC_INTERRUPT_SIMULATOR_DELAY ( 20 / portTICK_PERIOD_MS )

+

+/* Advanced only: in order to access 32-bit fields in the IP packets with

+32-bit memory instructions, all packets will be stored 32-bit-aligned, plus 16-bits.

+This has to do with the contents of the IP-packets: all 32-bit fields are

+32-bit-aligned, plus 16-bit(!) */

+#define ipconfigPACKET_FILLER_SIZE 2

+

+/* Define the size of the pool of TCP window descriptors.  On the average, each

+TCP socket will use up to 2 x 6 descriptors, meaning that it can have 2 x 6

+outstanding packets (for Rx and Tx).  When using up to 10 TP sockets

+simultaneously, one could define TCP_WIN_SEG_COUNT as 120. */

+#define ipconfigTCP_WIN_SEG_COUNT		240

+

+/* Each TCP socket has a circular buffers for Rx and Tx, which have a fixed

+maximum size.  Define the size of Rx buffer for TCP sockets. */

+#define ipconfigTCP_RX_BUFFER_LENGTH			( 1000 )

+

+/* Define the size of Tx buffer for TCP sockets. */

+#define ipconfigTCP_TX_BUFFER_LENGTH			( 1000 )

+

+/* When using call-back handlers, the driver may check if the handler points to

+real program memory (RAM or flash) or just has a random non-zero value. */

+#define ipconfigIS_VALID_PROG_ADDRESS(x) ( (x) != NULL )

+

+/* Include support for TCP hang protection.  All sockets in a connecting or

+disconnecting stage will timeout after a period of non-activity. */

+#define ipconfigTCP_HANG_PROTECTION			( 1 )

+#define ipconfigTCP_HANG_PROTECTION_TIME	( 30 )

+

+/* Include support for TCP keep-alive messages. */

+#define ipconfigTCP_KEEP_ALIVE				( 1 )

+#define ipconfigTCP_KEEP_ALIVE_INTERVAL		( 20 ) /* in seconds */

+

+#define portINLINE __inline

+

+#endif /* FREERTOS_IP_CONFIG_H */

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/http_plain_text/READ_ME_INSTRUCTIONS.url b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/http_plain_text/READ_ME_INSTRUCTIONS.url
new file mode 100644
index 0000000..6c689ef
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/http_plain_text/READ_ME_INSTRUCTIONS.url
@@ -0,0 +1,5 @@
+[{000214A0-0000-0000-C000-000000000046}]

+Prop3=19,11

+[InternetShortcut]

+IDList=

+URL=https://www.freertos.org/https/

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/http_plain_text/WIN32.vcxproj b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/http_plain_text/WIN32.vcxproj
new file mode 100644
index 0000000..339b983
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/http_plain_text/WIN32.vcxproj
@@ -0,0 +1,220 @@
+<?xml version="1.0" encoding="utf-8"?>

+<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

+  <ItemGroup Label="ProjectConfigurations">

+    <ProjectConfiguration Include="Debug|Win32">

+      <Configuration>Debug</Configuration>

+      <Platform>Win32</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Release|Win32">

+      <Configuration>Release</Configuration>

+      <Platform>Win32</Platform>

+    </ProjectConfiguration>

+  </ItemGroup>

+  <PropertyGroup Label="Globals">

+    <ProjectGuid>{C686325E-3261-42F7-AEB1-DDE5280E1CEB}</ProjectGuid>

+    <ProjectName>RTOSDemo</ProjectName>

+    <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>

+  </PropertyGroup>

+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <UseOfMfc>false</UseOfMfc>

+    <CharacterSet>MultiByte</CharacterSet>

+    <PlatformToolset>v142</PlatformToolset>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <UseOfMfc>false</UseOfMfc>

+    <CharacterSet>MultiByte</CharacterSet>

+    <PlatformToolset>v142</PlatformToolset>

+  </PropertyGroup>

+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />

+  <ImportGroup Label="ExtensionSettings">

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />

+  </ImportGroup>

+  <PropertyGroup Label="UserMacros" />

+  <PropertyGroup>

+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>

+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\Debug\</OutDir>

+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\Debug\</IntDir>

+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>

+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\Release\</OutDir>

+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\Release\</IntDir>

+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>

+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>

+  </PropertyGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">

+    <Midl>

+      <TypeLibraryName>.\Debug/WIN32.tlb</TypeLibraryName>

+      <HeaderFileName>

+      </HeaderFileName>

+    </Midl>

+    <ClCompile>

+      <Optimization>Disabled</Optimization>

+      <AdditionalIncludeDirectories>..\..\include;..\common;..\common\WinPCap;..\..\..\..\Source\FreeRTOS-Plus-TCP\include;..\..\..\..\Source\FreeRTOS-Plus-TCP\portable\BufferManagement;..\..\..\..\Source\FreeRTOS-Plus-TCP\portable\Compiler\MSVC;..\..\..\..\..\FreeRTOS\Source\include;..\..\..\..\..\FreeRTOS\Source\portable\MSVC-MingW;..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\common\src;..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\common\include;..\..\..\..\Source\http-parser;..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk;..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\platform;..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\include;..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\https\include;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_WIN32_WINNT=0x0500;WINVER=0x400;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <MinimalRebuild>false</MinimalRebuild>

+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>

+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>

+      <PrecompiledHeaderOutputFile>.\Debug/WIN32.pch</PrecompiledHeaderOutputFile>

+      <AssemblerListingLocation>.\Debug/</AssemblerListingLocation>

+      <ObjectFileName>.\Debug/</ObjectFileName>

+      <ProgramDataBaseFileName>.\Debug/</ProgramDataBaseFileName>

+      <WarningLevel>Level4</WarningLevel>

+      <SuppressStartupBanner>true</SuppressStartupBanner>

+      <DisableLanguageExtensions>false</DisableLanguageExtensions>

+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>

+      <AdditionalOptions>/wd4210 /wd4127 /wd4214 /wd4201 /wd4244  /wd4310 /wd4200 %(AdditionalOptions)</AdditionalOptions>

+      <BrowseInformation>true</BrowseInformation>

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

+      <ExceptionHandling>false</ExceptionHandling>

+      <CompileAs>CompileAsC</CompileAs>

+      <EnableParallelCodeGeneration>true</EnableParallelCodeGeneration>

+    </ClCompile>

+    <ResourceCompile>

+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <Culture>0x0c09</Culture>

+    </ResourceCompile>

+    <Link>

+      <OutputFile>.\Debug/RTOSDemo.exe</OutputFile>

+      <SuppressStartupBanner>true</SuppressStartupBanner>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <ProgramDatabaseFile>.\Debug/WIN32.pdb</ProgramDatabaseFile>

+      <SubSystem>Console</SubSystem>

+      <TargetMachine>MachineX86</TargetMachine>

+      <AdditionalDependencies>wpcap.lib;Bcrypt.lib;%(AdditionalDependencies)</AdditionalDependencies>

+      <AdditionalLibraryDirectories>..\common\WinPCap</AdditionalLibraryDirectories>

+      <Profile>false</Profile>

+      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>

+    </Link>

+    <Bscmake>

+      <SuppressStartupBanner>true</SuppressStartupBanner>

+      <OutputFile>.\Debug/WIN32.bsc</OutputFile>

+    </Bscmake>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">

+    <Midl>

+      <TypeLibraryName>.\Release/WIN32.tlb</TypeLibraryName>

+      <HeaderFileName>

+      </HeaderFileName>

+    </Midl>

+    <ClCompile>

+      <Optimization>MaxSpeed</Optimization>

+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>

+      <PreprocessorDefinitions>_WINSOCKAPI_;WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <StringPooling>true</StringPooling>

+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>

+      <FunctionLevelLinking>true</FunctionLevelLinking>

+      <PrecompiledHeaderOutputFile>.\Release/WIN32.pch</PrecompiledHeaderOutputFile>

+      <AssemblerListingLocation>.\Release/</AssemblerListingLocation>

+      <ObjectFileName>.\Release/</ObjectFileName>

+      <ProgramDataBaseFileName>.\Release/</ProgramDataBaseFileName>

+      <WarningLevel>Level3</WarningLevel>

+      <SuppressStartupBanner>true</SuppressStartupBanner>

+      <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-IoT-Libraries\c_sdk\standard\common\src;..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\common\include;..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk;..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\platform;..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\include;..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\https\include;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+    </ClCompile>

+    <ResourceCompile>

+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <Culture>0x0c09</Culture>

+    </ResourceCompile>

+    <Link>

+      <OutputFile>.\Release/RTOSDemo.exe</OutputFile>

+      <SuppressStartupBanner>true</SuppressStartupBanner>

+      <ProgramDatabaseFile>.\Release/WIN32.pdb</ProgramDatabaseFile>

+      <SubSystem>Console</SubSystem>

+      <TargetMachine>MachineX86</TargetMachine>

+      <AdditionalLibraryDirectories>.\WinPCap</AdditionalLibraryDirectories>

+      <AdditionalDependencies>wpcap.lib;Bcrypt.lib;%(AdditionalDependencies)</AdditionalDependencies>

+    </Link>

+    <Bscmake>

+      <SuppressStartupBanner>true</SuppressStartupBanner>

+      <OutputFile>.\Release/WIN32.bsc</OutputFile>

+    </Bscmake>

+  </ItemDefinitionGroup>

+  <ItemGroup>

+    <ClCompile Include="..\..\..\..\..\FreeRTOS\Source\event_groups.c" />

+    <ClCompile Include="..\..\..\..\..\FreeRTOS\Source\list.c" />

+    <ClCompile Include="..\..\..\..\..\FreeRTOS\Source\portable\MemMang\heap_4.c" />

+    <ClCompile Include="..\..\..\..\..\FreeRTOS\Source\portable\MSVC-MingW\port.c" />

+    <ClCompile Include="..\..\..\..\..\FreeRTOS\Source\queue.c" />

+    <ClCompile Include="..\..\..\..\..\FreeRTOS\Source\tasks.c" />

+    <ClCompile Include="..\..\..\..\..\FreeRTOS\Source\timers.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\iot_clock_freertos.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\iot_network_freertos.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\iot_threads_freertos.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\common\src\iot_logging.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\iot_taskpool_freertos.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\https\src\iot_https_client.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\https\src\iot_https_utils.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_ARP.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_DHCP.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_DNS.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_IP.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_Sockets.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_Stream_Buffer.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_TCP_IP.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_TCP_WIN.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_UDP_IP.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\portable\BufferManagement\BufferAllocation_2.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\portable\NetworkInterface\WinPCap\NetworkInterface.c" />

+    <ClCompile Include="..\..\..\..\Source\http-parser\http_parser.c" />

+    <ClCompile Include="..\common\DemoTasks\SimpleHTTPSExamples.c" />

+    <ClCompile Include="..\common\demo_logging.c" />

+    <ClCompile Include="..\common\main.c" />

+  </ItemGroup>

+  <ItemGroup>

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\event_groups.h" />

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\FreeRTOS.h" />

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\portable.h" />

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\projdefs.h" />

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\queue.h" />

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\semphr.h" />

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\task.h" />

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\timers.h" />

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\portable\MSVC-MingW\portmacro.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\include\platform\iot_platform_types_freertos.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\platform\iot_clock.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\platform\iot_metrics.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\platform\iot_network.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\platform\iot_threads.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\platform\types\iot_platform_types.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\include\iot_taskpool_freertos.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\common\include\iot_error.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\common\include\iot_logging.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\common\include\iot_static_memory.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\common\src\private\iot_taskpool_internal.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\include\types\iot_taskpool_types_freertos.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\https\include\iot_https_client.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\https\include\types\iot_https_types.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOSIPConfigDefaults.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_ARP.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_DHCP.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_DNS.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_IP.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_IP_Private.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_Sockets.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_Stream_Buffer.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_TCP_IP.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_TCP_WIN.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_UDP_IP.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\IPTraceMacroDefaults.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\NetworkBufferManagement.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\NetworkInterface.h" />

+    <ClInclude Include="..\..\..\..\Source\http-parser\http_parser.h" />

+    <ClInclude Include="..\..\include\https_demo_profile.h" />

+    <ClInclude Include="demo_config.h" />

+    <ClInclude Include="FreeRTOSConfig.h" />

+    <ClInclude Include="FreeRTOSIPConfig.h" />

+    <ClInclude Include="iot_config.h" />

+  </ItemGroup>

+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />

+  <ImportGroup Label="ExtensionTargets">

+  </ImportGroup>

+</Project>

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/http_plain_text/WIN32.vcxproj.filters b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/http_plain_text/WIN32.vcxproj.filters
new file mode 100644
index 0000000..cf28f67
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/http_plain_text/WIN32.vcxproj.filters
@@ -0,0 +1,293 @@
+<?xml version="1.0" encoding="utf-8"?>

+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

+  <ItemGroup>

+    <Filter Include="FreeRTOS">

+      <UniqueIdentifier>{af3445a1-4908-4170-89ed-39345d90d30c}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS\Source">

+      <UniqueIdentifier>{f32be356-4763-4cae-9020-974a2638cb08}</UniqueIdentifier>

+      <Extensions>*.c</Extensions>

+    </Filter>

+    <Filter Include="FreeRTOS\Source\Portable">

+      <UniqueIdentifier>{88f409e6-d396-4ac5-94bd-7a99c914be46}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+">

+      <UniqueIdentifier>{e5ad4ec7-23dc-4295-8add-2acaee488f5a}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS\Source\include">

+      <UniqueIdentifier>{d2dcd641-8d91-492b-852f-5563ffadaec6}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS+TCP">

+      <UniqueIdentifier>{8672fa26-b119-481f-8b8d-086419c01a3e}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS+TCP\portable">

+      <UniqueIdentifier>{4570be11-ec96-4b55-ac58-24b50ada980a}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS+TCP\include">

+      <UniqueIdentifier>{5d93ed51-023a-41ad-9243-8d230165d34b}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="DemoTasks">

+      <UniqueIdentifier>{b71e974a-9f28-4815-972b-d930ba8a34d0}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries">

+      <UniqueIdentifier>{60717407-397f-4ea5-8492-3314acdd25f0}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\standard">

+      <UniqueIdentifier>{8a90222f-d723-4b4e-8e6e-c57afaf7fa92}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\standard\common">

+      <UniqueIdentifier>{7c995f05-2a10-4771-ad77-18a755876e46}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\standard\common\include">

+      <UniqueIdentifier>{9a636cc3-ebc6-48c5-8c18-c72494686e81}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\standard\common\include\types">

+      <UniqueIdentifier>{29376c48-bc8b-4624-ad59-16807874c9f2}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\abstractions">

+      <UniqueIdentifier>{91ef4008-de51-4b41-ba5e-bf24d8cda378}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\abstractions\platform">

+      <UniqueIdentifier>{ade43c6c-04c5-4897-abdb-91af2df04e5d}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\abstractions\platform\freertos">

+      <UniqueIdentifier>{08a4e35c-19ca-4b1e-af24-bac368c2bf7b}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\abstractions\platform\freertos\include">

+      <UniqueIdentifier>{1e324500-91b4-4c76-b699-59ba75691760}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\abstractions\platform\freertos\include\platform">

+      <UniqueIdentifier>{bdcbc1ec-99b8-4c72-9075-49035c115488}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\standard\https">

+      <UniqueIdentifier>{2d17d5e6-ed70-4e42-9693-f7a63baf4948}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\standard\https\src">

+      <UniqueIdentifier>{7158b0be-01e7-42d1-8d3f-c75118a596a2}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\standard\https\include">

+      <UniqueIdentifier>{6ad56e6d-c330-4830-8f4b-c75b05dfa866}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\standard\https\include\types">

+      <UniqueIdentifier>{1d80b387-5a86-4744-a4cc-930033a52e4b}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\http-parser">

+      <UniqueIdentifier>{3dc958a5-cd64-4a6a-af27-beba20339e4b}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\standard\platform">

+      <UniqueIdentifier>{d5bf72d9-1e71-4a65-ac2f-5f28a99b0796}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\standard\common\src">

+      <UniqueIdentifier>{b0616e09-2c08-40a1-aa2d-5cbd592e4451}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\standard\platform\types">

+      <UniqueIdentifier>{f1ad002c-d40b-465f-b648-17cedba667d1}</UniqueIdentifier>

+    </Filter>

+  </ItemGroup>

+  <ItemGroup>

+    <ClCompile Include="..\..\..\..\..\FreeRTOS\Source\portable\MSVC-MingW\port.c">

+      <Filter>FreeRTOS\Source\Portable</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\..\FreeRTOS\Source\timers.c">

+      <Filter>FreeRTOS\Source</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\..\FreeRTOS\Source\list.c">

+      <Filter>FreeRTOS\Source</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\..\FreeRTOS\Source\queue.c">

+      <Filter>FreeRTOS\Source</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\..\FreeRTOS\Source\tasks.c">

+      <Filter>FreeRTOS\Source</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_UDP_IP.c">

+      <Filter>FreeRTOS+\FreeRTOS+TCP</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_DHCP.c">

+      <Filter>FreeRTOS+\FreeRTOS+TCP</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_DNS.c">

+      <Filter>FreeRTOS+\FreeRTOS+TCP</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_Sockets.c">

+      <Filter>FreeRTOS+\FreeRTOS+TCP</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\portable\BufferManagement\BufferAllocation_2.c">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\portable</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\portable\NetworkInterface\WinPCap\NetworkInterface.c">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\portable</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_ARP.c">

+      <Filter>FreeRTOS+\FreeRTOS+TCP</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_IP.c">

+      <Filter>FreeRTOS+\FreeRTOS+TCP</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_TCP_IP.c">

+      <Filter>FreeRTOS+\FreeRTOS+TCP</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_TCP_WIN.c">

+      <Filter>FreeRTOS+\FreeRTOS+TCP</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\..\FreeRTOS\Source\event_groups.c">

+      <Filter>FreeRTOS\Source</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\..\FreeRTOS\Source\portable\MemMang\heap_4.c">

+      <Filter>FreeRTOS\Source\Portable</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_Stream_Buffer.c">

+      <Filter>FreeRTOS+\FreeRTOS+TCP</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\https\src\iot_https_client.c">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\https\src</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\https\src\iot_https_utils.c">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\https\src</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\iot_clock_freertos.c">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\abstractions\platform\freertos</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\iot_threads_freertos.c">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\abstractions\platform\freertos</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\iot_network_freertos.c">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\abstractions\platform\freertos</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\http-parser\http_parser.c">

+      <Filter>FreeRTOS+\http-parser</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\iot_taskpool_freertos.c">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\common\src</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\common\src\iot_logging.c">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\common\src</Filter>

+    </ClCompile>

+    <ClCompile Include="..\common\demo_logging.c" />

+    <ClCompile Include="..\common\main.c" />

+    <ClCompile Include="..\common\DemoTasks\SimpleHTTPSExamples.c">

+      <Filter>DemoTasks</Filter>

+    </ClCompile>

+  </ItemGroup>

+  <ItemGroup>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\NetworkInterface.h">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_DNS.h">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_Sockets.h">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_UDP_IP.h">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\timers.h">

+      <Filter>FreeRTOS\Source\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\event_groups.h">

+      <Filter>FreeRTOS\Source\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\FreeRTOS.h">

+      <Filter>FreeRTOS\Source\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\queue.h">

+      <Filter>FreeRTOS\Source\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\semphr.h">

+      <Filter>FreeRTOS\Source\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\task.h">

+      <Filter>FreeRTOS\Source\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\portable\MSVC-MingW\portmacro.h">

+      <Filter>FreeRTOS\Source\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_IP_Private.h">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\NetworkBufferManagement.h">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_ARP.h">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_DHCP.h">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_IP.h">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_TCP_IP.h">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_TCP_WIN.h">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOSIPConfigDefaults.h">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\IPTraceMacroDefaults.h">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>

+    </ClInclude>

+    <ClInclude Include="FreeRTOSConfig.h" />

+    <ClInclude Include="FreeRTOSIPConfig.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_Stream_Buffer.h">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\portable.h">

+      <Filter>FreeRTOS\Source\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\projdefs.h">

+      <Filter>FreeRTOS\Source\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\include\iot_taskpool_freertos.h">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\common\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\include\types\iot_taskpool_types_freertos.h">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\common\include\types</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\common\include\iot_error.h">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\common\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\common\include\iot_logging.h">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\common\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\common\include\iot_static_memory.h">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\common\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\common\src\private\iot_taskpool_internal.h">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\common\include</Filter>

+    </ClInclude>

+    <ClInclude Include="iot_config.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\https\include\iot_https_client.h">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\https\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\https\include\types\iot_https_types.h">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\https\include\types</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\include\platform\iot_platform_types_freertos.h">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\abstractions\platform\freertos\include\platform</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\http-parser\http_parser.h">

+      <Filter>FreeRTOS+\http-parser</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\platform\types\iot_platform_types.h">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\platform\types</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\platform\iot_clock.h">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\platform</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\platform\iot_metrics.h">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\platform</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\platform\iot_network.h">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\platform</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\platform\iot_threads.h">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\platform</Filter>

+    </ClInclude>

+    <ClInclude Include="demo_config.h" />

+    <ClInclude Include="..\..\include\https_demo_profile.h" />

+  </ItemGroup>

+</Project>

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/http_plain_text/demo_config.h b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/http_plain_text/demo_config.h
new file mode 100644
index 0000000..e81cc2c
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/http_plain_text/demo_config.h
@@ -0,0 +1,78 @@
+/*

+ * FreeRTOS Kernel V10.2.1

+ * 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://www.FreeRTOS.org

+ * http://aws.amazon.com/freertos

+ *

+ * 1 tab == 4 spaces!

+ */

+

+#ifndef DEMO_CONFIG_H

+#define DEMO_CONFIG_H

+

+/*

+ * This configuration file determines how the HTTPS demo is run.

+ *

+ * http_plain_text demo: Security is turned off. Preconfigured to a public HTTP

+ * host on unencrypted port so no authentication configuration is required.

+ *

+ * https_basic_tls_server_auth demo: TLS security is enabled, allowing host

+ * side authentication. Preconfigured to a public HTTPS host with certificate

+ * provided by the host so no authentication configuration is required.

+ *

+ * https_tls_mutual_auth demo: Mutual authentication is enabled. Preconfigured to

+ * AWS IoT broker, will require certificate setup for successful connection.

+ */

+

+/**

+ * @brief Enable/Disable TLS in demos.

+ *

+ * For more information regarding TLS protocol:

+ * https://www.freertos.org/https/tls.html

+ */

+#define democonfigENABLE_TLS			 0

+

+/**

+ * @brief Enable/Disable mutual authentication in demos. If enabled, require

+ * democonfigENABLE_TLS to be set to 1.

+ */

+#define democonfigENABLE_MUTUAL_AUTH	 0

+

+/**

+ * @brief Select a connection profile.

+ *

+ * If set to 1, the demo will connect to AWS IoT with credential setup in

+ * aws_iot_demo_profile.h file, otherwise the demo is preconfigured to connect to

+ * httpbin.org with credential setup in https_demo_profile.h file. If enabled,

+ * requires democonfigENABLE_MUTUAL_AUTH to be set to 1 since AWS IoT requires

+ * mutually authenticated connection.

+ */

+#define democonfigPROFILE_USE_AWS_IOT	 0

+

+/**

+ * @brief Set the stack size of the main demo task.

+ *

+ * In the Windows port, this stack only holds a structure. The actual

+ * stack is created by an operating system thread.

+ */

+#define democonfigDEMO_STACKSIZE	    configMINIMAL_STACK_SIZE

+

+#endif /* DEMO_CONFIG_H */

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/http_plain_text/http_plain_text_demo.sln b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/http_plain_text/http_plain_text_demo.sln
new file mode 100644
index 0000000..b362f36
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/http_plain_text/http_plain_text_demo.sln
@@ -0,0 +1,23 @@
+

+Microsoft Visual Studio Solution File, Format Version 11.00

+# Visual Studio 2010

+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RTOSDemo", "WIN32.vcxproj", "{C686325E-3261-42F7-AEB1-DDE5280E1CEB}"

+EndProject

+Global

+	GlobalSection(TestCaseManagementSettings) = postSolution

+		CategoryFile = FreeRTOS_Plus_TCP_Minimal.vsmdi

+	EndGlobalSection

+	GlobalSection(SolutionConfigurationPlatforms) = preSolution

+		Debug|Win32 = Debug|Win32

+		Release|Win32 = Release|Win32

+	EndGlobalSection

+	GlobalSection(ProjectConfigurationPlatforms) = postSolution

+		{C686325E-3261-42F7-AEB1-DDE5280E1CEB}.Debug|Win32.ActiveCfg = Debug|Win32

+		{C686325E-3261-42F7-AEB1-DDE5280E1CEB}.Debug|Win32.Build.0 = Debug|Win32

+		{C686325E-3261-42F7-AEB1-DDE5280E1CEB}.Release|Win32.ActiveCfg = Release|Win32

+		{C686325E-3261-42F7-AEB1-DDE5280E1CEB}.Release|Win32.Build.0 = Release|Win32

+	EndGlobalSection

+	GlobalSection(SolutionProperties) = preSolution

+		HideSolutionNode = FALSE

+	EndGlobalSection

+EndGlobal

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/http_plain_text/iot_config.h b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/http_plain_text/iot_config.h
new file mode 100644
index 0000000..0d7075d
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/http_plain_text/iot_config.h
@@ -0,0 +1,164 @@
+/*

+ * 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.

+ */

+

+/* This file contains configuration settings for the demos. */

+

+#ifndef IOT_CONFIG_H_

+#define IOT_CONFIG_H_

+

+/* Configure the IoT Libraries for FreeRTOS by including the FreeRTOS header and

+ * the FreeRTOS platform types. */

+#include "FreeRTOS.h"

+#include "platform/iot_platform_types_freertos.h"

+

+/**

+ * @brief Set a global default for log levels.

+ *

+ * This setting is overridden by log level settings of specific libraries.

+ * Undefined library-specific log levels will default to this value.

+ *

+ * Possible values: One of the Log levels.

+ * Default value (if undefined): IOT_LOG_NONE.

+ */

+#define IOT_LOG_LEVEL_GLOBAL                    IOT_LOG_NONE

+

+/**

+ * @brief Set the log level of the platform libraries except the network

+ * component.

+ *

+ * Log messages from the platform libraries at or below this setting

+ * will be printed. As the network component is more verbose, its logging

+ * is controlled by its own setting, IOT_LOG_LEVEL_NETWORK.

+ *

+ * Possible values: One of the Log levels.

+ * Default value (if undefined): IOT_LOG_LEVEL_GLOBAL; if that is undefined,

+ * then IOT_LOG_NONE.

+ */

+#define IOT_LOG_LEVEL_PLATFORM                  IOT_LOG_NONE

+

+/**

+ * @brief Set the log level of the platform network library.

+ *

+ * Log messages from the platform network library at or below this setting

+ * will be printed.

+ *

+ * Possible values: One of the Log levels.

+ * Default value (if undefined): IOT_LOG_LEVEL_GLOBAL; if that is undefined,

+ * then IOT_LOG_NONE.

+ */

+#define IOT_LOG_LEVEL_NETWORK                   IOT_LOG_WARN

+

+/*

+ * @brief Set the log level of the task pool library.

+ *

+ * Log messages from the task pool library at or below this setting will be

+ * printed.

+ *

+ * Possible values: One of the Log levels.

+ * Default value (if undefined): IOT_LOG_LEVEL_GLOBAL; if that is undefined,

+ * then IOT_LOG_NONE.

+ */

+#define IOT_LOG_LEVEL_TASKPOOL                  IOT_LOG_WARN

+

+/**

+ * @brief Set the log level of the HTTPS Client library.

+ *

+ * Log messages from the HTTPS Client library at or below this setting will be printed.

+ *

+ * Possible values: One of the Log levels.

+ * Default value (if undefined): IOT_LOG_LEVEL_GLOBAL; if that is undefined,

+ * then IOT_LOG_NONE.

+ */

+#define IOT_LOG_LEVEL_HTTPS                     IOT_LOG_WARN

+

+/**

+ * @brief Enable/Disable asserts for the task pool library.

+ *

+ * Set this to 1 to perform sanity checks when using the task pool library.

+ * Asserts are useful for debugging, but should be disabled in production code.

+ * If this is set to 1, IotTaskPool_Assert can be defined to set the assertion

+ * function; otherwise, the standard library's assert function will be used.

+ *

+ * Possible values: 0 (asserts disabled) or 1 (asserts enabled)

+ * Recommended values: 1 when debugging; 0 in production code.

+ * Default value (if undefined): 0

+ */

+#define IOT_TASKPOOL_ENABLE_ASSERTS             1

+

+/**

+ * @brief The number of worker tasks in the task pool.

+ *

+ * The full IoT Task Pool Library has many use cases, including Linux

+ * development. Typical FreeRTOS use cases do not require the full

+ * functionality so an optimized implementation is provided specifically for use

+ * with FreeRTOS. The optimized version has a fixed number of tasks in the

+ * task pool, each of which uses statically allocated memory to ensure creation

+ * of the task pool is guaranteed (it does not run out of heap space).

+ */

+#define IOT_TASKPOOL_NUMBER_OF_WORKERS          1

+

+/**

+ * @brief The stack size (in bytes) for each worker task in the task pool.

+ *

+ * The minimal version of the of task pool library only supports one task pool

+ * and the configuration of each worker task fixed at the compile time.

+ */

+#define IOT_TASKPOOL_WORKER_STACK_SIZE_BYTES    2048

+

+/**

+ * @brief Enable/Disable asserts for the linear containers library.

+ *

+ * Set this to 1 to perform sanity checks when using the linear containers library.

+ * Asserts are useful for debugging, but should be disabled in production code.

+ * If this is set to 1, IotContainers_Assert can be defined to set the assertion

+ * function; otherwise, the standard library's assert function will be used.

+ *

+ * Possible values: 0 (asserts disabled) or 1 (asserts enabled)

+ * Recommended values: 1 when debugging; 0 in production code.

+ * Default value (if undefined): 0

+ */

+#define IOT_CONTAINERS_ENABLE_ASSERTS           1

+

+/* Common settings for FreeRTOS; settings below this line generally do not need

+ * to be changed. */

+

+/* Logging puts function on FreeRTOS. */

+#define IotLogging_Puts( str )                configPRINTF( ( "%s\r\n", str ) )

+

+/* Assert functions on FreeRTOS. */

+#define IotContainers_Assert( expression )    configASSERT( expression )

+#define IotTaskPool_Assert( expression )      configASSERT( expression )

+

+/* Memory allocation functions on FreeRTOS. */

+#define IotThreads_Malloc               pvPortMalloc

+#define IotThreads_Free                 vPortFree

+

+#define IotLogging_Malloc               pvPortMalloc

+#define IotLogging_Free                 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

+

+#endif /* ifndef IOT_CONFIG_H_ */

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_basic_tls_server_auth/FreeRTOSConfig.h b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_basic_tls_server_auth/FreeRTOSConfig.h
new file mode 100644
index 0000000..d58a0b8
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_basic_tls_server_auth/FreeRTOSConfig.h
@@ -0,0 +1,210 @@
+/*

+ * FreeRTOS Kernel V10.2.1

+ * 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://www.FreeRTOS.org

+ * http://aws.amazon.com/freertos

+ *

+ * 1 tab == 4 spaces!

+ */

+

+#ifndef FREERTOS_CONFIG_H

+#define FREERTOS_CONFIG_H

+

+/*-----------------------------------------------------------

+ * Application specific definitions.

+ *

+ * These definitions should be adjusted for your particular hardware and

+ * application requirements.

+ *

+ * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE

+ * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.

+ * http://www.freertos.org/a00110.html

+ *

+ * The bottom of this file contains some constants specific to running the UDP

+ * stack in this demo.  Constants specific to FreeRTOS+TCP itself (rather than

+ * the demo) are contained in FreeRTOSIPConfig.h.

+ *----------------------------------------------------------*/

+#define configUSE_PREEMPTION					1

+#define configUSE_PORT_OPTIMISED_TASK_SELECTION	1

+#define configMAX_PRIORITIES					( 7 )

+#define configTICK_RATE_HZ						( 1000 ) /* In this non-real time simulated environment the tick frequency has to be at least a multiple of the Win32 tick frequency, and therefore very slow. */

+#define configMINIMAL_STACK_SIZE				( ( unsigned short ) 60 ) /* In this simulated case, the stack only has to hold one small structure as the real stack is part of the Win32 thread. */

+#define configTOTAL_HEAP_SIZE					( ( size_t ) ( 2048U * 1024U ) )

+#define configMAX_TASK_NAME_LEN					( 15 )

+#define configUSE_TRACE_FACILITY				1

+#define configUSE_16_BIT_TICKS					0

+#define configIDLE_SHOULD_YIELD					1

+#define configUSE_CO_ROUTINES 					0

+#define configUSE_MUTEXES						1

+#define configUSE_RECURSIVE_MUTEXES				1

+#define configQUEUE_REGISTRY_SIZE				0

+#define configUSE_APPLICATION_TASK_TAG			0

+#define configUSE_COUNTING_SEMAPHORES			1

+#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

+#define configUSE_IDLE_HOOK				0

+#define configUSE_MALLOC_FAILED_HOOK	0

+#define configCHECK_FOR_STACK_OVERFLOW	0 /* Not applicable to the Win32 port. */

+

+/* Software timer related definitions. */

+#define configUSE_TIMERS				1

+#define configTIMER_TASK_PRIORITY		( configMAX_PRIORITIES - 1 )

+#define configTIMER_QUEUE_LENGTH		5

+#define configTIMER_TASK_STACK_DEPTH	( configMINIMAL_STACK_SIZE * 2 )

+

+/* Event group related definitions. */

+#define configUSE_EVENT_GROUPS			1

+

+/* Run time stats gathering definitions. */

+#define configGENERATE_RUN_TIME_STATS	0

+

+/* Co-routine definitions. */

+#define configUSE_CO_ROUTINES 			0

+#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )

+

+/* Set the following definitions to 1 to include the API function, or zero

+to exclude the API function. */

+#define INCLUDE_vTaskPrioritySet				1

+#define INCLUDE_uxTaskPriorityGet				1

+#define INCLUDE_vTaskDelete						1

+#define INCLUDE_vTaskCleanUpResources			0

+#define INCLUDE_vTaskSuspend					1

+#define INCLUDE_vTaskDelayUntil					1

+#define INCLUDE_vTaskDelay						1

+#define INCLUDE_uxTaskGetStackHighWaterMark		1

+#define INCLUDE_xTaskGetSchedulerState			1

+#define INCLUDE_xTimerGetTimerTaskHandle		0

+#define INCLUDE_xTaskGetIdleTaskHandle			0

+#define INCLUDE_xQueueGetMutexHolder			1

+#define INCLUDE_eTaskGetState					1

+#define INCLUDE_xEventGroupSetBitsFromISR		1

+#define INCLUDE_xTimerPendFunctionCall			1

+#define INCLUDE_pcTaskGetTaskName				1

+

+/* This demo makes use of one or more example stats formatting functions.  These

+format the raw data provided by the uxTaskGetSystemState() function in to human

+readable ASCII form.  See the notes in the implementation of vTaskList() within

+FreeRTOS/Source/tasks.c for limitations.  configUSE_STATS_FORMATTING_FUNCTIONS

+is set to 2 so the formatting functions are included without the stdio.h being

+included in tasks.c.  That is because this project defines its own sprintf()

+functions. */

+#define configUSE_STATS_FORMATTING_FUNCTIONS	1

+

+/* Assert call defined for debug builds. */

+#ifdef _DEBUG

+	extern void vAssertCalled( const char *pcFile, uint32_t ulLine );

+	#define configASSERT( x ) if( ( x ) == 0 ) vAssertCalled( __FILE__, __LINE__ )

+#endif /* _DEBUG */

+

+

+

+/* Application specific definitions follow. **********************************/

+

+/* Only used when running in the FreeRTOS Windows simulator.  Defines the

+priority of the task used to simulate Ethernet interrupts. */

+#define configMAC_ISR_SIMULATOR_PRIORITY	( configMAX_PRIORITIES - 1 )

+

+/* This demo creates a virtual network connection by accessing the raw Ethernet

+or WiFi data to and from a real network connection.  Many computers have more

+than one real network port, and configNETWORK_INTERFACE_TO_USE is used to tell

+the demo which real port should be used to create the virtual port.  The ports

+available are displayed on the console when the application is executed.  For

+example, on my development laptop setting configNETWORK_INTERFACE_TO_USE to 4

+results in the wired network being used, while setting

+configNETWORK_INTERFACE_TO_USE to 2 results in the wireless network being

+used. */

+#define configNETWORK_INTERFACE_TO_USE 1L

+

+/* The address of an echo server is only left in this project as it doubles as

+the address to which logging is sent should UDP logging be enabled. */

+#define configECHO_SERVER_ADDR0	192

+#define configECHO_SERVER_ADDR1 168

+#define configECHO_SERVER_ADDR2 0

+#define configECHO_SERVER_ADDR3 11

+

+/* 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		0x11

+#define configMAC_ADDR3		0x11

+#define configMAC_ADDR4		0x11

+#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. */

+#define configIP_ADDR0		10

+#define configIP_ADDR1		10

+#define configIP_ADDR2		10

+#define configIP_ADDR3		200

+

+/* Default gateway 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. */

+#define configGATEWAY_ADDR0	10

+#define configGATEWAY_ADDR1	10

+#define configGATEWAY_ADDR2	10

+#define configGATEWAY_ADDR3	1

+

+/* Default DNS server configuration.  OpenDNS addresses are 208.67.222.222 and

+208.67.220.220.  Used in ipconfigUSE_DNS is set to 0, or ipconfigUSE_DNS is set

+to 1 but a DNS server cannot be contacted.*/

+#define configDNS_SERVER_ADDR0 	208

+#define configDNS_SERVER_ADDR1 	67

+#define configDNS_SERVER_ADDR2 	222

+#define configDNS_SERVER_ADDR3 	222

+

+/* Default netmask configuration.  Used in ipconfigUSE_DNS is set to 0, or

+ipconfigUSE_DNS is set to 1 but a DNS server cannot be contacted. */

+#define configNET_MASK0		255

+#define configNET_MASK1		0

+#define configNET_MASK2		0

+#define configNET_MASK3		0

+

+/* The UDP port to which print messages are sent. */

+#define configPRINT_PORT	( 15000 )

+

+#if( defined( _MSC_VER ) && ( _MSC_VER <= 1600 ) && !defined( snprintf ) )

+	/* Map to Windows names. */

+	#define snprintf	_snprintf

+	#define vsnprintf	_vsnprintf

+#endif

+

+/* Visual studio does not have an implementation of strcasecmp(). */

+#define strcasecmp _stricmp

+#define strncasecmp _strnicmp

+#define strcmpi _strcmpi

+

+/* 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. */

+extern void vLoggingPrintf( const char *pcFormatString, ... );

+#define configPRINTF( X )    vLoggingPrintf X

+

+#endif /* FREERTOS_CONFIG_H */

+

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_basic_tls_server_auth/FreeRTOSIPConfig.h b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_basic_tls_server_auth/FreeRTOSIPConfig.h
new file mode 100644
index 0000000..92b7773
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_basic_tls_server_auth/FreeRTOSIPConfig.h
@@ -0,0 +1,310 @@
+/*

+ * FreeRTOS Kernel V10.2.1

+ * 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://www.FreeRTOS.org

+ * http://aws.amazon.com/freertos

+ *

+ * 1 tab == 4 spaces!

+ */

+

+

+/*****************************************************************************

+ *

+ * See the following URL for configuration information.

+ * http://www.freertos.org/FreeRTOS-Plus/FreeRTOS_Plus_TCP/TCP_IP_Configuration.html

+ *

+ *****************************************************************************/

+

+#ifndef FREERTOS_IP_CONFIG_H

+#define FREERTOS_IP_CONFIG_H

+

+/* 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. */

+extern void vLoggingPrintf( const char *pcFormatString, ... );

+

+/* Set to 1 to print out debug messages.  If ipconfigHAS_DEBUG_PRINTF is set to

+1 then FreeRTOS_debug_printf should be defined to the function used to print

+out the debugging messages. */

+#define ipconfigHAS_DEBUG_PRINTF	0

+#if( ipconfigHAS_DEBUG_PRINTF == 1 )

+	#define FreeRTOS_debug_printf(X)	vLoggingPrintf X

+#endif

+

+/* Set to 1 to print out non debugging messages, for example the output of the

+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			1

+#if( ipconfigHAS_PRINTF == 1 )

+	#define FreeRTOS_printf(X)			vLoggingPrintf X

+#endif

+

+/* Define the byte order of the target MCU (the MCU FreeRTOS+TCP is executing

+on).  Valid options are pdFREERTOS_BIG_ENDIAN and pdFREERTOS_LITTLE_ENDIAN. */

+#define ipconfigBYTE_ORDER pdFREERTOS_LITTLE_ENDIAN

+

+/* If the network card/driver includes checksum offloading (IP/TCP/UDP checksums)

+then set ipconfigDRIVER_INCLUDED_RX_IP_CHECKSUM to 1 to prevent the software

+stack repeating the checksum calculations. */

+#define ipconfigDRIVER_INCLUDED_RX_IP_CHECKSUM   1

+

+/* Several API's will block until the result is known, or the action has been

+performed, for example FreeRTOS_send() and FreeRTOS_recv().  The timeouts can be

+set per socket, using setsockopt().  If not set, the times below will be

+used as defaults. */

+#define ipconfigSOCK_DEFAULT_RECEIVE_BLOCK_TIME	( 2000 )

+#define	ipconfigSOCK_DEFAULT_SEND_BLOCK_TIME	( 5000 )

+

+/* Include support for LLMNR: Link-local Multicast Name Resolution

+(non-Microsoft) */

+#define ipconfigUSE_LLMNR					( 0 )

+

+/* Include support for NBNS: NetBIOS Name Service (Microsoft) */

+#define ipconfigUSE_NBNS					( 0 )

+

+/* Include support for DNS caching.  For TCP, having a small DNS cache is very

+useful.  When a cache is present, ipconfigDNS_REQUEST_ATTEMPTS can be kept low

+and also DNS may use small timeouts.  If a DNS reply comes in after the DNS

+socket has been destroyed, the result will be stored into the cache.  The next

+call to FreeRTOS_gethostbyname() will return immediately, without even creating

+a socket. */

+#define ipconfigUSE_DNS_CACHE				( 1 )

+#define ipconfigDNS_CACHE_NAME_LENGTH		( 32 )

+#define ipconfigDNS_CACHE_ENTRIES			( 4 )

+#define ipconfigDNS_REQUEST_ATTEMPTS		( 2 )

+

+/* The IP stack executes it its own task (although any application task can make

+use of its services through the published sockets API). ipconfigUDP_TASK_PRIORITY

+sets the priority of the task that executes the IP stack.  The priority is a

+standard FreeRTOS task priority so can take any value from 0 (the lowest

+priority) to (configMAX_PRIORITIES - 1) (the highest priority).

+configMAX_PRIORITIES is a standard FreeRTOS configuration parameter defined in

+FreeRTOSConfig.h, not FreeRTOSIPConfig.h. Consideration needs to be given as to

+the priority assigned to the task executing the IP stack relative to the

+priority assigned to tasks that use the IP stack. */

+#define ipconfigIP_TASK_PRIORITY			( configMAX_PRIORITIES - 2 )

+

+/* The size, in words (not bytes), of the stack allocated to the FreeRTOS+TCP

+task.  This setting is less important when the FreeRTOS Win32 simulator is used

+as the Win32 simulator only stores a fixed amount of information on the task

+stack.  FreeRTOS includes optional stack overflow detection, see:

+http://www.freertos.org/Stacks-and-stack-overflow-checking.html */

+#define ipconfigIP_TASK_STACK_SIZE_WORDS	( configMINIMAL_STACK_SIZE * 5 )

+

+/* ipconfigRAND32() is called by the IP stack to generate random numbers for

+things such as a DHCP transaction number or initial sequence number.  Random

+number generation is performed via this macro to allow applications to use their

+own random number generation method.  For example, it might be possible to

+generate a random number by sampling noise on an analogue input. */

+extern UBaseType_t uxRand();

+#define ipconfigRAND32()	uxRand()

+

+/* If ipconfigUSE_NETWORK_EVENT_HOOK is set to 1 then FreeRTOS+TCP will call the

+network event hook at the appropriate times.  If ipconfigUSE_NETWORK_EVENT_HOOK

+is not set to 1 then the network event hook will never be called.  See

+http://www.FreeRTOS.org/FreeRTOS-Plus/FreeRTOS_Plus_UDP/API/vApplicationIPNetworkEventHook.shtml

+*/

+#define ipconfigUSE_NETWORK_EVENT_HOOK 1

+

+/* Sockets have a send block time attribute.  If FreeRTOS_sendto() is called but

+a network buffer cannot be obtained then the calling task is held in the Blocked

+state (so other tasks can continue to executed) until either a network buffer

+becomes available or the send block time expires.  If the send block time expires

+then the send operation is aborted.  The maximum allowable send block time is

+capped to the value set by ipconfigMAX_SEND_BLOCK_TIME_TICKS.  Capping the

+maximum allowable send block time prevents prevents a deadlock occurring when

+all the network buffers are in use and the tasks that process (and subsequently

+free) the network buffers are themselves blocked waiting for a network buffer.

+ipconfigMAX_SEND_BLOCK_TIME_TICKS is specified in RTOS ticks.  A time in

+milliseconds can be converted to a time in ticks by dividing the time in

+milliseconds by portTICK_PERIOD_MS. */

+#define ipconfigUDP_MAX_SEND_BLOCK_TIME_TICKS ( 5000 / portTICK_PERIOD_MS )

+

+/* If ipconfigUSE_DHCP is 1 then FreeRTOS+TCP will attempt to retrieve an IP

+address, netmask, DNS server address and gateway address from a DHCP server.  If

+ipconfigUSE_DHCP is 0 then FreeRTOS+TCP will use a static IP address.  The

+stack will revert to using the static IP address even when ipconfigUSE_DHCP is

+set to 1 if a valid configuration cannot be obtained from a DHCP server for any

+reason.  The static configuration used is that passed into the stack by the

+FreeRTOS_IPInit() function call. */

+#define ipconfigUSE_DHCP	1

+

+/* When ipconfigUSE_DHCP is set to 1, DHCP requests will be sent out at

+increasing time intervals until either a reply is received from a DHCP server

+and accepted, or the interval between transmissions reaches

+ipconfigMAXIMUM_DISCOVER_TX_PERIOD.  The IP stack will revert to using the

+static IP address passed as a parameter to FreeRTOS_IPInit() if the

+re-transmission time interval reaches ipconfigMAXIMUM_DISCOVER_TX_PERIOD without

+a DHCP reply being received. */

+#define ipconfigMAXIMUM_DISCOVER_TX_PERIOD		( 120000 / portTICK_PERIOD_MS )

+

+/* The ARP cache is a table that maps IP addresses to MAC addresses.  The IP

+stack can only send a UDP message to a remove IP address if it knowns the MAC

+address associated with the IP address, or the MAC address of the router used to

+contact the remote IP address.  When a UDP message is received from a remote IP

+address the MAC address and IP address are added to the ARP cache.  When a UDP

+message is sent to a remote IP address that does not already appear in the ARP

+cache then the UDP message is replaced by a ARP message that solicits the

+required MAC address information.  ipconfigARP_CACHE_ENTRIES defines the maximum

+number of entries that can exist in the ARP table at any one time. */

+#define ipconfigARP_CACHE_ENTRIES		6

+

+/* ARP requests that do not result in an ARP response will be re-transmitted a

+maximum of ipconfigMAX_ARP_RETRANSMISSIONS times before the ARP request is

+aborted. */

+#define ipconfigMAX_ARP_RETRANSMISSIONS ( 5 )

+

+/* ipconfigMAX_ARP_AGE defines the maximum time between an entry in the ARP

+table being created or refreshed and the entry being removed because it is stale.

+New ARP requests are sent for ARP cache entries that are nearing their maximum

+age.  ipconfigMAX_ARP_AGE is specified in tens of seconds, so a value of 150 is

+equal to 1500 seconds (or 25 minutes). */

+#define ipconfigMAX_ARP_AGE			150

+

+/* Implementing FreeRTOS_inet_addr() necessitates the use of string handling

+routines, which are relatively large.  To save code space the full

+FreeRTOS_inet_addr() implementation is made optional, and a smaller and faster

+alternative called FreeRTOS_inet_addr_quick() is provided.  FreeRTOS_inet_addr()

+takes an IP in decimal dot format (for example, "192.168.0.1") as its parameter.

+FreeRTOS_inet_addr_quick() takes an IP address as four separate numerical octets

+(for example, 192, 168, 0, 1) as its parameters.  If

+ipconfigINCLUDE_FULL_INET_ADDR is set to 1 then both FreeRTOS_inet_addr() and

+FreeRTOS_indet_addr_quick() are available.  If ipconfigINCLUDE_FULL_INET_ADDR is

+not set to 1 then only FreeRTOS_indet_addr_quick() is available. */

+#define ipconfigINCLUDE_FULL_INET_ADDR	1

+

+/* ipconfigNUM_NETWORK_BUFFER_DESCRIPTORS defines the total number of network buffer that

+are available to the IP stack.  The total number of network buffers is limited

+to ensure the total amount of RAM that can be consumed by the IP stack is capped

+to a pre-determinable value. */

+#define ipconfigNUM_NETWORK_BUFFER_DESCRIPTORS		60

+

+/* A FreeRTOS queue is used to send events from application tasks to the IP

+stack.  ipconfigEVENT_QUEUE_LENGTH sets the maximum number of events that can

+be queued for processing at any one time.  The event queue must be a minimum of

+5 greater than the total number of network buffers. */

+#define ipconfigEVENT_QUEUE_LENGTH		( ipconfigNUM_NETWORK_BUFFER_DESCRIPTORS + 5 )

+

+/* The address of a socket is the combination of its IP address and its port

+number.  FreeRTOS_bind() is used to manually allocate a port number to a socket

+(to 'bind' the socket to a port), but manual binding is not normally necessary

+for client sockets (those sockets that initiate outgoing connections rather than

+wait for incoming connections on a known port number).  If

+ipconfigALLOW_SOCKET_SEND_WITHOUT_BIND is set to 1 then calling

+FreeRTOS_sendto() on a socket that has not yet been bound will result in the IP

+stack automatically binding the socket to a port number from the range

+socketAUTO_PORT_ALLOCATION_START_NUMBER to 0xffff.  If

+ipconfigALLOW_SOCKET_SEND_WITHOUT_BIND is set to 0 then calling FreeRTOS_sendto()

+on a socket that has not yet been bound will result in the send operation being

+aborted. */

+#define ipconfigALLOW_SOCKET_SEND_WITHOUT_BIND 1

+

+/* Defines the Time To Live (TTL) values used in outgoing UDP packets. */

+#define ipconfigUDP_TIME_TO_LIVE		128

+#define ipconfigTCP_TIME_TO_LIVE		128 /* also defined in FreeRTOSIPConfigDefaults.h */

+

+/* USE_TCP: Use TCP and all its features */

+#define ipconfigUSE_TCP				( 1 )

+

+/* Use the TCP socket wake context with a callback. */

+#define ipconfigSOCKET_HAS_USER_WAKE_CALLBACK_WITH_CONTEXT    ( 1 )

+

+/* USE_WIN: Let TCP use windowing mechanism. */

+#define ipconfigUSE_TCP_WIN			( 1 )

+

+/* The MTU is the maximum number of bytes the payload of a network frame can

+contain.  For normal Ethernet V2 frames the maximum MTU is 1500.  Setting a

+lower value can save RAM, depending on the buffer management scheme used.  If

+ipconfigCAN_FRAGMENT_OUTGOING_PACKETS is 1 then (ipconfigNETWORK_MTU - 28) must

+be divisible by 8. */

+#define ipconfigNETWORK_MTU		1200

+

+/* Set ipconfigUSE_DNS to 1 to include a basic DNS client/resolver.  DNS is used

+through the FreeRTOS_gethostbyname() API function. */

+#define ipconfigUSE_DNS			1

+

+/* If ipconfigREPLY_TO_INCOMING_PINGS is set to 1 then the IP stack will

+generate replies to incoming ICMP echo (ping) requests. */

+#define ipconfigREPLY_TO_INCOMING_PINGS				1

+

+/* If ipconfigSUPPORT_OUTGOING_PINGS is set to 1 then the

+FreeRTOS_SendPingRequest() API function is available. */

+#define ipconfigSUPPORT_OUTGOING_PINGS				0

+

+/* If ipconfigSUPPORT_SELECT_FUNCTION is set to 1 then the FreeRTOS_select()

+(and associated) API function is available. */

+#define ipconfigSUPPORT_SELECT_FUNCTION				1

+

+/* If ipconfigFILTER_OUT_NON_ETHERNET_II_FRAMES is set to 1 then Ethernet frames

+that are not in Ethernet II format will be dropped.  This option is included for

+potential future IP stack developments. */

+#define ipconfigFILTER_OUT_NON_ETHERNET_II_FRAMES  1

+

+/* If ipconfigETHERNET_DRIVER_FILTERS_FRAME_TYPES is set to 1 then it is the

+responsibility of the Ethernet interface to filter out packets that are of no

+interest.  If the Ethernet interface does not implement this functionality, then

+set ipconfigETHERNET_DRIVER_FILTERS_FRAME_TYPES to 0 to have the IP stack

+perform the filtering instead (it is much less efficient for the stack to do it

+because the packet will already have been passed into the stack).  If the

+Ethernet driver does all the necessary filtering in hardware then software

+filtering can be removed by using a value other than 1 or 0. */

+#define ipconfigETHERNET_DRIVER_FILTERS_FRAME_TYPES	1

+

+/* The windows simulator cannot really simulate MAC interrupts, and needs to

+block occasionally to allow other tasks to run. */

+#define configWINDOWS_MAC_INTERRUPT_SIMULATOR_DELAY ( 20 / portTICK_PERIOD_MS )

+

+/* Advanced only: in order to access 32-bit fields in the IP packets with

+32-bit memory instructions, all packets will be stored 32-bit-aligned, plus 16-bits.

+This has to do with the contents of the IP-packets: all 32-bit fields are

+32-bit-aligned, plus 16-bit(!) */

+#define ipconfigPACKET_FILLER_SIZE 2

+

+/* Define the size of the pool of TCP window descriptors.  On the average, each

+TCP socket will use up to 2 x 6 descriptors, meaning that it can have 2 x 6

+outstanding packets (for Rx and Tx).  When using up to 10 TP sockets

+simultaneously, one could define TCP_WIN_SEG_COUNT as 120. */

+#define ipconfigTCP_WIN_SEG_COUNT		240

+

+/* Each TCP socket has a circular buffers for Rx and Tx, which have a fixed

+maximum size.  Define the size of Rx buffer for TCP sockets. */

+#define ipconfigTCP_RX_BUFFER_LENGTH			( 1000 )

+

+/* Define the size of Tx buffer for TCP sockets. */

+#define ipconfigTCP_TX_BUFFER_LENGTH			( 1000 )

+

+/* When using call-back handlers, the driver may check if the handler points to

+real program memory (RAM or flash) or just has a random non-zero value. */

+#define ipconfigIS_VALID_PROG_ADDRESS(x) ( (x) != NULL )

+

+/* Include support for TCP hang protection.  All sockets in a connecting or

+disconnecting stage will timeout after a period of non-activity. */

+#define ipconfigTCP_HANG_PROTECTION			( 1 )

+#define ipconfigTCP_HANG_PROTECTION_TIME	( 30 )

+

+/* Include support for TCP keep-alive messages. */

+#define ipconfigTCP_KEEP_ALIVE				( 1 )

+#define ipconfigTCP_KEEP_ALIVE_INTERVAL		( 20 ) /* in seconds */

+

+#define portINLINE __inline

+

+#endif /* FREERTOS_IP_CONFIG_H */

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_basic_tls_server_auth/READ_ME_INSTRUCTIONS.url b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_basic_tls_server_auth/READ_ME_INSTRUCTIONS.url
new file mode 100644
index 0000000..6c689ef
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_basic_tls_server_auth/READ_ME_INSTRUCTIONS.url
@@ -0,0 +1,5 @@
+[{000214A0-0000-0000-C000-000000000046}]

+Prop3=19,11

+[InternetShortcut]

+IDList=

+URL=https://www.freertos.org/https/

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_basic_tls_server_auth/WIN32.vcxproj b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_basic_tls_server_auth/WIN32.vcxproj
new file mode 100644
index 0000000..371f41e
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_basic_tls_server_auth/WIN32.vcxproj
@@ -0,0 +1,618 @@
+<?xml version="1.0" encoding="utf-8"?>

+<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

+  <ItemGroup Label="ProjectConfigurations">

+    <ProjectConfiguration Include="Debug|Win32">

+      <Configuration>Debug</Configuration>

+      <Platform>Win32</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Release|Win32">

+      <Configuration>Release</Configuration>

+      <Platform>Win32</Platform>

+    </ProjectConfiguration>

+  </ItemGroup>

+  <PropertyGroup Label="Globals">

+    <ProjectGuid>{C686325E-3261-42F7-AEB1-DDE5280E1CEB}</ProjectGuid>

+    <ProjectName>RTOSDemo</ProjectName>

+    <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>

+  </PropertyGroup>

+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <UseOfMfc>false</UseOfMfc>

+    <CharacterSet>MultiByte</CharacterSet>

+    <PlatformToolset>v142</PlatformToolset>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <UseOfMfc>false</UseOfMfc>

+    <CharacterSet>MultiByte</CharacterSet>

+    <PlatformToolset>v142</PlatformToolset>

+  </PropertyGroup>

+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />

+  <ImportGroup Label="ExtensionSettings">

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />

+  </ImportGroup>

+  <PropertyGroup Label="UserMacros" />

+  <PropertyGroup>

+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>

+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\Debug\</OutDir>

+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\Debug\</IntDir>

+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>

+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\Release\</OutDir>

+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\Release\</IntDir>

+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>

+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>

+  </PropertyGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">

+    <Midl>

+      <TypeLibraryName>.\Debug/WIN32.tlb</TypeLibraryName>

+      <HeaderFileName>

+      </HeaderFileName>

+    </Midl>

+    <ClCompile>

+      <Optimization>Disabled</Optimization>

+      <AdditionalIncludeDirectories>..\..\include;..\common;..\common\WinPCap;..\..\..\..\Source\FreeRTOS-Plus-TCP\include;..\..\..\..\Source\FreeRTOS-Plus-TCP\portable\BufferManagement;..\..\..\..\Source\FreeRTOS-Plus-TCP\portable\Compiler\MSVC;..\..\..\..\..\FreeRTOS\Source\include;..\..\..\..\..\FreeRTOS\Source\portable\MSVC-MingW;..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\common\src;..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\common\include;..\..\..\..\Source\http-parser;..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\mbedtls;..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk;..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\platform;..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\include;..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\https\include;..\..\..\..\Source\mbedtls\include;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>MBEDTLS_CONFIG_FILE="mbedtls_config.h";WIN32;_DEBUG;_CONSOLE;_WIN32_WINNT=0x0500;WINVER=0x400;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <MinimalRebuild>false</MinimalRebuild>

+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>

+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>

+      <PrecompiledHeaderOutputFile>.\Debug/WIN32.pch</PrecompiledHeaderOutputFile>

+      <AssemblerListingLocation>.\Debug/</AssemblerListingLocation>

+      <ObjectFileName>.\Debug/</ObjectFileName>

+      <ProgramDataBaseFileName>.\Debug/</ProgramDataBaseFileName>

+      <WarningLevel>Level4</WarningLevel>

+      <SuppressStartupBanner>true</SuppressStartupBanner>

+      <DisableLanguageExtensions>false</DisableLanguageExtensions>

+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>

+      <AdditionalOptions>/wd4210 /wd4127 /wd4214 /wd4201 /wd4244  /wd4310 /wd4200 %(AdditionalOptions)</AdditionalOptions>

+      <BrowseInformation>true</BrowseInformation>

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

+      <ExceptionHandling>false</ExceptionHandling>

+      <CompileAs>CompileAsC</CompileAs>

+      <EnableParallelCodeGeneration>true</EnableParallelCodeGeneration>

+    </ClCompile>

+    <ResourceCompile>

+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <Culture>0x0c09</Culture>

+    </ResourceCompile>

+    <Link>

+      <OutputFile>.\Debug/RTOSDemo.exe</OutputFile>

+      <SuppressStartupBanner>true</SuppressStartupBanner>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <ProgramDatabaseFile>.\Debug/WIN32.pdb</ProgramDatabaseFile>

+      <SubSystem>Console</SubSystem>

+      <TargetMachine>MachineX86</TargetMachine>

+      <AdditionalDependencies>wpcap.lib;Bcrypt.lib;%(AdditionalDependencies)</AdditionalDependencies>

+      <AdditionalLibraryDirectories>..\common\WinPCap</AdditionalLibraryDirectories>

+      <Profile>false</Profile>

+      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>

+    </Link>

+    <Bscmake>

+      <SuppressStartupBanner>true</SuppressStartupBanner>

+      <OutputFile>.\Debug/WIN32.bsc</OutputFile>

+    </Bscmake>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">

+    <Midl>

+      <TypeLibraryName>.\Release/WIN32.tlb</TypeLibraryName>

+      <HeaderFileName>

+      </HeaderFileName>

+    </Midl>

+    <ClCompile>

+      <Optimization>MaxSpeed</Optimization>

+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>

+      <PreprocessorDefinitions>MBEDTLS_CONFIG_FILE="mbedtls_config.h";_WINSOCKAPI_;WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <StringPooling>true</StringPooling>

+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>

+      <FunctionLevelLinking>true</FunctionLevelLinking>

+      <PrecompiledHeaderOutputFile>.\Release/WIN32.pch</PrecompiledHeaderOutputFile>

+      <AssemblerListingLocation>.\Release/</AssemblerListingLocation>

+      <ObjectFileName>.\Release/</ObjectFileName>

+      <ProgramDataBaseFileName>.\Release/</ProgramDataBaseFileName>

+      <WarningLevel>Level3</WarningLevel>

+      <SuppressStartupBanner>true</SuppressStartupBanner>

+      <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-IoT-Libraries\c_sdk\standard\common\src;..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\common\include;..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\mbedtls;..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk;..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\platform;..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\include;..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\https\include;..\..\..\..\Source\mbedtls\include;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+    </ClCompile>

+    <ResourceCompile>

+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <Culture>0x0c09</Culture>

+    </ResourceCompile>

+    <Link>

+      <OutputFile>.\Release/RTOSDemo.exe</OutputFile>

+      <SuppressStartupBanner>true</SuppressStartupBanner>

+      <ProgramDatabaseFile>.\Release/WIN32.pdb</ProgramDatabaseFile>

+      <SubSystem>Console</SubSystem>

+      <TargetMachine>MachineX86</TargetMachine>

+      <AdditionalLibraryDirectories>.\WinPCap</AdditionalLibraryDirectories>

+      <AdditionalDependencies>wpcap.lib;Bcrypt.lib;%(AdditionalDependencies)</AdditionalDependencies>

+    </Link>

+    <Bscmake>

+      <SuppressStartupBanner>true</SuppressStartupBanner>

+      <OutputFile>.\Release/WIN32.bsc</OutputFile>

+    </Bscmake>

+  </ItemDefinitionGroup>

+  <ItemGroup>

+    <ClCompile Include="..\..\..\..\..\FreeRTOS\Source\event_groups.c" />

+    <ClCompile Include="..\..\..\..\..\FreeRTOS\Source\list.c" />

+    <ClCompile Include="..\..\..\..\..\FreeRTOS\Source\portable\MemMang\heap_4.c" />

+    <ClCompile Include="..\..\..\..\..\FreeRTOS\Source\portable\MSVC-MingW\port.c" />

+    <ClCompile Include="..\..\..\..\..\FreeRTOS\Source\queue.c" />

+    <ClCompile Include="..\..\..\..\..\FreeRTOS\Source\tasks.c" />

+    <ClCompile Include="..\..\..\..\..\FreeRTOS\Source\timers.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\mbedtls\mbedtls_platform_freertos.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\iot_clock_freertos.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\iot_network_freertos.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\iot_threads_freertos.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\common\src\iot_logging.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\iot_taskpool_freertos.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\https\src\iot_https_client.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\https\src\iot_https_utils.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_ARP.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_DHCP.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_DNS.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_IP.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_Sockets.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_Stream_Buffer.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_TCP_IP.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_TCP_WIN.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_UDP_IP.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\portable\BufferManagement\BufferAllocation_2.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\portable\NetworkInterface\WinPCap\NetworkInterface.c" />

+    <ClCompile Include="..\..\..\..\Source\http-parser\http_parser.c" />

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\aes.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\aesni.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\arc4.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\aria.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\asn1parse.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\asn1write.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\base64.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\bignum.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\blowfish.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\camellia.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ccm.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\certs.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\chacha20.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\chachapoly.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\cipher.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\cipher_wrap.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\cmac.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ctr_drbg.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\debug.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\des.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\dhm.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ecdh.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ecdsa.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ecjpake.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ecp.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ecp_curves.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\entropy.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\entropy_poll.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\error.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\gcm.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\havege.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\hkdf.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\hmac_drbg.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\md.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\md2.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\md4.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\md5.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\md_wrap.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\memory_buffer_alloc.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\net_sockets.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\nist_kw.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\oid.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\padlock.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\pem.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\pk.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\pkcs11.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\pkcs12.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\pkcs5.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\pkparse.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\pkwrite.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\pk_wrap.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\platform.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\platform_util.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\poly1305.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ripemd160.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\rsa.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\rsa_internal.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\sha1.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\sha256.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\sha512.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ssl_cache.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ssl_ciphersuites.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ssl_cli.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ssl_cookie.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ssl_srv.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ssl_ticket.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ssl_tls.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\threading.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\timing.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\version.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\version_features.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\x509.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\x509write_crt.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\x509write_csr.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\x509_create.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\x509_crl.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\x509_crt.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\x509_csr.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\xtea.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\common\DemoTasks\SimpleHTTPSExamples.c" />

+    <ClCompile Include="..\common\demo_logging.c" />

+    <ClCompile Include="..\common\main.c" />

+  </ItemGroup>

+  <ItemGroup>

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\event_groups.h" />

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\FreeRTOS.h" />

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\portable.h" />

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\projdefs.h" />

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\queue.h" />

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\semphr.h" />

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\task.h" />

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\timers.h" />

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\portable\MSVC-MingW\portmacro.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\mbedtls\threading_alt.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\include\platform\iot_platform_types_freertos.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\platform\iot_clock.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\platform\iot_metrics.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\platform\iot_network.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\platform\iot_threads.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\platform\types\iot_platform_types.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\include\iot_taskpool_freertos.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\common\include\iot_error.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\common\include\iot_logging.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\common\include\iot_static_memory.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\common\src\private\iot_taskpool_internal.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\include\types\iot_taskpool_types_freertos.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\https\include\iot_https_client.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\https\include\types\iot_https_types.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOSIPConfigDefaults.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_ARP.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_DHCP.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_DNS.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_IP.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_IP_Private.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_Sockets.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_Stream_Buffer.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_TCP_IP.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_TCP_WIN.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_UDP_IP.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\IPTraceMacroDefaults.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\NetworkBufferManagement.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\NetworkInterface.h" />

+    <ClInclude Include="..\..\..\..\Source\http-parser\http_parser.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\aes.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\aesni.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\arc4.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\aria.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\asn1.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\asn1write.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\base64.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\bignum.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\blowfish.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\bn_mul.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\camellia.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ccm.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\certs.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\chacha20.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\chachapoly.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\check_config.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\cipher.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\cipher_internal.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\cmac.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\compat-1.3.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\config.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ctr_drbg.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\debug.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\des.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\dhm.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ecdh.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ecdsa.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ecjpake.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ecp.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ecp_internal.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\entropy.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\entropy_poll.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\error.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\gcm.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\havege.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\hkdf.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\hmac_drbg.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\md.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\md2.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\md4.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\md5.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\md_internal.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\memory_buffer_alloc.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\net.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\net_sockets.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\nist_kw.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\oid.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\padlock.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\pem.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\pk.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\pkcs11.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\pkcs12.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\pkcs5.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\pk_internal.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\platform.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\platform_time.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\platform_util.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\poly1305.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\psa_util.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ripemd160.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\rsa.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\rsa_internal.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\sha1.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\sha256.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\sha512.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ssl.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ssl_cache.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ssl_ciphersuites.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ssl_cookie.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ssl_internal.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ssl_ticket.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\threading.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\timing.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\version.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\x509.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\x509_crl.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\x509_crt.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\x509_csr.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\xtea.h" />

+    <ClInclude Include="..\..\include\https_demo_profile.h" />

+    <ClInclude Include="..\common\mbedtls_config.h" />

+    <ClInclude Include="demo_config.h" />

+    <ClInclude Include="FreeRTOSConfig.h" />

+    <ClInclude Include="FreeRTOSIPConfig.h" />

+    <ClInclude Include="iot_config.h" />

+  </ItemGroup>

+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />

+  <ImportGroup Label="ExtensionTargets">

+  </ImportGroup>

+</Project>

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_basic_tls_server_auth/WIN32.vcxproj.filters b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_basic_tls_server_auth/WIN32.vcxproj.filters
new file mode 100644
index 0000000..e464230
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_basic_tls_server_auth/WIN32.vcxproj.filters
@@ -0,0 +1,786 @@
+<?xml version="1.0" encoding="utf-8"?>

+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

+  <ItemGroup>

+    <Filter Include="FreeRTOS">

+      <UniqueIdentifier>{af3445a1-4908-4170-89ed-39345d90d30c}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS\Source">

+      <UniqueIdentifier>{f32be356-4763-4cae-9020-974a2638cb08}</UniqueIdentifier>

+      <Extensions>*.c</Extensions>

+    </Filter>

+    <Filter Include="FreeRTOS\Source\Portable">

+      <UniqueIdentifier>{88f409e6-d396-4ac5-94bd-7a99c914be46}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+">

+      <UniqueIdentifier>{e5ad4ec7-23dc-4295-8add-2acaee488f5a}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS\Source\include">

+      <UniqueIdentifier>{d2dcd641-8d91-492b-852f-5563ffadaec6}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS+TCP">

+      <UniqueIdentifier>{8672fa26-b119-481f-8b8d-086419c01a3e}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS+TCP\portable">

+      <UniqueIdentifier>{4570be11-ec96-4b55-ac58-24b50ada980a}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS+TCP\include">

+      <UniqueIdentifier>{5d93ed51-023a-41ad-9243-8d230165d34b}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="DemoTasks">

+      <UniqueIdentifier>{b71e974a-9f28-4815-972b-d930ba8a34d0}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries">

+      <UniqueIdentifier>{60717407-397f-4ea5-8492-3314acdd25f0}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\standard">

+      <UniqueIdentifier>{8a90222f-d723-4b4e-8e6e-c57afaf7fa92}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\standard\common">

+      <UniqueIdentifier>{7c995f05-2a10-4771-ad77-18a755876e46}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\standard\common\include">

+      <UniqueIdentifier>{9a636cc3-ebc6-48c5-8c18-c72494686e81}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\standard\common\include\types">

+      <UniqueIdentifier>{29376c48-bc8b-4624-ad59-16807874c9f2}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\abstractions">

+      <UniqueIdentifier>{91ef4008-de51-4b41-ba5e-bf24d8cda378}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\abstractions\platform">

+      <UniqueIdentifier>{ade43c6c-04c5-4897-abdb-91af2df04e5d}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\abstractions\platform\freertos">

+      <UniqueIdentifier>{08a4e35c-19ca-4b1e-af24-bac368c2bf7b}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\abstractions\platform\freertos\include">

+      <UniqueIdentifier>{1e324500-91b4-4c76-b699-59ba75691760}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\abstractions\platform\freertos\include\platform">

+      <UniqueIdentifier>{bdcbc1ec-99b8-4c72-9075-49035c115488}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\standard\https">

+      <UniqueIdentifier>{2d17d5e6-ed70-4e42-9693-f7a63baf4948}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\standard\https\src">

+      <UniqueIdentifier>{7158b0be-01e7-42d1-8d3f-c75118a596a2}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\standard\https\include">

+      <UniqueIdentifier>{6ad56e6d-c330-4830-8f4b-c75b05dfa866}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\standard\https\include\types">

+      <UniqueIdentifier>{1d80b387-5a86-4744-a4cc-930033a52e4b}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\http-parser">

+      <UniqueIdentifier>{3dc958a5-cd64-4a6a-af27-beba20339e4b}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\mbedtls">

+      <UniqueIdentifier>{1cecca7f-60cd-4d8d-8123-f00aa75af147}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\mbedtls\include">

+      <UniqueIdentifier>{f9a2e0a1-ed56-4ca7-b8b2-d694a94c78c0}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\mbedtls\library">

+      <UniqueIdentifier>{61ac8e2c-8fd1-44a0-a7a9-0326bc190426}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\abstractions\mbedtls">

+      <UniqueIdentifier>{b53bfe50-b4d9-4b78-b7bb-ae90e4d25615}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\standard\platform">

+      <UniqueIdentifier>{d5bf72d9-1e71-4a65-ac2f-5f28a99b0796}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\standard\common\src">

+      <UniqueIdentifier>{b0616e09-2c08-40a1-aa2d-5cbd592e4451}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\standard\platform\types">

+      <UniqueIdentifier>{f1ad002c-d40b-465f-b648-17cedba667d1}</UniqueIdentifier>

+    </Filter>

+  </ItemGroup>

+  <ItemGroup>

+    <ClCompile Include="..\..\..\..\..\FreeRTOS\Source\portable\MSVC-MingW\port.c">

+      <Filter>FreeRTOS\Source\Portable</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\..\FreeRTOS\Source\timers.c">

+      <Filter>FreeRTOS\Source</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\..\FreeRTOS\Source\list.c">

+      <Filter>FreeRTOS\Source</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\..\FreeRTOS\Source\queue.c">

+      <Filter>FreeRTOS\Source</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\..\FreeRTOS\Source\tasks.c">

+      <Filter>FreeRTOS\Source</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_UDP_IP.c">

+      <Filter>FreeRTOS+\FreeRTOS+TCP</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_DHCP.c">

+      <Filter>FreeRTOS+\FreeRTOS+TCP</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_DNS.c">

+      <Filter>FreeRTOS+\FreeRTOS+TCP</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_Sockets.c">

+      <Filter>FreeRTOS+\FreeRTOS+TCP</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\portable\BufferManagement\BufferAllocation_2.c">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\portable</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\portable\NetworkInterface\WinPCap\NetworkInterface.c">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\portable</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_ARP.c">

+      <Filter>FreeRTOS+\FreeRTOS+TCP</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_IP.c">

+      <Filter>FreeRTOS+\FreeRTOS+TCP</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_TCP_IP.c">

+      <Filter>FreeRTOS+\FreeRTOS+TCP</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_TCP_WIN.c">

+      <Filter>FreeRTOS+\FreeRTOS+TCP</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\..\FreeRTOS\Source\event_groups.c">

+      <Filter>FreeRTOS\Source</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\..\FreeRTOS\Source\portable\MemMang\heap_4.c">

+      <Filter>FreeRTOS\Source\Portable</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_Stream_Buffer.c">

+      <Filter>FreeRTOS+\FreeRTOS+TCP</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\https\src\iot_https_client.c">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\https\src</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\https\src\iot_https_utils.c">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\https\src</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\iot_clock_freertos.c">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\abstractions\platform\freertos</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\iot_threads_freertos.c">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\abstractions\platform\freertos</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\iot_network_freertos.c">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\abstractions\platform\freertos</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\http-parser\http_parser.c">

+      <Filter>FreeRTOS+\http-parser</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\aes.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\aesni.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\arc4.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\aria.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\asn1parse.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\asn1write.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\base64.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\bignum.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\blowfish.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\camellia.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ccm.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\certs.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\chacha20.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\chachapoly.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\cipher.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\cipher_wrap.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\cmac.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ctr_drbg.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\debug.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\des.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\dhm.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ecdh.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ecdsa.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ecjpake.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ecp.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ecp_curves.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\entropy.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\entropy_poll.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\error.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\gcm.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\havege.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\hkdf.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\hmac_drbg.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\md.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\md_wrap.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\md2.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\md4.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\md5.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\memory_buffer_alloc.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\net_sockets.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\nist_kw.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\oid.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\padlock.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\pem.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\pk.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\pk_wrap.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\pkcs5.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\pkcs11.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\pkcs12.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\pkparse.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\pkwrite.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\platform.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\platform_util.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\poly1305.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ripemd160.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\rsa.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\rsa_internal.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\sha1.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\sha256.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\sha512.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ssl_cache.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ssl_ciphersuites.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ssl_cli.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ssl_cookie.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ssl_srv.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ssl_ticket.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ssl_tls.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\threading.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\timing.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\version.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\version_features.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\x509.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\x509_create.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\x509_crl.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\x509_crt.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\x509_csr.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\x509write_crt.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\x509write_csr.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\xtea.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\mbedtls\mbedtls_platform_freertos.c">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\abstractions\mbedtls</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\iot_taskpool_freertos.c">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\common\src</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\common\src\iot_logging.c">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\common\src</Filter>

+    </ClCompile>

+    <ClCompile Include="..\common\demo_logging.c" />

+    <ClCompile Include="..\common\main.c" />

+    <ClCompile Include="..\common\DemoTasks\SimpleHTTPSExamples.c">

+      <Filter>DemoTasks</Filter>

+    </ClCompile>

+  </ItemGroup>

+  <ItemGroup>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\NetworkInterface.h">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_DNS.h">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_Sockets.h">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_UDP_IP.h">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\timers.h">

+      <Filter>FreeRTOS\Source\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\event_groups.h">

+      <Filter>FreeRTOS\Source\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\FreeRTOS.h">

+      <Filter>FreeRTOS\Source\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\queue.h">

+      <Filter>FreeRTOS\Source\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\semphr.h">

+      <Filter>FreeRTOS\Source\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\task.h">

+      <Filter>FreeRTOS\Source\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\portable\MSVC-MingW\portmacro.h">

+      <Filter>FreeRTOS\Source\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_IP_Private.h">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\NetworkBufferManagement.h">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_ARP.h">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_DHCP.h">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_IP.h">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_TCP_IP.h">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_TCP_WIN.h">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOSIPConfigDefaults.h">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\IPTraceMacroDefaults.h">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>

+    </ClInclude>

+    <ClInclude Include="FreeRTOSConfig.h" />

+    <ClInclude Include="FreeRTOSIPConfig.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_Stream_Buffer.h">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\portable.h">

+      <Filter>FreeRTOS\Source\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\projdefs.h">

+      <Filter>FreeRTOS\Source\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\include\iot_taskpool_freertos.h">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\common\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\include\types\iot_taskpool_types_freertos.h">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\common\include\types</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\common\include\iot_error.h">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\common\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\common\include\iot_logging.h">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\common\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\common\include\iot_static_memory.h">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\common\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\common\src\private\iot_taskpool_internal.h">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\common\include</Filter>

+    </ClInclude>

+    <ClInclude Include="iot_config.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\https\include\iot_https_client.h">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\https\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\https\include\types\iot_https_types.h">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\https\include\types</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\include\platform\iot_platform_types_freertos.h">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\abstractions\platform\freertos\include\platform</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\http-parser\http_parser.h">

+      <Filter>FreeRTOS+\http-parser</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\aes.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\aesni.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\arc4.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\aria.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\asn1.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\asn1write.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\base64.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\bignum.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\blowfish.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\bn_mul.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\camellia.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ccm.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\certs.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\chacha20.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\chachapoly.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\check_config.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\cipher.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\cipher_internal.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\cmac.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\compat-1.3.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\config.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ctr_drbg.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\debug.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\des.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\dhm.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ecdh.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ecdsa.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ecjpake.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ecp.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ecp_internal.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\entropy.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\entropy_poll.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\error.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\gcm.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\havege.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\hkdf.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\hmac_drbg.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\md.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\md_internal.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\md2.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\md4.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\md5.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\memory_buffer_alloc.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\net.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\net_sockets.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\nist_kw.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\oid.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\padlock.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\pem.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\pk.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\pk_internal.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\pkcs5.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\pkcs11.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\pkcs12.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\platform.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\platform_time.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\platform_util.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\poly1305.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\psa_util.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ripemd160.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\rsa.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\rsa_internal.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\sha1.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\sha256.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\sha512.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ssl.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ssl_cache.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ssl_ciphersuites.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ssl_cookie.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ssl_internal.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ssl_ticket.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\threading.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\timing.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\version.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\x509.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\x509_crl.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\x509_crt.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\x509_csr.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\xtea.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\mbedtls\threading_alt.h">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\abstractions\mbedtls</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\platform\types\iot_platform_types.h">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\platform\types</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\platform\iot_clock.h">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\platform</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\platform\iot_metrics.h">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\platform</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\platform\iot_network.h">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\platform</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\platform\iot_threads.h">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\platform</Filter>

+    </ClInclude>

+    <ClInclude Include="..\common\mbedtls_config.h" />

+    <ClInclude Include="demo_config.h" />

+    <ClInclude Include="..\..\include\https_demo_profile.h" />

+  </ItemGroup>

+</Project>

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_basic_tls_server_auth/demo_config.h b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_basic_tls_server_auth/demo_config.h
new file mode 100644
index 0000000..73f3318
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_basic_tls_server_auth/demo_config.h
@@ -0,0 +1,78 @@
+/*

+ * FreeRTOS Kernel V10.2.1

+ * 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://www.FreeRTOS.org

+ * http://aws.amazon.com/freertos

+ *

+ * 1 tab == 4 spaces!

+ */

+

+#ifndef DEMO_CONFIG_H

+#define DEMO_CONFIG_H

+

+/*

+ * This configuration file determines how the HTTPS demo is run.

+ *

+ * http_plain_text demo: Security is turned off. Preconfigured to a public HTTP

+ * host on unencrypted port so no authentication configuration is required.

+ *

+ * https_basic_tls_server_auth demo: TLS security is enabled, allowing host

+ * side authentication. Preconfigured to a public HTTPS host with certificate

+ * provided by the host so no authentication configuration is required.

+ *

+ * https_tls_mutual_auth demo: Mutual authentication is enabled. Preconfigured to

+ * AWS IoT broker, will require certificate setup for successful connection.

+ */

+

+/**

+ * @brief Enable/Disable TLS in demos.

+ *

+ * For more information regarding TLS protocol:

+ * https://www.freertos.org/https/tls.html

+ */

+#define democonfigENABLE_TLS			 1

+

+/**

+ * @brief Enable/Disable mutual authentication in demos. If enabled, require

+ * democonfigENABLE_TLS to be set to 1.

+ */

+#define democonfigENABLE_MUTUAL_AUTH	 0

+

+/**

+ * @brief Select a connection profile.

+ *

+ * If set to 1, the demo will connect to AWS IoT with credential setup in

+ * aws_iot_demo_profile.h file, otherwise the demo is preconfigured to connect to

+ * httpbin.org with credential setup in https_demo_profile.h file. If enabled,

+ * requires democonfigENABLE_MUTUAL_AUTH to be set to 1 since AWS IoT requires

+ * mutually authenticated connection.

+ */

+#define democonfigPROFILE_USE_AWS_IOT	 0

+

+/**

+ * @brief Set the stack size of the main demo task.

+ *

+ * In the Windows port, this stack only holds a structure. The actual

+ * stack is created by an operating system thread.

+ */

+#define democonfigDEMO_STACKSIZE	    configMINIMAL_STACK_SIZE

+

+#endif /* DEMO_CONFIG_H */

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_basic_tls_server_auth/https_basic_tls_demo.sln b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_basic_tls_server_auth/https_basic_tls_demo.sln
new file mode 100644
index 0000000..b362f36
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_basic_tls_server_auth/https_basic_tls_demo.sln
@@ -0,0 +1,23 @@
+

+Microsoft Visual Studio Solution File, Format Version 11.00

+# Visual Studio 2010

+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RTOSDemo", "WIN32.vcxproj", "{C686325E-3261-42F7-AEB1-DDE5280E1CEB}"

+EndProject

+Global

+	GlobalSection(TestCaseManagementSettings) = postSolution

+		CategoryFile = FreeRTOS_Plus_TCP_Minimal.vsmdi

+	EndGlobalSection

+	GlobalSection(SolutionConfigurationPlatforms) = preSolution

+		Debug|Win32 = Debug|Win32

+		Release|Win32 = Release|Win32

+	EndGlobalSection

+	GlobalSection(ProjectConfigurationPlatforms) = postSolution

+		{C686325E-3261-42F7-AEB1-DDE5280E1CEB}.Debug|Win32.ActiveCfg = Debug|Win32

+		{C686325E-3261-42F7-AEB1-DDE5280E1CEB}.Debug|Win32.Build.0 = Debug|Win32

+		{C686325E-3261-42F7-AEB1-DDE5280E1CEB}.Release|Win32.ActiveCfg = Release|Win32

+		{C686325E-3261-42F7-AEB1-DDE5280E1CEB}.Release|Win32.Build.0 = Release|Win32

+	EndGlobalSection

+	GlobalSection(SolutionProperties) = preSolution

+		HideSolutionNode = FALSE

+	EndGlobalSection

+EndGlobal

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_basic_tls_server_auth/iot_config.h b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_basic_tls_server_auth/iot_config.h
new file mode 100644
index 0000000..0666b8f
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_basic_tls_server_auth/iot_config.h
@@ -0,0 +1,171 @@
+/*

+ * 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.

+ */

+

+/* This file contains configuration settings for the demos. */

+

+#ifndef IOT_CONFIG_H_

+#define IOT_CONFIG_H_

+

+/* Configure the IoT Libraries for FreeRTOS by including the FreeRTOS header and

+ * the FreeRTOS platform types. */

+#include "FreeRTOS.h"

+#include "platform/iot_platform_types_freertos.h"

+

+/**

+ * @brief Set a global default for log levels.

+ *

+ * This setting is overridden by log level settings of specific libraries.

+ * Undefined library-specific log levels will default to this value.

+ *

+ * Possible values: One of the Log levels.

+ * Default value (if undefined): IOT_LOG_NONE.

+ */

+#define IOT_LOG_LEVEL_GLOBAL                    IOT_LOG_NONE

+

+/**

+ * @brief Set the log level of the platform libraries except the network

+ * component.

+ *

+ * Log messages from the platform libraries at or below this setting

+ * will be printed. As the network component is more verbose, its logging

+ * is controlled by its own setting, IOT_LOG_LEVEL_NETWORK.

+ *

+ * Possible values: One of the Log levels.

+ * Default value (if undefined): IOT_LOG_LEVEL_GLOBAL; if that is undefined,

+ * then IOT_LOG_NONE.

+ */

+#define IOT_LOG_LEVEL_PLATFORM                  IOT_LOG_NONE

+

+/**

+ * @brief Set the log level of the platform network library.

+ *

+ * Log messages from the platform network library at or below this setting

+ * will be printed.

+ *

+ * Possible values: One of the Log levels.

+ * Default value (if undefined): IOT_LOG_LEVEL_GLOBAL; if that is undefined,

+ * then IOT_LOG_NONE.

+ */

+#define IOT_LOG_LEVEL_NETWORK                   IOT_LOG_WARN

+

+/*

+ * @brief Set the log level of the task pool library.

+ *

+ * Log messages from the task pool library at or below this setting will be

+ * printed.

+ *

+ * Possible values: One of the Log levels.

+ * Default value (if undefined): IOT_LOG_LEVEL_GLOBAL; if that is undefined,

+ * then IOT_LOG_NONE.

+ */

+#define IOT_LOG_LEVEL_TASKPOOL                  IOT_LOG_WARN

+

+/**

+ * @brief Set the log level of the HTTPS Client library.

+ *

+ * Log messages from the HTTPS Client library at or below this setting will be printed.

+ *

+ * Possible values: One of the Log levels.

+ * Default value (if undefined): IOT_LOG_LEVEL_GLOBAL; if that is undefined,

+ * then IOT_LOG_NONE.

+ */

+#define IOT_LOG_LEVEL_HTTPS                     IOT_LOG_WARN

+

+/**

+ * @brief Enable/Disable asserts for the task pool library.

+ *

+ * Set this to 1 to perform sanity checks when using the task pool library.

+ * Asserts are useful for debugging, but should be disabled in production code.

+ * If this is set to 1, IotTaskPool_Assert can be defined to set the assertion

+ * function; otherwise, the standard library's assert function will be used.

+ *

+ * Possible values: 0 (asserts disabled) or 1 (asserts enabled)

+ * Recommended values: 1 when debugging; 0 in production code.

+ * Default value (if undefined): 0

+ */

+#define IOT_TASKPOOL_ENABLE_ASSERTS             1

+

+/**

+ * @brief The number of worker tasks in the task pool.

+ *

+ * The full IoT Task Pool Library has many use cases, including Linux

+ * development. Typical FreeRTOS use cases do not require the full

+ * functionality so an optimized implementation is provided specifically for use

+ * with FreeRTOS. The optimized version has a fixed number of tasks in the

+ * task pool, each of which uses statically allocated memory to ensure creation

+ * of the task pool is guaranteed (it does not run out of heap space).

+ */

+#define IOT_TASKPOOL_NUMBER_OF_WORKERS          1

+

+/**

+ * @brief The stack size (in bytes) for each worker task in the task pool.

+ *

+ * The minimal version of the of task pool library only supports one task pool

+ * and the configuration of each worker task fixed at the compile time.

+ */

+#define IOT_TASKPOOL_WORKER_STACK_SIZE_BYTES    2048

+

+/**

+ * @brief Enable TLS in the network abstraction.

+ *

+ * The TLS implementation requires the mbed TLS library.

+ */

+#define IOT_NETWORK_ENABLE_TLS                  1

+

+/**

+ * @brief Enable/Disable asserts for the linear containers library.

+ *

+ * Set this to 1 to perform sanity checks when using the linear containers library.

+ * Asserts are useful for debugging, but should be disabled in production code.

+ * If this is set to 1, IotContainers_Assert can be defined to set the assertion

+ * function; otherwise, the standard library's assert function will be used.

+ *

+ * Possible values: 0 (asserts disabled) or 1 (asserts enabled)

+ * Recommended values: 1 when debugging; 0 in production code.

+ * Default value (if undefined): 0

+ */

+#define IOT_CONTAINERS_ENABLE_ASSERTS           1

+

+/* Common settings for FreeRTOS; settings below this line generally do not need

+ * to be changed. */

+

+/* Logging puts function on FreeRTOS. */

+#define IotLogging_Puts( str )                configPRINTF( ( "%s\r\n", str ) )

+

+/* Assert functions on FreeRTOS. */

+#define IotContainers_Assert( expression )    configASSERT( expression )

+#define IotTaskPool_Assert( expression )      configASSERT( expression )

+

+/* Memory allocation functions on FreeRTOS. */

+#define IotThreads_Malloc               pvPortMalloc

+#define IotThreads_Free                 vPortFree

+

+#define IotLogging_Malloc               pvPortMalloc

+#define IotLogging_Free                 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

+

+#endif /* ifndef IOT_CONFIG_H_ */

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_tls_mutual_auth/FreeRTOSConfig.h b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_tls_mutual_auth/FreeRTOSConfig.h
new file mode 100644
index 0000000..d58a0b8
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_tls_mutual_auth/FreeRTOSConfig.h
@@ -0,0 +1,210 @@
+/*

+ * FreeRTOS Kernel V10.2.1

+ * 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://www.FreeRTOS.org

+ * http://aws.amazon.com/freertos

+ *

+ * 1 tab == 4 spaces!

+ */

+

+#ifndef FREERTOS_CONFIG_H

+#define FREERTOS_CONFIG_H

+

+/*-----------------------------------------------------------

+ * Application specific definitions.

+ *

+ * These definitions should be adjusted for your particular hardware and

+ * application requirements.

+ *

+ * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE

+ * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.

+ * http://www.freertos.org/a00110.html

+ *

+ * The bottom of this file contains some constants specific to running the UDP

+ * stack in this demo.  Constants specific to FreeRTOS+TCP itself (rather than

+ * the demo) are contained in FreeRTOSIPConfig.h.

+ *----------------------------------------------------------*/

+#define configUSE_PREEMPTION					1

+#define configUSE_PORT_OPTIMISED_TASK_SELECTION	1

+#define configMAX_PRIORITIES					( 7 )

+#define configTICK_RATE_HZ						( 1000 ) /* In this non-real time simulated environment the tick frequency has to be at least a multiple of the Win32 tick frequency, and therefore very slow. */

+#define configMINIMAL_STACK_SIZE				( ( unsigned short ) 60 ) /* In this simulated case, the stack only has to hold one small structure as the real stack is part of the Win32 thread. */

+#define configTOTAL_HEAP_SIZE					( ( size_t ) ( 2048U * 1024U ) )

+#define configMAX_TASK_NAME_LEN					( 15 )

+#define configUSE_TRACE_FACILITY				1

+#define configUSE_16_BIT_TICKS					0

+#define configIDLE_SHOULD_YIELD					1

+#define configUSE_CO_ROUTINES 					0

+#define configUSE_MUTEXES						1

+#define configUSE_RECURSIVE_MUTEXES				1

+#define configQUEUE_REGISTRY_SIZE				0

+#define configUSE_APPLICATION_TASK_TAG			0

+#define configUSE_COUNTING_SEMAPHORES			1

+#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

+#define configUSE_IDLE_HOOK				0

+#define configUSE_MALLOC_FAILED_HOOK	0

+#define configCHECK_FOR_STACK_OVERFLOW	0 /* Not applicable to the Win32 port. */

+

+/* Software timer related definitions. */

+#define configUSE_TIMERS				1

+#define configTIMER_TASK_PRIORITY		( configMAX_PRIORITIES - 1 )

+#define configTIMER_QUEUE_LENGTH		5

+#define configTIMER_TASK_STACK_DEPTH	( configMINIMAL_STACK_SIZE * 2 )

+

+/* Event group related definitions. */

+#define configUSE_EVENT_GROUPS			1

+

+/* Run time stats gathering definitions. */

+#define configGENERATE_RUN_TIME_STATS	0

+

+/* Co-routine definitions. */

+#define configUSE_CO_ROUTINES 			0

+#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )

+

+/* Set the following definitions to 1 to include the API function, or zero

+to exclude the API function. */

+#define INCLUDE_vTaskPrioritySet				1

+#define INCLUDE_uxTaskPriorityGet				1

+#define INCLUDE_vTaskDelete						1

+#define INCLUDE_vTaskCleanUpResources			0

+#define INCLUDE_vTaskSuspend					1

+#define INCLUDE_vTaskDelayUntil					1

+#define INCLUDE_vTaskDelay						1

+#define INCLUDE_uxTaskGetStackHighWaterMark		1

+#define INCLUDE_xTaskGetSchedulerState			1

+#define INCLUDE_xTimerGetTimerTaskHandle		0

+#define INCLUDE_xTaskGetIdleTaskHandle			0

+#define INCLUDE_xQueueGetMutexHolder			1

+#define INCLUDE_eTaskGetState					1

+#define INCLUDE_xEventGroupSetBitsFromISR		1

+#define INCLUDE_xTimerPendFunctionCall			1

+#define INCLUDE_pcTaskGetTaskName				1

+

+/* This demo makes use of one or more example stats formatting functions.  These

+format the raw data provided by the uxTaskGetSystemState() function in to human

+readable ASCII form.  See the notes in the implementation of vTaskList() within

+FreeRTOS/Source/tasks.c for limitations.  configUSE_STATS_FORMATTING_FUNCTIONS

+is set to 2 so the formatting functions are included without the stdio.h being

+included in tasks.c.  That is because this project defines its own sprintf()

+functions. */

+#define configUSE_STATS_FORMATTING_FUNCTIONS	1

+

+/* Assert call defined for debug builds. */

+#ifdef _DEBUG

+	extern void vAssertCalled( const char *pcFile, uint32_t ulLine );

+	#define configASSERT( x ) if( ( x ) == 0 ) vAssertCalled( __FILE__, __LINE__ )

+#endif /* _DEBUG */

+

+

+

+/* Application specific definitions follow. **********************************/

+

+/* Only used when running in the FreeRTOS Windows simulator.  Defines the

+priority of the task used to simulate Ethernet interrupts. */

+#define configMAC_ISR_SIMULATOR_PRIORITY	( configMAX_PRIORITIES - 1 )

+

+/* This demo creates a virtual network connection by accessing the raw Ethernet

+or WiFi data to and from a real network connection.  Many computers have more

+than one real network port, and configNETWORK_INTERFACE_TO_USE is used to tell

+the demo which real port should be used to create the virtual port.  The ports

+available are displayed on the console when the application is executed.  For

+example, on my development laptop setting configNETWORK_INTERFACE_TO_USE to 4

+results in the wired network being used, while setting

+configNETWORK_INTERFACE_TO_USE to 2 results in the wireless network being

+used. */

+#define configNETWORK_INTERFACE_TO_USE 1L

+

+/* The address of an echo server is only left in this project as it doubles as

+the address to which logging is sent should UDP logging be enabled. */

+#define configECHO_SERVER_ADDR0	192

+#define configECHO_SERVER_ADDR1 168

+#define configECHO_SERVER_ADDR2 0

+#define configECHO_SERVER_ADDR3 11

+

+/* 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		0x11

+#define configMAC_ADDR3		0x11

+#define configMAC_ADDR4		0x11

+#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. */

+#define configIP_ADDR0		10

+#define configIP_ADDR1		10

+#define configIP_ADDR2		10

+#define configIP_ADDR3		200

+

+/* Default gateway 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. */

+#define configGATEWAY_ADDR0	10

+#define configGATEWAY_ADDR1	10

+#define configGATEWAY_ADDR2	10

+#define configGATEWAY_ADDR3	1

+

+/* Default DNS server configuration.  OpenDNS addresses are 208.67.222.222 and

+208.67.220.220.  Used in ipconfigUSE_DNS is set to 0, or ipconfigUSE_DNS is set

+to 1 but a DNS server cannot be contacted.*/

+#define configDNS_SERVER_ADDR0 	208

+#define configDNS_SERVER_ADDR1 	67

+#define configDNS_SERVER_ADDR2 	222

+#define configDNS_SERVER_ADDR3 	222

+

+/* Default netmask configuration.  Used in ipconfigUSE_DNS is set to 0, or

+ipconfigUSE_DNS is set to 1 but a DNS server cannot be contacted. */

+#define configNET_MASK0		255

+#define configNET_MASK1		0

+#define configNET_MASK2		0

+#define configNET_MASK3		0

+

+/* The UDP port to which print messages are sent. */

+#define configPRINT_PORT	( 15000 )

+

+#if( defined( _MSC_VER ) && ( _MSC_VER <= 1600 ) && !defined( snprintf ) )

+	/* Map to Windows names. */

+	#define snprintf	_snprintf

+	#define vsnprintf	_vsnprintf

+#endif

+

+/* Visual studio does not have an implementation of strcasecmp(). */

+#define strcasecmp _stricmp

+#define strncasecmp _strnicmp

+#define strcmpi _strcmpi

+

+/* 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. */

+extern void vLoggingPrintf( const char *pcFormatString, ... );

+#define configPRINTF( X )    vLoggingPrintf X

+

+#endif /* FREERTOS_CONFIG_H */

+

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_tls_mutual_auth/FreeRTOSIPConfig.h b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_tls_mutual_auth/FreeRTOSIPConfig.h
new file mode 100644
index 0000000..f698510
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_tls_mutual_auth/FreeRTOSIPConfig.h
@@ -0,0 +1,310 @@
+/*

+ * FreeRTOS Kernel V10.2.1

+ * 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://www.FreeRTOS.org

+ * http://aws.amazon.com/freertos

+ *

+ * 1 tab == 4 spaces!

+ */

+

+

+/*****************************************************************************

+ *

+ * See the following URL for configuration information.

+ * http://www.freertos.org/FreeRTOS-Plus/FreeRTOS_Plus_TCP/TCP_IP_Configuration.html

+ *

+ *****************************************************************************/

+

+#ifndef FREERTOS_IP_CONFIG_H

+#define FREERTOS_IP_CONFIG_H

+

+/* 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. */

+extern void vLoggingPrintf( const char *pcFormatString, ... );

+

+/* Set to 1 to print out debug messages.  If ipconfigHAS_DEBUG_PRINTF is set to

+1 then FreeRTOS_debug_printf should be defined to the function used to print

+out the debugging messages. */

+#define ipconfigHAS_DEBUG_PRINTF	0

+#if( ipconfigHAS_DEBUG_PRINTF == 1 )

+	#define FreeRTOS_debug_printf(X)	vLoggingPrintf X

+#endif

+

+/* Set to 1 to print out non debugging messages, for example the output of the

+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			1

+#if( ipconfigHAS_PRINTF == 1 )

+	#define FreeRTOS_printf(X)			vLoggingPrintf X

+#endif

+

+/* Define the byte order of the target MCU (the MCU FreeRTOS+TCP is executing

+on).  Valid options are pdFREERTOS_BIG_ENDIAN and pdFREERTOS_LITTLE_ENDIAN. */

+#define ipconfigBYTE_ORDER pdFREERTOS_LITTLE_ENDIAN

+

+/* If the network card/driver includes checksum offloading (IP/TCP/UDP checksums)

+then set ipconfigDRIVER_INCLUDED_RX_IP_CHECKSUM to 1 to prevent the software

+stack repeating the checksum calculations. */

+#define ipconfigDRIVER_INCLUDED_RX_IP_CHECKSUM   1

+

+/* Several API's will block until the result is known, or the action has been

+performed, for example FreeRTOS_send() and FreeRTOS_recv().  The timeouts can be

+set per socket, using setsockopt().  If not set, the times below will be

+used as defaults. */

+#define ipconfigSOCK_DEFAULT_RECEIVE_BLOCK_TIME	( 2000 )

+#define	ipconfigSOCK_DEFAULT_SEND_BLOCK_TIME	( 5000 )

+

+/* Include support for LLMNR: Link-local Multicast Name Resolution

+(non-Microsoft) */

+#define ipconfigUSE_LLMNR					( 0 )

+

+/* Include support for NBNS: NetBIOS Name Service (Microsoft) */

+#define ipconfigUSE_NBNS					( 0 )

+

+/* Include support for DNS caching.  For TCP, having a small DNS cache is very

+useful.  When a cache is present, ipconfigDNS_REQUEST_ATTEMPTS can be kept low

+and also DNS may use small timeouts.  If a DNS reply comes in after the DNS

+socket has been destroyed, the result will be stored into the cache.  The next

+call to FreeRTOS_gethostbyname() will return immediately, without even creating

+a socket. */

+#define ipconfigUSE_DNS_CACHE				( 1 )

+#define ipconfigDNS_CACHE_NAME_LENGTH		( 64 )

+#define ipconfigDNS_CACHE_ENTRIES			( 4 )

+#define ipconfigDNS_REQUEST_ATTEMPTS		( 2 )

+

+/* The IP stack executes it its own task (although any application task can make

+use of its services through the published sockets API). ipconfigUDP_TASK_PRIORITY

+sets the priority of the task that executes the IP stack.  The priority is a

+standard FreeRTOS task priority so can take any value from 0 (the lowest

+priority) to (configMAX_PRIORITIES - 1) (the highest priority).

+configMAX_PRIORITIES is a standard FreeRTOS configuration parameter defined in

+FreeRTOSConfig.h, not FreeRTOSIPConfig.h. Consideration needs to be given as to

+the priority assigned to the task executing the IP stack relative to the

+priority assigned to tasks that use the IP stack. */

+#define ipconfigIP_TASK_PRIORITY			( configMAX_PRIORITIES - 2 )

+

+/* The size, in words (not bytes), of the stack allocated to the FreeRTOS+TCP

+task.  This setting is less important when the FreeRTOS Win32 simulator is used

+as the Win32 simulator only stores a fixed amount of information on the task

+stack.  FreeRTOS includes optional stack overflow detection, see:

+http://www.freertos.org/Stacks-and-stack-overflow-checking.html */

+#define ipconfigIP_TASK_STACK_SIZE_WORDS	( configMINIMAL_STACK_SIZE * 5 )

+

+/* ipconfigRAND32() is called by the IP stack to generate random numbers for

+things such as a DHCP transaction number or initial sequence number.  Random

+number generation is performed via this macro to allow applications to use their

+own random number generation method.  For example, it might be possible to

+generate a random number by sampling noise on an analogue input. */

+extern UBaseType_t uxRand();

+#define ipconfigRAND32()	uxRand()

+

+/* If ipconfigUSE_NETWORK_EVENT_HOOK is set to 1 then FreeRTOS+TCP will call the

+network event hook at the appropriate times.  If ipconfigUSE_NETWORK_EVENT_HOOK

+is not set to 1 then the network event hook will never be called.  See

+http://www.FreeRTOS.org/FreeRTOS-Plus/FreeRTOS_Plus_UDP/API/vApplicationIPNetworkEventHook.shtml

+*/

+#define ipconfigUSE_NETWORK_EVENT_HOOK 1

+

+/* Sockets have a send block time attribute.  If FreeRTOS_sendto() is called but

+a network buffer cannot be obtained then the calling task is held in the Blocked

+state (so other tasks can continue to executed) until either a network buffer

+becomes available or the send block time expires.  If the send block time expires

+then the send operation is aborted.  The maximum allowable send block time is

+capped to the value set by ipconfigMAX_SEND_BLOCK_TIME_TICKS.  Capping the

+maximum allowable send block time prevents prevents a deadlock occurring when

+all the network buffers are in use and the tasks that process (and subsequently

+free) the network buffers are themselves blocked waiting for a network buffer.

+ipconfigMAX_SEND_BLOCK_TIME_TICKS is specified in RTOS ticks.  A time in

+milliseconds can be converted to a time in ticks by dividing the time in

+milliseconds by portTICK_PERIOD_MS. */

+#define ipconfigUDP_MAX_SEND_BLOCK_TIME_TICKS ( 5000 / portTICK_PERIOD_MS )

+

+/* If ipconfigUSE_DHCP is 1 then FreeRTOS+TCP will attempt to retrieve an IP

+address, netmask, DNS server address and gateway address from a DHCP server.  If

+ipconfigUSE_DHCP is 0 then FreeRTOS+TCP will use a static IP address.  The

+stack will revert to using the static IP address even when ipconfigUSE_DHCP is

+set to 1 if a valid configuration cannot be obtained from a DHCP server for any

+reason.  The static configuration used is that passed into the stack by the

+FreeRTOS_IPInit() function call. */

+#define ipconfigUSE_DHCP	1

+

+/* When ipconfigUSE_DHCP is set to 1, DHCP requests will be sent out at

+increasing time intervals until either a reply is received from a DHCP server

+and accepted, or the interval between transmissions reaches

+ipconfigMAXIMUM_DISCOVER_TX_PERIOD.  The IP stack will revert to using the

+static IP address passed as a parameter to FreeRTOS_IPInit() if the

+re-transmission time interval reaches ipconfigMAXIMUM_DISCOVER_TX_PERIOD without

+a DHCP reply being received. */

+#define ipconfigMAXIMUM_DISCOVER_TX_PERIOD		( 120000 / portTICK_PERIOD_MS )

+

+/* The ARP cache is a table that maps IP addresses to MAC addresses.  The IP

+stack can only send a UDP message to a remove IP address if it knowns the MAC

+address associated with the IP address, or the MAC address of the router used to

+contact the remote IP address.  When a UDP message is received from a remote IP

+address the MAC address and IP address are added to the ARP cache.  When a UDP

+message is sent to a remote IP address that does not already appear in the ARP

+cache then the UDP message is replaced by a ARP message that solicits the

+required MAC address information.  ipconfigARP_CACHE_ENTRIES defines the maximum

+number of entries that can exist in the ARP table at any one time. */

+#define ipconfigARP_CACHE_ENTRIES		6

+

+/* ARP requests that do not result in an ARP response will be re-transmitted a

+maximum of ipconfigMAX_ARP_RETRANSMISSIONS times before the ARP request is

+aborted. */

+#define ipconfigMAX_ARP_RETRANSMISSIONS ( 5 )

+

+/* ipconfigMAX_ARP_AGE defines the maximum time between an entry in the ARP

+table being created or refreshed and the entry being removed because it is stale.

+New ARP requests are sent for ARP cache entries that are nearing their maximum

+age.  ipconfigMAX_ARP_AGE is specified in tens of seconds, so a value of 150 is

+equal to 1500 seconds (or 25 minutes). */

+#define ipconfigMAX_ARP_AGE			150

+

+/* Implementing FreeRTOS_inet_addr() necessitates the use of string handling

+routines, which are relatively large.  To save code space the full

+FreeRTOS_inet_addr() implementation is made optional, and a smaller and faster

+alternative called FreeRTOS_inet_addr_quick() is provided.  FreeRTOS_inet_addr()

+takes an IP in decimal dot format (for example, "192.168.0.1") as its parameter.

+FreeRTOS_inet_addr_quick() takes an IP address as four separate numerical octets

+(for example, 192, 168, 0, 1) as its parameters.  If

+ipconfigINCLUDE_FULL_INET_ADDR is set to 1 then both FreeRTOS_inet_addr() and

+FreeRTOS_indet_addr_quick() are available.  If ipconfigINCLUDE_FULL_INET_ADDR is

+not set to 1 then only FreeRTOS_indet_addr_quick() is available. */

+#define ipconfigINCLUDE_FULL_INET_ADDR	1

+

+/* ipconfigNUM_NETWORK_BUFFER_DESCRIPTORS defines the total number of network buffer that

+are available to the IP stack.  The total number of network buffers is limited

+to ensure the total amount of RAM that can be consumed by the IP stack is capped

+to a pre-determinable value. */

+#define ipconfigNUM_NETWORK_BUFFER_DESCRIPTORS		60

+

+/* A FreeRTOS queue is used to send events from application tasks to the IP

+stack.  ipconfigEVENT_QUEUE_LENGTH sets the maximum number of events that can

+be queued for processing at any one time.  The event queue must be a minimum of

+5 greater than the total number of network buffers. */

+#define ipconfigEVENT_QUEUE_LENGTH		( ipconfigNUM_NETWORK_BUFFER_DESCRIPTORS + 5 )

+

+/* The address of a socket is the combination of its IP address and its port

+number.  FreeRTOS_bind() is used to manually allocate a port number to a socket

+(to 'bind' the socket to a port), but manual binding is not normally necessary

+for client sockets (those sockets that initiate outgoing connections rather than

+wait for incoming connections on a known port number).  If

+ipconfigALLOW_SOCKET_SEND_WITHOUT_BIND is set to 1 then calling

+FreeRTOS_sendto() on a socket that has not yet been bound will result in the IP

+stack automatically binding the socket to a port number from the range

+socketAUTO_PORT_ALLOCATION_START_NUMBER to 0xffff.  If

+ipconfigALLOW_SOCKET_SEND_WITHOUT_BIND is set to 0 then calling FreeRTOS_sendto()

+on a socket that has not yet been bound will result in the send operation being

+aborted. */

+#define ipconfigALLOW_SOCKET_SEND_WITHOUT_BIND 1

+

+/* Defines the Time To Live (TTL) values used in outgoing UDP packets. */

+#define ipconfigUDP_TIME_TO_LIVE		128

+#define ipconfigTCP_TIME_TO_LIVE		128 /* also defined in FreeRTOSIPConfigDefaults.h */

+

+/* USE_TCP: Use TCP and all its features */

+#define ipconfigUSE_TCP				( 1 )

+

+/* Use the TCP socket wake context with a callback. */

+#define ipconfigSOCKET_HAS_USER_WAKE_CALLBACK_WITH_CONTEXT    ( 1 )

+

+/* USE_WIN: Let TCP use windowing mechanism. */

+#define ipconfigUSE_TCP_WIN			( 1 )

+

+/* The MTU is the maximum number of bytes the payload of a network frame can

+contain.  For normal Ethernet V2 frames the maximum MTU is 1500.  Setting a

+lower value can save RAM, depending on the buffer management scheme used.  If

+ipconfigCAN_FRAGMENT_OUTGOING_PACKETS is 1 then (ipconfigNETWORK_MTU - 28) must

+be divisible by 8. */

+#define ipconfigNETWORK_MTU		1200

+

+/* Set ipconfigUSE_DNS to 1 to include a basic DNS client/resolver.  DNS is used

+through the FreeRTOS_gethostbyname() API function. */

+#define ipconfigUSE_DNS			1

+

+/* If ipconfigREPLY_TO_INCOMING_PINGS is set to 1 then the IP stack will

+generate replies to incoming ICMP echo (ping) requests. */

+#define ipconfigREPLY_TO_INCOMING_PINGS				1

+

+/* If ipconfigSUPPORT_OUTGOING_PINGS is set to 1 then the

+FreeRTOS_SendPingRequest() API function is available. */

+#define ipconfigSUPPORT_OUTGOING_PINGS				0

+

+/* If ipconfigSUPPORT_SELECT_FUNCTION is set to 1 then the FreeRTOS_select()

+(and associated) API function is available. */

+#define ipconfigSUPPORT_SELECT_FUNCTION				1

+

+/* If ipconfigFILTER_OUT_NON_ETHERNET_II_FRAMES is set to 1 then Ethernet frames

+that are not in Ethernet II format will be dropped.  This option is included for

+potential future IP stack developments. */

+#define ipconfigFILTER_OUT_NON_ETHERNET_II_FRAMES  1

+

+/* If ipconfigETHERNET_DRIVER_FILTERS_FRAME_TYPES is set to 1 then it is the

+responsibility of the Ethernet interface to filter out packets that are of no

+interest.  If the Ethernet interface does not implement this functionality, then

+set ipconfigETHERNET_DRIVER_FILTERS_FRAME_TYPES to 0 to have the IP stack

+perform the filtering instead (it is much less efficient for the stack to do it

+because the packet will already have been passed into the stack).  If the

+Ethernet driver does all the necessary filtering in hardware then software

+filtering can be removed by using a value other than 1 or 0. */

+#define ipconfigETHERNET_DRIVER_FILTERS_FRAME_TYPES	1

+

+/* The windows simulator cannot really simulate MAC interrupts, and needs to

+block occasionally to allow other tasks to run. */

+#define configWINDOWS_MAC_INTERRUPT_SIMULATOR_DELAY ( 20 / portTICK_PERIOD_MS )

+

+/* Advanced only: in order to access 32-bit fields in the IP packets with

+32-bit memory instructions, all packets will be stored 32-bit-aligned, plus 16-bits.

+This has to do with the contents of the IP-packets: all 32-bit fields are

+32-bit-aligned, plus 16-bit(!) */

+#define ipconfigPACKET_FILLER_SIZE 2

+

+/* Define the size of the pool of TCP window descriptors.  On the average, each

+TCP socket will use up to 2 x 6 descriptors, meaning that it can have 2 x 6

+outstanding packets (for Rx and Tx).  When using up to 10 TP sockets

+simultaneously, one could define TCP_WIN_SEG_COUNT as 120. */

+#define ipconfigTCP_WIN_SEG_COUNT		240

+

+/* Each TCP socket has a circular buffers for Rx and Tx, which have a fixed

+maximum size.  Define the size of Rx buffer for TCP sockets. */

+#define ipconfigTCP_RX_BUFFER_LENGTH			( 1000 )

+

+/* Define the size of Tx buffer for TCP sockets. */

+#define ipconfigTCP_TX_BUFFER_LENGTH			( 1000 )

+

+/* When using call-back handlers, the driver may check if the handler points to

+real program memory (RAM or flash) or just has a random non-zero value. */

+#define ipconfigIS_VALID_PROG_ADDRESS(x) ( (x) != NULL )

+

+/* Include support for TCP hang protection.  All sockets in a connecting or

+disconnecting stage will timeout after a period of non-activity. */

+#define ipconfigTCP_HANG_PROTECTION			( 1 )

+#define ipconfigTCP_HANG_PROTECTION_TIME	( 30 )

+

+/* Include support for TCP keep-alive messages. */

+#define ipconfigTCP_KEEP_ALIVE				( 1 )

+#define ipconfigTCP_KEEP_ALIVE_INTERVAL		( 20 ) /* in seconds */

+

+#define portINLINE __inline

+

+#endif /* FREERTOS_IP_CONFIG_H */

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_tls_mutual_auth/READ_ME_INSTRUCTIONS.url b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_tls_mutual_auth/READ_ME_INSTRUCTIONS.url
new file mode 100644
index 0000000..6c689ef
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_tls_mutual_auth/READ_ME_INSTRUCTIONS.url
@@ -0,0 +1,5 @@
+[{000214A0-0000-0000-C000-000000000046}]

+Prop3=19,11

+[InternetShortcut]

+IDList=

+URL=https://www.freertos.org/https/

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_tls_mutual_auth/WIN32.vcxproj b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_tls_mutual_auth/WIN32.vcxproj
new file mode 100644
index 0000000..52ea745
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_tls_mutual_auth/WIN32.vcxproj
@@ -0,0 +1,618 @@
+<?xml version="1.0" encoding="utf-8"?>

+<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

+  <ItemGroup Label="ProjectConfigurations">

+    <ProjectConfiguration Include="Debug|Win32">

+      <Configuration>Debug</Configuration>

+      <Platform>Win32</Platform>

+    </ProjectConfiguration>

+    <ProjectConfiguration Include="Release|Win32">

+      <Configuration>Release</Configuration>

+      <Platform>Win32</Platform>

+    </ProjectConfiguration>

+  </ItemGroup>

+  <PropertyGroup Label="Globals">

+    <ProjectGuid>{C686325E-3261-42F7-AEB1-DDE5280E1CEB}</ProjectGuid>

+    <ProjectName>RTOSDemo</ProjectName>

+    <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>

+  </PropertyGroup>

+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <UseOfMfc>false</UseOfMfc>

+    <CharacterSet>MultiByte</CharacterSet>

+    <PlatformToolset>v142</PlatformToolset>

+  </PropertyGroup>

+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">

+    <ConfigurationType>Application</ConfigurationType>

+    <UseOfMfc>false</UseOfMfc>

+    <CharacterSet>MultiByte</CharacterSet>

+    <PlatformToolset>v142</PlatformToolset>

+  </PropertyGroup>

+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />

+  <ImportGroup Label="ExtensionSettings">

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />

+  </ImportGroup>

+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">

+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />

+  </ImportGroup>

+  <PropertyGroup Label="UserMacros" />

+  <PropertyGroup>

+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>

+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\Debug\</OutDir>

+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\Debug\</IntDir>

+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>

+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\Release\</OutDir>

+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\Release\</IntDir>

+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>

+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>

+  </PropertyGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">

+    <Midl>

+      <TypeLibraryName>.\Debug/WIN32.tlb</TypeLibraryName>

+      <HeaderFileName>

+      </HeaderFileName>

+    </Midl>

+    <ClCompile>

+      <Optimization>Disabled</Optimization>

+      <AdditionalIncludeDirectories>..\..\include;..\common;..\common\WinPCap;..\..\..\..\Source\FreeRTOS-Plus-TCP\include;..\..\..\..\Source\FreeRTOS-Plus-TCP\portable\BufferManagement;..\..\..\..\Source\FreeRTOS-Plus-TCP\portable\Compiler\MSVC;..\..\..\..\..\FreeRTOS\Source\include;..\..\..\..\..\FreeRTOS\Source\portable\MSVC-MingW;..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\common\src;..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\common\include;..\..\..\..\Source\http-parser;..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\mbedtls;..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk;..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\platform;..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\include;..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\https\include;..\..\..\..\Source\mbedtls\include;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+      <PreprocessorDefinitions>MBEDTLS_CONFIG_FILE="mbedtls_config.h";WIN32;_DEBUG;_CONSOLE;_WIN32_WINNT=0x0500;WINVER=0x400;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <MinimalRebuild>false</MinimalRebuild>

+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>

+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>

+      <PrecompiledHeaderOutputFile>.\Debug/WIN32.pch</PrecompiledHeaderOutputFile>

+      <AssemblerListingLocation>.\Debug/</AssemblerListingLocation>

+      <ObjectFileName>.\Debug/</ObjectFileName>

+      <ProgramDataBaseFileName>.\Debug/</ProgramDataBaseFileName>

+      <WarningLevel>Level4</WarningLevel>

+      <SuppressStartupBanner>true</SuppressStartupBanner>

+      <DisableLanguageExtensions>false</DisableLanguageExtensions>

+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>

+      <AdditionalOptions>/wd4210 /wd4127 /wd4214 /wd4201 /wd4244  /wd4310 /wd4200 %(AdditionalOptions)</AdditionalOptions>

+      <BrowseInformation>true</BrowseInformation>

+      <PrecompiledHeader>NotUsing</PrecompiledHeader>

+      <ExceptionHandling>false</ExceptionHandling>

+      <CompileAs>CompileAsC</CompileAs>

+      <EnableParallelCodeGeneration>true</EnableParallelCodeGeneration>

+    </ClCompile>

+    <ResourceCompile>

+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <Culture>0x0c09</Culture>

+    </ResourceCompile>

+    <Link>

+      <OutputFile>.\Debug/RTOSDemo.exe</OutputFile>

+      <SuppressStartupBanner>true</SuppressStartupBanner>

+      <GenerateDebugInformation>true</GenerateDebugInformation>

+      <ProgramDatabaseFile>.\Debug/WIN32.pdb</ProgramDatabaseFile>

+      <SubSystem>Console</SubSystem>

+      <TargetMachine>MachineX86</TargetMachine>

+      <AdditionalDependencies>wpcap.lib;Bcrypt.lib;%(AdditionalDependencies)</AdditionalDependencies>

+      <AdditionalLibraryDirectories>..\common\WinPCap</AdditionalLibraryDirectories>

+      <Profile>false</Profile>

+      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>

+    </Link>

+    <Bscmake>

+      <SuppressStartupBanner>true</SuppressStartupBanner>

+      <OutputFile>.\Debug/WIN32.bsc</OutputFile>

+    </Bscmake>

+  </ItemDefinitionGroup>

+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">

+    <Midl>

+      <TypeLibraryName>.\Release/WIN32.tlb</TypeLibraryName>

+      <HeaderFileName>

+      </HeaderFileName>

+    </Midl>

+    <ClCompile>

+      <Optimization>MaxSpeed</Optimization>

+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>

+      <PreprocessorDefinitions>MBEDTLS_CONFIG_FILE="mbedtls_config.h";_WINSOCKAPI_;WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <StringPooling>true</StringPooling>

+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>

+      <FunctionLevelLinking>true</FunctionLevelLinking>

+      <PrecompiledHeaderOutputFile>.\Release/WIN32.pch</PrecompiledHeaderOutputFile>

+      <AssemblerListingLocation>.\Release/</AssemblerListingLocation>

+      <ObjectFileName>.\Release/</ObjectFileName>

+      <ProgramDataBaseFileName>.\Release/</ProgramDataBaseFileName>

+      <WarningLevel>Level3</WarningLevel>

+      <SuppressStartupBanner>true</SuppressStartupBanner>

+      <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-IoT-Libraries\c_sdk\standard\common\src;..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\common\include;..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\mbedtls;..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk;..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\platform;..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\include;..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\https\include;..\..\..\..\Source\mbedtls\include;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

+    </ClCompile>

+    <ResourceCompile>

+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <Culture>0x0c09</Culture>

+    </ResourceCompile>

+    <Link>

+      <OutputFile>.\Release/RTOSDemo.exe</OutputFile>

+      <SuppressStartupBanner>true</SuppressStartupBanner>

+      <ProgramDatabaseFile>.\Release/WIN32.pdb</ProgramDatabaseFile>

+      <SubSystem>Console</SubSystem>

+      <TargetMachine>MachineX86</TargetMachine>

+      <AdditionalLibraryDirectories>.\WinPCap</AdditionalLibraryDirectories>

+      <AdditionalDependencies>wpcap.lib;Bcrypt.lib;%(AdditionalDependencies)</AdditionalDependencies>

+    </Link>

+    <Bscmake>

+      <SuppressStartupBanner>true</SuppressStartupBanner>

+      <OutputFile>.\Release/WIN32.bsc</OutputFile>

+    </Bscmake>

+  </ItemDefinitionGroup>

+  <ItemGroup>

+    <ClCompile Include="..\..\..\..\..\FreeRTOS\Source\event_groups.c" />

+    <ClCompile Include="..\..\..\..\..\FreeRTOS\Source\list.c" />

+    <ClCompile Include="..\..\..\..\..\FreeRTOS\Source\portable\MemMang\heap_4.c" />

+    <ClCompile Include="..\..\..\..\..\FreeRTOS\Source\portable\MSVC-MingW\port.c" />

+    <ClCompile Include="..\..\..\..\..\FreeRTOS\Source\queue.c" />

+    <ClCompile Include="..\..\..\..\..\FreeRTOS\Source\tasks.c" />

+    <ClCompile Include="..\..\..\..\..\FreeRTOS\Source\timers.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\mbedtls\mbedtls_platform_freertos.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\iot_clock_freertos.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\iot_network_freertos.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\iot_threads_freertos.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\common\src\iot_logging.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\iot_taskpool_freertos.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\https\src\iot_https_client.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\https\src\iot_https_utils.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_ARP.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_DHCP.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_DNS.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_IP.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_Sockets.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_Stream_Buffer.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_TCP_IP.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_TCP_WIN.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_UDP_IP.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\portable\BufferManagement\BufferAllocation_2.c" />

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\portable\NetworkInterface\WinPCap\NetworkInterface.c" />

+    <ClCompile Include="..\..\..\..\Source\http-parser\http_parser.c" />

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\aes.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\aesni.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\arc4.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\aria.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\asn1parse.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\asn1write.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\base64.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\bignum.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\blowfish.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\camellia.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ccm.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\certs.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\chacha20.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\chachapoly.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\cipher.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\cipher_wrap.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\cmac.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ctr_drbg.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\debug.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\des.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\dhm.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ecdh.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ecdsa.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ecjpake.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ecp.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ecp_curves.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\entropy.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\entropy_poll.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\error.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\gcm.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\havege.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\hkdf.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\hmac_drbg.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\md.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\md2.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\md4.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\md5.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\md_wrap.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\memory_buffer_alloc.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\net_sockets.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\nist_kw.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\oid.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\padlock.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\pem.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\pk.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\pkcs11.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\pkcs12.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\pkcs5.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\pkparse.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\pkwrite.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\pk_wrap.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\platform.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\platform_util.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\poly1305.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ripemd160.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\rsa.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\rsa_internal.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\sha1.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\sha256.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\sha512.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ssl_cache.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ssl_ciphersuites.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ssl_cli.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ssl_cookie.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ssl_srv.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ssl_ticket.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ssl_tls.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\threading.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\timing.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\version.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\version_features.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\x509.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\x509write_crt.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\x509write_csr.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\x509_create.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\x509_crl.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\x509_crt.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\x509_csr.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\xtea.c">

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>

+      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>

+    </ClCompile>

+    <ClCompile Include="..\common\DemoTasks\SimpleHTTPSExamples.c" />

+    <ClCompile Include="..\common\demo_logging.c" />

+    <ClCompile Include="..\common\main.c" />

+  </ItemGroup>

+  <ItemGroup>

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\event_groups.h" />

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\FreeRTOS.h" />

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\portable.h" />

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\projdefs.h" />

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\queue.h" />

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\semphr.h" />

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\task.h" />

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\timers.h" />

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\portable\MSVC-MingW\portmacro.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\mbedtls\threading_alt.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\include\platform\iot_platform_types_freertos.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\platform\iot_clock.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\platform\iot_metrics.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\platform\iot_network.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\platform\iot_threads.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\platform\types\iot_platform_types.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\include\iot_taskpool_freertos.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\common\include\iot_error.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\common\include\iot_logging.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\common\include\iot_static_memory.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\common\src\private\iot_taskpool_internal.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\include\types\iot_taskpool_types_freertos.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\https\include\iot_https_client.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\https\include\types\iot_https_types.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOSIPConfigDefaults.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_ARP.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_DHCP.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_DNS.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_IP.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_IP_Private.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_Sockets.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_Stream_Buffer.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_TCP_IP.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_TCP_WIN.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_UDP_IP.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\IPTraceMacroDefaults.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\NetworkBufferManagement.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\NetworkInterface.h" />

+    <ClInclude Include="..\..\..\..\Source\http-parser\http_parser.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\aes.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\aesni.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\arc4.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\aria.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\asn1.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\asn1write.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\base64.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\bignum.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\blowfish.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\bn_mul.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\camellia.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ccm.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\certs.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\chacha20.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\chachapoly.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\check_config.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\cipher.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\cipher_internal.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\cmac.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\compat-1.3.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\config.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ctr_drbg.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\debug.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\des.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\dhm.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ecdh.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ecdsa.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ecjpake.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ecp.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ecp_internal.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\entropy.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\entropy_poll.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\error.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\gcm.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\havege.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\hkdf.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\hmac_drbg.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\md.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\md2.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\md4.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\md5.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\md_internal.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\memory_buffer_alloc.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\net.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\net_sockets.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\nist_kw.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\oid.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\padlock.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\pem.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\pk.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\pkcs11.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\pkcs12.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\pkcs5.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\pk_internal.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\platform.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\platform_time.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\platform_util.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\poly1305.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\psa_util.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ripemd160.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\rsa.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\rsa_internal.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\sha1.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\sha256.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\sha512.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ssl.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ssl_cache.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ssl_ciphersuites.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ssl_cookie.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ssl_internal.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ssl_ticket.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\threading.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\timing.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\version.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\x509.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\x509_crl.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\x509_crt.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\x509_csr.h" />

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\xtea.h" />

+    <ClInclude Include="..\..\include\aws_iot_demo_profile.h" />

+    <ClInclude Include="..\common\mbedtls_config.h" />

+    <ClInclude Include="demo_config.h" />

+    <ClInclude Include="FreeRTOSConfig.h" />

+    <ClInclude Include="FreeRTOSIPConfig.h" />

+    <ClInclude Include="iot_config.h" />

+  </ItemGroup>

+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />

+  <ImportGroup Label="ExtensionTargets">

+  </ImportGroup>

+</Project>

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_tls_mutual_auth/WIN32.vcxproj.filters b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_tls_mutual_auth/WIN32.vcxproj.filters
new file mode 100644
index 0000000..beb5406
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_tls_mutual_auth/WIN32.vcxproj.filters
@@ -0,0 +1,786 @@
+<?xml version="1.0" encoding="utf-8"?>

+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

+  <ItemGroup>

+    <Filter Include="FreeRTOS">

+      <UniqueIdentifier>{af3445a1-4908-4170-89ed-39345d90d30c}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS\Source">

+      <UniqueIdentifier>{f32be356-4763-4cae-9020-974a2638cb08}</UniqueIdentifier>

+      <Extensions>*.c</Extensions>

+    </Filter>

+    <Filter Include="FreeRTOS\Source\Portable">

+      <UniqueIdentifier>{88f409e6-d396-4ac5-94bd-7a99c914be46}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+">

+      <UniqueIdentifier>{e5ad4ec7-23dc-4295-8add-2acaee488f5a}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS\Source\include">

+      <UniqueIdentifier>{d2dcd641-8d91-492b-852f-5563ffadaec6}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS+TCP">

+      <UniqueIdentifier>{8672fa26-b119-481f-8b8d-086419c01a3e}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS+TCP\portable">

+      <UniqueIdentifier>{4570be11-ec96-4b55-ac58-24b50ada980a}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS+TCP\include">

+      <UniqueIdentifier>{5d93ed51-023a-41ad-9243-8d230165d34b}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="DemoTasks">

+      <UniqueIdentifier>{b71e974a-9f28-4815-972b-d930ba8a34d0}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries">

+      <UniqueIdentifier>{60717407-397f-4ea5-8492-3314acdd25f0}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\standard">

+      <UniqueIdentifier>{8a90222f-d723-4b4e-8e6e-c57afaf7fa92}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\standard\common">

+      <UniqueIdentifier>{7c995f05-2a10-4771-ad77-18a755876e46}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\standard\common\include">

+      <UniqueIdentifier>{9a636cc3-ebc6-48c5-8c18-c72494686e81}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\standard\common\include\types">

+      <UniqueIdentifier>{29376c48-bc8b-4624-ad59-16807874c9f2}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\abstractions">

+      <UniqueIdentifier>{91ef4008-de51-4b41-ba5e-bf24d8cda378}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\abstractions\platform">

+      <UniqueIdentifier>{ade43c6c-04c5-4897-abdb-91af2df04e5d}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\abstractions\platform\freertos">

+      <UniqueIdentifier>{08a4e35c-19ca-4b1e-af24-bac368c2bf7b}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\abstractions\platform\freertos\include">

+      <UniqueIdentifier>{1e324500-91b4-4c76-b699-59ba75691760}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\abstractions\platform\freertos\include\platform">

+      <UniqueIdentifier>{bdcbc1ec-99b8-4c72-9075-49035c115488}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\standard\https">

+      <UniqueIdentifier>{2d17d5e6-ed70-4e42-9693-f7a63baf4948}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\standard\https\src">

+      <UniqueIdentifier>{7158b0be-01e7-42d1-8d3f-c75118a596a2}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\standard\https\include">

+      <UniqueIdentifier>{6ad56e6d-c330-4830-8f4b-c75b05dfa866}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\standard\https\include\types">

+      <UniqueIdentifier>{1d80b387-5a86-4744-a4cc-930033a52e4b}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\http-parser">

+      <UniqueIdentifier>{3dc958a5-cd64-4a6a-af27-beba20339e4b}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\mbedtls">

+      <UniqueIdentifier>{1cecca7f-60cd-4d8d-8123-f00aa75af147}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\mbedtls\include">

+      <UniqueIdentifier>{f9a2e0a1-ed56-4ca7-b8b2-d694a94c78c0}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\mbedtls\library">

+      <UniqueIdentifier>{61ac8e2c-8fd1-44a0-a7a9-0326bc190426}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\abstractions\mbedtls">

+      <UniqueIdentifier>{b53bfe50-b4d9-4b78-b7bb-ae90e4d25615}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\standard\platform">

+      <UniqueIdentifier>{d5bf72d9-1e71-4a65-ac2f-5f28a99b0796}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\standard\common\src">

+      <UniqueIdentifier>{b0616e09-2c08-40a1-aa2d-5cbd592e4451}</UniqueIdentifier>

+    </Filter>

+    <Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\standard\platform\types">

+      <UniqueIdentifier>{f1ad002c-d40b-465f-b648-17cedba667d1}</UniqueIdentifier>

+    </Filter>

+  </ItemGroup>

+  <ItemGroup>

+    <ClCompile Include="..\..\..\..\..\FreeRTOS\Source\portable\MSVC-MingW\port.c">

+      <Filter>FreeRTOS\Source\Portable</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\..\FreeRTOS\Source\timers.c">

+      <Filter>FreeRTOS\Source</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\..\FreeRTOS\Source\list.c">

+      <Filter>FreeRTOS\Source</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\..\FreeRTOS\Source\queue.c">

+      <Filter>FreeRTOS\Source</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\..\FreeRTOS\Source\tasks.c">

+      <Filter>FreeRTOS\Source</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_UDP_IP.c">

+      <Filter>FreeRTOS+\FreeRTOS+TCP</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_DHCP.c">

+      <Filter>FreeRTOS+\FreeRTOS+TCP</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_DNS.c">

+      <Filter>FreeRTOS+\FreeRTOS+TCP</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_Sockets.c">

+      <Filter>FreeRTOS+\FreeRTOS+TCP</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\portable\BufferManagement\BufferAllocation_2.c">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\portable</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\portable\NetworkInterface\WinPCap\NetworkInterface.c">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\portable</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_ARP.c">

+      <Filter>FreeRTOS+\FreeRTOS+TCP</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_IP.c">

+      <Filter>FreeRTOS+\FreeRTOS+TCP</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_TCP_IP.c">

+      <Filter>FreeRTOS+\FreeRTOS+TCP</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_TCP_WIN.c">

+      <Filter>FreeRTOS+\FreeRTOS+TCP</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\..\FreeRTOS\Source\event_groups.c">

+      <Filter>FreeRTOS\Source</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\..\FreeRTOS\Source\portable\MemMang\heap_4.c">

+      <Filter>FreeRTOS\Source\Portable</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_Stream_Buffer.c">

+      <Filter>FreeRTOS+\FreeRTOS+TCP</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\https\src\iot_https_client.c">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\https\src</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\https\src\iot_https_utils.c">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\https\src</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\iot_clock_freertos.c">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\abstractions\platform\freertos</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\iot_threads_freertos.c">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\abstractions\platform\freertos</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\iot_network_freertos.c">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\abstractions\platform\freertos</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\http-parser\http_parser.c">

+      <Filter>FreeRTOS+\http-parser</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\aes.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\aesni.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\arc4.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\aria.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\asn1parse.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\asn1write.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\base64.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\bignum.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\blowfish.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\camellia.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ccm.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\certs.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\chacha20.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\chachapoly.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\cipher.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\cipher_wrap.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\cmac.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ctr_drbg.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\debug.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\des.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\dhm.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ecdh.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ecdsa.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ecjpake.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ecp.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ecp_curves.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\entropy.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\entropy_poll.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\error.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\gcm.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\havege.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\hkdf.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\hmac_drbg.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\md.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\md_wrap.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\md2.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\md4.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\md5.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\memory_buffer_alloc.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\net_sockets.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\nist_kw.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\oid.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\padlock.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\pem.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\pk.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\pk_wrap.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\pkcs5.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\pkcs11.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\pkcs12.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\pkparse.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\pkwrite.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\platform.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\platform_util.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\poly1305.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ripemd160.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\rsa.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\rsa_internal.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\sha1.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\sha256.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\sha512.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ssl_cache.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ssl_ciphersuites.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ssl_cli.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ssl_cookie.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ssl_srv.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ssl_ticket.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\ssl_tls.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\threading.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\timing.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\version.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\version_features.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\x509.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\x509_create.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\x509_crl.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\x509_crt.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\x509_csr.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\x509write_crt.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\x509write_csr.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\mbedtls\library\xtea.c">

+      <Filter>FreeRTOS+\mbedtls\library</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\mbedtls\mbedtls_platform_freertos.c">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\abstractions\mbedtls</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\iot_taskpool_freertos.c">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\common\src</Filter>

+    </ClCompile>

+    <ClCompile Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\common\src\iot_logging.c">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\common\src</Filter>

+    </ClCompile>

+    <ClCompile Include="..\common\demo_logging.c" />

+    <ClCompile Include="..\common\main.c" />

+    <ClCompile Include="..\common\DemoTasks\SimpleHTTPSExamples.c">

+      <Filter>DemoTasks</Filter>

+    </ClCompile>

+  </ItemGroup>

+  <ItemGroup>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\NetworkInterface.h">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_DNS.h">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_Sockets.h">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_UDP_IP.h">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\timers.h">

+      <Filter>FreeRTOS\Source\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\event_groups.h">

+      <Filter>FreeRTOS\Source\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\FreeRTOS.h">

+      <Filter>FreeRTOS\Source\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\queue.h">

+      <Filter>FreeRTOS\Source\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\semphr.h">

+      <Filter>FreeRTOS\Source\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\task.h">

+      <Filter>FreeRTOS\Source\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\portable\MSVC-MingW\portmacro.h">

+      <Filter>FreeRTOS\Source\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_IP_Private.h">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\NetworkBufferManagement.h">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_ARP.h">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_DHCP.h">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_IP.h">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_TCP_IP.h">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_TCP_WIN.h">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOSIPConfigDefaults.h">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\IPTraceMacroDefaults.h">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>

+    </ClInclude>

+    <ClInclude Include="FreeRTOSConfig.h" />

+    <ClInclude Include="FreeRTOSIPConfig.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_Stream_Buffer.h">

+      <Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\portable.h">

+      <Filter>FreeRTOS\Source\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\..\FreeRTOS\Source\include\projdefs.h">

+      <Filter>FreeRTOS\Source\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\include\iot_taskpool_freertos.h">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\common\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\include\types\iot_taskpool_types_freertos.h">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\common\include\types</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\common\include\iot_error.h">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\common\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\common\include\iot_logging.h">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\common\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\common\include\iot_static_memory.h">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\common\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\common\src\private\iot_taskpool_internal.h">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\common\include</Filter>

+    </ClInclude>

+    <ClInclude Include="iot_config.h" />

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\https\include\iot_https_client.h">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\https\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\standard\https\include\types\iot_https_types.h">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\https\include\types</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\platform\freertos\include\platform\iot_platform_types_freertos.h">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\abstractions\platform\freertos\include\platform</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\http-parser\http_parser.h">

+      <Filter>FreeRTOS+\http-parser</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\aes.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\aesni.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\arc4.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\aria.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\asn1.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\asn1write.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\base64.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\bignum.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\blowfish.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\bn_mul.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\camellia.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ccm.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\certs.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\chacha20.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\chachapoly.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\check_config.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\cipher.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\cipher_internal.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\cmac.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\compat-1.3.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\config.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ctr_drbg.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\debug.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\des.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\dhm.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ecdh.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ecdsa.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ecjpake.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ecp.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ecp_internal.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\entropy.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\entropy_poll.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\error.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\gcm.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\havege.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\hkdf.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\hmac_drbg.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\md.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\md_internal.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\md2.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\md4.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\md5.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\memory_buffer_alloc.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\net.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\net_sockets.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\nist_kw.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\oid.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\padlock.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\pem.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\pk.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\pk_internal.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\pkcs5.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\pkcs11.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\pkcs12.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\platform.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\platform_time.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\platform_util.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\poly1305.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\psa_util.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ripemd160.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\rsa.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\rsa_internal.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\sha1.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\sha256.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\sha512.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ssl.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ssl_cache.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ssl_ciphersuites.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ssl_cookie.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ssl_internal.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\ssl_ticket.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\threading.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\timing.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\version.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\x509.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\x509_crl.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\x509_crt.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\x509_csr.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\mbedtls\include\mbedtls\xtea.h">

+      <Filter>FreeRTOS+\mbedtls\include</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\abstractions\mbedtls\threading_alt.h">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\abstractions\mbedtls</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\platform\types\iot_platform_types.h">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\platform\types</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\platform\iot_clock.h">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\platform</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\platform\iot_metrics.h">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\platform</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\platform\iot_network.h">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\platform</Filter>

+    </ClInclude>

+    <ClInclude Include="..\..\..\..\Source\FreeRTOS-IoT-Libraries\c_sdk\platform\iot_threads.h">

+      <Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\platform</Filter>

+    </ClInclude>

+    <ClInclude Include="..\common\mbedtls_config.h" />

+    <ClInclude Include="demo_config.h" />

+    <ClInclude Include="..\..\include\aws_iot_demo_profile.h" />

+  </ItemGroup>

+</Project>

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_tls_mutual_auth/demo_config.h b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_tls_mutual_auth/demo_config.h
new file mode 100644
index 0000000..1e28638
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_tls_mutual_auth/demo_config.h
@@ -0,0 +1,78 @@
+/*

+ * FreeRTOS Kernel V10.2.1

+ * 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://www.FreeRTOS.org

+ * http://aws.amazon.com/freertos

+ *

+ * 1 tab == 4 spaces!

+ */

+

+#ifndef DEMO_CONFIG_H

+#define DEMO_CONFIG_H

+

+/*

+ * This configuration file determines how the HTTPS demo is run.

+ *

+ * http_plain_text demo: Security is turned off. Preconfigured to a public HTTP

+ * host on unencrypted port so no authentication configuration is required.

+ *

+ * https_basic_tls_server_auth demo: TLS security is enabled, allowing host

+ * side authentication. Preconfigured to a public HTTPS host with certificate

+ * provided by the host so no authentication configuration is required.

+ *

+ * https_tls_mutual_auth demo: Mutual authentication is enabled. Preconfigured to

+ * AWS IoT broker, will require certificate setup for successful connection.

+ */

+

+/**

+ * @brief Enable/Disable TLS in demos.

+ *

+ * For more information regarding TLS protocol:

+ * https://www.freertos.org/https/tls.html

+ */

+#define democonfigENABLE_TLS			 1

+

+/**

+ * @brief Enable/Disable mutual authentication in demos. If enabled, require

+ * democonfigENABLE_TLS to be set to 1.

+ */

+#define democonfigENABLE_MUTUAL_AUTH	 1

+

+/**

+ * @brief Select a connection profile.

+ *

+ * If set to 1, the demo will connect to AWS IoT with credential setup in

+ * aws_iot_demo_profile.h file, otherwise the demo is preconfigured to connect to

+ * httpbin.org with credential setup in https_demo_profile.h file. If enabled,

+ * requires democonfigENABLE_MUTUAL_AUTH to be set to 1 since AWS IoT requires

+ * mutually authenticated connection.

+ */

+#define democonfigPROFILE_USE_AWS_IOT	 1

+

+/**

+ * @brief Set the stack size of the main demo task.

+ *

+ * In the Windows port, this stack only holds a structure. The actual

+ * stack is created by an operating system thread.

+ */

+#define democonfigDEMO_STACKSIZE	    configMINIMAL_STACK_SIZE

+

+#endif /* DEMO_CONFIG_H */

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_tls_mutual_auth/https_tls_mutual_auth_demo.sln b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_tls_mutual_auth/https_tls_mutual_auth_demo.sln
new file mode 100644
index 0000000..b362f36
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_tls_mutual_auth/https_tls_mutual_auth_demo.sln
@@ -0,0 +1,23 @@
+

+Microsoft Visual Studio Solution File, Format Version 11.00

+# Visual Studio 2010

+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RTOSDemo", "WIN32.vcxproj", "{C686325E-3261-42F7-AEB1-DDE5280E1CEB}"

+EndProject

+Global

+	GlobalSection(TestCaseManagementSettings) = postSolution

+		CategoryFile = FreeRTOS_Plus_TCP_Minimal.vsmdi

+	EndGlobalSection

+	GlobalSection(SolutionConfigurationPlatforms) = preSolution

+		Debug|Win32 = Debug|Win32

+		Release|Win32 = Release|Win32

+	EndGlobalSection

+	GlobalSection(ProjectConfigurationPlatforms) = postSolution

+		{C686325E-3261-42F7-AEB1-DDE5280E1CEB}.Debug|Win32.ActiveCfg = Debug|Win32

+		{C686325E-3261-42F7-AEB1-DDE5280E1CEB}.Debug|Win32.Build.0 = Debug|Win32

+		{C686325E-3261-42F7-AEB1-DDE5280E1CEB}.Release|Win32.ActiveCfg = Release|Win32

+		{C686325E-3261-42F7-AEB1-DDE5280E1CEB}.Release|Win32.Build.0 = Release|Win32

+	EndGlobalSection

+	GlobalSection(SolutionProperties) = preSolution

+		HideSolutionNode = FALSE

+	EndGlobalSection

+EndGlobal

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_tls_mutual_auth/iot_config.h b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_tls_mutual_auth/iot_config.h
new file mode 100644
index 0000000..0666b8f
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/https_tls_mutual_auth/iot_config.h
@@ -0,0 +1,171 @@
+/*

+ * 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.

+ */

+

+/* This file contains configuration settings for the demos. */

+

+#ifndef IOT_CONFIG_H_

+#define IOT_CONFIG_H_

+

+/* Configure the IoT Libraries for FreeRTOS by including the FreeRTOS header and

+ * the FreeRTOS platform types. */

+#include "FreeRTOS.h"

+#include "platform/iot_platform_types_freertos.h"

+

+/**

+ * @brief Set a global default for log levels.

+ *

+ * This setting is overridden by log level settings of specific libraries.

+ * Undefined library-specific log levels will default to this value.

+ *

+ * Possible values: One of the Log levels.

+ * Default value (if undefined): IOT_LOG_NONE.

+ */

+#define IOT_LOG_LEVEL_GLOBAL                    IOT_LOG_NONE

+

+/**

+ * @brief Set the log level of the platform libraries except the network

+ * component.

+ *

+ * Log messages from the platform libraries at or below this setting

+ * will be printed. As the network component is more verbose, its logging

+ * is controlled by its own setting, IOT_LOG_LEVEL_NETWORK.

+ *

+ * Possible values: One of the Log levels.

+ * Default value (if undefined): IOT_LOG_LEVEL_GLOBAL; if that is undefined,

+ * then IOT_LOG_NONE.

+ */

+#define IOT_LOG_LEVEL_PLATFORM                  IOT_LOG_NONE

+

+/**

+ * @brief Set the log level of the platform network library.

+ *

+ * Log messages from the platform network library at or below this setting

+ * will be printed.

+ *

+ * Possible values: One of the Log levels.

+ * Default value (if undefined): IOT_LOG_LEVEL_GLOBAL; if that is undefined,

+ * then IOT_LOG_NONE.

+ */

+#define IOT_LOG_LEVEL_NETWORK                   IOT_LOG_WARN

+

+/*

+ * @brief Set the log level of the task pool library.

+ *

+ * Log messages from the task pool library at or below this setting will be

+ * printed.

+ *

+ * Possible values: One of the Log levels.

+ * Default value (if undefined): IOT_LOG_LEVEL_GLOBAL; if that is undefined,

+ * then IOT_LOG_NONE.

+ */

+#define IOT_LOG_LEVEL_TASKPOOL                  IOT_LOG_WARN

+

+/**

+ * @brief Set the log level of the HTTPS Client library.

+ *

+ * Log messages from the HTTPS Client library at or below this setting will be printed.

+ *

+ * Possible values: One of the Log levels.

+ * Default value (if undefined): IOT_LOG_LEVEL_GLOBAL; if that is undefined,

+ * then IOT_LOG_NONE.

+ */

+#define IOT_LOG_LEVEL_HTTPS                     IOT_LOG_WARN

+

+/**

+ * @brief Enable/Disable asserts for the task pool library.

+ *

+ * Set this to 1 to perform sanity checks when using the task pool library.

+ * Asserts are useful for debugging, but should be disabled in production code.

+ * If this is set to 1, IotTaskPool_Assert can be defined to set the assertion

+ * function; otherwise, the standard library's assert function will be used.

+ *

+ * Possible values: 0 (asserts disabled) or 1 (asserts enabled)

+ * Recommended values: 1 when debugging; 0 in production code.

+ * Default value (if undefined): 0

+ */

+#define IOT_TASKPOOL_ENABLE_ASSERTS             1

+

+/**

+ * @brief The number of worker tasks in the task pool.

+ *

+ * The full IoT Task Pool Library has many use cases, including Linux

+ * development. Typical FreeRTOS use cases do not require the full

+ * functionality so an optimized implementation is provided specifically for use

+ * with FreeRTOS. The optimized version has a fixed number of tasks in the

+ * task pool, each of which uses statically allocated memory to ensure creation

+ * of the task pool is guaranteed (it does not run out of heap space).

+ */

+#define IOT_TASKPOOL_NUMBER_OF_WORKERS          1

+

+/**

+ * @brief The stack size (in bytes) for each worker task in the task pool.

+ *

+ * The minimal version of the of task pool library only supports one task pool

+ * and the configuration of each worker task fixed at the compile time.

+ */

+#define IOT_TASKPOOL_WORKER_STACK_SIZE_BYTES    2048

+

+/**

+ * @brief Enable TLS in the network abstraction.

+ *

+ * The TLS implementation requires the mbed TLS library.

+ */

+#define IOT_NETWORK_ENABLE_TLS                  1

+

+/**

+ * @brief Enable/Disable asserts for the linear containers library.

+ *

+ * Set this to 1 to perform sanity checks when using the linear containers library.

+ * Asserts are useful for debugging, but should be disabled in production code.

+ * If this is set to 1, IotContainers_Assert can be defined to set the assertion

+ * function; otherwise, the standard library's assert function will be used.

+ *

+ * Possible values: 0 (asserts disabled) or 1 (asserts enabled)

+ * Recommended values: 1 when debugging; 0 in production code.

+ * Default value (if undefined): 0

+ */

+#define IOT_CONTAINERS_ENABLE_ASSERTS           1

+

+/* Common settings for FreeRTOS; settings below this line generally do not need

+ * to be changed. */

+

+/* Logging puts function on FreeRTOS. */

+#define IotLogging_Puts( str )                configPRINTF( ( "%s\r\n", str ) )

+

+/* Assert functions on FreeRTOS. */

+#define IotContainers_Assert( expression )    configASSERT( expression )

+#define IotTaskPool_Assert( expression )      configASSERT( expression )

+

+/* Memory allocation functions on FreeRTOS. */

+#define IotThreads_Malloc               pvPortMalloc

+#define IotThreads_Free                 vPortFree

+

+#define IotLogging_Malloc               pvPortMalloc

+#define IotLogging_Free                 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

+

+#endif /* ifndef IOT_CONFIG_H_ */

diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/readme.txt b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/readme.txt
new file mode 100644
index 0000000..e3e15fa
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/https/readme.txt
@@ -0,0 +1,24 @@
+See https://freertos.org/https/ for further information.

+

+Contains projects that demonstrate the IoT HTTPS library.

+

+- Securing HTTPS Communication -

+The Hypertext Transfer Protocol (HTTP) is a widely used protocol for application

+such as home media to interact with web servers. The Hypertext Transfer Protocol

+Secure (HTTPS) is an extension to HTTP, adding secure element to the connection.

+HTTPS is encrypted with Transport Layer Security (TLS), which also requires server

+authentication. In addition to server authentication, mutual authentication

+authenticates the identity of both the server and the client.

+

+- Pre-configured HTTPS Example Projects -

+The examples contained in subdirectories from here demonstrate the concepts

+described above one at a time.  The first example demonstrates plain text

+HTTP (insecure) communication, the second example builds on the first to

+introduce weak server authentication, and the third example builds on the second to

+introduce strong mutual authentication.  Note:  It is our recommendation to always

+use strong mutual authentication in any Internet of Things (IoT) application.  The

+plain text project is only provided to validate HTTP communication can be

+established prior to introducing encryption and authentication, and to allow the

+HTTP packets to be observed using a network packet sniffer such as Wireshark for

+those who wish to do so.  The first two projects are in no way intended to be

+examples suitable for production use.