Add cellular library submodule path and demo (#695)
* [Cellular] Add cellulr lib submodule and demo app * [Cellular] Fix memory violation in transport layer and add using LoggingPrintf * Update FreeRTOS Cellular Interface * Change the mbedtls usage in FreeRTOS-Plus * [Cellular] Fix missing spell * [Cellular] Add manifest.yml * Fix missing spell * Update manifest.yml * [Cellular] Add integration test * Modify the demo log level to LOG_INFO * Update cellular interface * The modification of the folder structure for cellular library * Rename the naming of demo * Adjust the location of using_mbedtls and socket_wrapper * Adjust project setting for relocating using_mbedtls and socket_wrapper * Turn off PSM mode * Add start marker for CI validation. * The modification for mbedtls platform send/recv function for cellular * Change the project file due to the changes of mbedtls platform send/recv function for cellular * Fix missing newline and remove unused file * Add missing configuration. * Make cellular and freertos tcp plus use the same transport implementation * Add comment for the macro MBEDTLS_SSL_SEND and MBEDTLS_SSL_RECV * Make changes from the github comment.pull/704/head
parent
223d2d0e21
commit
957fb26dbe
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,233 @@
|
||||
/*
|
||||
* FreeRTOS V202107.00
|
||||
* Copyright (C) 2020 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.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*/
|
||||
|
||||
#include <stdbool.h>
|
||||
|
||||
#include "cellular_platform.h"
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
typedef QueueHandle_t SemaphoreHandle_t;
|
||||
|
||||
typedef struct threadInfo
|
||||
{
|
||||
void * pArgument; /**< @brief Argument to `threadRoutine`. */
|
||||
void ( * threadRoutine )( void * ); /**< @brief Thread function to run. */
|
||||
} threadInfo_t;
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* @brief Sends provided buffer to network using transport send.
|
||||
*
|
||||
* @param[in] pArgument Argument passed to threadRoutine function.
|
||||
*
|
||||
*/
|
||||
static void prvThreadRoutineWrapper( void * pArgument );
|
||||
|
||||
/**
|
||||
* @brief Lock mutex with timeout.
|
||||
*
|
||||
* @param[in] pMutex Mutex to lock.
|
||||
* @param[in] timeout Timeout value to lock mutex.
|
||||
*
|
||||
* @return true if mutex is locked successfully. Otherwise false.
|
||||
*/
|
||||
static bool prIotMutexTimedLock( PlatformMutex_t * pMutex,
|
||||
TickType_t timeout );
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static void prvThreadRoutineWrapper( void * pArgument )
|
||||
{
|
||||
threadInfo_t * pThreadInfo = ( threadInfo_t * ) pArgument;
|
||||
|
||||
/* Run the thread routine. */
|
||||
pThreadInfo->threadRoutine( pThreadInfo->pArgument );
|
||||
Platform_Free( pThreadInfo );
|
||||
|
||||
vTaskDelete( NULL );
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static bool prIotMutexTimedLock( PlatformMutex_t * pMutex,
|
||||
TickType_t timeout )
|
||||
{
|
||||
BaseType_t lockResult = pdTRUE;
|
||||
|
||||
configASSERT( pMutex != NULL );
|
||||
|
||||
LogDebug( ( "Locking mutex %p.", pMutex ) );
|
||||
|
||||
/* Call the correct FreeRTOS mutex take function based on mutex type. */
|
||||
if( pMutex->recursive == pdTRUE )
|
||||
{
|
||||
lockResult = xSemaphoreTakeRecursive( ( SemaphoreHandle_t ) &pMutex->xMutex, timeout );
|
||||
}
|
||||
else
|
||||
{
|
||||
lockResult = xSemaphoreTake( ( SemaphoreHandle_t ) &pMutex->xMutex, timeout );
|
||||
}
|
||||
|
||||
return( lockResult == pdTRUE );
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
bool Platform_CreateDetachedThread( void ( * threadRoutine )( void * ),
|
||||
void * pArgument,
|
||||
int32_t priority,
|
||||
size_t stackSize )
|
||||
{
|
||||
bool status = true;
|
||||
threadInfo_t * pThreadInfo = NULL;
|
||||
|
||||
configASSERT( threadRoutine != NULL );
|
||||
|
||||
LogDebug( ( "Creating new thread." ) );
|
||||
|
||||
pThreadInfo = Platform_Malloc( sizeof( threadInfo_t ) );
|
||||
|
||||
if( pThreadInfo == NULL )
|
||||
{
|
||||
LogDebug( ( "Unable to allocate memory for threadRoutine %p.", threadRoutine ) );
|
||||
status = false;
|
||||
}
|
||||
|
||||
/* Create the FreeRTOS task that will run the thread. */
|
||||
if( status == true )
|
||||
{
|
||||
pThreadInfo->threadRoutine = threadRoutine;
|
||||
pThreadInfo->pArgument = pArgument;
|
||||
|
||||
if( xTaskCreate( prvThreadRoutineWrapper,
|
||||
"Cellular_Thread",
|
||||
( configSTACK_DEPTH_TYPE ) stackSize,
|
||||
pThreadInfo,
|
||||
priority,
|
||||
NULL ) != pdPASS )
|
||||
{
|
||||
/* Task creation failed. */
|
||||
LogWarn( ( "Failed to create thread." ) );
|
||||
Platform_Free( pThreadInfo );
|
||||
status = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
LogDebug( ( "New thread created." ) );
|
||||
}
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
bool PlatformMutex_Create( PlatformMutex_t * pNewMutex,
|
||||
bool recursive )
|
||||
{
|
||||
SemaphoreHandle_t xSemaphore = NULL;
|
||||
bool retMutexCreate = false;
|
||||
|
||||
configASSERT( pNewMutex != NULL );
|
||||
|
||||
LogDebug( ( "Creating new mutex %p.", pNewMutex ) );
|
||||
|
||||
if( recursive == true )
|
||||
{
|
||||
xSemaphore = xSemaphoreCreateRecursiveMutexStatic( &pNewMutex->xMutex );
|
||||
}
|
||||
else
|
||||
{
|
||||
xSemaphore = xSemaphoreCreateMutexStatic( &pNewMutex->xMutex );
|
||||
}
|
||||
|
||||
/* Remember the type of mutex. */
|
||||
if( recursive == true )
|
||||
{
|
||||
pNewMutex->recursive = pdTRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
pNewMutex->recursive = pdFALSE;
|
||||
}
|
||||
|
||||
/* Check the handle value returned by the mutex create function. */
|
||||
if( xSemaphore == NULL )
|
||||
{
|
||||
retMutexCreate = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
retMutexCreate = true;
|
||||
}
|
||||
|
||||
return retMutexCreate;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void PlatformMutex_Destroy( PlatformMutex_t * pMutex )
|
||||
{
|
||||
configASSERT( pMutex != NULL );
|
||||
|
||||
vSemaphoreDelete( ( SemaphoreHandle_t ) &pMutex->xMutex );
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void PlatformMutex_Lock( PlatformMutex_t * pMutex )
|
||||
{
|
||||
prIotMutexTimedLock( pMutex, portMAX_DELAY );
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
bool PlatformMutex_TryLock( PlatformMutex_t * pMutex )
|
||||
{
|
||||
return prIotMutexTimedLock( pMutex, 0 );
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void PlatformMutex_Unlock( PlatformMutex_t * pMutex )
|
||||
{
|
||||
configASSERT( pMutex != NULL );
|
||||
|
||||
LogDebug( ( "Unlocking mutex %p.", pMutex ) );
|
||||
|
||||
/* Call the correct FreeRTOS mutex unlock function based on mutex type. */
|
||||
if( pMutex->recursive == pdTRUE )
|
||||
{
|
||||
( void ) xSemaphoreGiveRecursive( ( SemaphoreHandle_t ) &pMutex->xMutex );
|
||||
}
|
||||
else
|
||||
{
|
||||
( void ) xSemaphoreGive( ( SemaphoreHandle_t ) &pMutex->xMutex );
|
||||
}
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------*/
|
@ -0,0 +1,169 @@
|
||||
/*
|
||||
* FreeRTOS V202107.00
|
||||
* Copyright (C) 2020 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.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*/
|
||||
|
||||
#ifndef __CELLULAR_PLATFORM_H__
|
||||
#define __CELLULAR_PLATFORM_H__
|
||||
|
||||
#include "FreeRTOS.h"
|
||||
#include "queue.h"
|
||||
#include "semphr.h"
|
||||
#include "event_groups.h"
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* @brief Cellular library log configuration.
|
||||
*
|
||||
* Cellular library use CellularLogLevel macro for logging.
|
||||
* The prototye of these logging function is similar with printf with return type ignored.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "logging_levels.h"
|
||||
#ifndef LIBRARY_LOG_NAME
|
||||
#define LIBRARY_LOG_NAME "CELLULAR"
|
||||
#endif
|
||||
|
||||
|
||||
/* Prototype for the function used to print to console on Windows simulator
|
||||
* of FreeRTOS.
|
||||
* The function prints to the console before the network is connected;
|
||||
* then a UDP port after the network has connected. */
|
||||
extern void vLoggingPrintf( const char * pcFormatString,
|
||||
... );
|
||||
|
||||
/* Map the SdkLog macro to the logging function to enable logging
|
||||
* on Windows simulator. */
|
||||
#ifndef SdkLog
|
||||
#define SdkLog( message ) vLoggingPrintf message
|
||||
#endif
|
||||
|
||||
#ifndef LIBRARY_LOG_LEVEL
|
||||
#define LIBRARY_LOG_LEVEL LOG_ERROR
|
||||
#endif
|
||||
#include "logging_stack.h"
|
||||
|
||||
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* @brief Cellular library platform thread API and configuration.
|
||||
*
|
||||
* Cellular library create a detached thread by this API.
|
||||
* The threadRoutine should be called with pArgument in the created thread.
|
||||
*
|
||||
* PLATFORM_THREAD_DEFAULT_STACK_SIZE and PLATFORM_THREAD_DEFAULT_PRIORITY defines
|
||||
* the platform related stack size and priority.
|
||||
*/
|
||||
|
||||
bool Platform_CreateDetachedThread( void ( * threadRoutine )( void * ),
|
||||
void * pArgument,
|
||||
int32_t priority,
|
||||
size_t stackSize );
|
||||
|
||||
#define PLATFORM_THREAD_DEFAULT_STACK_SIZE ( 2048U )
|
||||
#define PLATFORM_THREAD_DEFAULT_PRIORITY ( tskIDLE_PRIORITY + 5U )
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* @brief Cellular library platform mutex APIs.
|
||||
*
|
||||
* Cellular library use platform mutex to protect resource.
|
||||
*
|
||||
* The IotMutex_ functions can be referenced as function prototype for
|
||||
* PlatfromMutex_ prefix function in the following link.
|
||||
* https://docs.aws.amazon.com/freertos/latest/lib-ref/c-sdk/platform/platform_threads_functions.html
|
||||
*
|
||||
*/
|
||||
|
||||
typedef struct PlatformMutex
|
||||
{
|
||||
StaticSemaphore_t xMutex; /**< FreeRTOS mutex. */
|
||||
BaseType_t recursive; /**< Type; used for indicating if this is reentrant or normal. */
|
||||
} PlatformMutex_t;
|
||||
|
||||
bool PlatformMutex_Create( PlatformMutex_t * pNewMutex,
|
||||
bool recursive );
|
||||
void PlatformMutex_Destroy( PlatformMutex_t * pMutex );
|
||||
void PlatformMutex_Lock( PlatformMutex_t * pMutex );
|
||||
bool PlatformMutex_TryLock( PlatformMutex_t * pMutex );
|
||||
void PlatformMutex_Unlock( PlatformMutex_t * pMutex );
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* @brief Cellular library platform memory allocation APIs.
|
||||
*
|
||||
* Cellular library use platform memory allocation APIs to allocate memory dynamically.
|
||||
* The FreeRTOS memory management document can be referenced for these APIs.
|
||||
* https://www.freertos.org/a00111.html
|
||||
*
|
||||
*/
|
||||
|
||||
#define Platform_Malloc pvPortMalloc
|
||||
#define Platform_Free vPortFree
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* @brief Cellular library platform event group APIs.
|
||||
*
|
||||
* Cellular library use platform event group for process synchronization.
|
||||
*
|
||||
* The EventGroup functions in the following link can be referenced as function prototype.
|
||||
* https://www.freertos.org/event-groups-API.html
|
||||
*
|
||||
*/
|
||||
|
||||
#define PlatformEventGroupHandle_t EventGroupHandle_t
|
||||
#define PlatformEventGroup_Delete vEventGroupDelete
|
||||
#define PlatformEventGroup_ClearBits xEventGroupClearBits
|
||||
#define PlatformEventGroup_Create xEventGroupCreate
|
||||
#define PlatformEventGroup_GetBits xEventGroupGetBits
|
||||
#define PlatformEventGroup_SetBits xEventGroupSetBits
|
||||
#define PlatformEventGroup_SetBitsFromISR xEventGroupSetBitsFromISR
|
||||
#define PlatformEventGroup_WaitBits xEventGroupWaitBits
|
||||
#define PlatformEventGroup_EventBits EventBits_t
|
||||
#define PlatformTickType TickType_t
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* @brief Cellular library platform delay function.
|
||||
*
|
||||
* Cellular library use platform delay function for waiting events.
|
||||
*
|
||||
* The delay functions in the following link can be referenced as function prototype.
|
||||
* https://www.freertos.org/a00127.html
|
||||
*
|
||||
*/
|
||||
#define Platform_Delay( delayMs ) vTaskDelay( pdMS_TO_TICKS( delayMs ) )
|
||||
|
||||
#endif /* __CELLULAR_PLATFORM_H__ */
|
@ -0,0 +1,217 @@
|
||||
/*
|
||||
* FreeRTOS V202107.00
|
||||
* Copyright (C) 2020 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.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file cellular_setup.c
|
||||
* @brief Setup cellular connectivity for board with cellular module.
|
||||
*/
|
||||
|
||||
/* FreeRTOS include. */
|
||||
#include <FreeRTOS.h>
|
||||
#include "task.h"
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
|
||||
/* Demo Specific configs. */
|
||||
#include "demo_config.h"
|
||||
|
||||
/* The config header is always included first. */
|
||||
#ifndef CELLULAR_DO_NOT_USE_CUSTOM_CONFIG
|
||||
/* Include custom config file before other headers. */
|
||||
#include "cellular_config.h"
|
||||
#endif
|
||||
#include "cellular_config_defaults.h"
|
||||
#include "cellular_types.h"
|
||||
#include "cellular_api.h"
|
||||
#include "cellular_comm_interface.h"
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
#ifndef CELLULAR_APN
|
||||
#error "CELLULAR_APN is not defined in cellular_config.h"
|
||||
#endif
|
||||
|
||||
#define CELLULAR_SIM_CARD_WAIT_INTERVAL_MS ( 500UL )
|
||||
#define CELLULAR_MAX_SIM_RETRY ( 5U )
|
||||
|
||||
#define CELLULAR_PDN_CONNECT_WAIT_INTERVAL_MS ( 1000UL )
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/* the default Cellular comm interface in system. */
|
||||
extern CellularCommInterface_t CellularCommInterface;
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/* Secure socket needs application to provide the cellular handle and pdn context id. */
|
||||
/* User of secure sockets cellular should provide this variable. */
|
||||
CellularHandle_t CellularHandle = NULL;
|
||||
|
||||
/* User of secure sockets cellular should provide this variable. */
|
||||
uint8_t CellularSocketPdnContextId = CELLULAR_PDN_CONTEXT_ID;
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
bool setupCellular( void )
|
||||
{
|
||||
bool cellularRet = true;
|
||||
CellularError_t cellularStatus = CELLULAR_SUCCESS;
|
||||
CellularSimCardStatus_t simStatus = { 0 };
|
||||
CellularServiceStatus_t serviceStatus = { 0 };
|
||||
CellularCommInterface_t * pCommIntf = &CellularCommInterface;
|
||||
uint8_t tries = 0;
|
||||
CellularPdnConfig_t pdnConfig = { CELLULAR_PDN_CONTEXT_IPV4, CELLULAR_PDN_AUTH_NONE, CELLULAR_APN, "", "" };
|
||||
CellularPdnStatus_t PdnStatusBuffers = { 0 };
|
||||
char localIP[ CELLULAR_IP_ADDRESS_MAX_SIZE ] = { '\0' };
|
||||
uint32_t timeoutCountLimit = ( CELLULAR_PDN_CONNECT_TIMEOUT / CELLULAR_PDN_CONNECT_WAIT_INTERVAL_MS ) + 1U;
|
||||
uint32_t timeoutCount = 0;
|
||||
uint8_t NumStatus = 1;
|
||||
CellularPsmSettings_t psmSettings = { 0 };
|
||||
|
||||
/* Initialize Cellular Comm Interface. */
|
||||
cellularStatus = Cellular_Init( &CellularHandle, pCommIntf );
|
||||
|
||||
if( cellularStatus == CELLULAR_SUCCESS )
|
||||
{
|
||||
/* wait until SIM is ready */
|
||||
for( tries = 0; tries < CELLULAR_MAX_SIM_RETRY; tries++ )
|
||||
{
|
||||
cellularStatus = Cellular_GetSimCardStatus( CellularHandle, &simStatus );
|
||||
|
||||
if( ( cellularStatus == CELLULAR_SUCCESS ) &&
|
||||
( ( simStatus.simCardState == CELLULAR_SIM_CARD_INSERTED ) &&
|
||||
( simStatus.simCardLockState == CELLULAR_SIM_CARD_READY ) ) )
|
||||
{
|
||||
/* Turn of PSM because this is demo to showcase MQTT instead of PSM mode. */
|
||||
psmSettings.mode = 0;
|
||||
cellularStatus = cellularStatus = Cellular_SetPsmSettings( CellularHandle, &psmSettings );
|
||||
|
||||
if( cellularStatus != CELLULAR_SUCCESS )
|
||||
{
|
||||
configPRINTF( ( ">>> Cellular_SetPsmSettings failure <<<\r\n" ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
configPRINTF( ( ">>> Cellular SIM okay <<<\r\n" ) );
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
configPRINTF( ( ">>> Cellular SIM card state %d, Lock State %d <<<\r\n",
|
||||
simStatus.simCardState,
|
||||
simStatus.simCardLockState ) );
|
||||
}
|
||||
|
||||
vTaskDelay( pdMS_TO_TICKS( CELLULAR_SIM_CARD_WAIT_INTERVAL_MS ) );
|
||||
}
|
||||
}
|
||||
|
||||
/* Setup the PDN config. */
|
||||
if( cellularStatus == CELLULAR_SUCCESS )
|
||||
{
|
||||
cellularStatus = Cellular_SetPdnConfig( CellularHandle, CellularSocketPdnContextId, &pdnConfig );
|
||||
}
|
||||
else
|
||||
{
|
||||
configPRINTF( ( ">>> Cellular SIM failure <<<\r\n" ) );
|
||||
}
|
||||
|
||||
/* Rescan network. */
|
||||
if( cellularStatus == CELLULAR_SUCCESS )
|
||||
{
|
||||
cellularStatus = Cellular_RfOff( CellularHandle );
|
||||
}
|
||||
|
||||
if( cellularStatus == CELLULAR_SUCCESS )
|
||||
{
|
||||
cellularStatus = Cellular_RfOn( CellularHandle );
|
||||
}
|
||||
|
||||
/* Get service status. */
|
||||
if( cellularStatus == CELLULAR_SUCCESS )
|
||||
{
|
||||
while( timeoutCount < timeoutCountLimit )
|
||||
{
|
||||
cellularStatus = Cellular_GetServiceStatus( CellularHandle, &serviceStatus );
|
||||
|
||||
if( ( cellularStatus == CELLULAR_SUCCESS ) &&
|
||||
( ( serviceStatus.psRegistrationStatus == REGISTRATION_STATUS_REGISTERED_HOME ) ||
|
||||
( serviceStatus.psRegistrationStatus == REGISTRATION_STATUS_ROAMING_REGISTERED ) ) )
|
||||
{
|
||||
configPRINTF( ( ">>> Cellular module registered <<<\r\n" ) );
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
configPRINTF( ( ">>> Cellular GetServiceStatus failed %d, ps registration status %d <<<\r\n",
|
||||
cellularStatus, serviceStatus.psRegistrationStatus ) );
|
||||
}
|
||||
|
||||
timeoutCount++;
|
||||
|
||||
if( timeoutCount >= timeoutCountLimit )
|
||||
{
|
||||
cellularStatus = CELLULAR_INVALID_HANDLE;
|
||||
configPRINTF( ( ">>> Cellular module can't be registered <<<\r\n" ) );
|
||||
}
|
||||
|
||||
vTaskDelay( pdMS_TO_TICKS( CELLULAR_PDN_CONNECT_WAIT_INTERVAL_MS ) );
|
||||
}
|
||||
}
|
||||
|
||||
if( cellularStatus == CELLULAR_SUCCESS )
|
||||
{
|
||||
cellularStatus = Cellular_ActivatePdn( CellularHandle, CellularSocketPdnContextId );
|
||||
}
|
||||
|
||||
if( cellularStatus == CELLULAR_SUCCESS )
|
||||
{
|
||||
cellularStatus = Cellular_GetIPAddress( CellularHandle, CellularSocketPdnContextId, localIP, sizeof( localIP ) );
|
||||
}
|
||||
|
||||
if( cellularStatus == CELLULAR_SUCCESS )
|
||||
{
|
||||
cellularStatus = Cellular_GetPdnStatus( CellularHandle, &PdnStatusBuffers, CellularSocketPdnContextId, &NumStatus );
|
||||
}
|
||||
|
||||
if( ( cellularStatus == CELLULAR_SUCCESS ) && ( PdnStatusBuffers.state == 1 ) )
|
||||
{
|
||||
configPRINTF( ( ">>> Cellular module registered, IP address %s <<<\r\n", localIP ) );
|
||||
cellularRet = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
cellularRet = false;
|
||||
}
|
||||
|
||||
return cellularRet;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------*/
|
@ -0,0 +1,912 @@
|
||||
/*
|
||||
* FreeRTOS V202107.00
|
||||
* Copyright (C) 2020 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.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @file comm_if_windows.c
|
||||
* @brief Windows Simulator file for cellular comm interface
|
||||
*/
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/* Windows include file for COM port I/O. */
|
||||
#include <windows.h>
|
||||
|
||||
/* Platform layer includes. */
|
||||
#include "cellular_platform.h"
|
||||
|
||||
/* Cellular comm interface include file. */
|
||||
#include "cellular_config.h"
|
||||
#include "cellular_config_defaults.h"
|
||||
#include "cellular_comm_interface.h"
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/* Define the COM port used as comm interface. */
|
||||
#ifndef CELLULAR_COMM_INTERFACE_PORT
|
||||
#error "Define CELLULAR_COMM_INTERFACE_PORT in cellular_config.h"
|
||||
#endif
|
||||
#define CELLULAR_COMM_PATH "\\\\.\\"CELLULAR_COMM_INTERFACE_PORT
|
||||
|
||||
/* Define the simulated UART interrupt number. */
|
||||
#define portINTERRUPT_UART ( 2UL )
|
||||
|
||||
/* Define the read write buffer size. */
|
||||
#define COMM_TX_BUFFER_SIZE ( 8192 )
|
||||
#define COMM_RX_BUFFER_SIZE ( 8192 )
|
||||
|
||||
/* Receive thread timeout in ms. */
|
||||
#define COMM_RECV_THREAD_TIMEOUT ( 5000 )
|
||||
|
||||
/* Write operation timeout in ms. */
|
||||
#define COMM_WRITE_OPERATION_TIMEOUT ( 500 )
|
||||
|
||||
/* Comm status. */
|
||||
#define CELLULAR_COMM_OPEN_BIT ( 0x01U )
|
||||
|
||||
/* Comm task event. */
|
||||
#define COMMTASK_EVT_MASK_STARTED ( 0x0001UL )
|
||||
#define COMMTASK_EVT_MASK_ABORT ( 0x0002UL )
|
||||
#define COMMTASK_EVT_MASK_ABORTED ( 0x0004UL )
|
||||
#define COMMTASK_EVT_MASK_ALL_EVENTS \
|
||||
( COMMTASK_EVT_MASK_STARTED \
|
||||
| COMMTASK_EVT_MASK_ABORT \
|
||||
| COMMTASK_EVT_MASK_ABORTED )
|
||||
#define COMMTASK_POLLING_TIME_MS ( 1UL )
|
||||
|
||||
/* Platform thread stack size and priority. */
|
||||
#define COMM_IF_THREAD_DEFAULT_STACK_SIZE ( 2048U )
|
||||
#define COMM_IF_THREAD_DEFAULT_PRIORITY ( tskIDLE_PRIORITY + 5U )
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
typedef struct _cellularCommContext
|
||||
{
|
||||
CellularCommInterfaceReceiveCallback_t commReceiveCallback;
|
||||
HANDLE commReceiveCallbackThread;
|
||||
uint8_t commStatus;
|
||||
void * pUserData;
|
||||
HANDLE commFileHandle;
|
||||
CellularCommInterface_t * pCommInterface;
|
||||
bool commTaskThreadStarted;
|
||||
EventGroupHandle_t pCommTaskEvent;
|
||||
} _cellularCommContext_t;
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* @brief CellularCommInterfaceOpen_t implementation.
|
||||
*/
|
||||
static CellularCommInterfaceError_t _prvCommIntfOpen( CellularCommInterfaceReceiveCallback_t receiveCallback,
|
||||
void * pUserData,
|
||||
CellularCommInterfaceHandle_t * pCommInterfaceHandle );
|
||||
|
||||
/**
|
||||
* @brief CellularCommInterfaceSend_t implementation.
|
||||
*/
|
||||
static CellularCommInterfaceError_t _prvCommIntfSend( CellularCommInterfaceHandle_t commInterfaceHandle,
|
||||
const uint8_t * pData,
|
||||
uint32_t dataLength,
|
||||
uint32_t timeoutMilliseconds,
|
||||
uint32_t * pDataSentLength );
|
||||
|
||||
/**
|
||||
* @brief CellularCommInterfaceRecv_t implementation.
|
||||
*/
|
||||
static CellularCommInterfaceError_t _prvCommIntfReceive( CellularCommInterfaceHandle_t commInterfaceHandle,
|
||||
uint8_t * pBuffer,
|
||||
uint32_t bufferLength,
|
||||
uint32_t timeoutMilliseconds,
|
||||
uint32_t * pDataReceivedLength );
|
||||
|
||||
/**
|
||||
* @brief CellularCommInterfaceClose_t implementation.
|
||||
*/
|
||||
static CellularCommInterfaceError_t _prvCommIntfClose( CellularCommInterfaceHandle_t commInterfaceHandle );
|
||||
|
||||
/**
|
||||
* @brief Get default comm interface context.
|
||||
*
|
||||
* @return On success, SOCKETS_ERROR_NONE is returned. If an error occurred, error code defined
|
||||
* in sockets_wrapper.h is returned.
|
||||
*/
|
||||
static _cellularCommContext_t * _getCellularCommContext( void );
|
||||
|
||||
/**
|
||||
* @brief UART interrupt handler.
|
||||
*
|
||||
* @return pdTRUE if the operation is successful, otherwise
|
||||
* an error code indicating the cause of the error.
|
||||
*/
|
||||
static uint32_t prvProcessUartInt( void );
|
||||
|
||||
/**
|
||||
* @brief Set COM port timeout settings.
|
||||
*
|
||||
* @param[in] hComm COM handle returned by CreateFile.
|
||||
*
|
||||
* @return On success, IOT_COMM_INTERFACE_SUCCESS is returned. If an error occurred, error code defined
|
||||
* in CellularCommInterfaceError_t is returned.
|
||||
*/
|
||||
static CellularCommInterfaceError_t _setupCommTimeout( HANDLE hComm );
|
||||
|
||||
/**
|
||||
* @brief Set COM port control settings.
|
||||
*
|
||||
* @param[in] hComm COM handle returned by CreateFile.
|
||||
*
|
||||
* @return On success, IOT_COMM_INTERFACE_SUCCESS is returned. If an error occurred, error code defined
|
||||
* in CellularCommInterfaceError_t is returned.
|
||||
*/
|
||||
static CellularCommInterfaceError_t _setupCommSettings( HANDLE hComm );
|
||||
|
||||
/**
|
||||
* @brief Thread routine to generate simulated interrupt.
|
||||
*
|
||||
* @param[in] pUserData Pointer to _cellularCommContext_t allocated in comm interface open.
|
||||
*/
|
||||
static void commTaskThread( void * pUserData );
|
||||
|
||||
/**
|
||||
* @brief Helper function to setup and create commTaskThread.
|
||||
*
|
||||
* @param[in] pCellularCommContext Cellular comm interface context allocated in open.
|
||||
*
|
||||
* @return On success, IOT_COMM_INTERFACE_SUCCESS is returned. If an error occurred, error code defined
|
||||
* in CellularCommInterfaceError_t is returned.
|
||||
*/
|
||||
static CellularCommInterfaceError_t setupCommTaskThread( _cellularCommContext_t * pCellularCommContext );
|
||||
|
||||
/**
|
||||
* @brief Helper function to clean commTaskThread.
|
||||
*
|
||||
* @param[in] pCellularCommContext Cellular comm interface context allocated in open.
|
||||
*
|
||||
* @return On success, IOT_COMM_INTERFACE_SUCCESS is returned. If an error occurred, error code defined
|
||||
* in CellularCommInterfaceError_t is returned.
|
||||
*/
|
||||
static CellularCommInterfaceError_t cleanCommTaskThread( _cellularCommContext_t * pCellularCommContext );
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
CellularCommInterface_t CellularCommInterface =
|
||||
{
|
||||
.open = _prvCommIntfOpen,
|
||||
.send = _prvCommIntfSend,
|
||||
.recv = _prvCommIntfReceive,
|
||||
.close = _prvCommIntfClose
|
||||
};
|
||||
|
||||
static _cellularCommContext_t _iotCellularCommContext =
|
||||
{
|
||||
.commReceiveCallback = NULL,
|
||||
.commReceiveCallbackThread = NULL,
|
||||
.pCommInterface = &CellularCommInterface,
|
||||
.commFileHandle = NULL,
|
||||
.pUserData = NULL,
|
||||
.commStatus = 0U,
|
||||
.commTaskThreadStarted = false,
|
||||
.pCommTaskEvent = NULL
|
||||
};
|
||||
|
||||
/* Indicate RX event is received in comm driver. */
|
||||
static bool rxEvent = false;
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static _cellularCommContext_t * _getCellularCommContext( void )
|
||||
{
|
||||
return &_iotCellularCommContext;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static uint32_t prvProcessUartInt( void )
|
||||
{
|
||||
_cellularCommContext_t * pCellularCommContext = _getCellularCommContext();
|
||||
CellularCommInterfaceError_t callbackRet = IOT_COMM_INTERFACE_FAILURE;
|
||||
uint32_t retUartInt = pdTRUE;
|
||||
|
||||
if( pCellularCommContext->commReceiveCallback != NULL )
|
||||
{
|
||||
callbackRet = pCellularCommContext->commReceiveCallback( pCellularCommContext->pUserData,
|
||||
( CellularCommInterfaceHandle_t ) pCellularCommContext );
|
||||
}
|
||||
|
||||
if( callbackRet == IOT_COMM_INTERFACE_SUCCESS )
|
||||
{
|
||||
retUartInt = pdTRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
retUartInt = pdFALSE;
|
||||
}
|
||||
|
||||
return retUartInt;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* @brief Communication receiver thread function.
|
||||
*
|
||||
* @param[in] pArgument windows COM port handle.
|
||||
* @return 0 if thread function exit without error. Others for error.
|
||||
*/
|
||||
DWORD WINAPI _CellularCommReceiveCBThreadFunc( LPVOID pArgument )
|
||||
{
|
||||
DWORD dwCommStatus = 0;
|
||||
HANDLE hComm = ( HANDLE ) pArgument;
|
||||
BOOL retWait = FALSE;
|
||||
DWORD retValue = 0;
|
||||
|
||||
if( hComm == ( HANDLE ) INVALID_HANDLE_VALUE )
|
||||
{
|
||||
retValue = ERROR_INVALID_HANDLE;
|
||||
}
|
||||
|
||||
while( retValue == 0 )
|
||||
{
|
||||
retWait = WaitCommEvent( hComm, &dwCommStatus, NULL );
|
||||
|
||||
if( ( retWait != FALSE ) && ( ( dwCommStatus & EV_RXCHAR ) != 0 ) )
|
||||
{
|
||||
if( ( dwCommStatus & EV_RXCHAR ) != 0 )
|
||||
{
|
||||
rxEvent = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if( ( GetLastError() == ERROR_INVALID_HANDLE ) || ( GetLastError() == ERROR_OPERATION_ABORTED ) )
|
||||
{
|
||||
/* COM port closed. */
|
||||
LogInfo( ( "Cellular COM port %p closed", hComm ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
LogInfo( ( "Cellular receiver thread wait comm error %p %d", hComm, GetLastError() ) );
|
||||
}
|
||||
|
||||
retValue = GetLastError();
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return retValue;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static CellularCommInterfaceError_t _setupCommTimeout( HANDLE hComm )
|
||||
{
|
||||
CellularCommInterfaceError_t commIntRet = IOT_COMM_INTERFACE_SUCCESS;
|
||||
COMMTIMEOUTS xCommTimeouts = { 0 };
|
||||
BOOL Status = TRUE;
|
||||
|
||||
/* Set ReadIntervalTimeout to MAXDWORD and zero values for both
|
||||
* ReadTotalTimeoutConstant and ReadTotalTimeoutMultiplier to return
|
||||
* immediately with the bytes that already been received. */
|
||||
xCommTimeouts.ReadIntervalTimeout = MAXDWORD;
|
||||
xCommTimeouts.ReadTotalTimeoutConstant = 0;
|
||||
xCommTimeouts.ReadTotalTimeoutMultiplier = 0;
|
||||
xCommTimeouts.WriteTotalTimeoutConstant = COMM_WRITE_OPERATION_TIMEOUT;
|
||||
xCommTimeouts.WriteTotalTimeoutMultiplier = 0;
|
||||
Status = SetCommTimeouts( hComm, &xCommTimeouts );
|
||||
|
||||
if( Status == FALSE )
|
||||
{
|
||||
LogError( ( "Cellular SetCommTimeouts fail %d", GetLastError() ) );
|
||||
commIntRet = IOT_COMM_INTERFACE_FAILURE;
|
||||
}
|
||||
|
||||
return commIntRet;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static CellularCommInterfaceError_t _setupCommSettings( HANDLE hComm )
|
||||
{
|
||||
CellularCommInterfaceError_t commIntRet = IOT_COMM_INTERFACE_SUCCESS;
|
||||
DCB dcbSerialParams = { 0 };
|
||||
BOOL Status = TRUE;
|
||||
|
||||
( void ) memset( &dcbSerialParams, 0, sizeof( dcbSerialParams ) );
|
||||
dcbSerialParams.DCBlength = sizeof( dcbSerialParams );
|
||||
dcbSerialParams.BaudRate = CBR_115200;
|
||||
dcbSerialParams.fBinary = 1;
|
||||
dcbSerialParams.ByteSize = 8;
|
||||
dcbSerialParams.StopBits = ONESTOPBIT;
|
||||
dcbSerialParams.Parity = NOPARITY;
|
||||
|
||||
dcbSerialParams.fOutxCtsFlow = FALSE;
|
||||
dcbSerialParams.fOutxDsrFlow = FALSE;
|
||||
dcbSerialParams.fDtrControl = DTR_CONTROL_ENABLE;
|
||||
dcbSerialParams.fRtsControl = RTS_CONTROL_ENABLE;
|
||||
|
||||
Status = SetCommState( hComm, &dcbSerialParams );
|
||||
|
||||
if( Status == FALSE )
|
||||
{
|
||||
LogError( ( "Cellular SetCommState fail %d", GetLastError() ) );
|
||||
commIntRet = IOT_COMM_INTERFACE_FAILURE;
|
||||
}
|
||||
|
||||
return commIntRet;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static void commTaskThread( void * pUserData )
|
||||
{
|
||||
_cellularCommContext_t * pCellularCommContext = ( _cellularCommContext_t * ) pUserData;
|
||||
EventBits_t uxBits = 0;
|
||||
|
||||
/* Inform thread ready. */
|
||||
LogInfo( ( "Cellular commTaskThread started" ) );
|
||||
|
||||
if( pCellularCommContext != NULL )
|
||||
{
|
||||
( void ) xEventGroupSetBits( pCellularCommContext->pCommTaskEvent,
|
||||
COMMTASK_EVT_MASK_STARTED );
|
||||
}
|
||||
|
||||
while( true )
|
||||
{
|
||||
/* Wait for notification from eventqueue. */
|
||||
uxBits = xEventGroupWaitBits( ( pCellularCommContext->pCommTaskEvent ),
|
||||
( ( EventBits_t ) COMMTASK_EVT_MASK_ABORT ),
|
||||
pdTRUE,
|
||||
pdFALSE,
|
||||
pdMS_TO_TICKS( COMMTASK_POLLING_TIME_MS ) );
|
||||
|
||||
if( ( uxBits & ( EventBits_t ) COMMTASK_EVT_MASK_ABORT ) != 0U )
|
||||
{
|
||||
LogDebug( ( "Abort received, cleaning up!" ) );
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Polling the global share variable to trigger the interrupt. */
|
||||
if( rxEvent == true )
|
||||
{
|
||||
rxEvent = false;
|
||||
vPortGenerateSimulatedInterrupt( portINTERRUPT_UART );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Inform thread ready. */
|
||||
if( pCellularCommContext != NULL )
|
||||
{
|
||||
( void ) xEventGroupSetBits( pCellularCommContext->pCommTaskEvent, COMMTASK_EVT_MASK_ABORTED );
|
||||
}
|
||||
|
||||
LogInfo( ( "Cellular commTaskThread exit" ) );
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static CellularCommInterfaceError_t setupCommTaskThread( _cellularCommContext_t * pCellularCommContext )
|
||||
{
|
||||
BOOL Status = TRUE;
|
||||
EventBits_t uxBits = 0;
|
||||
CellularCommInterfaceError_t commIntRet = IOT_COMM_INTERFACE_SUCCESS;
|
||||
|
||||
pCellularCommContext->pCommTaskEvent = xEventGroupCreate();
|
||||
|
||||
if( pCellularCommContext->pCommTaskEvent != NULL )
|
||||
{
|
||||
/* Create the FreeRTOS thread to generate the simulated interrupt. */
|
||||
Status = Platform_CreateDetachedThread( commTaskThread,
|
||||
( void * ) pCellularCommContext,
|
||||
COMM_IF_THREAD_DEFAULT_PRIORITY,
|
||||
COMM_IF_THREAD_DEFAULT_STACK_SIZE );
|
||||
|
||||
if( Status != true )
|
||||
{
|
||||
commIntRet = IOT_COMM_INTERFACE_FAILURE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
commIntRet = IOT_COMM_INTERFACE_FAILURE;
|
||||
}
|
||||
|
||||
if( commIntRet == IOT_COMM_INTERFACE_SUCCESS )
|
||||
{
|
||||
uxBits = xEventGroupWaitBits( ( pCellularCommContext->pCommTaskEvent ),
|
||||
( ( EventBits_t ) COMMTASK_EVT_MASK_STARTED | ( EventBits_t ) COMMTASK_EVT_MASK_ABORTED ),
|
||||
pdTRUE,
|
||||
pdFALSE,
|
||||
portMAX_DELAY );
|
||||
|
||||
if( ( uxBits & ( EventBits_t ) COMMTASK_EVT_MASK_STARTED ) == COMMTASK_EVT_MASK_STARTED )
|
||||
{
|
||||
pCellularCommContext->commTaskThreadStarted = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
commIntRet = IOT_COMM_INTERFACE_FAILURE;
|
||||
pCellularCommContext->commTaskThreadStarted = false;
|
||||
}
|
||||
}
|
||||
|
||||
return commIntRet;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static CellularCommInterfaceError_t cleanCommTaskThread( _cellularCommContext_t * pCellularCommContext )
|
||||
{
|
||||
EventBits_t uxBits = 0;
|
||||
CellularCommInterfaceError_t commIntRet = IOT_COMM_INTERFACE_SUCCESS;
|
||||
|
||||
/* Wait for the commTaskThreadStarted exit. */
|
||||
if( ( pCellularCommContext->commTaskThreadStarted == true ) && ( pCellularCommContext->pCommTaskEvent != NULL ) )
|
||||
{
|
||||
( void ) xEventGroupSetBits( pCellularCommContext->pCommTaskEvent,
|
||||
COMMTASK_EVT_MASK_ABORT );
|
||||
uxBits = xEventGroupWaitBits( ( pCellularCommContext->pCommTaskEvent ),
|
||||
( ( EventBits_t ) COMMTASK_EVT_MASK_ABORTED ),
|
||||
pdTRUE,
|
||||
pdFALSE,
|
||||
portMAX_DELAY );
|
||||
|
||||
if( ( uxBits & ( EventBits_t ) COMMTASK_EVT_MASK_ABORTED ) != COMMTASK_EVT_MASK_ABORTED )
|
||||
{
|
||||
LogDebug( ( "Cellular close wait commTaskThread fail" ) );
|
||||
commIntRet = IOT_COMM_INTERFACE_FAILURE;
|
||||
}
|
||||
|
||||
pCellularCommContext->commTaskThreadStarted = false;
|
||||
}
|
||||
|
||||
/* Clean the event group. */
|
||||
if( pCellularCommContext->pCommTaskEvent != NULL )
|
||||
{
|
||||
vEventGroupDelete( pCellularCommContext->pCommTaskEvent );
|
||||
pCellularCommContext->pCommTaskEvent = NULL;
|
||||
}
|
||||
|
||||
return commIntRet;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static CellularCommInterfaceError_t _prvCommIntfOpen( CellularCommInterfaceReceiveCallback_t receiveCallback,
|
||||
void * pUserData,
|
||||
CellularCommInterfaceHandle_t * pCommInterfaceHandle )
|
||||
{
|
||||
CellularCommInterfaceError_t commIntRet = IOT_COMM_INTERFACE_SUCCESS;
|
||||
HANDLE hComm = ( HANDLE ) INVALID_HANDLE_VALUE;
|
||||
BOOL Status = TRUE;
|
||||
_cellularCommContext_t * pCellularCommContext = _getCellularCommContext();
|
||||
DWORD dwRes = 0;
|
||||
|
||||
if( pCellularCommContext == NULL )
|
||||
{
|
||||
commIntRet = IOT_COMM_INTERFACE_FAILURE;
|
||||
}
|
||||
else if( ( pCellularCommContext->commStatus & CELLULAR_COMM_OPEN_BIT ) != 0 )
|
||||
{
|
||||
LogError( ( "Cellular comm interface opened already" ) );
|
||||
commIntRet = IOT_COMM_INTERFACE_FAILURE;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Clear the context. */
|
||||
memset( pCellularCommContext, 0, sizeof( _cellularCommContext_t ) );
|
||||
pCellularCommContext->pCommInterface = &CellularCommInterface;
|
||||
|
||||
/* If CreateFile fails, the return value is INVALID_HANDLE_VALUE. */
|
||||
hComm = CreateFile( TEXT( CELLULAR_COMM_PATH ),
|
||||
GENERIC_READ | GENERIC_WRITE,
|
||||
0,
|
||||
NULL,
|
||||
OPEN_EXISTING,
|
||||
FILE_FLAG_OVERLAPPED,
|
||||
NULL );
|
||||
}
|
||||
|
||||
/* Comm port is just closed. Wait 1 second and retry. */
|
||||
if( ( hComm == ( HANDLE ) INVALID_HANDLE_VALUE ) && ( GetLastError() == 5 ) )
|
||||
{
|
||||
vTaskDelay( pdMS_TO_TICKS( 1000UL ) );
|
||||
hComm = CreateFile( TEXT( CELLULAR_COMM_PATH ),
|
||||
GENERIC_READ | GENERIC_WRITE,
|
||||
0,
|
||||
NULL,
|
||||
OPEN_EXISTING,
|
||||
FILE_FLAG_OVERLAPPED,
|
||||
NULL );
|
||||
}
|
||||
|
||||
if( hComm == ( HANDLE ) INVALID_HANDLE_VALUE )
|
||||
{
|
||||
LogError( ( "Cellular open COM port fail %d", GetLastError() ) );
|
||||
commIntRet = IOT_COMM_INTERFACE_FAILURE;
|
||||
}
|
||||
else
|
||||
{
|
||||
Status = SetupComm( hComm, COMM_TX_BUFFER_SIZE, COMM_RX_BUFFER_SIZE );
|
||||
|
||||
if( Status == FALSE )
|
||||
{
|
||||
LogError( ( "Cellular setup COM port fail %d", GetLastError() ) );
|
||||
commIntRet = IOT_COMM_INTERFACE_FAILURE;
|
||||
}
|
||||
}
|
||||
|
||||
if( commIntRet == IOT_COMM_INTERFACE_SUCCESS )
|
||||
{
|
||||
commIntRet = _setupCommTimeout( hComm );
|
||||
}
|
||||
|
||||
if( commIntRet == IOT_COMM_INTERFACE_SUCCESS )
|
||||
{
|
||||
commIntRet = _setupCommSettings( hComm );
|
||||
}
|
||||
|
||||
if( commIntRet == IOT_COMM_INTERFACE_SUCCESS )
|
||||
{
|
||||
Status = SetCommMask( hComm, EV_RXCHAR );
|
||||
|
||||
if( Status == FALSE )
|
||||
{
|
||||
LogError( ( "Cellular SetCommMask fail %d", GetLastError() ) );
|
||||
commIntRet = IOT_COMM_INTERFACE_FAILURE;
|
||||
}
|
||||
}
|
||||
|
||||
if( commIntRet == IOT_COMM_INTERFACE_SUCCESS )
|
||||
{
|
||||
pCellularCommContext->commReceiveCallback = receiveCallback;
|
||||
commIntRet = setupCommTaskThread( pCellularCommContext );
|
||||
}
|
||||
|
||||
if( commIntRet == IOT_COMM_INTERFACE_SUCCESS )
|
||||
{
|
||||
vPortSetInterruptHandler( portINTERRUPT_UART, prvProcessUartInt );
|
||||
pCellularCommContext->commReceiveCallbackThread =
|
||||
CreateThread( NULL, 0, _CellularCommReceiveCBThreadFunc, hComm, 0, NULL );
|
||||
|
||||
/* CreateThread return NULL for error. */
|
||||
if( pCellularCommContext->commReceiveCallbackThread == NULL )
|
||||
{
|
||||
LogError( ( "Cellular CreateThread fail %d", GetLastError() ) );
|
||||
commIntRet = IOT_COMM_INTERFACE_FAILURE;
|
||||
}
|
||||
}
|
||||
|
||||
if( commIntRet == IOT_COMM_INTERFACE_SUCCESS )
|
||||
{
|
||||
pCellularCommContext->pUserData = pUserData;
|
||||
pCellularCommContext->commFileHandle = hComm;
|
||||
*pCommInterfaceHandle = ( CellularCommInterfaceHandle_t ) pCellularCommContext;
|
||||
pCellularCommContext->commStatus |= CELLULAR_COMM_OPEN_BIT;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Comm interface open fail. Clean the data. */
|
||||
if( hComm != ( HANDLE ) INVALID_HANDLE_VALUE )
|
||||
{
|
||||
( void ) CloseHandle( hComm );
|
||||
hComm = INVALID_HANDLE_VALUE;
|
||||
commIntRet = IOT_COMM_INTERFACE_FAILURE;
|
||||
}
|
||||
|
||||
/* Wait for the commReceiveCallbackThread exit. */
|
||||
if( pCellularCommContext->commReceiveCallbackThread != NULL )
|
||||
{
|
||||
dwRes = WaitForSingleObject( pCellularCommContext->commReceiveCallbackThread, COMM_RECV_THREAD_TIMEOUT );
|
||||
|
||||
if( dwRes != WAIT_OBJECT_0 )
|
||||
{
|
||||
LogDebug( ( "Cellular close wait receiveCallbackThread %p fail %d",
|
||||
pCellularCommContext->commReceiveCallbackThread, dwRes ) );
|
||||
}
|
||||
}
|
||||
|
||||
pCellularCommContext->commReceiveCallbackThread = NULL;
|
||||
|
||||
/* Wait for the commTaskThreadStarted exit. */
|
||||
( void ) cleanCommTaskThread( pCellularCommContext );
|
||||
}
|
||||
|
||||
return commIntRet;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static CellularCommInterfaceError_t _prvCommIntfClose( CellularCommInterfaceHandle_t commInterfaceHandle )
|
||||
{
|
||||
CellularCommInterfaceError_t commIntRet = IOT_COMM_INTERFACE_SUCCESS;
|
||||
_cellularCommContext_t * pCellularCommContext = ( _cellularCommContext_t * ) commInterfaceHandle;
|
||||
HANDLE hComm = NULL;
|
||||
BOOL Status = TRUE;
|
||||
DWORD dwRes = 0;
|
||||
|
||||
if( pCellularCommContext == NULL )
|
||||
{
|
||||
commIntRet = IOT_COMM_INTERFACE_FAILURE;
|
||||
}
|
||||
else if( ( pCellularCommContext->commStatus & CELLULAR_COMM_OPEN_BIT ) == 0 )
|
||||
{
|
||||
LogError( ( "Cellular close comm interface is not opened before." ) );
|
||||
commIntRet = IOT_COMM_INTERFACE_FAILURE;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* clean the receive callback. */
|
||||
pCellularCommContext->commReceiveCallback = NULL;
|
||||
|
||||
/* Close the COM port. */
|
||||
hComm = pCellularCommContext->commFileHandle;
|
||||
|
||||
if( hComm != ( HANDLE ) INVALID_HANDLE_VALUE )
|
||||
{
|
||||
Status = CloseHandle( hComm );
|
||||
|
||||
if( Status == FALSE )
|
||||
{
|
||||
LogDebug( ( "Cellular close CloseHandle %p fail", hComm ) );
|
||||
commIntRet = IOT_COMM_INTERFACE_FAILURE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
commIntRet = IOT_COMM_INTERFACE_FAILURE;
|
||||
}
|
||||
|
||||
pCellularCommContext->commFileHandle = NULL;
|
||||
|
||||
/* Wait for the thread exit. */
|
||||
if( pCellularCommContext->commReceiveCallbackThread != NULL )
|
||||
{
|
||||
dwRes = WaitForSingleObject( pCellularCommContext->commReceiveCallbackThread, COMM_RECV_THREAD_TIMEOUT );
|
||||
|
||||
if( dwRes != WAIT_OBJECT_0 )
|
||||
{
|
||||
LogDebug( ( "Cellular close wait receiveCallbackThread %p fail %d",
|
||||
pCellularCommContext->commReceiveCallbackThread, dwRes ) );
|
||||
commIntRet = IOT_COMM_INTERFACE_FAILURE;
|
||||
}
|
||||
else
|
||||
{
|
||||
CloseHandle( pCellularCommContext->commReceiveCallbackThread );
|
||||
}
|
||||
}
|
||||
|
||||
pCellularCommContext->commReceiveCallbackThread = NULL;
|
||||
|
||||
/* Clean the commTaskThread. */
|
||||
( void ) cleanCommTaskThread( pCellularCommContext );
|
||||
|
||||
/* clean the data structure. */
|
||||
pCellularCommContext->commStatus &= ~( CELLULAR_COMM_OPEN_BIT );
|
||||
}
|
||||
|
||||
return commIntRet;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static CellularCommInterfaceError_t _prvCommIntfSend( CellularCommInterfaceHandle_t commInterfaceHandle,
|
||||
const uint8_t * pData,
|
||||
uint32_t dataLength,
|
||||
uint32_t timeoutMilliseconds,
|
||||
uint32_t * pDataSentLength )
|
||||
{
|
||||
CellularCommInterfaceError_t commIntRet = IOT_COMM_INTERFACE_SUCCESS;
|
||||
_cellularCommContext_t * pCellularCommContext = ( _cellularCommContext_t * ) commInterfaceHandle;
|
||||
HANDLE hComm = NULL;
|
||||
OVERLAPPED osWrite = { 0 };
|
||||
DWORD dwRes = 0;
|
||||
DWORD dwWritten = 0;
|
||||
BOOL Status = TRUE;
|
||||
|
||||
if( pCellularCommContext == NULL )
|
||||
{
|
||||
commIntRet = IOT_COMM_INTERFACE_BAD_PARAMETER;
|
||||
}
|
||||
else if( ( pCellularCommContext->commStatus & CELLULAR_COMM_OPEN_BIT ) == 0 )
|
||||
{
|
||||
LogError( ( "Cellular send comm interface is not opened before." ) );
|
||||
commIntRet = IOT_COMM_INTERFACE_FAILURE;
|
||||
}
|
||||
else
|
||||
{
|
||||
hComm = pCellularCommContext->commFileHandle;
|
||||
osWrite.hEvent = CreateEvent( NULL, TRUE, FALSE, NULL );
|
||||
|
||||
if( osWrite.hEvent == NULL )
|
||||
{
|
||||
LogError( ( "Cellular CreateEvent fail %d", GetLastError() ) );
|
||||
commIntRet = IOT_COMM_INTERFACE_FAILURE;
|
||||
}
|
||||
}
|
||||
|
||||
if( commIntRet == IOT_COMM_INTERFACE_SUCCESS )
|
||||
{
|
||||
Status = WriteFile( hComm, pData, dataLength, &dwWritten, &osWrite );
|
||||
|
||||
/* WriteFile fail and error is not the ERROR_IO_PENDING. */
|
||||
if( ( Status == FALSE ) && ( GetLastError() != ERROR_IO_PENDING ) )
|
||||
{
|
||||
LogError( ( "Cellular WriteFile fail %d", GetLastError() ) );
|
||||
commIntRet = IOT_COMM_INTERFACE_FAILURE;
|
||||
}
|
||||
|
||||
if( Status == TRUE )
|
||||
{
|
||||
*pDataSentLength = ( uint32_t ) dwWritten;
|
||||
}
|
||||
}
|
||||
|
||||
/* Handle pending I/O. */
|
||||
if( ( commIntRet == IOT_COMM_INTERFACE_SUCCESS ) && ( Status == FALSE ) )
|
||||
{
|
||||
dwRes = WaitForSingleObject( osWrite.hEvent, timeoutMilliseconds );
|
||||
|
||||
switch( dwRes )
|
||||
{
|
||||
case WAIT_OBJECT_0:
|
||||
|
||||
if( GetOverlappedResult( hComm, &osWrite, &dwWritten, FALSE ) == FALSE )
|
||||
{
|
||||
LogError( ( "Cellular GetOverlappedResult fail %d", GetLastError() ) );
|
||||
commIntRet = IOT_COMM_INTERFACE_FAILURE;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case STATUS_TIMEOUT:
|
||||
LogError( ( "Cellular WaitForSingleObject timeout" ) );
|
||||
commIntRet = IOT_COMM_INTERFACE_TIMEOUT;
|
||||
break;
|
||||
|
||||
default:
|
||||
LogError( ( "Cellular WaitForSingleObject fail %d", dwRes ) );
|
||||
commIntRet = IOT_COMM_INTERFACE_FAILURE;
|
||||
break;
|
||||
}
|
||||
|
||||
*pDataSentLength = ( uint32_t ) dwWritten;
|
||||
}
|
||||
|
||||
if( osWrite.hEvent != NULL )
|
||||
{
|
||||
Status = CloseHandle( osWrite.hEvent );
|
||||
|
||||
if( Status == FALSE )
|
||||
{
|
||||
LogDebug( ( "Cellular send CloseHandle fail" ) );
|
||||
}
|
||||
}
|
||||
|
||||
return commIntRet;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static CellularCommInterfaceError_t _prvCommIntfReceive( CellularCommInterfaceHandle_t commInterfaceHandle,
|
||||
uint8_t * pBuffer,
|
||||
uint32_t bufferLength,
|
||||
uint32_t timeoutMilliseconds,
|
||||
uint32_t * pDataReceivedLength )
|
||||
{
|
||||
CellularCommInterfaceError_t commIntRet = IOT_COMM_INTERFACE_SUCCESS;
|
||||
_cellularCommContext_t * pCellularCommContext = ( _cellularCommContext_t * ) commInterfaceHandle;
|
||||
HANDLE hComm = NULL;
|
||||
OVERLAPPED osRead = { 0 };
|
||||
BOOL Status = TRUE;
|
||||
DWORD dwRes = 0;
|
||||
DWORD dwRead = 0;
|
||||
|
||||
if( pCellularCommContext == NULL )
|
||||
{
|
||||
commIntRet = IOT_COMM_INTERFACE_BAD_PARAMETER;
|
||||
}
|
||||
else if( ( pCellularCommContext->commStatus & CELLULAR_COMM_OPEN_BIT ) == 0 )
|
||||
{
|
||||
LogError( ( "Cellular read comm interface is not opened before." ) );
|
||||
commIntRet = IOT_COMM_INTERFACE_FAILURE;
|
||||
}
|
||||
else
|
||||
{
|
||||
hComm = pCellularCommContext->commFileHandle;
|
||||
osRead.hEvent = CreateEvent( NULL, TRUE, FALSE, NULL );
|
||||
|
||||
if( osRead.hEvent == NULL )
|
||||
{
|
||||
LogError( ( "Cellular CreateEvent fail %d", GetLastError() ) );
|
||||
commIntRet = IOT_COMM_INTERFACE_FAILURE;
|
||||
}
|
||||
}
|
||||
|
||||
if( commIntRet == IOT_COMM_INTERFACE_SUCCESS )
|
||||
{
|
||||
Status = ReadFile( hComm, pBuffer, bufferLength, &dwRead, &osRead );
|
||||
|
||||
if( ( Status == FALSE ) && ( GetLastError() != ERROR_IO_PENDING ) )
|
||||
{
|
||||
LogError( ( "Cellular ReadFile fail %d", GetLastError() ) );
|
||||
commIntRet = IOT_COMM_INTERFACE_FAILURE;
|
||||
}
|
||||
|
||||
if( Status == TRUE )
|
||||
{
|
||||
*pDataReceivedLength = ( uint32_t ) dwRead;
|
||||
}
|
||||
}
|
||||
|
||||
/* Handle pending I/O. */
|
||||
if( ( commIntRet == IOT_COMM_INTERFACE_SUCCESS ) && ( Status == FALSE ) )
|
||||
{
|
||||
dwRes = WaitForSingleObject( osRead.hEvent, timeoutMilliseconds );
|
||||
|
||||
switch( dwRes )
|
||||
{
|
||||
case WAIT_OBJECT_0:
|
||||
|
||||
if( GetOverlappedResult( hComm, &osRead, &dwRead, FALSE ) == FALSE )
|
||||
{
|
||||
LogError( ( "Cellular receive GetOverlappedResult fail %d", GetLastError() ) );
|
||||
commIntRet = IOT_COMM_INTERFACE_FAILURE;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case STATUS_TIMEOUT:
|
||||
LogError( ( "Cellular receive WaitForSingleObject timeout" ) );
|
||||
commIntRet = IOT_COMM_INTERFACE_TIMEOUT;
|
||||
break;
|
||||
|
||||
default:
|
||||
LogError( ( "Cellular receive WaitForSingleObject fail %d", dwRes ) );
|
||||
commIntRet = IOT_COMM_INTERFACE_FAILURE;
|
||||
break;
|
||||
}
|
||||
|
||||
*pDataReceivedLength = ( uint32_t ) dwRead;
|
||||
}
|
||||
|
||||
if( osRead.hEvent != NULL )
|
||||
{
|
||||
Status = CloseHandle( osRead.hEvent );
|
||||
|
||||
if( Status == FALSE )
|
||||
{
|
||||
LogDebug( ( "Cellular recv CloseHandle fail" ) );
|
||||
}
|
||||
}
|
||||
|
||||
return commIntRet;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------*/
|
@ -0,0 +1,346 @@
|
||||
/*
|
||||
* FreeRTOS V202107.00
|
||||
* Copyright (C) 2020 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.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
/***
|
||||
* See https://www.FreeRTOS.org/coremqtt 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 logging includes. */
|
||||
#include "logging.h"
|
||||
|
||||
/* Demo Specific configs. */
|
||||
#include "demo_config.h"
|
||||
|
||||
/* FreeRTOS Cellular Library init and setup cellular network registration. */
|
||||
extern bool setupCellular( void );
|
||||
|
||||
/* The MQTT demo entry function. */
|
||||
extern void vStartSimpleMQTTDemo( void );
|
||||
|
||||
/* The task function to setup cellular with thread ready environment. */
|
||||
static void CellularDemoTask( void * pvParameters );
|
||||
|
||||
/*
|
||||
* 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 );
|
||||
|
||||
/* 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 UDP logging server
|
||||
* address (see the configUDP_LOGGING_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;
|
||||
|
||||
/* Used by the pseudo random number generator. */
|
||||
static UBaseType_t ulNextRand;
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
int main( void )
|
||||
{
|
||||
/***
|
||||
* See https://www.FreeRTOS.org/iot-device-shadow for configuration and usage instructions.
|
||||
***/
|
||||
|
||||
/* Miscellaneous initialization including preparing the logging and seeding
|
||||
* the random number generator. */
|
||||
prvMiscInitialisation();
|
||||
|
||||
/* 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 )
|
||||
{
|
||||
( void ) eNetworkEvent;
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
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 CellularDemoTask( void * pvParameters )
|
||||
{
|
||||
bool retCellular = true;
|
||||
|
||||
( void ) pvParameters;
|
||||
/* Setup cellular. */
|
||||
retCellular = setupCellular();
|
||||
|
||||
if( retCellular == false )
|
||||
{
|
||||
configPRINTF( ( "Cellular failed to initialize.\r\n" ) );
|
||||
}
|
||||
|
||||
/* Stop here if we fail to initialize cellular. */
|
||||
configASSERT( retCellular == true );
|
||||
|
||||
/* Run the MQTT demo. */
|
||||
/* Demos that use the network are created after the network is
|
||||
* up. */
|
||||
LogInfo( ( "---------STARTING DEMO---------\r\n" ) );
|
||||
vStartSimpleMQTTDemo();
|
||||
|
||||
vTaskDelete( NULL );
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static void prvMiscInitialisation( void )
|
||||
{
|
||||
vLoggingInit( xLogToStdout, xLogToFile, xLogToUDP, 0U, configPRINT_PORT );
|
||||
|
||||
/* FreeRTOS Cellular Library init needs thread ready environment.
|
||||
* CellularDemoTask invoke setupCellular to init FreeRTOS Cellular Library and register network.
|
||||
* Then it runs the MQTT demo. */
|
||||
xTaskCreate( CellularDemoTask, /* Function that implements the task. */
|
||||
"CellularDemo", /* 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. */
|
||||
democonfigDEMO_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. */
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
#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 /* if ( ipconfigUSE_LLMNR != 0 ) || ( ipconfigUSE_NBNS != 0 ) */
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/*
|
||||
* 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();
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/*
|
||||
* Set *pulNumber to a random number, and return pdTRUE. When the random number
|
||||
* generator is broken, it shall return pdFALSE.
|
||||
* The macros ipconfigRAND32() and configRAND32() are not in use
|
||||
* anymore in FreeRTOS+TCP.
|
||||
*
|
||||
* THIS IS ONLY A DUMMY IMPLEMENTATION THAT RETURNS A PSEUDO RANDOM NUMBER SO IS
|
||||
* NOT INTENDED FOR USE IN PRODUCTION SYSTEMS.
|
||||
*/
|
||||
BaseType_t xApplicationGetRandomNumber( uint32_t * pulNumber )
|
||||
{
|
||||
*pulNumber = uxRand();
|
||||
return pdTRUE;
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/* 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;
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,210 @@
|
||||
/*
|
||||
* FreeRTOS V202107.00
|
||||
* Copyright (C) 2020 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.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
#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 0
|
||||
#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 configuration options. */
|
||||
#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 to which logging is sent should UDP logging be enabled. */
|
||||
#define configUDP_LOGGING_ADDR0 192
|
||||
#define configUDP_LOGGING_ADDR1 168
|
||||
#define configUDP_LOGGING_ADDR2 0
|
||||
#define configUDP_LOGGING_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 0x6a
|
||||
|
||||
/* 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 */
|
@ -0,0 +1,310 @@
|
||||
/*
|
||||
* FreeRTOS V202107.00
|
||||
* Copyright (C) 2020 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.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
*
|
||||
* 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 1
|
||||
#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 ( 5000 )
|
||||
|
||||
/* 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 */
|
@ -0,0 +1,895 @@
|
||||
<?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="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\coreMQTT">
|
||||
<UniqueIdentifier>{2d17d5e6-ed70-4e42-9693-f7a63baf4948}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\standard\coreMQTT\include">
|
||||
<UniqueIdentifier>{6ad56e6d-c330-4830-8f4b-c75b05dfa866}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\platform">
|
||||
<UniqueIdentifier>{84613aa2-91dc-4e1a-a3b3-823b6d7bf0e0}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\mbedtls">
|
||||
<UniqueIdentifier>{7bedd2e3-adbb-4c95-9632-445132b459ce}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\mbedtls\include">
|
||||
<UniqueIdentifier>{07a14673-4d02-4780-a099-6b8c654dff91}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\mbedtls\library">
|
||||
<UniqueIdentifier>{e875c5e3-40a2-4408-941e-5e1a951cc663}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\platform\mbedtls">
|
||||
<UniqueIdentifier>{8a0aa896-6b3a-49b3-997e-681f0d1949ae}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\platform\transport">
|
||||
<UniqueIdentifier>{6a35782c-bc09-42d5-a850-98bcb668a4dc}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\platform\backoff_algorithm">
|
||||
<UniqueIdentifier>{fcf93295-15e2-4a84-a5e9-b3c162e9f061}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\platform\backoff_algorithm\include">
|
||||
<UniqueIdentifier>{84164849-198e-497b-b135-322242d511cf}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\platform\logging">
|
||||
<UniqueIdentifier>{b61fd40e-ae93-4a08-9ee7-5dc8182595be}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Config">
|
||||
<UniqueIdentifier>{0c062983-2e9b-43c4-abd7-daf4e6254d96}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Common">
|
||||
<UniqueIdentifier>{141c3342-468b-4833-a23a-70ac37be207b}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular">
|
||||
<UniqueIdentifier>{9d52e9bc-39e7-4d8e-a150-64eeeae9410b}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\include">
|
||||
<UniqueIdentifier>{26ee1535-b417-427d-8e72-79c6c859db6b}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\interface">
|
||||
<UniqueIdentifier>{5465caea-3879-404b-a54e-753ece92941c}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\include\common">
|
||||
<UniqueIdentifier>{2559b11d-a741-471f-ad56-e7263dc15046}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\include\private">
|
||||
<UniqueIdentifier>{553e6fa4-ea81-46c6-bc4e-b694d9fa766e}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Module">
|
||||
<UniqueIdentifier>{a53e6044-6b9b-4e35-aaed-43e6f9dfbdb2}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS+TCP">
|
||||
<UniqueIdentifier>{6c3bcc0b-b831-4567-9ca9-525a5a75427c}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS+TCP\include">
|
||||
<UniqueIdentifier>{bfecf3e3-7116-4b34-9f78-dc11bc1fbbf3}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS+TCP\portable">
|
||||
<UniqueIdentifier>{aa0ef4b9-5c3e-4a1a-82b1-7938b1a596a7}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Common\mbedtls">
|
||||
<UniqueIdentifier>{d7c1e40c-3e7e-4e0e-b027-697eb7dd60bd}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\platform\transport\include">
|
||||
<UniqueIdentifier>{d61ee4c2-5375-4d96-8904-fd826d63208a}</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="..\..\..\..\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="..\..\..\..\FreeRTOS\Source\stream_buffer.c">
|
||||
<Filter>FreeRTOS\Source</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\aes.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\aesni.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\arc4.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\aria.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\asn1parse.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\asn1write.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\base64.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\bignum.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\blowfish.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\camellia.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ccm.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\certs.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\chacha20.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\chachapoly.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\cipher.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\cipher_wrap.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\cmac.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ctr_drbg.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\debug.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\des.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\dhm.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ecdh.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ecdsa.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ecjpake.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ecp.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ecp_curves.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\entropy.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\entropy_poll.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\error.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\gcm.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\havege.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\hkdf.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\hmac_drbg.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\md.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\md2.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\md4.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\md5.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\memory_buffer_alloc.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\net_sockets.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\nist_kw.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\oid.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\padlock.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\pem.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\pk.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\pk_wrap.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\pkcs5.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\pkcs11.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\pkcs12.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\pkparse.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\pkwrite.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\platform.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\platform_util.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\poly1305.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ripemd160.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\rsa.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\rsa_internal.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\sha1.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\sha256.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\sha512.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ssl_cache.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ssl_ciphersuites.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ssl_cli.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ssl_cookie.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ssl_msg.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ssl_srv.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ssl_ticket.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ssl_tls.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\threading.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\timing.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\version.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\version_features.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\x509.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\x509_create.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\x509_crl.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\x509_crt.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\x509_csr.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\x509write_crt.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\x509write_csr.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\xtea.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\FreeRTOS-Plus\Demo\Common\Logging\windows\Logging_WinSim.c" />
|
||||
<ClCompile Include="..\Common\main.c" />
|
||||
<ClCompile Include="DemoTasks\MutualAuthMQTTExample.c">
|
||||
<Filter>DemoTasks</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\Utilities\backoff_algorithm\source\backoff_algorithm.c">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\backoff_algorithm</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\Application-Protocols\coreMQTT\source\core_mqtt.c">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\coreMQTT</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\Application-Protocols\coreMQTT\source\core_mqtt_state.c">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\coreMQTT</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\Application-Protocols\coreMQTT\source\core_mqtt_serializer.c">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\coreMQTT</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\error.c" />
|
||||
<ClCompile Include="..\Common\cellular_platform.c">
|
||||
<Filter>Common</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\Common\comm_if_windows.c">
|
||||
<Filter>Common</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\cellular_3gpp_urc_handler.c">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\cellular_at_core.c">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\cellular_common.c">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\cellular_common_api.c">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\cellular_pkthandler.c">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\cellular_pktio.c">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\FreeRTOS-Cellular-Interface\modules\bg96\cellular_bg96.c">
|
||||
<Filter>Module</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\FreeRTOS-Cellular-Interface\modules\bg96\cellular_bg96_api.c">
|
||||
<Filter>Module</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\FreeRTOS-Cellular-Interface\modules\bg96\cellular_bg96_urc_handler.c">
|
||||
<Filter>Module</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\FreeRTOS-Cellular-Interface\modules\bg96\cellular_bg96_wrapper.c">
|
||||
<Filter>Module</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\Common\cellular_setup.c">
|
||||
<Filter>Common</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_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_IP.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\FreeRTOS_Stream_Buffer.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="..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_UDP_IP.c">
|
||||
<Filter>FreeRTOS+\FreeRTOS+TCP</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\error.c" />
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\error.c" />
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\error.c" />
|
||||
<ClCompile Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\cellular_3gpp_api.c">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\error.c" />
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\error.c" />
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\error.c" />
|
||||
<ClCompile Include="..\..\..\Source\Utilities\mbedtls_freertos\mbedtls_freertos_port.c">
|
||||
<Filter>Common\mbedtls</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\Utilities\mbedtls_freertos\mbedtls_bio_freertos_cellular.c">
|
||||
<Filter>Common\mbedtls</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\error.c" />
|
||||
<ClCompile Include="..\..\..\Source\Application-Protocols\network_transport\sockets_wrapper\cellular\sockets_wrapper.c">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\transport</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\Application-Protocols\network_transport\using_mbedtls\using_mbedtls\using_mbedtls.c">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\transport</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<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="..\..\..\..\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\Application-Protocols\coreMQTT\source\include\core_mqtt_serializer.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\coreMQTT\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\Application-Protocols\coreMQTT\source\include\core_mqtt_state.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\coreMQTT\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\Application-Protocols\coreMQTT\source\include\core_mqtt.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\coreMQTT\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\aes.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\aesni.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\arc4.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\aria.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\asn1.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\asn1write.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\base64.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\bignum.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\blowfish.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\bn_mul.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\camellia.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\ccm.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\certs.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\chacha20.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\chachapoly.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\check_config.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\cipher.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\cipher_internal.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\cmac.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\compat-1.3.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\config.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\ctr_drbg.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\debug.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\des.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\dhm.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\ecdh.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\ecdsa.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\ecjpake.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\ecp.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\ecp_internal.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\entropy.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\entropy_poll.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\error.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\gcm.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\havege.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\hkdf.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\hmac_drbg.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\md.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\md_internal.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\md2.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\md4.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\md5.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\memory_buffer_alloc.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\net.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\net_sockets.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\nist_kw.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\oid.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\padlock.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\pem.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\pk.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\pk_internal.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\pkcs5.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\pkcs11.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\pkcs12.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\platform.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\platform_time.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\platform_util.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\poly1305.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\psa_util.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\ripemd160.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\rsa.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\rsa_internal.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\sha1.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\sha256.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\sha512.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\ssl.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\ssl_cache.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\ssl_ciphersuites.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\ssl_cookie.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\ssl_internal.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\ssl_ticket.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\threading.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\timing.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\version.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\x509.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\x509_crl.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\x509_crt.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\x509_csr.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\xtea.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\error.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\mbedtls</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\Utilities\mbedtls_freertos\threading_alt.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\mbedtls</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\Application-Protocols\coreMQTT\source\include\core_mqtt_config_defaults.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\coreMQTT\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\Utilities\backoff_algorithm\source\include\backoff_algorithm.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\backoff_algorithm\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\FreeRTOS-Plus\Source\Utilities\logging\logging.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\logging</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\FreeRTOS-Plus\Source\Utilities\logging\logging_levels.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\logging</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\FreeRTOS-Plus\Source\Utilities\logging\logging_stack.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\logging</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="core_mqtt_config.h">
|
||||
<Filter>Config</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="demo_config.h">
|
||||
<Filter>Config</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="FreeRTOSConfig.h">
|
||||
<Filter>Config</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="FreeRTOSIPConfig.h">
|
||||
<Filter>Config</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="mbedtls_config.h">
|
||||
<Filter>Config</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\error.h" />
|
||||
<ClInclude Include="cellular_config.h">
|
||||
<Filter>Config</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\Common\cellular_platform.h">
|
||||
<Filter>Common</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\interface\cellular_comm_interface.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\interface</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\include\common\cellular_at_core.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\include\common</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\include\common\cellular_common.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\include\common</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\include\common\cellular_common_api.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\include\common</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\include\common\cellular_common_portable.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\include\common</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\include\private\cellular_common_internal.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\include\private</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\include\private\cellular_internal.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\include\private</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\include\private\cellular_pkthandler_internal.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\include\private</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\include\private\cellular_pktio_internal.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\include\private</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\FreeRTOS-Cellular-Interface\modules\bg96\cellular_bg96.h">
|
||||
<Filter>Module</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\include\cellular_api.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\include\cellular_config_defaults.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\include\cellular_types.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\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_DNS.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_errno_TCP.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_IP_Private.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_Stream_Buffer.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\FreeRTOS_UDP_IP.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="..\..\..\Source\FreeRTOS-Plus-TCP\include\NetworkBufferManagement.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\FreeRTOS-Plus-TCP\include\NetworkInterface.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\error.h" />
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\error.h" />
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\error.h" />
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\error.h" />
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\error.h" />
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\error.h" />
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\error.h" />
|
||||
<ClInclude Include="..\..\..\Source\Application-Protocols\network_transport\sockets_wrapper\cellular\sockets_wrapper.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\transport\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\Application-Protocols\network_transport\using_mbedtls\using_mbedtls\using_mbedtls.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\transport\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\Application-Protocols\coreMQTT\source\interface\transport_interface.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
</Project>
|
@ -0,0 +1,69 @@
|
||||
/*
|
||||
* FreeRTOS V202107.00
|
||||
* Copyright (C) 2020 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.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file cellular_config.h
|
||||
* @brief cellular config options.
|
||||
*/
|
||||
|
||||
#ifndef __CELLULAR_CONFIG_H__
|
||||
#define __CELLULAR_CONFIG_H__
|
||||
|
||||
/* This is a project specific file and is used to override config values defined
|
||||
* in cellular_config_defaults.h. */
|
||||
|
||||
/**
|
||||
* Cellular comm interface make use of COM port on computer to communicate with
|
||||
* cellular module on windows simulator, for example "COM5".
|
||||
* #define CELLULAR_COMM_INTERFACE_PORT "...insert here..."
|
||||
*/
|
||||
|
||||
/*
|
||||
* Default APN for network registration.
|
||||
* #define CELLULAR_APN "...insert here..."
|
||||
*/
|
||||
|
||||
/*
|
||||
* PDN context id for cellular network.
|
||||
*/
|
||||
#define CELLULAR_PDN_CONTEXT_ID ( CELLULAR_PDN_CONTEXT_ID_MIN )
|
||||
|
||||
/*
|
||||
* PDN connect timeout for network registration.
|
||||
*/
|
||||
#define CELLULAR_PDN_CONNECT_TIMEOUT ( 100000UL )
|
||||
|
||||
/*
|
||||
* Overwrite default config for different cellular modules.
|
||||
*/
|
||||
|
||||
/*
|
||||
* GetHostByName API is not used in the demo. IP address is used to store the hostname.
|
||||
* The value should be longer than the length of democonfigMQTT_BROKER_ENDPOINT in demo_config.h.
|
||||
*/
|
||||
#define CELLULAR_IP_ADDRESS_MAX_SIZE ( 64U )
|
||||
|
||||
#endif /* __CELLULAR_CONFIG_H__ */
|
@ -0,0 +1,80 @@
|
||||
/*
|
||||
* FreeRTOS V202107.00
|
||||
* Copyright (C) 2020 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.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef CORE_MQTT_CONFIG_H
|
||||
#define CORE_MQTT_CONFIG_H
|
||||
|
||||
/**************************************************/
|
||||
/******* DO NOT CHANGE the following order ********/
|
||||
/**************************************************/
|
||||
|
||||
/* Include logging header files and define logging macros in the following order:
|
||||
* 1. Include the header file "logging_levels.h".
|
||||
* 2. Define the LIBRARY_LOG_NAME and LIBRARY_LOG_LEVEL macros depending on
|
||||
* the logging configuration for MQTT.
|
||||
* 3. Include the header file "logging_stack.h", if logging is enabled for MQTT.
|
||||
*/
|
||||
|
||||
#include "logging_levels.h"
|
||||
|
||||
/* Logging configuration for the MQTT library. */
|
||||
#ifndef LIBRARY_LOG_NAME
|
||||
#define LIBRARY_LOG_NAME "MQTT"
|
||||
#endif
|
||||
|
||||
#ifndef LIBRARY_LOG_LEVEL
|
||||
#define LIBRARY_LOG_LEVEL LOG_ERROR
|
||||
#endif
|
||||
|
||||
/* Prototype for the function used to print to console on Windows simulator
|
||||
* of FreeRTOS.
|
||||
* The function prints to the console before the network is connected;
|
||||
* then a UDP port after the network has connected. */
|
||||
extern void vLoggingPrintf( const char * pcFormatString,
|
||||
... );
|
||||
|
||||
/* Map the SdkLog macro to the logging function to enable logging
|
||||
* on Windows simulator. */
|
||||
#ifndef SdkLog
|
||||
#define SdkLog( message ) vLoggingPrintf message
|
||||
#endif
|
||||
|
||||
#include "logging_stack.h"
|
||||
/************ End of logging configuration ****************/
|
||||
|
||||
/**
|
||||
* @brief The maximum number of MQTT PUBLISH messages that may be pending
|
||||
* acknowledgement at any time.
|
||||
*
|
||||
* QoS 1 and 2 MQTT PUBLISHes require acknowledgment from the server before
|
||||
* they can be completed. While they are awaiting the acknowledgment, the
|
||||
* client must maintain information about their state. The value of this
|
||||
* macro sets the limit on how many simultaneous PUBLISH states an MQTT
|
||||
* context maintains.
|
||||
*/
|
||||
#define MQTT_STATE_ARRAY_MAX_COUNT 10U
|
||||
|
||||
#endif /* ifndef CORE_MQTT_CONFIG_H */
|
@ -0,0 +1,273 @@
|
||||
/*
|
||||
* FreeRTOS V202107.00
|
||||
* Copyright (C) 2020 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.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef DEMO_CONFIG_H
|
||||
#define DEMO_CONFIG_H
|
||||
|
||||
/* FreeRTOS config include. */
|
||||
#include "FreeRTOSConfig.h"
|
||||
|
||||
/**************************************************/
|
||||
/******* DO NOT CHANGE the following order ********/
|
||||
/**************************************************/
|
||||
|
||||
/* Include logging header files and define logging macros in the following order:
|
||||
* 1. Include the header file "logging_levels.h".
|
||||
* 2. Define the LIBRARY_LOG_NAME and LIBRARY_LOG_LEVEL macros depending on
|
||||
* the logging configuration for DEMO.
|
||||
* 3. Include the header file "logging_stack.h", if logging is enabled for DEMO.
|
||||
*/
|
||||
|
||||
#include "logging_levels.h"
|
||||
|
||||
/* Logging configuration for the Demo. */
|
||||
#ifndef LIBRARY_LOG_NAME
|
||||
#define LIBRARY_LOG_NAME "CellularBG96"
|
||||
#endif
|
||||
|
||||
#ifndef LIBRARY_LOG_LEVEL
|
||||
#define LIBRARY_LOG_LEVEL LOG_INFO
|
||||
#endif
|
||||
|
||||
/* Prototype for the function used to print to console on Windows simulator
|
||||
* of FreeRTOS.
|
||||
* The function prints to the console before the network is connected;
|
||||
* then a UDP port after the network has connected. */
|
||||
extern void vLoggingPrintf( const char * pcFormatString,
|
||||
... );
|
||||
|
||||
/* Map the SdkLog macro to the logging function to enable logging
|
||||
* on Windows simulator. */
|
||||
#ifndef SdkLog
|
||||
#define SdkLog( message ) vLoggingPrintf message
|
||||
#endif
|
||||
|
||||
#include "logging_stack.h"
|
||||
|
||||
/************ End of logging configuration ****************/
|
||||
|
||||
/**
|
||||
* @brief The MQTT client identifier used in this example. Each client identifier
|
||||
* must be unique; so edit as required to ensure that no two clients connecting to
|
||||
* the same broker use the same client identifier.
|
||||
*
|
||||
*!!! Please note a #defined constant is used for convenience of demonstration
|
||||
*!!! only. Production devices can use something unique to the device that can
|
||||
*!!! be read by software, such as a production serial number, instead of a
|
||||
*!!! hard coded constant.
|
||||
*
|
||||
* #define democonfigCLIENT_IDENTIFIER "insert here."
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief Endpoint of the MQTT broker to connect to.
|
||||
*
|
||||
* This demo application can be run with any MQTT broker, that supports mutual
|
||||
* authentication.
|
||||
*
|
||||
* For AWS IoT MQTT broker, this is the Thing's REST API Endpoint.
|
||||
*
|
||||
* @note Your AWS IoT Core endpoint can be found in the AWS IoT console under
|
||||
* Settings/Custom Endpoint, or using the describe-endpoint REST API (with
|
||||
* AWS CLI command line tool).
|
||||
*
|
||||
* @note If you would like to setup an MQTT broker for running this demo,
|
||||
* please see `mqtt_broker_setup.txt`.
|
||||
*
|
||||
* #define democonfigMQTT_BROKER_ENDPOINT "...insert here..."
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief The port to use for the demo.
|
||||
*
|
||||
* In general, port 8883 is for secured MQTT connections.
|
||||
*
|
||||
* @note Port 443 requires use of the ALPN TLS extension with the ALPN protocol
|
||||
* name. Using ALPN with this demo would require additional changes, including
|
||||
* setting the `pAlpnProtos` member of the `NetworkCredentials_t` struct before
|
||||
* forming the TLS connection. When using port 8883, ALPN is not required.
|
||||
*
|
||||
* #define democonfigMQTT_BROKER_PORT ( insert here. )
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief Server's root CA certificate.
|
||||
*
|
||||
* For AWS IoT MQTT broker, this certificate is used to identify the AWS IoT
|
||||
* server and is publicly available. Refer to the AWS documentation available
|
||||
* in the link below.
|
||||
* https://docs.aws.amazon.com/iot/latest/developerguide/server-authentication.html#server-authentication-certs
|
||||
*
|
||||
* @note This certificate should be PEM-encoded.
|
||||
*
|
||||
* Must include the PEM header and footer:
|
||||
* "-----BEGIN CERTIFICATE-----\n"\
|
||||
* "...base64 data...\n"\
|
||||
* "-----END CERTIFICATE-----\n"
|
||||
*
|
||||
* #define democonfigROOT_CA_PEM "...insert here..."
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief Client certificate.
|
||||
*
|
||||
* For AWS IoT MQTT broker, refer to the AWS documentation below for details
|
||||
* regarding client authentication.
|
||||
* https://docs.aws.amazon.com/iot/latest/developerguide/client-authentication.html
|
||||
*
|
||||
* @note This certificate should be PEM-encoded.
|
||||
*
|
||||
* Must include the PEM header and footer:
|
||||
* "-----BEGIN CERTIFICATE-----\n"\
|
||||
* "...base64 data...\n"\
|
||||
* "-----END CERTIFICATE-----\n"
|
||||
*
|
||||
* #define democonfigCLIENT_CERTIFICATE_PEM "...insert here..."
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief Client's private key.
|
||||
*
|
||||
*!!! Please note pasting a key into the header file in this manner is for
|
||||
*!!! convenience of demonstration only and should not be done in production.
|
||||
*!!! Never paste a production private key here!. Production devices should
|
||||
*!!! store keys securely, such as within a secure element. Additionally,
|
||||
*!!! we provide the corePKCS library that further enhances security by
|
||||
*!!! enabling securely stored keys to be used without exposing them to
|
||||
*!!! software.
|
||||
*
|
||||
* For AWS IoT MQTT broker, refer to the AWS documentation below for details
|
||||
* regarding clientauthentication.
|
||||
* https://docs.aws.amazon.com/iot/latest/developerguide/client-authentication.html
|
||||
*
|
||||
* @note This private key should be PEM-encoded.
|
||||
*
|
||||
* Must include the PEM header and footer:
|
||||
* "-----BEGIN RSA PRIVATE KEY-----\n"\
|
||||
* "...base64 data...\n"\
|
||||
* "-----END RSA PRIVATE KEY-----\n"
|
||||
*
|
||||
* #define democonfigCLIENT_PRIVATE_KEY_PEM "...insert here..."
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief An option to disable Server Name Indication.
|
||||
*
|
||||
* @note When using a local Mosquitto server setup, SNI needs to be disabled
|
||||
* for an MQTT broker that only has an IP address but no hostname. However,
|
||||
* SNI should be enabled whenever possible.
|
||||
*/
|
||||
#define democonfigDISABLE_SNI ( pdFALSE )
|
||||
|
||||
/**
|
||||
* @brief Configuration that indicates if the demo connection is made to the AWS IoT Core MQTT broker.
|
||||
*
|
||||
* If username/password based authentication is used, the demo will use appropriate TLS ALPN and
|
||||
* SNI configurations as required for the Custom Authentication feature of AWS IoT.
|
||||
* For more information, refer to the following documentation:
|
||||
* https://docs.aws.amazon.com/iot/latest/developerguide/custom-auth.html#custom-auth-mqtt
|
||||
*
|
||||
* #define democonfigUSE_AWS_IOT_CORE_BROKER ( 1 )
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief The username value for authenticating client to the MQTT broker when
|
||||
* username/password based client authentication is used.
|
||||
*
|
||||
* For AWS IoT MQTT broker, refer to the AWS IoT documentation below for
|
||||
* details regarding client authentication with a username and password.
|
||||
* https://docs.aws.amazon.com/iot/latest/developerguide/custom-authentication.html
|
||||
* An authorizer setup needs to be done, as mentioned in the above link, to use
|
||||
* username/password based client authentication.
|
||||
*
|
||||
* #define democonfigCLIENT_USERNAME "...insert here..."
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief The password value for authenticating client to the MQTT broker when
|
||||
* username/password based client authentication is used.
|
||||
*
|
||||
* For AWS IoT MQTT broker, refer to the AWS IoT documentation below for
|
||||
* details regarding client authentication with a username and password.
|
||||
* https://docs.aws.amazon.com/iot/latest/developerguide/custom-authentication.html
|
||||
* An authorizer setup needs to be done, as mentioned in the above link, to use
|
||||
* username/password based client authentication.
|
||||
*
|
||||
* #define democonfigCLIENT_PASSWORD "...insert here..."
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief The name of the operating system that the application is running on.
|
||||
* The current value is given as an example. Please update for your specific
|
||||
* operating system.
|
||||
*/
|
||||
#define democonfigOS_NAME "FreeRTOS"
|
||||
|
||||
/**
|
||||
* @brief The version of the operating system that the application is running
|
||||
* on. The current value is given as an example. Please update for your specific
|
||||
* operating system version.
|
||||
*/
|
||||
#define democonfigOS_VERSION tskKERNEL_VERSION_NUMBER
|
||||
|
||||
/**
|
||||
* @brief The name of the hardware platform the application is running on. The
|
||||
* current value is given as an example. Please update for your specific
|
||||
* hardware platform.
|
||||
*/
|
||||
#define democonfigHARDWARE_PLATFORM_NAME "WinSim"
|
||||
|
||||
/**
|
||||
* @brief The name of the MQTT library used and its version, following an "@"
|
||||
* symbol.
|
||||
*/
|
||||
#include "core_mqtt.h" /* Include coreMQTT header for MQTT_LIBRARY_VERSION macro. */
|
||||
#define democonfigMQTT_LIB "core-mqtt@"MQTT_LIBRARY_VERSION
|
||||
|
||||
/**
|
||||
* @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
|
||||
|
||||
/**
|
||||
* @brief Set the priority of the main demo task.
|
||||
*/
|
||||
#define democonfigDEMO_PRIORITY ( tskIDLE_PRIORITY + 1 )
|
||||
|
||||
/**
|
||||
* @brief Size of the network buffer for MQTT packets.
|
||||
*/
|
||||
#define democonfigNETWORK_BUFFER_SIZE ( 1024U )
|
||||
|
||||
/**
|
||||
* @brief Size of the range request from 1nce onboarding service.
|
||||
*/
|
||||
#define democonfigRANGE_SIZE ( 1000U )
|
||||
|
||||
#endif /* DEMO_CONFIG_H */
|
@ -0,0 +1,137 @@
|
||||
/*
|
||||
* FreeRTOS V202107.00
|
||||
* Copyright (C) 2020 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.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
/* 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_ERROR_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_cellular_send( void * ctx,
|
||||
const unsigned char * buf,
|
||||
size_t len );
|
||||
int mbedtls_cellular_recv( void * ctx,
|
||||
unsigned char * buf,
|
||||
size_t len );
|
||||
|
||||
/* These two macro used by mbedtls_ssl_set_bio in using_mbedtls network
|
||||
* transport layer. */
|
||||
#define MBEDTLS_SSL_SEND mbedtls_cellular_send
|
||||
#define MBEDTLS_SSL_RECV mbedtls_cellular_recv
|
||||
|
||||
/* 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_ */
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,210 @@
|
||||
/*
|
||||
* FreeRTOS V202107.00
|
||||
* Copyright (C) 2020 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.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
#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 0
|
||||
#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 configuration options. */
|
||||
#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 to which logging is sent should UDP logging be enabled. */
|
||||
#define configUDP_LOGGING_ADDR0 192
|
||||
#define configUDP_LOGGING_ADDR1 168
|
||||
#define configUDP_LOGGING_ADDR2 0
|
||||
#define configUDP_LOGGING_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 0x6a
|
||||
|
||||
/* 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 */
|
@ -0,0 +1,310 @@
|
||||
/*
|
||||
* FreeRTOS V202107.00
|
||||
* Copyright (C) 2020 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.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
*
|
||||
* 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 1
|
||||
#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 ( 5000 )
|
||||
|
||||
/* 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 */
|
@ -0,0 +1,897 @@
|
||||
<?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="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\coreMQTT">
|
||||
<UniqueIdentifier>{2d17d5e6-ed70-4e42-9693-f7a63baf4948}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\standard\coreMQTT\include">
|
||||
<UniqueIdentifier>{6ad56e6d-c330-4830-8f4b-c75b05dfa866}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\platform">
|
||||
<UniqueIdentifier>{84613aa2-91dc-4e1a-a3b3-823b6d7bf0e0}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\mbedtls">
|
||||
<UniqueIdentifier>{7bedd2e3-adbb-4c95-9632-445132b459ce}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\mbedtls\include">
|
||||
<UniqueIdentifier>{07a14673-4d02-4780-a099-6b8c654dff91}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\mbedtls\library">
|
||||
<UniqueIdentifier>{e875c5e3-40a2-4408-941e-5e1a951cc663}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\platform\mbedtls">
|
||||
<UniqueIdentifier>{8a0aa896-6b3a-49b3-997e-681f0d1949ae}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\platform\transport">
|
||||
<UniqueIdentifier>{6a35782c-bc09-42d5-a850-98bcb668a4dc}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\platform\backoff_algorithm">
|
||||
<UniqueIdentifier>{fcf93295-15e2-4a84-a5e9-b3c162e9f061}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\platform\backoff_algorithm\include">
|
||||
<UniqueIdentifier>{84164849-198e-497b-b135-322242d511cf}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\platform\logging">
|
||||
<UniqueIdentifier>{b61fd40e-ae93-4a08-9ee7-5dc8182595be}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Config">
|
||||
<UniqueIdentifier>{0c062983-2e9b-43c4-abd7-daf4e6254d96}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Common">
|
||||
<UniqueIdentifier>{141c3342-468b-4833-a23a-70ac37be207b}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular">
|
||||
<UniqueIdentifier>{9d52e9bc-39e7-4d8e-a150-64eeeae9410b}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\include">
|
||||
<UniqueIdentifier>{26ee1535-b417-427d-8e72-79c6c859db6b}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\interface">
|
||||
<UniqueIdentifier>{5465caea-3879-404b-a54e-753ece92941c}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\include\common">
|
||||
<UniqueIdentifier>{2559b11d-a741-471f-ad56-e7263dc15046}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\include\private">
|
||||
<UniqueIdentifier>{553e6fa4-ea81-46c6-bc4e-b694d9fa766e}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Module">
|
||||
<UniqueIdentifier>{a53e6044-6b9b-4e35-aaed-43e6f9dfbdb2}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS+TCP">
|
||||
<UniqueIdentifier>{6c3bcc0b-b831-4567-9ca9-525a5a75427c}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS+TCP\include">
|
||||
<UniqueIdentifier>{bfecf3e3-7116-4b34-9f78-dc11bc1fbbf3}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS+TCP\portable">
|
||||
<UniqueIdentifier>{aa0ef4b9-5c3e-4a1a-82b1-7938b1a596a7}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Common\mbedtls">
|
||||
<UniqueIdentifier>{d7c1e40c-3e7e-4e0e-b027-697eb7dd60bd}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\platform\transport\include">
|
||||
<UniqueIdentifier>{ecbccccb-07f7-402c-a775-58bae2032453}</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="..\..\..\..\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="..\..\..\..\FreeRTOS\Source\stream_buffer.c">
|
||||
<Filter>FreeRTOS\Source</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\aes.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\aesni.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\arc4.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\aria.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\asn1parse.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\asn1write.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\base64.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\bignum.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\blowfish.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\camellia.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ccm.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\certs.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\chacha20.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\chachapoly.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\cipher.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\cipher_wrap.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\cmac.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ctr_drbg.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\debug.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\des.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\dhm.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ecdh.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ecdsa.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ecjpake.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ecp.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ecp_curves.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\entropy.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\entropy_poll.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\error.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\gcm.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\havege.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\hkdf.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\hmac_drbg.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\md.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\md2.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\md4.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\md5.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\memory_buffer_alloc.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\net_sockets.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\nist_kw.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\oid.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\padlock.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\pem.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\pk.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\pk_wrap.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\pkcs5.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\pkcs11.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\pkcs12.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\pkparse.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\pkwrite.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\platform.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\platform_util.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\poly1305.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ripemd160.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\rsa.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\rsa_internal.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\sha1.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\sha256.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\sha512.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ssl_cache.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ssl_ciphersuites.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ssl_cli.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ssl_cookie.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ssl_msg.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ssl_srv.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ssl_ticket.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ssl_tls.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\threading.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\timing.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\version.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\version_features.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\x509.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\x509_create.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\x509_crl.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\x509_crt.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\x509_csr.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\x509write_crt.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\x509write_csr.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\xtea.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\FreeRTOS-Plus\Demo\Common\Logging\windows\Logging_WinSim.c" />
|
||||
<ClCompile Include="..\Common\main.c" />
|
||||
<ClCompile Include="DemoTasks\MutualAuthMQTTExample.c">
|
||||
<Filter>DemoTasks</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\Utilities\backoff_algorithm\source\backoff_algorithm.c">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\backoff_algorithm</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\Application-Protocols\coreMQTT\source\core_mqtt.c">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\coreMQTT</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\Application-Protocols\coreMQTT\source\core_mqtt_state.c">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\coreMQTT</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\Application-Protocols\coreMQTT\source\core_mqtt_serializer.c">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\coreMQTT</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\error.c" />
|
||||
<ClCompile Include="..\Common\cellular_platform.c">
|
||||
<Filter>Common</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\Common\comm_if_windows.c">
|
||||
<Filter>Common</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\cellular_3gpp_api.c">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\cellular_3gpp_urc_handler.c">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\cellular_at_core.c">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\cellular_common.c">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\cellular_common_api.c">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\cellular_pkthandler.c">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\cellular_pktio.c">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\Common\cellular_setup.c">
|
||||
<Filter>Common</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_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_IP.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\FreeRTOS_Stream_Buffer.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="..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_UDP_IP.c">
|
||||
<Filter>FreeRTOS+\FreeRTOS+TCP</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\error.c" />
|
||||
<ClCompile Include="..\..\..\Source\FreeRTOS-Cellular-Interface\modules\hl7802\cellular_hl7802.c">
|
||||
<Filter>Module</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\FreeRTOS-Cellular-Interface\modules\hl7802\cellular_hl7802_api.c">
|
||||
<Filter>Module</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\FreeRTOS-Cellular-Interface\modules\hl7802\cellular_hl7802_urc_handler.c">
|
||||
<Filter>Module</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\FreeRTOS-Cellular-Interface\modules\hl7802\cellular_hl7802_wrapper.c">
|
||||
<Filter>Module</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\error.c" />
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\error.c" />
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\error.c" />
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\error.c" />
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\error.c" />
|
||||
<ClCompile Include="..\..\..\Source\Utilities\mbedtls_freertos\mbedtls_bio_freertos_cellular.c">
|
||||
<Filter>Common\mbedtls</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\Utilities\mbedtls_freertos\mbedtls_freertos_port.c">
|
||||
<Filter>Common\mbedtls</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\error.c" />
|
||||
<ClCompile Include="..\..\..\Source\Application-Protocols\network_transport\sockets_wrapper\cellular\sockets_wrapper.c">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\transport</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\Application-Protocols\network_transport\using_mbedtls\using_mbedtls\using_mbedtls.c">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\transport</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<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="..\..\..\..\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\Application-Protocols\coreMQTT\source\include\core_mqtt_serializer.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\coreMQTT\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\Application-Protocols\coreMQTT\source\include\core_mqtt_state.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\coreMQTT\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\Application-Protocols\coreMQTT\source\include\core_mqtt.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\coreMQTT\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\aes.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\aesni.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\arc4.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\aria.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\asn1.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\asn1write.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\base64.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\bignum.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\blowfish.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\bn_mul.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\camellia.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\ccm.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\certs.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\chacha20.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\chachapoly.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\check_config.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\cipher.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\cipher_internal.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\cmac.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\compat-1.3.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\config.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\ctr_drbg.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\debug.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\des.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\dhm.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\ecdh.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\ecdsa.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\ecjpake.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\ecp.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\ecp_internal.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\entropy.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\entropy_poll.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\error.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\gcm.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\havege.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\hkdf.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\hmac_drbg.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\md.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\md_internal.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\md2.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\md4.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\md5.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\memory_buffer_alloc.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\net.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\net_sockets.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\nist_kw.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\oid.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\padlock.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\pem.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\pk.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\pk_internal.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\pkcs5.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\pkcs11.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\pkcs12.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\platform.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\platform_time.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\platform_util.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\poly1305.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\psa_util.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\ripemd160.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\rsa.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\rsa_internal.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\sha1.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\sha256.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\sha512.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\ssl.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\ssl_cache.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\ssl_ciphersuites.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\ssl_cookie.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\ssl_internal.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\ssl_ticket.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\threading.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\timing.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\version.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\x509.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\x509_crl.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\x509_crt.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\x509_csr.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\xtea.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\error.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\mbedtls</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\Utilities\mbedtls_freertos\threading_alt.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\mbedtls</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\Application-Protocols\coreMQTT\source\include\core_mqtt_config_defaults.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\coreMQTT\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\Utilities\backoff_algorithm\source\include\backoff_algorithm.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\backoff_algorithm\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\FreeRTOS-Plus\Source\Utilities\logging\logging.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\logging</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\FreeRTOS-Plus\Source\Utilities\logging\logging_levels.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\logging</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\FreeRTOS-Plus\Source\Utilities\logging\logging_stack.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\logging</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="core_mqtt_config.h">
|
||||
<Filter>Config</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="demo_config.h">
|
||||
<Filter>Config</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="FreeRTOSConfig.h">
|
||||
<Filter>Config</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="FreeRTOSIPConfig.h">
|
||||
<Filter>Config</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="mbedtls_config.h">
|
||||
<Filter>Config</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\error.h" />
|
||||
<ClInclude Include="cellular_config.h">
|
||||
<Filter>Config</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\Common\cellular_platform.h">
|
||||
<Filter>Common</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\interface\cellular_comm_interface.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\interface</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\include\common\cellular_at_core.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\include\common</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\include\common\cellular_common.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\include\common</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\include\common\cellular_common_api.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\include\common</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\include\common\cellular_common_portable.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\include\common</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\include\private\cellular_common_internal.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\include\private</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\include\private\cellular_internal.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\include\private</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\include\private\cellular_pkthandler_internal.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\include\private</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\include\private\cellular_pktio_internal.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\include\private</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\include\cellular_api.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\include\cellular_config_defaults.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\include\cellular_types.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\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_DNS.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_errno_TCP.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_IP_Private.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_Stream_Buffer.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\FreeRTOS_UDP_IP.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="..\..\..\Source\FreeRTOS-Plus-TCP\include\NetworkBufferManagement.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\FreeRTOS-Plus-TCP\include\NetworkInterface.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\error.h" />
|
||||
<ClInclude Include="..\..\..\Source\FreeRTOS-Cellular-Interface\modules\hl7802\cellular_hl7802.h">
|
||||
<Filter>Module</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\error.h" />
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\error.h" />
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\error.h" />
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\error.h" />
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\error.h" />
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\error.h" />
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\error.h" />
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\error.h" />
|
||||
<ClInclude Include="..\..\..\Source\Application-Protocols\coreMQTT\source\interface\transport_interface.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\Application-Protocols\network_transport\sockets_wrapper\cellular\sockets_wrapper.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\transport\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\Application-Protocols\network_transport\using_mbedtls\using_mbedtls\using_mbedtls.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\transport\include</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
</Project>
|
@ -0,0 +1,76 @@
|
||||
/*
|
||||
* FreeRTOS V202107.00
|
||||
* Copyright (C) 2020 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.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file cellular_config.h
|
||||
* @brief cellular config options.
|
||||
*/
|
||||
|
||||
#ifndef __CELLULAR_CONFIG_H__
|
||||
#define __CELLULAR_CONFIG_H__
|
||||
|
||||
/* This is a project specific file and is used to override config values defined
|
||||
* in cellular_config_defaults.h. */
|
||||
|
||||
/**
|
||||
* Cellular comm interface make use of COM port on computer to communicate with
|
||||
* cellular module on windows simulator, for example "COM5".
|
||||
* #define CELLULAR_COMM_INTERFACE_PORT "...insert here..."
|
||||
*/
|
||||
|
||||
/*
|
||||
* Default APN for network registration.
|
||||
* #define CELLULAR_APN "...insert here..."
|
||||
*/
|
||||
|
||||
/*
|
||||
* PDN context id for cellular network.
|
||||
*/
|
||||
#define CELLULAR_PDN_CONTEXT_ID ( CELLULAR_PDN_CONTEXT_ID_MIN )
|
||||
|
||||
/*
|
||||
* PDN connect timeout for network registration.
|
||||
*/
|
||||
#define CELLULAR_PDN_CONNECT_TIMEOUT ( 100000UL )
|
||||
|
||||
/*
|
||||
* Overwrite default config for different cellular modules.
|
||||
*/
|
||||
|
||||
/*
|
||||
* GetHostByName API is not used in the demo. IP address is used to store the hostname.
|
||||
* The value should be longer than the length of democonfigMQTT_BROKER_ENDPOINT in demo_config.h.
|
||||
*/
|
||||
#define CELLULAR_IP_ADDRESS_MAX_SIZE ( 64U )
|
||||
|
||||
/*
|
||||
* GSM network is not supported in HL7800.
|
||||
* Add this config to suppress Error message if you are using HL7800.
|
||||
* #define CELLULAR_MODEM_NO_GSM_NETWORK
|
||||
*/
|
||||
#define CELLULAR_MODEM_NO_GSM_NETWORK
|
||||
|
||||
#endif /* __CELLULAR_CONFIG_H__ */
|
@ -0,0 +1,80 @@
|
||||
/*
|
||||
* FreeRTOS V202107.00
|
||||
* Copyright (C) 2020 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.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef CORE_MQTT_CONFIG_H
|
||||
#define CORE_MQTT_CONFIG_H
|
||||
|
||||
/**************************************************/
|
||||
/******* DO NOT CHANGE the following order ********/
|
||||
/**************************************************/
|
||||
|
||||
/* Include logging header files and define logging macros in the following order:
|
||||
* 1. Include the header file "logging_levels.h".
|
||||
* 2. Define the LIBRARY_LOG_NAME and LIBRARY_LOG_LEVEL macros depending on
|
||||
* the logging configuration for MQTT.
|
||||
* 3. Include the header file "logging_stack.h", if logging is enabled for MQTT.
|
||||
*/
|
||||
|
||||
#include "logging_levels.h"
|
||||
|
||||
/* Logging configuration for the MQTT library. */
|
||||
#ifndef LIBRARY_LOG_NAME
|
||||
#define LIBRARY_LOG_NAME "MQTT"
|
||||
#endif
|
||||
|
||||
#ifndef LIBRARY_LOG_LEVEL
|
||||
#define LIBRARY_LOG_LEVEL LOG_ERROR
|
||||
#endif
|
||||
|
||||
/* Prototype for the function used to print to console on Windows simulator
|
||||
* of FreeRTOS.
|
||||
* The function prints to the console before the network is connected;
|
||||
* then a UDP port after the network has connected. */
|
||||
extern void vLoggingPrintf( const char * pcFormatString,
|
||||
... );
|
||||
|
||||
/* Map the SdkLog macro to the logging function to enable logging
|
||||
* on Windows simulator. */
|
||||
#ifndef SdkLog
|
||||
#define SdkLog( message ) vLoggingPrintf message
|
||||
#endif
|
||||
|
||||
#include "logging_stack.h"
|
||||
/************ End of logging configuration ****************/
|
||||
|
||||
/**
|
||||
* @brief The maximum number of MQTT PUBLISH messages that may be pending
|
||||
* acknowledgement at any time.
|
||||
*
|
||||
* QoS 1 and 2 MQTT PUBLISHes require acknowledgment from the server before
|
||||
* they can be completed. While they are awaiting the acknowledgment, the
|
||||
* client must maintain information about their state. The value of this
|
||||
* macro sets the limit on how many simultaneous PUBLISH states an MQTT
|
||||
* context maintains.
|
||||
*/
|
||||
#define MQTT_STATE_ARRAY_MAX_COUNT 10U
|
||||
|
||||
#endif /* ifndef CORE_MQTT_CONFIG_H */
|
@ -0,0 +1,273 @@
|
||||
/*
|
||||
* FreeRTOS V202107.00
|
||||
* Copyright (C) 2020 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.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef DEMO_CONFIG_H
|
||||
#define DEMO_CONFIG_H
|
||||
|
||||
/* FreeRTOS config include. */
|
||||
#include "FreeRTOSConfig.h"
|
||||
|
||||
/**************************************************/
|
||||
/******* DO NOT CHANGE the following order ********/
|
||||
/**************************************************/
|
||||
|
||||
/* Include logging header files and define logging macros in the following order:
|
||||
* 1. Include the header file "logging_levels.h".
|
||||
* 2. Define the LIBRARY_LOG_NAME and LIBRARY_LOG_LEVEL macros depending on
|
||||
* the logging configuration for DEMO.
|
||||
* 3. Include the header file "logging_stack.h", if logging is enabled for DEMO.
|
||||
*/
|
||||
|
||||
#include "logging_levels.h"
|
||||
|
||||
/* Logging configuration for the Demo. */
|
||||
#ifndef LIBRARY_LOG_NAME
|
||||
#define LIBRARY_LOG_NAME "CellularHL7802"
|
||||
#endif
|
||||
|
||||
#ifndef LIBRARY_LOG_LEVEL
|
||||
#define LIBRARY_LOG_LEVEL LOG_INFO
|
||||
#endif
|
||||
|
||||
/* Prototype for the function used to print to console on Windows simulator
|
||||
* of FreeRTOS.
|
||||
* The function prints to the console before the network is connected;
|
||||
* then a UDP port after the network has connected. */
|
||||
extern void vLoggingPrintf( const char * pcFormatString,
|
||||
... );
|
||||
|
||||
/* Map the SdkLog macro to the logging function to enable logging
|
||||
* on Windows simulator. */
|
||||
#ifndef SdkLog
|
||||
#define SdkLog( message ) vLoggingPrintf message
|
||||
#endif
|
||||
|
||||
#include "logging_stack.h"
|
||||
|
||||
/************ End of logging configuration ****************/
|
||||
|
||||
/**
|
||||
* @brief The MQTT client identifier used in this example. Each client identifier
|
||||
* must be unique; so edit as required to ensure that no two clients connecting to
|
||||
* the same broker use the same client identifier.
|
||||
*
|
||||
*!!! Please note a #defined constant is used for convenience of demonstration
|
||||
*!!! only. Production devices can use something unique to the device that can
|
||||
*!!! be read by software, such as a production serial number, instead of a
|
||||
*!!! hard coded constant.
|
||||
*
|
||||
* #define democonfigCLIENT_IDENTIFIER "insert here."
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief Endpoint of the MQTT broker to connect to.
|
||||
*
|
||||
* This demo application can be run with any MQTT broker, that supports mutual
|
||||
* authentication.
|
||||
*
|
||||
* For AWS IoT MQTT broker, this is the Thing's REST API Endpoint.
|
||||
*
|
||||
* @note Your AWS IoT Core endpoint can be found in the AWS IoT console under
|
||||
* Settings/Custom Endpoint, or using the describe-endpoint REST API (with
|
||||
* AWS CLI command line tool).
|
||||
*
|
||||
* @note If you would like to setup an MQTT broker for running this demo,
|
||||
* please see `mqtt_broker_setup.txt`.
|
||||
*
|
||||
* #define democonfigMQTT_BROKER_ENDPOINT "...insert here..."
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief The port to use for the demo.
|
||||
*
|
||||
* In general, port 8883 is for secured MQTT connections.
|
||||
*
|
||||
* @note Port 443 requires use of the ALPN TLS extension with the ALPN protocol
|
||||
* name. Using ALPN with this demo would require additional changes, including
|
||||
* setting the `pAlpnProtos` member of the `NetworkCredentials_t` struct before
|
||||
* forming the TLS connection. When using port 8883, ALPN is not required.
|
||||
*
|
||||
* #define democonfigMQTT_BROKER_PORT ( insert here. )
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief Server's root CA certificate.
|
||||
*
|
||||
* For AWS IoT MQTT broker, this certificate is used to identify the AWS IoT
|
||||
* server and is publicly available. Refer to the AWS documentation available
|
||||
* in the link below.
|
||||
* https://docs.aws.amazon.com/iot/latest/developerguide/server-authentication.html#server-authentication-certs
|
||||
*
|
||||
* @note This certificate should be PEM-encoded.
|
||||
*
|
||||
* Must include the PEM header and footer:
|
||||
* "-----BEGIN CERTIFICATE-----\n"\
|
||||
* "...base64 data...\n"\
|
||||
* "-----END CERTIFICATE-----\n"
|
||||
*
|
||||
* #define democonfigROOT_CA_PEM "...insert here..."
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief Client certificate.
|
||||
*
|
||||
* For AWS IoT MQTT broker, refer to the AWS documentation below for details
|
||||
* regarding client authentication.
|
||||
* https://docs.aws.amazon.com/iot/latest/developerguide/client-authentication.html
|
||||
*
|
||||
* @note This certificate should be PEM-encoded.
|
||||
*
|
||||
* Must include the PEM header and footer:
|
||||
* "-----BEGIN CERTIFICATE-----\n"\
|
||||
* "...base64 data...\n"\
|
||||
* "-----END CERTIFICATE-----\n"
|
||||
*
|
||||
* #define democonfigCLIENT_CERTIFICATE_PEM "...insert here..."
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief Client's private key.
|
||||
*
|
||||
*!!! Please note pasting a key into the header file in this manner is for
|
||||
*!!! convenience of demonstration only and should not be done in production.
|
||||
*!!! Never paste a production private key here!. Production devices should
|
||||
*!!! store keys securely, such as within a secure element. Additionally,
|
||||
*!!! we provide the corePKCS library that further enhances security by
|
||||
*!!! enabling securely stored keys to be used without exposing them to
|
||||
*!!! software.
|
||||
*
|
||||
* For AWS IoT MQTT broker, refer to the AWS documentation below for details
|
||||
* regarding clientauthentication.
|
||||
* https://docs.aws.amazon.com/iot/latest/developerguide/client-authentication.html
|
||||
*
|
||||
* @note This private key should be PEM-encoded.
|
||||
*
|
||||
* Must include the PEM header and footer:
|
||||
* "-----BEGIN RSA PRIVATE KEY-----\n"\
|
||||
* "...base64 data...\n"\
|
||||
* "-----END RSA PRIVATE KEY-----\n"
|
||||
*
|
||||
* #define democonfigCLIENT_PRIVATE_KEY_PEM "...insert here..."
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief An option to disable Server Name Indication.
|
||||
*
|
||||
* @note When using a local Mosquitto server setup, SNI needs to be disabled
|
||||
* for an MQTT broker that only has an IP address but no hostname. However,
|
||||
* SNI should be enabled whenever possible.
|
||||
*/
|
||||
#define democonfigDISABLE_SNI ( pdFALSE )
|
||||
|
||||
/**
|
||||
* @brief Configuration that indicates if the demo connection is made to the AWS IoT Core MQTT broker.
|
||||
*
|
||||
* If username/password based authentication is used, the demo will use appropriate TLS ALPN and
|
||||
* SNI configurations as required for the Custom Authentication feature of AWS IoT.
|
||||
* For more information, refer to the following documentation:
|
||||
* https://docs.aws.amazon.com/iot/latest/developerguide/custom-auth.html#custom-auth-mqtt
|
||||
*
|
||||
* #define democonfigUSE_AWS_IOT_CORE_BROKER ( 1 )
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief The username value for authenticating client to the MQTT broker when
|
||||
* username/password based client authentication is used.
|
||||
*
|
||||
* For AWS IoT MQTT broker, refer to the AWS IoT documentation below for
|
||||
* details regarding client authentication with a username and password.
|
||||
* https://docs.aws.amazon.com/iot/latest/developerguide/custom-authentication.html
|
||||
* An authorizer setup needs to be done, as mentioned in the above link, to use
|
||||
* username/password based client authentication.
|
||||
*
|
||||
* #define democonfigCLIENT_USERNAME "...insert here..."
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief The password value for authenticating client to the MQTT broker when
|
||||
* username/password based client authentication is used.
|
||||
*
|
||||
* For AWS IoT MQTT broker, refer to the AWS IoT documentation below for
|
||||
* details regarding client authentication with a username and password.
|
||||
* https://docs.aws.amazon.com/iot/latest/developerguide/custom-authentication.html
|
||||
* An authorizer setup needs to be done, as mentioned in the above link, to use
|
||||
* username/password based client authentication.
|
||||
*
|
||||
* #define democonfigCLIENT_PASSWORD "...insert here..."
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief The name of the operating system that the application is running on.
|
||||
* The current value is given as an example. Please update for your specific
|
||||
* operating system.
|
||||
*/
|
||||
#define democonfigOS_NAME "FreeRTOS"
|
||||
|
||||
/**
|
||||
* @brief The version of the operating system that the application is running
|
||||
* on. The current value is given as an example. Please update for your specific
|
||||
* operating system version.
|
||||
*/
|
||||
#define democonfigOS_VERSION tskKERNEL_VERSION_NUMBER
|
||||
|
||||
/**
|
||||
* @brief The name of the hardware platform the application is running on. The
|
||||
* current value is given as an example. Please update for your specific
|
||||
* hardware platform.
|
||||
*/
|
||||
#define democonfigHARDWARE_PLATFORM_NAME "WinSim"
|
||||
|
||||
/**
|
||||
* @brief The name of the MQTT library used and its version, following an "@"
|
||||
* symbol.
|
||||
*/
|
||||
#include "core_mqtt.h" /* Include coreMQTT header for MQTT_LIBRARY_VERSION macro. */
|
||||
#define democonfigMQTT_LIB "core-mqtt@"MQTT_LIBRARY_VERSION
|
||||
|
||||
/**
|
||||
* @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
|
||||
|
||||
/**
|
||||
* @brief Set the priority of the main demo task.
|
||||
*/
|
||||
#define democonfigDEMO_PRIORITY ( tskIDLE_PRIORITY + 1 )
|
||||
|
||||
/**
|
||||
* @brief Size of the network buffer for MQTT packets.
|
||||
*/
|
||||
#define democonfigNETWORK_BUFFER_SIZE ( 1024U )
|
||||
|
||||
/**
|
||||
* @brief Size of the range request from 1nce onboarding service.
|
||||
*/
|
||||
#define democonfigRANGE_SIZE ( 1000U )
|
||||
|
||||
#endif /* DEMO_CONFIG_H */
|
@ -0,0 +1,137 @@
|
||||
/*
|
||||
* FreeRTOS V202107.00
|
||||
* Copyright (C) 2020 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.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
/* 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_ERROR_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_cellular_send( void * ctx,
|
||||
const unsigned char * buf,
|
||||
size_t len );
|
||||
int mbedtls_cellular_recv( void * ctx,
|
||||
unsigned char * buf,
|
||||
size_t len );
|
||||
|
||||
/* These two macro used by mbedtls_ssl_set_bio in using_mbedtls network
|
||||
* transport layer. */
|
||||
#define MBEDTLS_SSL_SEND mbedtls_cellular_send
|
||||
#define MBEDTLS_SSL_RECV mbedtls_cellular_recv
|
||||
|
||||
/* 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_ */
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,210 @@
|
||||
/*
|
||||
* FreeRTOS V202107.00
|
||||
* Copyright (C) 2020 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.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
#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 0
|
||||
#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 configuration options. */
|
||||
#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 to which logging is sent should UDP logging be enabled. */
|
||||
#define configUDP_LOGGING_ADDR0 192
|
||||
#define configUDP_LOGGING_ADDR1 168
|
||||
#define configUDP_LOGGING_ADDR2 0
|
||||
#define configUDP_LOGGING_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 0x6a
|
||||
|
||||
/* 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 */
|
@ -0,0 +1,310 @@
|
||||
/*
|
||||
* FreeRTOS V202107.00
|
||||
* Copyright (C) 2020 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.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
*
|
||||
* 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 1
|
||||
#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 ( 5000 )
|
||||
|
||||
/* 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 */
|
@ -0,0 +1,895 @@
|
||||
<?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="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\coreMQTT">
|
||||
<UniqueIdentifier>{2d17d5e6-ed70-4e42-9693-f7a63baf4948}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\standard\coreMQTT\include">
|
||||
<UniqueIdentifier>{6ad56e6d-c330-4830-8f4b-c75b05dfa866}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\platform">
|
||||
<UniqueIdentifier>{84613aa2-91dc-4e1a-a3b3-823b6d7bf0e0}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\mbedtls">
|
||||
<UniqueIdentifier>{7bedd2e3-adbb-4c95-9632-445132b459ce}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\mbedtls\include">
|
||||
<UniqueIdentifier>{07a14673-4d02-4780-a099-6b8c654dff91}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\mbedtls\library">
|
||||
<UniqueIdentifier>{e875c5e3-40a2-4408-941e-5e1a951cc663}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\platform\mbedtls">
|
||||
<UniqueIdentifier>{8a0aa896-6b3a-49b3-997e-681f0d1949ae}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\platform\transport">
|
||||
<UniqueIdentifier>{6a35782c-bc09-42d5-a850-98bcb668a4dc}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\platform\backoff_algorithm">
|
||||
<UniqueIdentifier>{fcf93295-15e2-4a84-a5e9-b3c162e9f061}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\platform\backoff_algorithm\include">
|
||||
<UniqueIdentifier>{84164849-198e-497b-b135-322242d511cf}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\platform\logging">
|
||||
<UniqueIdentifier>{b61fd40e-ae93-4a08-9ee7-5dc8182595be}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Config">
|
||||
<UniqueIdentifier>{0c062983-2e9b-43c4-abd7-daf4e6254d96}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Common">
|
||||
<UniqueIdentifier>{141c3342-468b-4833-a23a-70ac37be207b}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular">
|
||||
<UniqueIdentifier>{9d52e9bc-39e7-4d8e-a150-64eeeae9410b}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\include">
|
||||
<UniqueIdentifier>{26ee1535-b417-427d-8e72-79c6c859db6b}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\interface">
|
||||
<UniqueIdentifier>{5465caea-3879-404b-a54e-753ece92941c}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\include\common">
|
||||
<UniqueIdentifier>{2559b11d-a741-471f-ad56-e7263dc15046}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\include\private">
|
||||
<UniqueIdentifier>{553e6fa4-ea81-46c6-bc4e-b694d9fa766e}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Module">
|
||||
<UniqueIdentifier>{a53e6044-6b9b-4e35-aaed-43e6f9dfbdb2}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS+TCP">
|
||||
<UniqueIdentifier>{6c3bcc0b-b831-4567-9ca9-525a5a75427c}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS+TCP\include">
|
||||
<UniqueIdentifier>{bfecf3e3-7116-4b34-9f78-dc11bc1fbbf3}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS+TCP\portable">
|
||||
<UniqueIdentifier>{aa0ef4b9-5c3e-4a1a-82b1-7938b1a596a7}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Common\mbedtls">
|
||||
<UniqueIdentifier>{d7c1e40c-3e7e-4e0e-b027-697eb7dd60bd}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="FreeRTOS+\FreeRTOS IoT Libraries\platform\transport\include">
|
||||
<UniqueIdentifier>{ded2b563-424b-401d-b14d-d790c2a29f66}</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="..\..\..\..\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="..\..\..\..\FreeRTOS\Source\stream_buffer.c">
|
||||
<Filter>FreeRTOS\Source</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\aes.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\aesni.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\arc4.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\aria.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\asn1parse.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\asn1write.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\base64.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\bignum.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\blowfish.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\camellia.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ccm.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\certs.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\chacha20.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\chachapoly.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\cipher.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\cipher_wrap.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\cmac.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ctr_drbg.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\debug.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\des.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\dhm.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ecdh.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ecdsa.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ecjpake.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ecp.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ecp_curves.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\entropy.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\entropy_poll.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\error.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\gcm.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\havege.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\hkdf.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\hmac_drbg.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\md.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\md2.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\md4.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\md5.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\memory_buffer_alloc.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\net_sockets.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\nist_kw.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\oid.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\padlock.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\pem.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\pk.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\pk_wrap.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\pkcs5.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\pkcs11.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\pkcs12.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\pkparse.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\pkwrite.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\platform.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\platform_util.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\poly1305.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ripemd160.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\rsa.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\rsa_internal.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\sha1.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\sha256.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\sha512.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ssl_cache.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ssl_ciphersuites.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ssl_cli.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ssl_cookie.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ssl_msg.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ssl_srv.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ssl_ticket.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\ssl_tls.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\threading.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\timing.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\version.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\version_features.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\x509.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\x509_create.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\x509_crl.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\x509_crt.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\x509_csr.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\x509write_crt.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\x509write_csr.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\xtea.c">
|
||||
<Filter>FreeRTOS+\mbedtls\library</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\FreeRTOS-Plus\Demo\Common\Logging\windows\Logging_WinSim.c" />
|
||||
<ClCompile Include="..\Common\main.c" />
|
||||
<ClCompile Include="DemoTasks\MutualAuthMQTTExample.c">
|
||||
<Filter>DemoTasks</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\Utilities\backoff_algorithm\source\backoff_algorithm.c">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\backoff_algorithm</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\Application-Protocols\coreMQTT\source\core_mqtt.c">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\coreMQTT</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\Application-Protocols\coreMQTT\source\core_mqtt_state.c">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\coreMQTT</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\Application-Protocols\coreMQTT\source\core_mqtt_serializer.c">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\coreMQTT</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\error.c" />
|
||||
<ClCompile Include="..\Common\cellular_platform.c">
|
||||
<Filter>Common</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\Common\comm_if_windows.c">
|
||||
<Filter>Common</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\cellular_3gpp_api.c">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\cellular_3gpp_urc_handler.c">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\cellular_at_core.c">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\cellular_common.c">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\cellular_common_api.c">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\cellular_pkthandler.c">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\cellular_pktio.c">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\Common\cellular_setup.c">
|
||||
<Filter>Common</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_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_IP.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\FreeRTOS_Stream_Buffer.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="..\..\..\Source\FreeRTOS-Plus-TCP\FreeRTOS_UDP_IP.c">
|
||||
<Filter>FreeRTOS+\FreeRTOS+TCP</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\error.c" />
|
||||
<ClCompile Include="..\..\..\Source\FreeRTOS-Cellular-Interface\modules\sara_r4\cellular_r4.c">
|
||||
<Filter>Module</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\FreeRTOS-Cellular-Interface\modules\sara_r4\cellular_r4_api.c">
|
||||
<Filter>Module</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\FreeRTOS-Cellular-Interface\modules\sara_r4\cellular_r4_urc_handler.c">
|
||||
<Filter>Module</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\FreeRTOS-Cellular-Interface\modules\sara_r4\cellular_r4_wrapper.c">
|
||||
<Filter>Module</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\error.c" />
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\error.c" />
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\error.c" />
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\error.c" />
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\error.c" />
|
||||
<ClCompile Include="..\..\..\Source\Utilities\mbedtls_freertos\mbedtls_bio_freertos_cellular.c">
|
||||
<Filter>Common\mbedtls</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\Utilities\mbedtls_freertos\mbedtls_freertos_port.c">
|
||||
<Filter>Common\mbedtls</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\error.c" />
|
||||
<ClCompile Include="..\..\..\Source\Application-Protocols\network_transport\sockets_wrapper\cellular\sockets_wrapper.c">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\transport</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\Source\Application-Protocols\network_transport\using_mbedtls\using_mbedtls\using_mbedtls.c">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\transport</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<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="..\..\..\..\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\Application-Protocols\coreMQTT\source\include\core_mqtt_serializer.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\coreMQTT\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\Application-Protocols\coreMQTT\source\include\core_mqtt_state.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\coreMQTT\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\Application-Protocols\coreMQTT\source\include\core_mqtt.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\coreMQTT\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\aes.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\aesni.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\arc4.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\aria.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\asn1.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\asn1write.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\base64.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\bignum.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\blowfish.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\bn_mul.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\camellia.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\ccm.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\certs.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\chacha20.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\chachapoly.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\check_config.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\cipher.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\cipher_internal.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\cmac.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\compat-1.3.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\config.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\ctr_drbg.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\debug.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\des.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\dhm.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\ecdh.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\ecdsa.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\ecjpake.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\ecp.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\ecp_internal.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\entropy.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\entropy_poll.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\error.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\gcm.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\havege.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\hkdf.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\hmac_drbg.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\md.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\md_internal.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\md2.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\md4.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\md5.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\memory_buffer_alloc.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\net.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\net_sockets.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\nist_kw.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\oid.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\padlock.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\pem.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\pk.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\pk_internal.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\pkcs5.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\pkcs11.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\pkcs12.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\platform.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\platform_time.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\platform_util.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\poly1305.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\psa_util.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\ripemd160.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\rsa.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\rsa_internal.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\sha1.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\sha256.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\sha512.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\ssl.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\ssl_cache.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\ssl_ciphersuites.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\ssl_cookie.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\ssl_internal.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\ssl_ticket.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\threading.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\timing.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\version.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\x509.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\x509_crl.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\x509_crt.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\x509_csr.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\xtea.h">
|
||||
<Filter>FreeRTOS+\mbedtls\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\error.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\mbedtls</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\Utilities\mbedtls_freertos\threading_alt.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\mbedtls</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\Application-Protocols\coreMQTT\source\include\core_mqtt_config_defaults.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\standard\coreMQTT\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\Utilities\backoff_algorithm\source\include\backoff_algorithm.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\backoff_algorithm\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\FreeRTOS-Plus\Source\Utilities\logging\logging.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\logging</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\FreeRTOS-Plus\Source\Utilities\logging\logging_levels.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\logging</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\FreeRTOS-Plus\Source\Utilities\logging\logging_stack.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\logging</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="core_mqtt_config.h">
|
||||
<Filter>Config</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="demo_config.h">
|
||||
<Filter>Config</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="FreeRTOSConfig.h">
|
||||
<Filter>Config</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="FreeRTOSIPConfig.h">
|
||||
<Filter>Config</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="mbedtls_config.h">
|
||||
<Filter>Config</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\error.h" />
|
||||
<ClInclude Include="cellular_config.h">
|
||||
<Filter>Config</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\Common\cellular_platform.h">
|
||||
<Filter>Common</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\interface\cellular_comm_interface.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\interface</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\include\common\cellular_at_core.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\include\common</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\include\common\cellular_common.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\include\common</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\include\common\cellular_common_api.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\include\common</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\include\common\cellular_common_portable.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\include\common</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\include\private\cellular_common_internal.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\include\private</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\include\private\cellular_internal.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\include\private</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\include\private\cellular_pkthandler_internal.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\include\private</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\include\private\cellular_pktio_internal.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\include\private</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\include\cellular_api.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\include\cellular_config_defaults.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\include\cellular_types.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular\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_DNS.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\FreeRTOS-Plus-TCP\include\FreeRTOS_errno_TCP.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_IP_Private.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_Stream_Buffer.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\FreeRTOS_UDP_IP.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="..\..\..\Source\FreeRTOS-Plus-TCP\include\NetworkBufferManagement.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\FreeRTOS-Plus-TCP\include\NetworkInterface.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\error.h" />
|
||||
<ClInclude Include="..\..\..\Source\FreeRTOS-Cellular-Interface\modules\sara_r4\cellular_r4.h">
|
||||
<Filter>Module</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\error.h" />
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\error.h" />
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\error.h" />
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\error.h" />
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\error.h" />
|
||||
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\error.h" />
|
||||
<ClInclude Include="..\..\..\Source\Application-Protocols\network_transport\sockets_wrapper\cellular\sockets_wrapper.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\transport\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\Application-Protocols\network_transport\using_mbedtls\using_mbedtls\using_mbedtls.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\transport\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\Source\Application-Protocols\coreMQTT\source\interface\transport_interface.h">
|
||||
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
</Project>
|
@ -0,0 +1,113 @@
|
||||
/*
|
||||
* FreeRTOS V202107.00
|
||||
* Copyright (C) 2020 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.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file cellular_config.h
|
||||
* @brief cellular config options.
|
||||
*/
|
||||
|
||||
#ifndef __CELLULAR_CONFIG_H__
|
||||
#define __CELLULAR_CONFIG_H__
|
||||
|
||||
/* This is a project specific file and is used to override config values defined
|
||||
* in cellular_config_defaults.h. */
|
||||
|
||||
/**
|
||||
* Cellular comm interface make use of COM port on computer to communicate with
|
||||
* cellular module on windows simulator, for example "COM5".
|
||||
* #define CELLULAR_COMM_INTERFACE_PORT "...insert here..."
|
||||
*/
|
||||
|
||||
/*
|
||||
* Default APN for network registration.
|
||||
* #define CELLULAR_APN "...insert here..."
|
||||
*/
|
||||
|
||||
/*
|
||||
* PDN context id for cellular network.
|
||||
*/
|
||||
#define CELLULAR_PDN_CONTEXT_ID ( CELLULAR_PDN_CONTEXT_ID_MIN )
|
||||
|
||||
/*
|
||||
* PDN connect timeout for network registration.
|
||||
*/
|
||||
#define CELLULAR_PDN_CONNECT_TIMEOUT ( 100000UL )
|
||||
|
||||
/*
|
||||
* Overwrite default config for different cellular modules.
|
||||
*/
|
||||
|
||||
/*
|
||||
* GetHostByName API is not used in the demo. IP address is used to store the hostname.
|
||||
* The value should be longer than the length of democonfigMQTT_BROKER_ENDPOINT in demo_config.h.
|
||||
*/
|
||||
#define CELLULAR_IP_ADDRESS_MAX_SIZE ( 64U )
|
||||
|
||||
/*
|
||||
* Sara R4 maximum socket send buffer size is 1024U.
|
||||
*/
|
||||
#define CELLULAR_MAX_SEND_DATA_LEN ( 1024U )
|
||||
|
||||
/*
|
||||
* Sara R4 maximum socket receive buffer size is 1024U.
|
||||
*/
|
||||
#define CELLULAR_MAX_RECV_DATA_LEN ( 1024U )
|
||||
|
||||
/*
|
||||
* Sara R4 supports set mobile network operators commands.
|
||||
* Set the mobile network operators of your environment.
|
||||
* Reference https://www.u-blox.com/sites/default/files/SARA-R4_ATCommands_%28UBX-17003787%29.pdf
|
||||
* 0: undefined / regulatory
|
||||
* 1: SIM ICCID/IMSI select
|
||||
* 2: AT&T
|
||||
* 3: Verizon
|
||||
* 4: Telstra
|
||||
* 5: T-Mobile US
|
||||
* 6: China Telecom
|
||||
* 8: Sprint
|
||||
* 19: Vodafone
|
||||
* 20: NTT DoCoMo
|
||||
* 21: Telus
|
||||
* 28: SoftBank
|
||||
* 31: Deutsche Telekom
|
||||
* 32: US Cellular
|
||||
* 33: VIVO
|
||||
* 39: SKT
|
||||
* 44: Claro Brasil
|
||||
* 45: TIM Brasil
|
||||
* 46: Orange France
|
||||
* 90: global
|
||||
* 100: standard Europe
|
||||
* Notes :
|
||||
* The standard Europe profile should be used as the basis for all other MNOs in
|
||||
* Europe outside of Vodafone and Deutsche Telekom. However, there may be changes
|
||||
* that need to be applied to the module for properoperation with any given European
|
||||
* MNO such as attach type, RAT preference, band selection, etc. Pleaseconsult with
|
||||
* the preferred network provider.
|
||||
* #define CELLULAR_CONFIG_SARA_R4_SET_MNO_PROFILE ( ...insert here... )
|
||||
*/
|
||||
|
||||
#endif /* __CELLULAR_CONFIG_H__ */
|
@ -0,0 +1,80 @@
|
||||
/*
|
||||
* FreeRTOS V202107.00
|
||||
* Copyright (C) 2020 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.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef CORE_MQTT_CONFIG_H
|
||||
#define CORE_MQTT_CONFIG_H
|
||||
|
||||
/**************************************************/
|
||||
/******* DO NOT CHANGE the following order ********/
|
||||
/**************************************************/
|
||||
|
||||
/* Include logging header files and define logging macros in the following order:
|
||||
* 1. Include the header file "logging_levels.h".
|
||||
* 2. Define the LIBRARY_LOG_NAME and LIBRARY_LOG_LEVEL macros depending on
|
||||
* the logging configuration for MQTT.
|
||||
* 3. Include the header file "logging_stack.h", if logging is enabled for MQTT.
|
||||
*/
|
||||
|
||||
#include "logging_levels.h"
|
||||
|
||||
/* Logging configuration for the MQTT library. */
|
||||
#ifndef LIBRARY_LOG_NAME
|
||||
#define LIBRARY_LOG_NAME "MQTT"
|
||||
#endif
|
||||
|
||||
#ifndef LIBRARY_LOG_LEVEL
|
||||
#define LIBRARY_LOG_LEVEL LOG_ERROR
|
||||
#endif
|
||||
|
||||
/* Prototype for the function used to print to console on Windows simulator
|
||||
* of FreeRTOS.
|
||||
* The function prints to the console before the network is connected;
|
||||
* then a UDP port after the network has connected. */
|
||||
extern void vLoggingPrintf( const char * pcFormatString,
|
||||
... );
|
||||
|
||||
/* Map the SdkLog macro to the logging function to enable logging
|
||||
* on Windows simulator. */
|
||||
#ifndef SdkLog
|
||||
#define SdkLog( message ) vLoggingPrintf message
|
||||
#endif
|
||||
|
||||
#include "logging_stack.h"
|
||||
/************ End of logging configuration ****************/
|
||||
|
||||
/**
|
||||
* @brief The maximum number of MQTT PUBLISH messages that may be pending
|
||||
* acknowledgement at any time.
|
||||
*
|
||||
* QoS 1 and 2 MQTT PUBLISHes require acknowledgment from the server before
|
||||
* they can be completed. While they are awaiting the acknowledgment, the
|
||||
* client must maintain information about their state. The value of this
|
||||
* macro sets the limit on how many simultaneous PUBLISH states an MQTT
|
||||
* context maintains.
|
||||
*/
|
||||
#define MQTT_STATE_ARRAY_MAX_COUNT 10U
|
||||
|
||||
#endif /* ifndef CORE_MQTT_CONFIG_H */
|
@ -0,0 +1,273 @@
|
||||
/*
|
||||
* FreeRTOS V202107.00
|
||||
* Copyright (C) 2020 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.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef DEMO_CONFIG_H
|
||||
#define DEMO_CONFIG_H
|
||||
|
||||
/* FreeRTOS config include. */
|
||||
#include "FreeRTOSConfig.h"
|
||||
|
||||
/**************************************************/
|
||||
/******* DO NOT CHANGE the following order ********/
|
||||
/**************************************************/
|
||||
|
||||
/* Include logging header files and define logging macros in the following order:
|
||||
* 1. Include the header file "logging_levels.h".
|
||||
* 2. Define the LIBRARY_LOG_NAME and LIBRARY_LOG_LEVEL macros depending on
|
||||
* the logging configuration for DEMO.
|
||||
* 3. Include the header file "logging_stack.h", if logging is enabled for DEMO.
|
||||
*/
|
||||
|
||||
#include "logging_levels.h"
|
||||
|
||||
/* Logging configuration for the Demo. */
|
||||
#ifndef LIBRARY_LOG_NAME
|
||||
#define LIBRARY_LOG_NAME "CellularSaraR4"
|
||||
#endif
|
||||
|
||||
#ifndef LIBRARY_LOG_LEVEL
|
||||
#define LIBRARY_LOG_LEVEL LOG_INFO
|
||||
#endif
|
||||
|
||||
/* Prototype for the function used to print to console on Windows simulator
|
||||
* of FreeRTOS.
|
||||
* The function prints to the console before the network is connected;
|
||||
* then a UDP port after the network has connected. */
|
||||
extern void vLoggingPrintf( const char * pcFormatString,
|
||||
... );
|
||||
|
||||
/* Map the SdkLog macro to the logging function to enable logging
|
||||
* on Windows simulator. */
|
||||
#ifndef SdkLog
|
||||
#define SdkLog( message ) vLoggingPrintf message
|
||||
#endif
|
||||
|
||||
#include "logging_stack.h"
|
||||
|
||||
/************ End of logging configuration ****************/
|
||||
|
||||
/**
|
||||
* @brief The MQTT client identifier used in this example. Each client identifier
|
||||
* must be unique; so edit as required to ensure that no two clients connecting to
|
||||
* the same broker use the same client identifier.
|
||||
*
|
||||
*!!! Please note a #defined constant is used for convenience of demonstration
|
||||
*!!! only. Production devices can use something unique to the device that can
|
||||
*!!! be read by software, such as a production serial number, instead of a
|
||||
*!!! hard coded constant.
|
||||
*
|
||||
* #define democonfigCLIENT_IDENTIFIER "insert here."
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief Endpoint of the MQTT broker to connect to.
|
||||
*
|
||||
* This demo application can be run with any MQTT broker, that supports mutual
|
||||
* authentication.
|
||||
*
|
||||
* For AWS IoT MQTT broker, this is the Thing's REST API Endpoint.
|
||||
*
|
||||
* @note Your AWS IoT Core endpoint can be found in the AWS IoT console under
|
||||
* Settings/Custom Endpoint, or using the describe-endpoint REST API (with
|
||||
* AWS CLI command line tool).
|
||||
*
|
||||
* @note If you would like to setup an MQTT broker for running this demo,
|
||||
* please see `mqtt_broker_setup.txt`.
|
||||
*
|
||||
* #define democonfigMQTT_BROKER_ENDPOINT "...insert here..."
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief The port to use for the demo.
|
||||
*
|
||||
* In general, port 8883 is for secured MQTT connections.
|
||||
*
|
||||
* @note Port 443 requires use of the ALPN TLS extension with the ALPN protocol
|
||||
* name. Using ALPN with this demo would require additional changes, including
|
||||
* setting the `pAlpnProtos` member of the `NetworkCredentials_t` struct before
|
||||
* forming the TLS connection. When using port 8883, ALPN is not required.
|
||||
*
|
||||
* #define democonfigMQTT_BROKER_PORT ( insert here. )
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief Server's root CA certificate.
|
||||
*
|
||||
* For AWS IoT MQTT broker, this certificate is used to identify the AWS IoT
|
||||
* server and is publicly available. Refer to the AWS documentation available
|
||||
* in the link below.
|
||||
* https://docs.aws.amazon.com/iot/latest/developerguide/server-authentication.html#server-authentication-certs
|
||||
*
|
||||
* @note This certificate should be PEM-encoded.
|
||||
*
|
||||
* Must include the PEM header and footer:
|
||||
* "-----BEGIN CERTIFICATE-----\n"\
|
||||
* "...base64 data...\n"\
|
||||
* "-----END CERTIFICATE-----\n"
|
||||
*
|
||||
* #define democonfigROOT_CA_PEM "...insert here..."
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief Client certificate.
|
||||
*
|
||||
* For AWS IoT MQTT broker, refer to the AWS documentation below for details
|
||||
* regarding client authentication.
|
||||
* https://docs.aws.amazon.com/iot/latest/developerguide/client-authentication.html
|
||||
*
|
||||
* @note This certificate should be PEM-encoded.
|
||||
*
|
||||
* Must include the PEM header and footer:
|
||||
* "-----BEGIN CERTIFICATE-----\n"\
|
||||
* "...base64 data...\n"\
|
||||
* "-----END CERTIFICATE-----\n"
|
||||
*
|
||||
* #define democonfigCLIENT_CERTIFICATE_PEM "...insert here..."
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief Client's private key.
|
||||
*
|
||||
*!!! Please note pasting a key into the header file in this manner is for
|
||||
*!!! convenience of demonstration only and should not be done in production.
|
||||
*!!! Never paste a production private key here!. Production devices should
|
||||
*!!! store keys securely, such as within a secure element. Additionally,
|
||||
*!!! we provide the corePKCS library that further enhances security by
|
||||
*!!! enabling securely stored keys to be used without exposing them to
|
||||
*!!! software.
|
||||
*
|
||||
* For AWS IoT MQTT broker, refer to the AWS documentation below for details
|
||||
* regarding clientauthentication.
|
||||
* https://docs.aws.amazon.com/iot/latest/developerguide/client-authentication.html
|
||||
*
|
||||
* @note This private key should be PEM-encoded.
|
||||
*
|
||||
* Must include the PEM header and footer:
|
||||
* "-----BEGIN RSA PRIVATE KEY-----\n"\
|
||||
* "...base64 data...\n"\
|
||||
* "-----END RSA PRIVATE KEY-----\n"
|
||||
*
|
||||
* #define democonfigCLIENT_PRIVATE_KEY_PEM "...insert here..."
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief An option to disable Server Name Indication.
|
||||
*
|
||||
* @note When using a local Mosquitto server setup, SNI needs to be disabled
|
||||
* for an MQTT broker that only has an IP address but no hostname. However,
|
||||
* SNI should be enabled whenever possible.
|
||||
*/
|
||||
#define democonfigDISABLE_SNI ( pdFALSE )
|
||||
|
||||
/**
|
||||
* @brief Configuration that indicates if the demo connection is made to the AWS IoT Core MQTT broker.
|
||||
*
|
||||
* If username/password based authentication is used, the demo will use appropriate TLS ALPN and
|
||||
* SNI configurations as required for the Custom Authentication feature of AWS IoT.
|
||||
* For more information, refer to the following documentation:
|
||||
* https://docs.aws.amazon.com/iot/latest/developerguide/custom-auth.html#custom-auth-mqtt
|
||||
*
|
||||
* #define democonfigUSE_AWS_IOT_CORE_BROKER ( 1 )
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief The username value for authenticating client to the MQTT broker when
|
||||
* username/password based client authentication is used.
|
||||
*
|
||||
* For AWS IoT MQTT broker, refer to the AWS IoT documentation below for
|
||||
* details regarding client authentication with a username and password.
|
||||
* https://docs.aws.amazon.com/iot/latest/developerguide/custom-authentication.html
|
||||
* An authorizer setup needs to be done, as mentioned in the above link, to use
|
||||
* username/password based client authentication.
|
||||
*
|
||||
* #define democonfigCLIENT_USERNAME "...insert here..."
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief The password value for authenticating client to the MQTT broker when
|
||||
* username/password based client authentication is used.
|
||||
*
|
||||
* For AWS IoT MQTT broker, refer to the AWS IoT documentation below for
|
||||
* details regarding client authentication with a username and password.
|
||||
* https://docs.aws.amazon.com/iot/latest/developerguide/custom-authentication.html
|
||||
* An authorizer setup needs to be done, as mentioned in the above link, to use
|
||||
* username/password based client authentication.
|
||||
*
|
||||
* #define democonfigCLIENT_PASSWORD "...insert here..."
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief The name of the operating system that the application is running on.
|
||||
* The current value is given as an example. Please update for your specific
|
||||
* operating system.
|
||||
*/
|
||||
#define democonfigOS_NAME "FreeRTOS"
|
||||
|
||||
/**
|
||||
* @brief The version of the operating system that the application is running
|
||||
* on. The current value is given as an example. Please update for your specific
|
||||
* operating system version.
|
||||
*/
|
||||
#define democonfigOS_VERSION tskKERNEL_VERSION_NUMBER
|
||||
|
||||
/**
|
||||
* @brief The name of the hardware platform the application is running on. The
|
||||
* current value is given as an example. Please update for your specific
|
||||
* hardware platform.
|
||||
*/
|
||||
#define democonfigHARDWARE_PLATFORM_NAME "WinSim"
|
||||
|
||||
/**
|
||||
* @brief The name of the MQTT library used and its version, following an "@"
|
||||
* symbol.
|
||||
*/
|
||||
#include "core_mqtt.h" /* Include coreMQTT header for MQTT_LIBRARY_VERSION macro. */
|
||||
#define democonfigMQTT_LIB "core-mqtt@"MQTT_LIBRARY_VERSION
|
||||
|
||||
/**
|
||||
* @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
|
||||
|
||||
/**
|
||||
* @brief Set the priority of the main demo task.
|
||||
*/
|
||||
#define democonfigDEMO_PRIORITY ( tskIDLE_PRIORITY + 1 )
|
||||
|
||||
/**
|
||||
* @brief Size of the network buffer for MQTT packets.
|
||||
*/
|
||||
#define democonfigNETWORK_BUFFER_SIZE ( 1024U )
|
||||
|
||||
/**
|
||||
* @brief Size of the range request from 1nce onboarding service.
|
||||
*/
|
||||
#define democonfigRANGE_SIZE ( 1000U )
|
||||
|
||||
#endif /* DEMO_CONFIG_H */
|
@ -0,0 +1,137 @@
|
||||
/*
|
||||
* FreeRTOS V202107.00
|
||||
* Copyright (C) 2020 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.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
/* 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_ERROR_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_cellular_send( void * ctx,
|
||||
const unsigned char * buf,
|
||||
size_t len );
|
||||
int mbedtls_cellular_recv( void * ctx,
|
||||
unsigned char * buf,
|
||||
size_t len );
|
||||
|
||||
/* These two macro used by mbedtls_ssl_set_bio in using_mbedtls network
|
||||
* transport layer. */
|
||||
#define MBEDTLS_SSL_SEND mbedtls_cellular_send
|
||||
#define MBEDTLS_SSL_RECV mbedtls_cellular_recv
|
||||
|
||||
/* 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_ */
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,931 @@
|
||||
/*
|
||||
* Amazon FreeRTOS CELLULAR Preview Release
|
||||
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
* this software and associated documentation files (the "Software"), to deal in
|
||||
* the Software without restriction, including without limitation the rights to
|
||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
* subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* http://aws.amazon.com/freertos
|
||||
* http://www.FreeRTOS.org
|
||||
*/
|
||||
|
||||
/* Standard includes. */
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
/* FreeRTOS includes. */
|
||||
#include "FreeRTOS.h"
|
||||
#include "event_groups.h"
|
||||
|
||||
/* Sockets wrapper includes. */
|
||||
#include "sockets_wrapper.h"
|
||||
|
||||
/* FreeRTOS Cellular Library api includes. */
|
||||
#include "cellular_config.h"
|
||||
#include "cellular_config_defaults.h"
|
||||
#include "cellular_api.h"
|
||||
|
||||
/* Configure logs for the functions in this file. */
|
||||
#include "logging_levels.h"
|
||||
#ifndef LIBRARY_LOG_NAME
|
||||
#define LIBRARY_LOG_NAME "CELLULAR_SOCKETS"
|
||||
#endif
|
||||
#ifndef LIBRARY_LOG_LEVEL
|
||||
#define LIBRARY_LOG_LEVEL LOG_INFO
|
||||
#endif
|
||||
#include "logging_stack.h"
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/* Cellular socket wrapper needs application provide the cellular handle and pdn context id. */
|
||||
/* User of cellular socket wrapper should provide this variable. */
|
||||
/* coverity[misra_c_2012_rule_8_6_violation] */
|
||||
extern CellularHandle_t CellularHandle;
|
||||
|
||||
/* User of cellular socket wrapper should provide this variable. */
|
||||
/* coverity[misra_c_2012_rule_8_6_violation] */
|
||||
extern uint8_t CellularSocketPdnContextId;
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/* Windows simulator implementation. */
|
||||
#if defined( _WIN32 ) || defined( _WIN64 )
|
||||
#define strtok_r strtok_s
|
||||
#endif
|
||||
|
||||
#define CELLULAR_SOCKET_OPEN_FLAG ( 1UL << 0 )
|
||||
#define CELLULAR_SOCKET_CONNECT_FLAG ( 1UL << 1 )
|
||||
|
||||
#define SOCKET_DATA_RECEIVED_CALLBACK_BIT ( 0x00000001U )
|
||||
#define SOCKET_OPEN_CALLBACK_BIT ( 0x00000002U )
|
||||
#define SOCKET_OPEN_FAILED_CALLBACK_BIT ( 0x00000004U )
|
||||
#define SOCKET_CLOSE_CALLBACK_BIT ( 0x00000008U )
|
||||
|
||||
/* Ticks MS conversion macros. */
|
||||
#define TICKS_TO_MS( xTicks ) ( ( ( xTicks ) * 1000U ) / ( ( uint32_t ) configTICK_RATE_HZ ) )
|
||||
#define UINT32_MAX_DELAY_MS ( 0xFFFFFFFFUL )
|
||||
#define UINT32_MAX_MS_TICKS ( UINT32_MAX_DELAY_MS / ( TICKS_TO_MS( 1U ) ) )
|
||||
|
||||
/* Cellular socket access mode. */
|
||||
#define CELLULAR_SOCKET_ACCESS_MODE CELLULAR_ACCESSMODE_BUFFER
|
||||
|
||||
/* Cellular socket open timeout. */
|
||||
#define CELLULAR_SOCKET_OPEN_TIMEOUT_TICKS ( portMAX_DELAY )
|
||||
#define CELLULAR_SOCKET_CLOSE_TIMEOUT_TICKS ( pdMS_TO_TICKS( 10000U ) )
|
||||
|
||||
/* Cellular socket AT command timeout. */
|
||||
#define CELLULAR_SOCKET_RECV_TIMEOUT_MS ( 1000UL )
|
||||
|
||||
/* Time conversion constants. */
|
||||
#define _MILLISECONDS_PER_SECOND ( 1000 ) /**< @brief Milliseconds per second. */
|
||||
#define _MILLISECONDS_PER_TICK ( _MILLISECONDS_PER_SECOND / configTICK_RATE_HZ ) /**< Milliseconds per FreeRTOS tick. */
|
||||
|
||||
/* Logging macros definition. */
|
||||
#define IotLogError( ... ) LogError( ( __VA_ARGS__ ) )
|
||||
#define IotLogWarn( ... ) LogWarn( ( __VA_ARGS__ ) )
|
||||
#define IotLogInfo( ... ) LogInfo( ( __VA_ARGS__ ) )
|
||||
#define IotLogDebug( ... ) LogDebug( ( __VA_ARGS__ ) )
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
typedef struct xSOCKET
|
||||
{
|
||||
CellularSocketHandle_t cellularSocketHandle;
|
||||
uint32_t ulFlags;
|
||||
|
||||
TickType_t receiveTimeout;
|
||||
TickType_t sendTimeout;
|
||||
|
||||
EventGroupHandle_t socketEventGroupHandle;
|
||||
} cellularSocketWrapper_t;
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* @brief Get the count of milliseconds since vTaskStartScheduler was called.
|
||||
*
|
||||
* @return The count of milliseconds since vTaskStartScheduler was called.
|
||||
*/
|
||||
static uint64_t getTimeMs( void );
|
||||
|
||||
/**
|
||||
* @brief Receive data from cellular socket.
|
||||
*
|
||||
* @param[in] pCellularSocketContext Cellular socket wrapper context for socket operations.
|
||||
* @param[out] buf The data buffer for receiving data.
|
||||
* @param[in] len The length of the data buffer
|
||||
*
|
||||
* @note This function receives data. It returns when non-zero bytes of data is received,
|
||||
* when an error occurs, or when timeout occurs. Receive timeout unit is TickType_t.
|
||||
* Any timeout value bigger than portMAX_DELAY will be regarded as portMAX_DELAY.
|
||||
* In this case, this function waits portMAX_DELAY until non-zero bytes of data is received
|
||||
* or until an error occurs.
|
||||
*
|
||||
* @return Positive value indicate the number of bytes received. Otherwise, error code defined
|
||||
* in sockets_wrapper.h is returned.
|
||||
*/
|
||||
static BaseType_t prvNetworkRecvCellular( const cellularSocketWrapper_t * pCellularSocketContext,
|
||||
uint8_t * buf,
|
||||
size_t len );
|
||||
|
||||
/**
|
||||
* @brief Callback used to inform about the status of socket open.
|
||||
*
|
||||
* @param[in] urcEvent URC Event that happened.
|
||||
* @param[in] socketHandle Socket handle for which data is ready.
|
||||
* @param[in] pCallbackContext pCallbackContext parameter in
|
||||
* Cellular_SocketRegisterSocketOpenCallback function.
|
||||
*/
|
||||
static void prvCellularSocketOpenCallback( CellularUrcEvent_t urcEvent,
|
||||
CellularSocketHandle_t socketHandle,
|
||||
void * pCallbackContext );
|
||||
|
||||
/**
|
||||
* @brief Callback used to inform that data is ready for reading on a socket.
|
||||
*
|
||||
* @param[in] socketHandle Socket handle for which data is ready.
|
||||
* @param[in] pCallbackContext pCallbackContext parameter in
|
||||
* Cellular_SocketRegisterDataReadyCallback function.
|
||||
*/
|
||||
static void prvCellularSocketDataReadyCallback( CellularSocketHandle_t socketHandle,
|
||||
void * pCallbackContext );
|
||||
|
||||
|
||||
/**
|
||||
* @brief Callback used to inform that remote end closed the connection for a
|
||||
* connected socket.
|
||||
*
|
||||
* @param[in] socketHandle Socket handle for which remote end closed the
|
||||
* connection.
|
||||
* @param[in] pCallbackContext pCallbackContext parameter in
|
||||
* Cellular_SocketRegisterClosedCallback function.
|
||||
*/
|
||||
static void prvCellularSocketClosedCallback( CellularSocketHandle_t socketHandle,
|
||||
void * pCallbackContext );
|
||||
|
||||
/**
|
||||
* @brief Setup socket receive timeout.
|
||||
*
|
||||
* @param[in] pCellularSocketContext Cellular socket wrapper context for socket operations.
|
||||
* @param[out] receiveTimeout Socket receive timeout in TickType_t.
|
||||
*
|
||||
* @return On success, SOCKETS_ERROR_NONE is returned. If an error occurred, error code defined
|
||||
* in sockets_wrapper.h is returned.
|
||||
*/
|
||||
static BaseType_t prvSetupSocketRecvTimeout( cellularSocketWrapper_t * pCellularSocketContext,
|
||||
TickType_t receiveTimeout );
|
||||
|
||||
/**
|
||||
* @brief Setup socket send timeout.
|
||||
*
|
||||
* @param[in] pCellularSocketContext Cellular socket wrapper context for socket operations.
|
||||
* @param[out] sendTimeout Socket send timeout in TickType_t.
|
||||
*
|
||||
* @note Send timeout unit is TickType_t. The underlying cellular API uses miliseconds for timeout.
|
||||
* Any send timeout greater than UINT32_MAX_MS_TICKS( UINT32_MAX_DELAY_MS/MS_PER_TICKS ) or
|
||||
* portMAX_DELAY is regarded as UINT32_MAX_DELAY_MS for cellular API.
|
||||
*
|
||||
* @return On success, SOCKETS_ERROR_NONE is returned. If an error occurred, error code defined
|
||||
* in sockets_wrapper.h is returned.
|
||||
*/
|
||||
static BaseType_t prvSetupSocketSendTimeout( cellularSocketWrapper_t * pCellularSocketContext,
|
||||
TickType_t sendTimeout );
|
||||
|
||||
/**
|
||||
* @brief Setup cellular socket callback function.
|
||||
*
|
||||
* @param[in] CellularSocketHandle_t Cellular socket handle for cellular socket operations.
|
||||
* @param[in] pCellularSocketContext Cellular socket wrapper context for socket operations.
|
||||
*
|
||||
* @return On success, SOCKETS_ERROR_NONE is returned. If an error occurred, error code defined
|
||||
* in sockets_wrapper.h is returned.
|
||||
*/
|
||||
static BaseType_t prvCellularSocketRegisterCallback( CellularSocketHandle_t cellularSocketHandle,
|
||||
cellularSocketWrapper_t * pCellularSocketContext );
|
||||
|
||||
/**
|
||||
* @brief Calculate elapsed time from current time and input parameters.
|
||||
*
|
||||
* @param[in] entryTimeMs The entry time to be compared with current time.
|
||||
* @param[in] timeoutValueMs Timeout value for the comparison between entry time and current time.
|
||||
* @param[out] pElapsedTimeMs The elapsed time if timeout condition is true.
|
||||
*
|
||||
* @return True if the difference between entry time and current time is bigger or
|
||||
* equal to timeoutValueMs. Otherwise, return false.
|
||||
*/
|
||||
static bool _calculateElapsedTime( uint64_t entryTimeMs,
|
||||
uint32_t timeoutValueMs,
|
||||
uint64_t * pElapsedTimeMs );
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static uint64_t getTimeMs( void )
|
||||
{
|
||||
TimeOut_t xCurrentTime = { 0 };
|
||||
|
||||
/* This must be unsigned because the behavior of signed integer overflow is undefined. */
|
||||
uint64_t ullTickCount = 0ULL;
|
||||
|
||||
/* Get the current tick count and overflow count. vTaskSetTimeOutState()
|
||||
* is used to get these values because they are both static in tasks.c. */
|
||||
vTaskSetTimeOutState( &xCurrentTime );
|
||||
|
||||
/* Adjust the tick count for the number of times a TickType_t has overflowed. */
|
||||
ullTickCount = ( uint64_t ) ( xCurrentTime.xOverflowCount ) << ( sizeof( TickType_t ) * 8 );
|
||||
|
||||
/* Add the current tick count. */
|
||||
ullTickCount += xCurrentTime.xTimeOnEntering;
|
||||
|
||||
/* Return the ticks converted to milliseconds. */
|
||||
return ullTickCount * _MILLISECONDS_PER_TICK;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static BaseType_t prvNetworkRecvCellular( const cellularSocketWrapper_t * pCellularSocketContext,
|
||||
uint8_t * buf,
|
||||
size_t len )
|
||||
{
|
||||
CellularSocketHandle_t cellularSocketHandle = NULL;
|
||||
BaseType_t retRecvLength = 0;
|
||||
uint32_t recvLength = 0;
|
||||
TickType_t recvTimeout = 0;
|
||||
TickType_t recvStartTime = 0;
|
||||
CellularError_t socketStatus = CELLULAR_SUCCESS;
|
||||
EventBits_t waitEventBits = 0;
|
||||
|
||||
cellularSocketHandle = pCellularSocketContext->cellularSocketHandle;
|
||||
|
||||
if( pCellularSocketContext->receiveTimeout >= portMAX_DELAY )
|
||||
{
|
||||
recvTimeout = portMAX_DELAY;
|
||||
}
|
||||
else
|
||||
{
|
||||
recvTimeout = pCellularSocketContext->receiveTimeout;
|
||||
}
|
||||
|
||||
recvStartTime = xTaskGetTickCount();
|
||||
|
||||
( void ) xEventGroupClearBits( pCellularSocketContext->socketEventGroupHandle,
|
||||
SOCKET_DATA_RECEIVED_CALLBACK_BIT );
|
||||
socketStatus = Cellular_SocketRecv( CellularHandle, cellularSocketHandle, buf, len, &recvLength );
|
||||
|
||||
/* Calculate remain recvTimeout. */
|
||||
if( recvTimeout != portMAX_DELAY )
|
||||
{
|
||||
if( ( recvStartTime + recvTimeout ) > xTaskGetTickCount() )
|
||||
{
|
||||
recvTimeout = recvTimeout - ( xTaskGetTickCount() - recvStartTime );
|
||||
}
|
||||
else
|
||||
{
|
||||
recvTimeout = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if( ( socketStatus == CELLULAR_SUCCESS ) && ( recvLength == 0U ) &&
|
||||
( recvTimeout != 0U ) )
|
||||
{
|
||||
waitEventBits = xEventGroupWaitBits( pCellularSocketContext->socketEventGroupHandle,
|
||||
SOCKET_DATA_RECEIVED_CALLBACK_BIT | SOCKET_CLOSE_CALLBACK_BIT,
|
||||
pdTRUE,
|
||||
pdFALSE,
|
||||
recvTimeout );
|
||||
|
||||
if( ( waitEventBits & SOCKET_CLOSE_CALLBACK_BIT ) != 0U )
|
||||
{
|
||||
socketStatus = CELLULAR_SOCKET_CLOSED;
|
||||
}
|
||||
else if( ( waitEventBits & SOCKET_DATA_RECEIVED_CALLBACK_BIT ) != 0U )
|
||||
{
|
||||
socketStatus = Cellular_SocketRecv( CellularHandle, cellularSocketHandle, buf, len, &recvLength );
|
||||
}
|
||||
else
|
||||
{
|
||||
IotLogInfo( "prvNetworkRecv timeout" );
|
||||
socketStatus = CELLULAR_SUCCESS;
|
||||
recvLength = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if( socketStatus == CELLULAR_SUCCESS )
|
||||
{
|
||||
retRecvLength = ( BaseType_t ) recvLength;
|
||||
}
|
||||
else
|
||||
{
|
||||
IotLogError( "prvNetworkRecv failed %d", socketStatus );
|
||||
retRecvLength = SOCKETS_SOCKET_ERROR;
|
||||
}
|
||||
|
||||
IotLogDebug( "prvNetworkRecv expect %d read %d", len, recvLength );
|
||||
return retRecvLength;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static void prvCellularSocketOpenCallback( CellularUrcEvent_t urcEvent,
|
||||
CellularSocketHandle_t socketHandle,
|
||||
void * pCallbackContext )
|
||||
{
|
||||
cellularSocketWrapper_t * pCellularSocketContext = ( cellularSocketWrapper_t * ) pCallbackContext;
|
||||
|
||||
( void ) socketHandle;
|
||||
|
||||
if( pCellularSocketContext != NULL )
|
||||
{
|
||||
IotLogDebug( "Socket open callback on Socket %p %d %d.",
|
||||
pCellularSocketContext, socketHandle, urcEvent );
|
||||
|
||||
if( urcEvent == CELLULAR_URC_SOCKET_OPENED )
|
||||
{
|
||||
pCellularSocketContext->ulFlags = pCellularSocketContext->ulFlags | CELLULAR_SOCKET_CONNECT_FLAG;
|
||||
( void ) xEventGroupSetBits( pCellularSocketContext->socketEventGroupHandle,
|
||||
SOCKET_OPEN_CALLBACK_BIT );
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Socket open failed. */
|
||||
( void ) xEventGroupSetBits( pCellularSocketContext->socketEventGroupHandle,
|
||||
SOCKET_OPEN_FAILED_CALLBACK_BIT );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
IotLogError( "Spurious socket open callback." );
|
||||
}
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static void prvCellularSocketDataReadyCallback( CellularSocketHandle_t socketHandle,
|
||||
void * pCallbackContext )
|
||||
{
|
||||
cellularSocketWrapper_t * pCellularSocketContext = ( cellularSocketWrapper_t * ) pCallbackContext;
|
||||
|
||||
( void ) socketHandle;
|
||||
|
||||
if( pCellularSocketContext != NULL )
|
||||
{
|
||||
IotLogDebug( "Data ready on Socket %p", pCellularSocketContext );
|
||||
( void ) xEventGroupSetBits( pCellularSocketContext->socketEventGroupHandle,
|
||||
SOCKET_DATA_RECEIVED_CALLBACK_BIT );
|
||||
}
|
||||
else
|
||||
{
|
||||
IotLogError( "spurious data callback" );
|
||||
}
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static void prvCellularSocketClosedCallback( CellularSocketHandle_t socketHandle,
|
||||
void * pCallbackContext )
|
||||
{
|
||||
cellularSocketWrapper_t * pCellularSocketContext = ( cellularSocketWrapper_t * ) pCallbackContext;
|
||||
|
||||
( void ) socketHandle;
|
||||
|
||||
if( pCellularSocketContext != NULL )
|
||||
{
|
||||
IotLogInfo( "Socket Close on Socket %p", pCellularSocketContext );
|
||||
pCellularSocketContext->ulFlags = pCellularSocketContext->ulFlags & ( ~CELLULAR_SOCKET_CONNECT_FLAG );
|
||||
( void ) xEventGroupSetBits( pCellularSocketContext->socketEventGroupHandle,
|
||||
SOCKET_CLOSE_CALLBACK_BIT );
|
||||
}
|
||||
else
|
||||
{
|
||||
IotLogError( "spurious socket close callback" );
|
||||
}
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static BaseType_t prvSetupSocketRecvTimeout( cellularSocketWrapper_t * pCellularSocketContext,
|
||||
TickType_t receiveTimeout )
|
||||
{
|
||||
BaseType_t retSetSockOpt = SOCKETS_ERROR_NONE;
|
||||
|
||||
if( pCellularSocketContext == NULL )
|
||||
{
|
||||
retSetSockOpt = SOCKETS_EINVAL;
|
||||
}
|
||||
else
|
||||
{
|
||||
if( receiveTimeout >= portMAX_DELAY )
|
||||
{
|
||||
pCellularSocketContext->receiveTimeout = portMAX_DELAY;
|
||||
}
|
||||
else
|
||||
{
|
||||
pCellularSocketContext->receiveTimeout = receiveTimeout;
|
||||
}
|
||||
}
|
||||
|
||||
return retSetSockOpt;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static BaseType_t prvSetupSocketSendTimeout( cellularSocketWrapper_t * pCellularSocketContext,
|
||||
TickType_t sendTimeout )
|
||||
{
|
||||
CellularError_t socketStatus = CELLULAR_SUCCESS;
|
||||
BaseType_t retSetSockOpt = SOCKETS_ERROR_NONE;
|
||||
uint32_t sendTimeoutMs = 0;
|
||||
CellularSocketHandle_t cellularSocketHandle = NULL;
|
||||
|
||||
if( pCellularSocketContext == NULL )
|
||||
{
|
||||
retSetSockOpt = SOCKETS_EINVAL;
|
||||
}
|
||||
else
|
||||
{
|
||||
cellularSocketHandle = pCellularSocketContext->cellularSocketHandle;
|
||||
|
||||
if( sendTimeout >= UINT32_MAX_MS_TICKS )
|
||||
{
|
||||
/* Check if the ticks cause overflow. */
|
||||
pCellularSocketContext->sendTimeout = portMAX_DELAY;
|
||||
sendTimeoutMs = UINT32_MAX_DELAY_MS;
|
||||
}
|
||||
else if( sendTimeout >= portMAX_DELAY )
|
||||
{
|
||||
IotLogWarn( "Sendtimeout %d longer than portMAX_DELAY, %d ms is used instead",
|
||||
sendTimeout, UINT32_MAX_DELAY_MS );
|
||||
pCellularSocketContext->sendTimeout = portMAX_DELAY;
|
||||
sendTimeoutMs = UINT32_MAX_DELAY_MS;
|
||||
}
|
||||
else
|
||||
{
|
||||
pCellularSocketContext->sendTimeout = sendTimeout;
|
||||
sendTimeoutMs = TICKS_TO_MS( sendTimeout );
|
||||
}
|
||||
|
||||
socketStatus = Cellular_SocketSetSockOpt( CellularHandle,
|
||||
cellularSocketHandle,
|
||||
CELLULAR_SOCKET_OPTION_LEVEL_TRANSPORT,
|
||||
CELLULAR_SOCKET_OPTION_SEND_TIMEOUT,
|
||||
( const uint8_t * ) &sendTimeoutMs,
|
||||
sizeof( uint32_t ) );
|
||||
|
||||
if( socketStatus != CELLULAR_SUCCESS )
|
||||
{
|
||||
retSetSockOpt = SOCKETS_EINVAL;
|
||||
}
|
||||
}
|
||||
|
||||
return retSetSockOpt;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static BaseType_t prvCellularSocketRegisterCallback( CellularSocketHandle_t cellularSocketHandle,
|
||||
cellularSocketWrapper_t * pCellularSocketContext )
|
||||
{
|
||||
BaseType_t retRegCallback = SOCKETS_ERROR_NONE;
|
||||
CellularError_t socketStatus = CELLULAR_SUCCESS;
|
||||
|
||||
if( cellularSocketHandle == NULL )
|
||||
{
|
||||
retRegCallback = SOCKETS_EINVAL;
|
||||
}
|
||||
|
||||
if( retRegCallback == SOCKETS_ERROR_NONE )
|
||||
{
|
||||
socketStatus = Cellular_SocketRegisterDataReadyCallback( CellularHandle, cellularSocketHandle,
|
||||
prvCellularSocketDataReadyCallback, ( void * ) pCellularSocketContext );
|
||||
|
||||
if( socketStatus != CELLULAR_SUCCESS )
|
||||
{
|
||||
IotLogError( "Failed to SocketRegisterDataReadyCallback. Socket status %d.", socketStatus );
|
||||
retRegCallback = SOCKETS_SOCKET_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
if( retRegCallback == SOCKETS_ERROR_NONE )
|
||||
{
|
||||
socketStatus = Cellular_SocketRegisterSocketOpenCallback( CellularHandle, cellularSocketHandle,
|
||||
prvCellularSocketOpenCallback, ( void * ) pCellularSocketContext );
|
||||
|
||||
if( socketStatus != CELLULAR_SUCCESS )
|
||||
{
|
||||
IotLogError( "Failed to SocketRegisterSocketOpenCallbac. Socket status %d.", socketStatus );
|
||||
retRegCallback = SOCKETS_SOCKET_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
if( retRegCallback == SOCKETS_ERROR_NONE )
|
||||
{
|
||||
socketStatus = Cellular_SocketRegisterClosedCallback( CellularHandle, cellularSocketHandle,
|
||||
prvCellularSocketClosedCallback, ( void * ) pCellularSocketContext );
|
||||
|
||||
if( socketStatus != CELLULAR_SUCCESS )
|
||||
{
|
||||
IotLogError( "Failed to SocketRegisterClosedCallback. Socket status %d.", socketStatus );
|
||||
retRegCallback = SOCKETS_SOCKET_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
return retRegCallback;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static bool _calculateElapsedTime( uint64_t entryTimeMs,
|
||||
uint32_t timeoutValueMs,
|
||||
uint64_t * pElapsedTimeMs )
|
||||
{
|
||||
uint64_t currentTimeMs = getTimeMs();
|
||||
bool isExpired = false;
|
||||
|
||||
/* timeoutValueMs with UINT32_MAX_DELAY_MS means wait for ever, same behavior as freertos_plus_tcp. */
|
||||
if( timeoutValueMs == UINT32_MAX_DELAY_MS )
|
||||
{
|
||||
isExpired = false;
|
||||
}
|
||||
|
||||
/* timeoutValueMs = 0 means none blocking mode. */
|
||||
else if( timeoutValueMs == 0U )
|
||||
{
|
||||
isExpired = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
*pElapsedTimeMs = currentTimeMs - entryTimeMs;
|
||||
|
||||
if( ( currentTimeMs - entryTimeMs ) >= timeoutValueMs )
|
||||
{
|
||||
isExpired = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
isExpired = false;
|
||||
}
|
||||
}
|
||||
|
||||
return isExpired;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
BaseType_t Sockets_Connect( Socket_t * pTcpSocket,
|
||||
const char * pHostName,
|
||||
uint16_t port,
|
||||
uint32_t receiveTimeoutMs,
|
||||
uint32_t sendTimeoutMs )
|
||||
{
|
||||
CellularSocketHandle_t cellularSocketHandle = NULL;
|
||||
cellularSocketWrapper_t * pCellularSocketContext = NULL;
|
||||
CellularError_t cellularSocketStatus = CELLULAR_INVALID_HANDLE;
|
||||
|
||||
CellularSocketAddress_t serverAddress = { 0 };
|
||||
EventBits_t waitEventBits = 0;
|
||||
BaseType_t retConnect = SOCKETS_ERROR_NONE;
|
||||
const uint32_t defaultReceiveTimeoutMs = CELLULAR_SOCKET_RECV_TIMEOUT_MS;
|
||||
|
||||
/* Create a new TCP socket. */
|
||||
cellularSocketStatus = Cellular_CreateSocket( CellularHandle,
|
||||
CellularSocketPdnContextId,
|
||||
CELLULAR_SOCKET_DOMAIN_AF_INET,
|
||||
CELLULAR_SOCKET_TYPE_STREAM,
|
||||
CELLULAR_SOCKET_PROTOCOL_TCP,
|
||||
&cellularSocketHandle );
|
||||
|
||||
if( cellularSocketStatus != CELLULAR_SUCCESS )
|
||||
{
|
||||
IotLogError( "Failed to create cellular sockets. %d", cellularSocketStatus );
|
||||
retConnect = SOCKETS_SOCKET_ERROR;
|
||||
}
|
||||
|
||||
/* Allocate socket context. */
|
||||
if( retConnect == SOCKETS_ERROR_NONE )
|
||||
{
|
||||
pCellularSocketContext = pvPortMalloc( sizeof( cellularSocketWrapper_t ) );
|
||||
|
||||
if( pCellularSocketContext == NULL )
|
||||
{
|
||||
IotLogError( "Failed to allocate new socket context." );
|
||||
( void ) Cellular_SocketClose( CellularHandle, cellularSocketHandle );
|
||||
retConnect = SOCKETS_ENOMEM;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Initialize all the members to sane values. */
|
||||
IotLogDebug( "Created CELLULAR Socket %p.", pCellularSocketContext );
|
||||
( void ) memset( pCellularSocketContext, 0, sizeof( cellularSocketWrapper_t ) );
|
||||
pCellularSocketContext->cellularSocketHandle = cellularSocketHandle;
|
||||
pCellularSocketContext->ulFlags |= CELLULAR_SOCKET_OPEN_FLAG;
|
||||
pCellularSocketContext->socketEventGroupHandle = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/* Allocate event group for callback function. */
|
||||
if( retConnect == SOCKETS_ERROR_NONE )
|
||||
{
|
||||
pCellularSocketContext->socketEventGroupHandle = xEventGroupCreate();
|
||||
|
||||
if( pCellularSocketContext->socketEventGroupHandle == NULL )
|
||||
{
|
||||
IotLogError( "Failed create cellular socket eventGroupHandle %p.", pCellularSocketContext );
|
||||
retConnect = SOCKETS_ENOMEM;
|
||||
}
|
||||
}
|
||||
|
||||
/* Register cellular socket callback function. */
|
||||
if( retConnect == SOCKETS_ERROR_NONE )
|
||||
{
|
||||
serverAddress.ipAddress.ipAddressType = CELLULAR_IP_ADDRESS_V4;
|
||||
strncpy( serverAddress.ipAddress.ipAddress, pHostName, CELLULAR_IP_ADDRESS_MAX_SIZE );
|
||||
serverAddress.port = port;
|
||||
|
||||
IotLogDebug( "Ip address %s port %d\r\n", serverAddress.ipAddress.ipAddress, serverAddress.port );
|
||||
retConnect = prvCellularSocketRegisterCallback( cellularSocketHandle, pCellularSocketContext );
|
||||
}
|
||||
|
||||
/* Setup cellular socket recv AT command default timeout. */
|
||||
if( retConnect == SOCKETS_ERROR_NONE )
|
||||
{
|
||||
cellularSocketStatus = Cellular_SocketSetSockOpt( CellularHandle,
|
||||
cellularSocketHandle,
|
||||
CELLULAR_SOCKET_OPTION_LEVEL_TRANSPORT,
|
||||
CELLULAR_SOCKET_OPTION_RECV_TIMEOUT,
|
||||
( const uint8_t * ) &defaultReceiveTimeoutMs,
|
||||
sizeof( uint32_t ) );
|
||||
|
||||
if( cellularSocketStatus != CELLULAR_SUCCESS )
|
||||
{
|
||||
IotLogError( "Failed to setup cellular AT command receive timeout %d.", cellularSocketStatus );
|
||||
retConnect = SOCKETS_SOCKET_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
/* Setup cellular socket send/recv timeout. */
|
||||
if( retConnect == SOCKETS_ERROR_NONE )
|
||||
{
|
||||
retConnect = prvSetupSocketSendTimeout( pCellularSocketContext, pdMS_TO_TICKS( sendTimeoutMs ) );
|
||||
}
|
||||
|
||||
if( retConnect == SOCKETS_ERROR_NONE )
|
||||
{
|
||||
retConnect = prvSetupSocketRecvTimeout( pCellularSocketContext, pdMS_TO_TICKS( receiveTimeoutMs ) );
|
||||
}
|
||||
|
||||
/* Cellular socket connect. */
|
||||
if( retConnect == SOCKETS_ERROR_NONE )
|
||||
{
|
||||
( void ) xEventGroupClearBits( pCellularSocketContext->socketEventGroupHandle,
|
||||
SOCKET_DATA_RECEIVED_CALLBACK_BIT | SOCKET_OPEN_FAILED_CALLBACK_BIT );
|
||||
cellularSocketStatus = Cellular_SocketConnect( CellularHandle, cellularSocketHandle, CELLULAR_SOCKET_ACCESS_MODE, &serverAddress );
|
||||
|
||||
if( cellularSocketStatus != CELLULAR_SUCCESS )
|
||||
{
|
||||
IotLogError( "Failed to establish new connection. Socket status %d.", cellularSocketStatus );
|
||||
retConnect = SOCKETS_SOCKET_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
/* Wait the socket connection. */
|
||||
if( retConnect == SOCKETS_ERROR_NONE )
|
||||
{
|
||||
waitEventBits = xEventGroupWaitBits( pCellularSocketContext->socketEventGroupHandle,
|
||||
SOCKET_OPEN_CALLBACK_BIT | SOCKET_OPEN_FAILED_CALLBACK_BIT,
|
||||
pdTRUE,
|
||||
pdFALSE,
|
||||
CELLULAR_SOCKET_OPEN_TIMEOUT_TICKS );
|
||||
|
||||
if( waitEventBits != SOCKET_OPEN_CALLBACK_BIT )
|
||||
{
|
||||
IotLogError( "Socket connect timeout." );
|
||||
retConnect = SOCKETS_ENOTCONN;
|
||||
}
|
||||
}
|
||||
|
||||
/* Cleanup the socket if any error. */
|
||||
if( retConnect != SOCKETS_ERROR_NONE )
|
||||
{
|
||||
if( cellularSocketHandle != NULL )
|
||||
{
|
||||
( void ) Cellular_SocketClose( CellularHandle, cellularSocketHandle );
|
||||
( void ) Cellular_SocketRegisterDataReadyCallback( CellularHandle, cellularSocketHandle, NULL, NULL );
|
||||
( void ) Cellular_SocketRegisterSocketOpenCallback( CellularHandle, cellularSocketHandle, NULL, NULL );
|
||||
( void ) Cellular_SocketRegisterClosedCallback( CellularHandle, cellularSocketHandle, NULL, NULL );
|
||||
|
||||
if( pCellularSocketContext != NULL )
|
||||
{
|
||||
pCellularSocketContext->cellularSocketHandle = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
if( ( pCellularSocketContext != NULL ) && ( pCellularSocketContext->socketEventGroupHandle != NULL ) )
|
||||
{
|
||||
vEventGroupDelete( pCellularSocketContext->socketEventGroupHandle );
|
||||
pCellularSocketContext->socketEventGroupHandle = NULL;
|
||||
}
|
||||
|
||||
if( pCellularSocketContext != NULL )
|
||||
{
|
||||
vPortFree( pCellularSocketContext );
|
||||
pCellularSocketContext = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
*pTcpSocket = pCellularSocketContext;
|
||||
|
||||
return retConnect;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void Sockets_Disconnect( Socket_t xSocket )
|
||||
{
|
||||
int32_t retClose = SOCKETS_ERROR_NONE;
|
||||
cellularSocketWrapper_t * pCellularSocketContext = ( cellularSocketWrapper_t * ) xSocket;
|
||||
CellularSocketHandle_t cellularSocketHandle = NULL;
|
||||
uint32_t recvLength = 0;
|
||||
uint8_t buf[ 128 ] = { 0 };
|
||||
CellularError_t cellularSocketStatus = CELLULAR_SUCCESS;
|
||||
|
||||
/* xSocket need to be check against SOCKET_INVALID_SOCKET. */
|
||||
/* coverity[misra_c_2012_rule_11_4_violation] */
|
||||
if( ( pCellularSocketContext == NULL ) || ( xSocket == SOCKETS_INVALID_SOCKET ) )
|
||||
{
|
||||
IotLogError( "Invalid xSocket %p", pCellularSocketContext );
|
||||
retClose = SOCKETS_EINVAL;
|
||||
}
|
||||
else
|
||||
{
|
||||
cellularSocketHandle = pCellularSocketContext->cellularSocketHandle;
|
||||
}
|
||||
|
||||
if( retClose == SOCKETS_ERROR_NONE )
|
||||
{
|
||||
if( cellularSocketHandle != NULL )
|
||||
{
|
||||
/* Receive all the data before socket close. */
|
||||
do
|
||||
{
|
||||
recvLength = 0;
|
||||
cellularSocketStatus = Cellular_SocketRecv( CellularHandle, cellularSocketHandle, buf, 128, &recvLength );
|
||||
IotLogDebug( "%u bytes received in close", recvLength );
|
||||
} while( ( recvLength != 0 ) && ( cellularSocketStatus == CELLULAR_SUCCESS ) );
|
||||
|
||||
/* Close sockets. */
|
||||
if( Cellular_SocketClose( CellularHandle, cellularSocketHandle ) != CELLULAR_SUCCESS )
|
||||
{
|
||||
IotLogWarn( "Failed to destroy connection." );
|
||||
retClose = SOCKETS_SOCKET_ERROR;
|
||||
}
|
||||
|
||||
( void ) Cellular_SocketRegisterDataReadyCallback( CellularHandle, cellularSocketHandle, NULL, NULL );
|
||||
( void ) Cellular_SocketRegisterSocketOpenCallback( CellularHandle, cellularSocketHandle, NULL, NULL );
|
||||
( void ) Cellular_SocketRegisterClosedCallback( CellularHandle, cellularSocketHandle, NULL, NULL );
|
||||
pCellularSocketContext->cellularSocketHandle = NULL;
|
||||
}
|
||||
|
||||
if( pCellularSocketContext->socketEventGroupHandle != NULL )
|
||||
{
|
||||
vEventGroupDelete( pCellularSocketContext->socketEventGroupHandle );
|
||||
pCellularSocketContext->socketEventGroupHandle = NULL;
|
||||
}
|
||||
|
||||
vPortFree( pCellularSocketContext );
|
||||
}
|
||||
|
||||
IotLogDebug( "Sockets close exit with code %d", retClose );
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
int32_t Sockets_Recv( Socket_t xSocket,
|
||||
void * pvBuffer,
|
||||
size_t xBufferLength )
|
||||
{
|
||||
cellularSocketWrapper_t * pCellularSocketContext = ( cellularSocketWrapper_t * ) xSocket;
|
||||
uint8_t * buf = ( uint8_t * ) pvBuffer;
|
||||
BaseType_t retRecvLength = 0;
|
||||
|
||||
if( pCellularSocketContext == NULL )
|
||||
{
|
||||
IotLogError( "Cellular prvNetworkRecv Invalid xSocket %p", pCellularSocketContext );
|
||||
retRecvLength = ( BaseType_t ) SOCKETS_EINVAL;
|
||||
}
|
||||
else if( ( ( pCellularSocketContext->ulFlags & CELLULAR_SOCKET_OPEN_FLAG ) == 0U ) ||
|
||||
( ( pCellularSocketContext->ulFlags & CELLULAR_SOCKET_CONNECT_FLAG ) == 0U ) )
|
||||
{
|
||||
IotLogError( "Cellular prvNetworkRecv Invalid xSocket flag %p %u",
|
||||
pCellularSocketContext, pCellularSocketContext->ulFlags );
|
||||
retRecvLength = ( BaseType_t ) SOCKETS_ENOTCONN;
|
||||
}
|
||||
else
|
||||
{
|
||||
retRecvLength = ( BaseType_t ) prvNetworkRecvCellular( pCellularSocketContext, buf, xBufferLength );
|
||||
}
|
||||
|
||||
return retRecvLength;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/* This function sends the data until timeout or data is completely sent to server.
|
||||
* Send timeout unit is TickType_t. Any timeout value greater than UINT32_MAX_MS_TICKS
|
||||
* or portMAX_DELAY will be regarded as MAX delay. In this case, this function
|
||||
* will not return until all bytes of data are sent successfully or until an error occurs. */
|
||||
int32_t Sockets_Send( Socket_t xSocket,
|
||||
const void * pvBuffer,
|
||||
size_t xDataLength )
|
||||
{
|
||||
uint8_t * buf = ( uint8_t * ) pvBuffer;
|
||||
CellularSocketHandle_t cellularSocketHandle = NULL;
|
||||
BaseType_t retSendLength = 0;
|
||||
uint32_t sentLength = 0;
|
||||
CellularError_t socketStatus = CELLULAR_SUCCESS;
|
||||
cellularSocketWrapper_t * pCellularSocketContext = ( cellularSocketWrapper_t * ) xSocket;
|
||||
uint32_t bytesToSend = xDataLength;
|
||||
uint64_t entryTimeMs = getTimeMs();
|
||||
uint64_t elapsedTimeMs = 0;
|
||||
uint32_t sendTimeoutMs = 0;
|
||||
|
||||
if( pCellularSocketContext == NULL )
|
||||
{
|
||||
IotLogError( "Cellular Sockets_Send Invalid xSocket %p", pCellularSocketContext );
|
||||
retSendLength = ( BaseType_t ) SOCKETS_SOCKET_ERROR;
|
||||
}
|
||||
else if( ( ( pCellularSocketContext->ulFlags & CELLULAR_SOCKET_OPEN_FLAG ) == 0U ) ||
|
||||
( ( pCellularSocketContext->ulFlags & CELLULAR_SOCKET_CONNECT_FLAG ) == 0U ) )
|
||||
{
|
||||
IotLogError( "Cellular Sockets_Send Invalid xSocket flag %p 0x%08x",
|
||||
pCellularSocketContext, pCellularSocketContext->ulFlags );
|
||||
retSendLength = ( BaseType_t ) SOCKETS_SOCKET_ERROR;
|
||||
}
|
||||
else
|
||||
{
|
||||
cellularSocketHandle = pCellularSocketContext->cellularSocketHandle;
|
||||
|
||||
/* Convert ticks to ms delay. */
|
||||
if( ( pCellularSocketContext->sendTimeout >= UINT32_MAX_MS_TICKS ) || ( pCellularSocketContext->sendTimeout >= portMAX_DELAY ) )
|
||||
{
|
||||
/* Check if the ticks cause overflow. */
|
||||
sendTimeoutMs = UINT32_MAX_DELAY_MS;
|
||||
}
|
||||
else
|
||||
{
|
||||
sendTimeoutMs = TICKS_TO_MS( pCellularSocketContext->sendTimeout );
|
||||
}
|
||||
|
||||
/* Loop sending data until data is sent completely or timeout. */
|
||||
while( bytesToSend > 0U )
|
||||
{
|
||||
socketStatus = Cellular_SocketSend( CellularHandle,
|
||||
cellularSocketHandle,
|
||||
&buf[ retSendLength ],
|
||||
bytesToSend,
|
||||
&sentLength );
|
||||
|
||||
if( socketStatus == CELLULAR_SUCCESS )
|
||||
{
|
||||
retSendLength = retSendLength + ( BaseType_t ) sentLength;
|
||||
bytesToSend = bytesToSend - sentLength;
|
||||
}
|
||||
|
||||
/* Check socket status or timeout break. */
|
||||
if( ( socketStatus != CELLULAR_SUCCESS ) ||
|
||||
( _calculateElapsedTime( entryTimeMs, sendTimeoutMs, &elapsedTimeMs ) ) )
|
||||
{
|
||||
if( socketStatus == CELLULAR_SOCKET_CLOSED )
|
||||
{
|
||||
/* Socket already closed. No data is sent. */
|
||||
retSendLength = 0;
|
||||
}
|
||||
else if( socketStatus != CELLULAR_SUCCESS )
|
||||
{
|
||||
retSendLength = ( BaseType_t ) SOCKETS_SOCKET_ERROR;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
IotLogDebug( "Sockets_Send expect %d write %d", len, sentLength );
|
||||
}
|
||||
|
||||
return retSendLength;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------*/
|
@ -0,0 +1,136 @@
|
||||
/*
|
||||
* Amazon FreeRTOS CELLULAR Preview Release
|
||||
* Copyright (C) 2020 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.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file sockets_wrapper.h
|
||||
* @brief FreeRTOS Sockets connect and disconnect function wrapper.
|
||||
*/
|
||||
|
||||
#ifndef SOCKETS_WRAPPER_H
|
||||
#define SOCKETS_WRAPPER_H
|
||||
|
||||
/**************************************************/
|
||||
/******* DO NOT CHANGE the following order ********/
|
||||
/**************************************************/
|
||||
|
||||
/* Logging related header files are required to be included in the following order:
|
||||
* 1. Include the header file "logging_levels.h".
|
||||
* 2. Define LIBRARY_LOG_NAME and LIBRARY_LOG_LEVEL.
|
||||
* 3. Include the header file "logging_stack.h".
|
||||
*/
|
||||
|
||||
/* Include header that defines log levels. */
|
||||
#include "logging_levels.h"
|
||||
|
||||
/* Logging configuration for the Sockets. */
|
||||
#ifndef LIBRARY_LOG_NAME
|
||||
#define LIBRARY_LOG_NAME "Sockets"
|
||||
#endif
|
||||
#ifndef LIBRARY_LOG_LEVEL
|
||||
#define LIBRARY_LOG_LEVEL LOG_INFO
|
||||
#endif
|
||||
|
||||
#include "logging_stack.h"
|
||||
|
||||
/************ End of logging configuration ****************/
|
||||
|
||||
#define SOCKETS_ERROR_NONE ( 0 ) /*!< No error. */
|
||||
#define SOCKETS_SOCKET_ERROR ( -1 ) /*!< Catch-all sockets error code. */
|
||||
#define SOCKETS_EWOULDBLOCK ( -11 ) /*!< A resource is temporarily unavailable. */
|
||||
#define SOCKETS_ENOMEM ( -12 ) /*!< Memory allocation failed. */
|
||||
#define SOCKETS_EINVAL ( -22 ) /*!< Invalid argument. */
|
||||
#define SOCKETS_ENOPROTOOPT ( -109 ) /*!< A bad option was specified . */
|
||||
#define SOCKETS_ENOTCONN ( -126 ) /*!< The supplied socket is not connected. */
|
||||
#define SOCKETS_EISCONN ( -127 ) /*!< The supplied socket is already connected. */
|
||||
#define SOCKETS_ECLOSED ( -128 ) /*!< The supplied socket has already been closed. */
|
||||
#define SOCKETS_PERIPHERAL_RESET ( -1006 ) /*!< Communications peripheral has been reset. */
|
||||
|
||||
#define SOCKETS_INVALID_SOCKET ( ( Socket_t ) ~0U )
|
||||
|
||||
struct xSOCKET;
|
||||
typedef struct xSOCKET * Socket_t; /**< @brief Socket handle data type. */
|
||||
|
||||
/**
|
||||
* @brief Establish a connection to server.
|
||||
*
|
||||
* @param[out] pTcpSocket The output parameter to return the created socket descriptor.
|
||||
* @param[in] pHostName Server hostname to connect to.
|
||||
* @param[in] pServerInfo Server port to connect to.
|
||||
* @param[in] receiveTimeoutMs Timeout (in milliseconds) for transport receive.
|
||||
* @param[in] sendTimeoutMs Timeout (in milliseconds) for transport send.
|
||||
*
|
||||
* @note A timeout of 0 means infinite timeout.
|
||||
*
|
||||
* @return Non-zero value on error, 0 on success.
|
||||
*/
|
||||
BaseType_t Sockets_Connect( Socket_t * pTcpSocket,
|
||||
const char * pHostName,
|
||||
uint16_t port,
|
||||
uint32_t receiveTimeoutMs,
|
||||
uint32_t sendTimeoutMs );
|
||||
|
||||
/**
|
||||
* @brief End connection to server.
|
||||
*
|
||||
* @param[in] tcpSocket The socket descriptor.
|
||||
*/
|
||||
void Sockets_Disconnect( Socket_t tcpSocket );
|
||||
|
||||
/**
|
||||
* @brief Transmit data to the remote socket.
|
||||
*
|
||||
* The socket must have already been created using a call to Sockets_Connect().
|
||||
*
|
||||
* @param[in] xSocket The handle of the sending socket.
|
||||
* @param[in] pvBuffer The buffer containing the data to be sent.
|
||||
* @param[in] xDataLength The length of the data to be sent.
|
||||
*
|
||||
* @return
|
||||
* * On success, the number of bytes actually sent is returned.
|
||||
* * If an error occurred, a negative value is returned. @ref SocketsErrors
|
||||
*/
|
||||
int32_t Sockets_Send( Socket_t xSocket,
|
||||
const void * pvBuffer,
|
||||
size_t xDataLength );
|
||||
|
||||
/**
|
||||
* @brief Receive data from a TCP socket.
|
||||
*
|
||||
* The socket must have already been created using a call to Sockets_Connect().
|
||||
*
|
||||
* @param[in] xSocket The handle of the socket from which data is being received.
|
||||
* @param[out] pvBuffer The buffer into which the received data will be placed.
|
||||
* @param[in] xBufferLength The maximum number of bytes which can be received.
|
||||
* pvBuffer must be at least xBufferLength bytes long.
|
||||
*
|
||||
* @return
|
||||
* * If the receive was successful then the number of bytes received (placed in the
|
||||
* buffer pointed to by pvBuffer) is returned.
|
||||
* * If a timeout occurred before data could be received then 0 is returned (timeout
|
||||
* is set using @ref SOCKETS_SO_RCVTIMEO).
|
||||
* * If an error occurred, a negative value is returned. @ref SocketsErrors
|
||||
*/
|
||||
int32_t Sockets_Recv( Socket_t xSocket,
|
||||
void * pvBuffer,
|
||||
size_t xBufferLength );
|
||||
|
||||
#endif /* ifndef SOCKETS_WRAPPER_H */
|
@ -0,0 +1 @@
|
||||
Subproject commit d35316b3c7f46e79a776bae954ee79556d41ea7b
|
@ -0,0 +1,96 @@
|
||||
/*
|
||||
* FreeRTOS V202107.00
|
||||
* Copyright (C) 2020 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.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file mbedtls_bio_freertos_cellular.c
|
||||
* @brief Implements mbed TLS platform send/receive functions for cellular.
|
||||
*/
|
||||
|
||||
/* FreeRTOS includes. */
|
||||
#include "FreeRTOS.h"
|
||||
#include "FreeRTOS_Sockets.h"
|
||||
|
||||
/* mbed TLS includes. */
|
||||
#include "mbedtls_config.h"
|
||||
#include "threading_alt.h"
|
||||
#include "mbedtls/entropy.h"
|
||||
#include "mbedtls/ssl.h"
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* @brief Sends data over cellular sockets.
|
||||
*
|
||||
* @param[in] ctx The network context containing the socket handle.
|
||||
* @param[in] buf Buffer containing the bytes to send.
|
||||
* @param[in] len Number of bytes to send from the buffer.
|
||||
*
|
||||
* @return Number of bytes sent on success; else a negative value.
|
||||
*/
|
||||
int mbedtls_cellular_send( void * ctx,
|
||||
const unsigned char * buf,
|
||||
size_t len )
|
||||
{
|
||||
configASSERT( ctx != NULL );
|
||||
configASSERT( buf != NULL );
|
||||
|
||||
return Sockets_Send( ( Socket_t ) ctx, buf, len );
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* @brief Receives data from cellular socket.
|
||||
*
|
||||
* @param[in] ctx The network context containing the socket handle.
|
||||
* @param[out] buf Buffer to receive bytes into.
|
||||
* @param[in] len Number of bytes to receive from the network.
|
||||
*
|
||||
* @return Number of bytes received if successful; Negative value on error.
|
||||
*/
|
||||
int mbedtls_cellular_recv( void * ctx,
|
||||
unsigned char * buf,
|
||||
size_t len )
|
||||
{
|
||||
int recvStatus = 0;
|
||||
int returnStatus = -1;
|
||||
|
||||
configASSERT( ctx != NULL );
|
||||
configASSERT( buf != NULL );
|
||||
|
||||
recvStatus = Sockets_Recv( ( Socket_t ) ctx, buf, len );
|
||||
|
||||
if( recvStatus < 0 )
|
||||
{
|
||||
returnStatus = MBEDTLS_ERR_SSL_INTERNAL_ERROR;
|
||||
}
|
||||
else
|
||||
{
|
||||
returnStatus = recvStatus;
|
||||
}
|
||||
|
||||
return returnStatus;
|
||||
}
|
@ -0,0 +1,136 @@
|
||||
/*
|
||||
* FreeRTOS V202107.00
|
||||
* Copyright (C) 2020 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.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file mbedtls_bio_freertos_plus_tcp.c
|
||||
* @brief Implements mbed TLS platform send/receive functions for freertos plus tcp.
|
||||
*/
|
||||
|
||||
/* FreeRTOS includes. */
|
||||
#include "FreeRTOS.h"
|
||||
#include "FreeRTOS_Sockets.h"
|
||||
|
||||
/* mbed TLS includes. */
|
||||
#include "mbedtls_config.h"
|
||||
#include "threading_alt.h"
|
||||
#include "mbedtls/entropy.h"
|
||||
#include "mbedtls/ssl.h"
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* @brief Sends data over FreeRTOS+TCP sockets.
|
||||
*
|
||||
* @param[in] ctx The network context containing the socket handle.
|
||||
* @param[in] buf Buffer containing the bytes to send.
|
||||
* @param[in] len Number of bytes to send from the buffer.
|
||||
*
|
||||
* @return Number of bytes sent on success; else a negative value.
|
||||
*/
|
||||
int mbedtls_platform_send( void * ctx,
|
||||
const unsigned char * buf,
|
||||
size_t len )
|
||||
{
|
||||
BaseType_t sendStatus = 0;
|
||||
int returnStatus = -1;
|
||||
|
||||
configASSERT( ctx != NULL );
|
||||
configASSERT( buf != NULL );
|
||||
|
||||
sendStatus = FreeRTOS_send( ( Socket_t ) ctx, buf, len, 0 );
|
||||
|
||||
switch( sendStatus )
|
||||
{
|
||||
/* Socket was closed or just got closed. */
|
||||
case -pdFREERTOS_ERRNO_ENOTCONN:
|
||||
/* Not enough memory for the socket to create either an Rx or Tx stream. */
|
||||
case -pdFREERTOS_ERRNO_ENOMEM:
|
||||
/* Socket is not valid, is not a TCP socket, or is not bound. */
|
||||
case -pdFREERTOS_ERRNO_EINVAL:
|
||||
/* Socket received a signal, causing the read operation to be aborted. */
|
||||
case -pdFREERTOS_ERRNO_EINTR:
|
||||
returnStatus = MBEDTLS_ERR_SSL_INTERNAL_ERROR;
|
||||
break;
|
||||
|
||||
/* A timeout occurred before any data could be sent. */
|
||||
case -pdFREERTOS_ERRNO_ENOSPC:
|
||||
returnStatus = MBEDTLS_ERR_SSL_TIMEOUT;
|
||||
break;
|
||||
|
||||
default:
|
||||
returnStatus = ( int ) sendStatus;
|
||||
break;
|
||||
}
|
||||
|
||||
return returnStatus;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* @brief Receives data from FreeRTOS+TCP socket.
|
||||
*
|
||||
* @param[in] ctx The network context containing the socket handle.
|
||||
* @param[out] buf Buffer to receive bytes into.
|
||||
* @param[in] len Number of bytes to receive from the network.
|
||||
*
|
||||
* @return Number of bytes received if successful; Negative value on error.
|
||||
*/
|
||||
int mbedtls_platform_recv( void * ctx,
|
||||
unsigned char * buf,
|
||||
size_t len )
|
||||
{
|
||||
BaseType_t recvStatus = 0;
|
||||
int returnStatus = -1;
|
||||
|
||||
configASSERT( ctx != NULL );
|
||||
configASSERT( buf != NULL );
|
||||
|
||||
recvStatus = FreeRTOS_recv( ( Socket_t ) ctx, buf, len, 0 );
|
||||
|
||||
switch( recvStatus )
|
||||
{
|
||||
/* No data could be sent because the socket was or just got closed. */
|
||||
case -pdFREERTOS_ERRNO_ENOTCONN:
|
||||
/* No data could be sent because there was insufficient memory. */
|
||||
case -pdFREERTOS_ERRNO_ENOMEM:
|
||||
/* No data could be sent because xSocket was not a valid TCP socket. */
|
||||
case -pdFREERTOS_ERRNO_EINVAL:
|
||||
returnStatus = MBEDTLS_ERR_SSL_INTERNAL_ERROR;
|
||||
break;
|
||||
|
||||
/* A timeout occurred before any data could be received. */
|
||||
case 0:
|
||||
returnStatus = MBEDTLS_ERR_SSL_WANT_READ;
|
||||
break;
|
||||
|
||||
default:
|
||||
returnStatus = ( int ) recvStatus;
|
||||
break;
|
||||
}
|
||||
|
||||
return returnStatus;
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue