Add configUSE_STREAM_BUFFERS macro in MPU wrapper files

This commit is contained in:
Rahul Kar 2024-02-14 18:17:28 +00:00
parent 57d6dbac67
commit 3db6620d18
2 changed files with 515 additions and 424 deletions

View file

@ -2139,249 +2139,269 @@
#endif /* #if ( configUSE_EVENT_GROUPS == 1 ) */ #endif /* #if ( configUSE_EVENT_GROUPS == 1 ) */
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
size_t MPU_xStreamBufferSend( StreamBufferHandle_t xStreamBuffer, #if ( configUSE_STREAM_BUFFERS == 1 )
const void * pvTxData, size_t MPU_xStreamBufferSend( StreamBufferHandle_t xStreamBuffer,
size_t xDataLengthBytes, const void * pvTxData,
TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */ size_t xDataLengthBytes,
{ TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
size_t xReturn;
if( portIS_PRIVILEGED() == pdFALSE )
{ {
portRAISE_PRIVILEGE(); size_t xReturn;
portMEMORY_BARRIER();
xReturn = xStreamBufferSend( xStreamBuffer, pvTxData, xDataLengthBytes, xTicksToWait ); if( portIS_PRIVILEGED() == pdFALSE )
portMEMORY_BARRIER(); {
portRAISE_PRIVILEGE();
portMEMORY_BARRIER();
portRESET_PRIVILEGE(); xReturn = xStreamBufferSend( xStreamBuffer, pvTxData, xDataLengthBytes, xTicksToWait );
portMEMORY_BARRIER(); portMEMORY_BARRIER();
portRESET_PRIVILEGE();
portMEMORY_BARRIER();
}
else
{
xReturn = xStreamBufferSend( xStreamBuffer, pvTxData, xDataLengthBytes, xTicksToWait );
}
return xReturn;
} }
else #endif /* #if ( configUSE_STREAM_BUFFERS == 1 ) */
{
xReturn = xStreamBufferSend( xStreamBuffer, pvTxData, xDataLengthBytes, xTicksToWait );
}
return xReturn;
}
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
size_t MPU_xStreamBufferNextMessageLengthBytes( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */ #if ( configUSE_STREAM_BUFFERS == 1 )
{ size_t MPU_xStreamBufferNextMessageLengthBytes( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */
size_t xReturn;
if( portIS_PRIVILEGED() == pdFALSE )
{ {
portRAISE_PRIVILEGE(); size_t xReturn;
portMEMORY_BARRIER();
xReturn = xStreamBufferNextMessageLengthBytes( xStreamBuffer ); if( portIS_PRIVILEGED() == pdFALSE )
portMEMORY_BARRIER(); {
portRAISE_PRIVILEGE();
portMEMORY_BARRIER();
portRESET_PRIVILEGE(); xReturn = xStreamBufferNextMessageLengthBytes( xStreamBuffer );
portMEMORY_BARRIER(); portMEMORY_BARRIER();
portRESET_PRIVILEGE();
portMEMORY_BARRIER();
}
else
{
xReturn = xStreamBufferNextMessageLengthBytes( xStreamBuffer );
}
return xReturn;
} }
else #endif /* #if ( configUSE_STREAM_BUFFERS == 1 ) */
{
xReturn = xStreamBufferNextMessageLengthBytes( xStreamBuffer );
}
return xReturn;
}
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
size_t MPU_xStreamBufferReceive( StreamBufferHandle_t xStreamBuffer, #if ( configUSE_STREAM_BUFFERS == 1 )
void * pvRxData, size_t MPU_xStreamBufferReceive( StreamBufferHandle_t xStreamBuffer,
size_t xBufferLengthBytes, void * pvRxData,
TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */ size_t xBufferLengthBytes,
{ TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
size_t xReturn;
if( portIS_PRIVILEGED() == pdFALSE )
{ {
portRAISE_PRIVILEGE(); size_t xReturn;
portMEMORY_BARRIER();
xReturn = xStreamBufferReceive( xStreamBuffer, pvRxData, xBufferLengthBytes, xTicksToWait ); if( portIS_PRIVILEGED() == pdFALSE )
portMEMORY_BARRIER(); {
portRAISE_PRIVILEGE();
portMEMORY_BARRIER();
portRESET_PRIVILEGE(); xReturn = xStreamBufferReceive( xStreamBuffer, pvRxData, xBufferLengthBytes, xTicksToWait );
portMEMORY_BARRIER(); portMEMORY_BARRIER();
portRESET_PRIVILEGE();
portMEMORY_BARRIER();
}
else
{
xReturn = xStreamBufferReceive( xStreamBuffer, pvRxData, xBufferLengthBytes, xTicksToWait );
}
return xReturn;
} }
else #endif /* #if ( configUSE_STREAM_BUFFERS == 1 ) */
{
xReturn = xStreamBufferReceive( xStreamBuffer, pvRxData, xBufferLengthBytes, xTicksToWait );
}
return xReturn;
}
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
void MPU_vStreamBufferDelete( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */ #if ( configUSE_STREAM_BUFFERS == 1 )
{ void MPU_vStreamBufferDelete( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */
if( portIS_PRIVILEGED() == pdFALSE )
{ {
portRAISE_PRIVILEGE(); if( portIS_PRIVILEGED() == pdFALSE )
portMEMORY_BARRIER(); {
portRAISE_PRIVILEGE();
portMEMORY_BARRIER();
vStreamBufferDelete( xStreamBuffer ); vStreamBufferDelete( xStreamBuffer );
portMEMORY_BARRIER(); portMEMORY_BARRIER();
portRESET_PRIVILEGE(); portRESET_PRIVILEGE();
portMEMORY_BARRIER(); portMEMORY_BARRIER();
}
else
{
vStreamBufferDelete( xStreamBuffer );
}
} }
else #endif /* #if ( configUSE_STREAM_BUFFERS == 1 ) */
{
vStreamBufferDelete( xStreamBuffer );
}
}
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
BaseType_t MPU_xStreamBufferIsFull( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */ #if ( configUSE_STREAM_BUFFERS == 1 )
{ BaseType_t MPU_xStreamBufferIsFull( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */
BaseType_t xReturn;
if( portIS_PRIVILEGED() == pdFALSE )
{ {
portRAISE_PRIVILEGE(); BaseType_t xReturn;
portMEMORY_BARRIER();
xReturn = xStreamBufferIsFull( xStreamBuffer ); if( portIS_PRIVILEGED() == pdFALSE )
portMEMORY_BARRIER(); {
portRAISE_PRIVILEGE();
portMEMORY_BARRIER();
portRESET_PRIVILEGE(); xReturn = xStreamBufferIsFull( xStreamBuffer );
portMEMORY_BARRIER(); portMEMORY_BARRIER();
portRESET_PRIVILEGE();
portMEMORY_BARRIER();
}
else
{
xReturn = xStreamBufferIsFull( xStreamBuffer );
}
return xReturn;
} }
else #endif /* #if ( configUSE_STREAM_BUFFERS == 1 ) */
{
xReturn = xStreamBufferIsFull( xStreamBuffer );
}
return xReturn;
}
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
BaseType_t MPU_xStreamBufferIsEmpty( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */ #if ( configUSE_STREAM_BUFFERS == 1 )
{ BaseType_t MPU_xStreamBufferIsEmpty( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */
BaseType_t xReturn;
if( portIS_PRIVILEGED() == pdFALSE )
{ {
portRAISE_PRIVILEGE(); BaseType_t xReturn;
portMEMORY_BARRIER();
xReturn = xStreamBufferIsEmpty( xStreamBuffer ); if( portIS_PRIVILEGED() == pdFALSE )
portMEMORY_BARRIER(); {
portRAISE_PRIVILEGE();
portMEMORY_BARRIER();
portRESET_PRIVILEGE(); xReturn = xStreamBufferIsEmpty( xStreamBuffer );
portMEMORY_BARRIER(); portMEMORY_BARRIER();
portRESET_PRIVILEGE();
portMEMORY_BARRIER();
}
else
{
xReturn = xStreamBufferIsEmpty( xStreamBuffer );
}
return xReturn;
} }
else #endif /* #if ( configUSE_STREAM_BUFFERS == 1 ) */
{
xReturn = xStreamBufferIsEmpty( xStreamBuffer );
}
return xReturn;
}
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
BaseType_t MPU_xStreamBufferReset( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */ #if ( configUSE_STREAM_BUFFERS == 1 )
{ BaseType_t MPU_xStreamBufferReset( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */
BaseType_t xReturn;
if( portIS_PRIVILEGED() == pdFALSE )
{ {
portRAISE_PRIVILEGE(); BaseType_t xReturn;
portMEMORY_BARRIER();
xReturn = xStreamBufferReset( xStreamBuffer ); if( portIS_PRIVILEGED() == pdFALSE )
portMEMORY_BARRIER(); {
portRAISE_PRIVILEGE();
portMEMORY_BARRIER();
portRESET_PRIVILEGE(); xReturn = xStreamBufferReset( xStreamBuffer );
portMEMORY_BARRIER(); portMEMORY_BARRIER();
portRESET_PRIVILEGE();
portMEMORY_BARRIER();
}
else
{
xReturn = xStreamBufferReset( xStreamBuffer );
}
return xReturn;
} }
else #endif /* #if ( configUSE_STREAM_BUFFERS == 1 ) */
{
xReturn = xStreamBufferReset( xStreamBuffer );
}
return xReturn;
}
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
size_t MPU_xStreamBufferSpacesAvailable( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */ #if ( configUSE_STREAM_BUFFERS == 1 )
{ size_t MPU_xStreamBufferSpacesAvailable( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */
size_t xReturn;
if( portIS_PRIVILEGED() == pdFALSE )
{ {
portRAISE_PRIVILEGE(); size_t xReturn;
portMEMORY_BARRIER();
xReturn = xStreamBufferSpacesAvailable( xStreamBuffer );
portMEMORY_BARRIER();
portRESET_PRIVILEGE(); if( portIS_PRIVILEGED() == pdFALSE )
portMEMORY_BARRIER(); {
} portRAISE_PRIVILEGE();
else portMEMORY_BARRIER();
{ xReturn = xStreamBufferSpacesAvailable( xStreamBuffer );
xReturn = xStreamBufferSpacesAvailable( xStreamBuffer ); portMEMORY_BARRIER();
}
return xReturn; portRESET_PRIVILEGE();
} portMEMORY_BARRIER();
}
else
{
xReturn = xStreamBufferSpacesAvailable( xStreamBuffer );
}
return xReturn;
}
#endif /* #if ( configUSE_STREAM_BUFFERS == 1 ) */
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
size_t MPU_xStreamBufferBytesAvailable( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */ #if ( configUSE_STREAM_BUFFERS == 1 )
{ size_t MPU_xStreamBufferBytesAvailable( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */
size_t xReturn;
if( portIS_PRIVILEGED() == pdFALSE )
{ {
portRAISE_PRIVILEGE(); size_t xReturn;
portMEMORY_BARRIER();
xReturn = xStreamBufferBytesAvailable( xStreamBuffer ); if( portIS_PRIVILEGED() == pdFALSE )
portMEMORY_BARRIER(); {
portRAISE_PRIVILEGE();
portMEMORY_BARRIER();
portRESET_PRIVILEGE(); xReturn = xStreamBufferBytesAvailable( xStreamBuffer );
portMEMORY_BARRIER(); portMEMORY_BARRIER();
portRESET_PRIVILEGE();
portMEMORY_BARRIER();
}
else
{
xReturn = xStreamBufferBytesAvailable( xStreamBuffer );
}
return xReturn;
} }
else #endif /* #if ( configUSE_STREAM_BUFFERS == 1 ) */
{
xReturn = xStreamBufferBytesAvailable( xStreamBuffer );
}
return xReturn;
}
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
BaseType_t MPU_xStreamBufferSetTriggerLevel( StreamBufferHandle_t xStreamBuffer, #if ( configUSE_STREAM_BUFFERS == 1 )
size_t xTriggerLevel ) /* FREERTOS_SYSTEM_CALL */ BaseType_t MPU_xStreamBufferSetTriggerLevel( StreamBufferHandle_t xStreamBuffer,
{ size_t xTriggerLevel ) /* FREERTOS_SYSTEM_CALL */
BaseType_t xReturn;
if( portIS_PRIVILEGED() == pdFALSE )
{ {
portRAISE_PRIVILEGE(); BaseType_t xReturn;
portMEMORY_BARRIER();
xReturn = xStreamBufferSetTriggerLevel( xStreamBuffer, xTriggerLevel ); if( portIS_PRIVILEGED() == pdFALSE )
portMEMORY_BARRIER(); {
portRAISE_PRIVILEGE();
portMEMORY_BARRIER();
portRESET_PRIVILEGE(); xReturn = xStreamBufferSetTriggerLevel( xStreamBuffer, xTriggerLevel );
portMEMORY_BARRIER(); portMEMORY_BARRIER();
portRESET_PRIVILEGE();
portMEMORY_BARRIER();
}
else
{
xReturn = xStreamBufferSetTriggerLevel( xStreamBuffer, xTriggerLevel );
}
return xReturn;
} }
else #endif /* #if ( configUSE_STREAM_BUFFERS == 1 ) */
{
xReturn = xStreamBufferSetTriggerLevel( xStreamBuffer, xTriggerLevel );
}
return xReturn;
}
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
#if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) #if ( ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) && ( configUSE_STREAM_BUFFERS == 1 ) )
StreamBufferHandle_t MPU_xStreamBufferGenericCreate( size_t xBufferSizeBytes, StreamBufferHandle_t MPU_xStreamBufferGenericCreate( size_t xBufferSizeBytes,
size_t xTriggerLevelBytes, size_t xTriggerLevelBytes,
BaseType_t xIsMessageBuffer, BaseType_t xIsMessageBuffer,
@ -2432,10 +2452,10 @@
return xReturn; return xReturn;
} }
#endif /* configSUPPORT_DYNAMIC_ALLOCATION */ #endif /* #if ( ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) && ( configUSE_STREAM_BUFFERS == 1 ) ) */
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
#if ( configSUPPORT_STATIC_ALLOCATION == 1 ) #if ( ( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configUSE_STREAM_BUFFERS == 1 ) )
StreamBufferHandle_t MPU_xStreamBufferGenericCreateStatic( size_t xBufferSizeBytes, StreamBufferHandle_t MPU_xStreamBufferGenericCreateStatic( size_t xBufferSizeBytes,
size_t xTriggerLevelBytes, size_t xTriggerLevelBytes,
BaseType_t xIsMessageBuffer, BaseType_t xIsMessageBuffer,
@ -2492,7 +2512,7 @@
return xReturn; return xReturn;
} }
#endif /* configSUPPORT_STATIC_ALLOCATION */ #endif /* #if ( ( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configUSE_STREAM_BUFFERS == 1 ) ) */
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -222,9 +222,10 @@
#define MPU_StoreEventGroupHandleAtIndex( lIndex, xHandle ) MPU_StoreHandleAndDataAtIndex( ( lIndex ), ( OpaqueObjectHandle_t ) ( xHandle ), NULL, KERNEL_OBJECT_TYPE_EVENT_GROUP ) #define MPU_StoreEventGroupHandleAtIndex( lIndex, xHandle ) MPU_StoreHandleAndDataAtIndex( ( lIndex ), ( OpaqueObjectHandle_t ) ( xHandle ), NULL, KERNEL_OBJECT_TYPE_EVENT_GROUP )
#define MPU_GetEventGroupHandleAtIndex( lIndex ) ( EventGroupHandle_t ) MPU_GetHandleAtIndex( ( lIndex ), KERNEL_OBJECT_TYPE_EVENT_GROUP ) #define MPU_GetEventGroupHandleAtIndex( lIndex ) ( EventGroupHandle_t ) MPU_GetHandleAtIndex( ( lIndex ), KERNEL_OBJECT_TYPE_EVENT_GROUP )
#define MPU_GetIndexForEventGroupHandle( xHandle ) MPU_GetIndexForHandle( ( OpaqueObjectHandle_t ) ( xHandle ), KERNEL_OBJECT_TYPE_EVENT_GROUP ) #define MPU_GetIndexForEventGroupHandle( xHandle ) MPU_GetIndexForHandle( ( OpaqueObjectHandle_t ) ( xHandle ), KERNEL_OBJECT_TYPE_EVENT_GROUP )
#endif /* #if ( configUSE_EVENT_GROUPS == 1 ) */ #endif /* #if ( configUSE_EVENT_GROUPS == 1 ) */
#if ( configUSE_STREAM_BUFFERS == 1 )
/* /*
* Wrappers to keep all the casting in one place for Stream Buffer APIs. * Wrappers to keep all the casting in one place for Stream Buffer APIs.
*/ */
@ -232,6 +233,8 @@
#define MPU_GetStreamBufferHandleAtIndex( lIndex ) ( StreamBufferHandle_t ) MPU_GetHandleAtIndex( ( lIndex ), KERNEL_OBJECT_TYPE_STREAM_BUFFER ) #define MPU_GetStreamBufferHandleAtIndex( lIndex ) ( StreamBufferHandle_t ) MPU_GetHandleAtIndex( ( lIndex ), KERNEL_OBJECT_TYPE_STREAM_BUFFER )
#define MPU_GetIndexForStreamBufferHandle( xHandle ) MPU_GetIndexForHandle( ( OpaqueObjectHandle_t ) ( xHandle ), KERNEL_OBJECT_TYPE_STREAM_BUFFER ) #define MPU_GetIndexForStreamBufferHandle( xHandle ) MPU_GetIndexForHandle( ( OpaqueObjectHandle_t ) ( xHandle ), KERNEL_OBJECT_TYPE_STREAM_BUFFER )
#endif /* #if ( configUSE_STREAM_BUFFERS == 1 ) */
#if ( configUSE_TIMERS == 1 ) #if ( configUSE_TIMERS == 1 )
/* /*
* Wrappers to keep all the casting in one place for Timer APIs. * Wrappers to keep all the casting in one place for Timer APIs.
@ -4342,280 +4345,312 @@
/* MPU wrappers for stream buffer APIs. */ /* MPU wrappers for stream buffer APIs. */
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
size_t MPU_xStreamBufferSendImpl( StreamBufferHandle_t xStreamBuffer, #if ( configUSE_STREAM_BUFFERS == 1 )
const void * pvTxData,
size_t xDataLengthBytes,
TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;
size_t MPU_xStreamBufferSendImpl( StreamBufferHandle_t xStreamBuffer, size_t MPU_xStreamBufferSendImpl( StreamBufferHandle_t xStreamBuffer,
const void * pvTxData, const void * pvTxData,
size_t xDataLengthBytes, size_t xDataLengthBytes,
TickType_t xTicksToWait ) /* PRIVILEGED_FUNCTION */ TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;
{
size_t xReturn = 0;
StreamBufferHandle_t xInternalStreamBufferHandle = NULL;
int32_t lIndex;
BaseType_t xIsTxDataBufferReadable = pdFALSE;
BaseType_t xCallingTaskIsAuthorizedToAccessStreamBuffer = pdFALSE;
if( pvTxData != NULL ) size_t MPU_xStreamBufferSendImpl( StreamBufferHandle_t xStreamBuffer,
const void * pvTxData,
size_t xDataLengthBytes,
TickType_t xTicksToWait ) /* PRIVILEGED_FUNCTION */
{ {
xIsTxDataBufferReadable = xPortIsAuthorizedToAccessBuffer( pvTxData, size_t xReturn = 0;
xDataLengthBytes, StreamBufferHandle_t xInternalStreamBufferHandle = NULL;
tskMPU_READ_PERMISSION ); int32_t lIndex;
BaseType_t xIsTxDataBufferReadable = pdFALSE;
BaseType_t xCallingTaskIsAuthorizedToAccessStreamBuffer = pdFALSE;
if( xIsTxDataBufferReadable == pdTRUE ) if( pvTxData != NULL )
{ {
lIndex = ( int32_t ) xStreamBuffer; xIsTxDataBufferReadable = xPortIsAuthorizedToAccessBuffer( pvTxData,
xDataLengthBytes,
tskMPU_READ_PERMISSION );
if( IS_EXTERNAL_INDEX_VALID( lIndex ) != pdFALSE ) if( xIsTxDataBufferReadable == pdTRUE )
{ {
xCallingTaskIsAuthorizedToAccessStreamBuffer = xPortIsAuthorizedToAccessKernelObject( CONVERT_TO_INTERNAL_INDEX( lIndex ) ); lIndex = ( int32_t ) xStreamBuffer;
if( xCallingTaskIsAuthorizedToAccessStreamBuffer == pdTRUE ) if( IS_EXTERNAL_INDEX_VALID( lIndex ) != pdFALSE )
{ {
xInternalStreamBufferHandle = MPU_GetStreamBufferHandleAtIndex( CONVERT_TO_INTERNAL_INDEX( lIndex ) ); xCallingTaskIsAuthorizedToAccessStreamBuffer = xPortIsAuthorizedToAccessKernelObject( CONVERT_TO_INTERNAL_INDEX( lIndex ) );
if( xInternalStreamBufferHandle != NULL ) if( xCallingTaskIsAuthorizedToAccessStreamBuffer == pdTRUE )
{ {
xReturn = xStreamBufferSend( xInternalStreamBufferHandle, pvTxData, xDataLengthBytes, xTicksToWait ); xInternalStreamBufferHandle = MPU_GetStreamBufferHandleAtIndex( CONVERT_TO_INTERNAL_INDEX( lIndex ) );
if( xInternalStreamBufferHandle != NULL )
{
xReturn = xStreamBufferSend( xInternalStreamBufferHandle, pvTxData, xDataLengthBytes, xTicksToWait );
}
} }
} }
} }
} }
return xReturn;
} }
return xReturn; #endif /* #if ( configUSE_STREAM_BUFFERS == 1 ) */
}
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
size_t MPU_xStreamBufferReceiveImpl( StreamBufferHandle_t xStreamBuffer, #if ( configUSE_STREAM_BUFFERS == 1 )
void * pvRxData,
size_t xBufferLengthBytes,
TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;
size_t MPU_xStreamBufferReceiveImpl( StreamBufferHandle_t xStreamBuffer, size_t MPU_xStreamBufferReceiveImpl( StreamBufferHandle_t xStreamBuffer,
void * pvRxData, void * pvRxData,
size_t xBufferLengthBytes, size_t xBufferLengthBytes,
TickType_t xTicksToWait ) /* PRIVILEGED_FUNCTION */ TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;
{
size_t xReturn = 0;
StreamBufferHandle_t xInternalStreamBufferHandle = NULL;
int32_t lIndex;
BaseType_t xIsRxDataBufferWriteable = pdFALSE;
BaseType_t xCallingTaskIsAuthorizedToAccessStreamBuffer = pdFALSE;
if( pvRxData != NULL ) size_t MPU_xStreamBufferReceiveImpl( StreamBufferHandle_t xStreamBuffer,
void * pvRxData,
size_t xBufferLengthBytes,
TickType_t xTicksToWait ) /* PRIVILEGED_FUNCTION */
{ {
xIsRxDataBufferWriteable = xPortIsAuthorizedToAccessBuffer( pvRxData, size_t xReturn = 0;
xBufferLengthBytes, StreamBufferHandle_t xInternalStreamBufferHandle = NULL;
tskMPU_WRITE_PERMISSION ); int32_t lIndex;
BaseType_t xIsRxDataBufferWriteable = pdFALSE;
BaseType_t xCallingTaskIsAuthorizedToAccessStreamBuffer = pdFALSE;
if( xIsRxDataBufferWriteable == pdTRUE ) if( pvRxData != NULL )
{ {
lIndex = ( int32_t ) xStreamBuffer; xIsRxDataBufferWriteable = xPortIsAuthorizedToAccessBuffer( pvRxData,
xBufferLengthBytes,
tskMPU_WRITE_PERMISSION );
if( IS_EXTERNAL_INDEX_VALID( lIndex ) != pdFALSE ) if( xIsRxDataBufferWriteable == pdTRUE )
{ {
xCallingTaskIsAuthorizedToAccessStreamBuffer = xPortIsAuthorizedToAccessKernelObject( CONVERT_TO_INTERNAL_INDEX( lIndex ) ); lIndex = ( int32_t ) xStreamBuffer;
if( xCallingTaskIsAuthorizedToAccessStreamBuffer == pdTRUE ) if( IS_EXTERNAL_INDEX_VALID( lIndex ) != pdFALSE )
{ {
xInternalStreamBufferHandle = MPU_GetStreamBufferHandleAtIndex( CONVERT_TO_INTERNAL_INDEX( lIndex ) ); xCallingTaskIsAuthorizedToAccessStreamBuffer = xPortIsAuthorizedToAccessKernelObject( CONVERT_TO_INTERNAL_INDEX( lIndex ) );
if( xInternalStreamBufferHandle != NULL ) if( xCallingTaskIsAuthorizedToAccessStreamBuffer == pdTRUE )
{ {
xReturn = xStreamBufferReceive( xInternalStreamBufferHandle, pvRxData, xBufferLengthBytes, xTicksToWait ); xInternalStreamBufferHandle = MPU_GetStreamBufferHandleAtIndex( CONVERT_TO_INTERNAL_INDEX( lIndex ) );
if( xInternalStreamBufferHandle != NULL )
{
xReturn = xStreamBufferReceive( xInternalStreamBufferHandle, pvRxData, xBufferLengthBytes, xTicksToWait );
}
} }
} }
} }
} }
return xReturn;
} }
return xReturn; #endif /* #if ( configUSE_STREAM_BUFFERS == 1 ) */
}
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
BaseType_t MPU_xStreamBufferIsFullImpl( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION; #if ( configUSE_STREAM_BUFFERS == 1 )
BaseType_t MPU_xStreamBufferIsFullImpl( StreamBufferHandle_t xStreamBuffer ) /* PRIVILEGED_FUNCTION */ BaseType_t MPU_xStreamBufferIsFullImpl( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION;
{
BaseType_t xReturn = pdFALSE;
StreamBufferHandle_t xInternalStreamBufferHandle = NULL;
int32_t lIndex;
BaseType_t xCallingTaskIsAuthorizedToAccessStreamBuffer = pdFALSE;
lIndex = ( int32_t ) xStreamBuffer; BaseType_t MPU_xStreamBufferIsFullImpl( StreamBufferHandle_t xStreamBuffer ) /* PRIVILEGED_FUNCTION */
if( IS_EXTERNAL_INDEX_VALID( lIndex ) != pdFALSE )
{ {
xCallingTaskIsAuthorizedToAccessStreamBuffer = xPortIsAuthorizedToAccessKernelObject( CONVERT_TO_INTERNAL_INDEX( lIndex ) ); BaseType_t xReturn = pdFALSE;
StreamBufferHandle_t xInternalStreamBufferHandle = NULL;
int32_t lIndex;
BaseType_t xCallingTaskIsAuthorizedToAccessStreamBuffer = pdFALSE;
if( xCallingTaskIsAuthorizedToAccessStreamBuffer == pdTRUE ) lIndex = ( int32_t ) xStreamBuffer;
if( IS_EXTERNAL_INDEX_VALID( lIndex ) != pdFALSE )
{ {
xInternalStreamBufferHandle = MPU_GetStreamBufferHandleAtIndex( CONVERT_TO_INTERNAL_INDEX( lIndex ) ); xCallingTaskIsAuthorizedToAccessStreamBuffer = xPortIsAuthorizedToAccessKernelObject( CONVERT_TO_INTERNAL_INDEX( lIndex ) );
if( xInternalStreamBufferHandle != NULL ) if( xCallingTaskIsAuthorizedToAccessStreamBuffer == pdTRUE )
{ {
xReturn = xStreamBufferIsFull( xInternalStreamBufferHandle ); xInternalStreamBufferHandle = MPU_GetStreamBufferHandleAtIndex( CONVERT_TO_INTERNAL_INDEX( lIndex ) );
if( xInternalStreamBufferHandle != NULL )
{
xReturn = xStreamBufferIsFull( xInternalStreamBufferHandle );
}
} }
} }
return xReturn;
} }
return xReturn; #endif /* #if ( configUSE_STREAM_BUFFERS == 1 ) */
}
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
BaseType_t MPU_xStreamBufferIsEmptyImpl( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION; #if ( configUSE_STREAM_BUFFERS == 1 )
BaseType_t MPU_xStreamBufferIsEmptyImpl( StreamBufferHandle_t xStreamBuffer ) /* PRIVILEGED_FUNCTION */ BaseType_t MPU_xStreamBufferIsEmptyImpl( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION;
{
BaseType_t xReturn = pdFALSE;
StreamBufferHandle_t xInternalStreamBufferHandle = NULL;
int32_t lIndex;
BaseType_t xCallingTaskIsAuthorizedToAccessStreamBuffer = pdFALSE;
lIndex = ( int32_t ) xStreamBuffer; BaseType_t MPU_xStreamBufferIsEmptyImpl( StreamBufferHandle_t xStreamBuffer ) /* PRIVILEGED_FUNCTION */
if( IS_EXTERNAL_INDEX_VALID( lIndex ) != pdFALSE )
{ {
xCallingTaskIsAuthorizedToAccessStreamBuffer = xPortIsAuthorizedToAccessKernelObject( CONVERT_TO_INTERNAL_INDEX( lIndex ) ); BaseType_t xReturn = pdFALSE;
StreamBufferHandle_t xInternalStreamBufferHandle = NULL;
int32_t lIndex;
BaseType_t xCallingTaskIsAuthorizedToAccessStreamBuffer = pdFALSE;
if( xCallingTaskIsAuthorizedToAccessStreamBuffer == pdTRUE ) lIndex = ( int32_t ) xStreamBuffer;
if( IS_EXTERNAL_INDEX_VALID( lIndex ) != pdFALSE )
{ {
xInternalStreamBufferHandle = MPU_GetStreamBufferHandleAtIndex( CONVERT_TO_INTERNAL_INDEX( lIndex ) ); xCallingTaskIsAuthorizedToAccessStreamBuffer = xPortIsAuthorizedToAccessKernelObject( CONVERT_TO_INTERNAL_INDEX( lIndex ) );
if( xInternalStreamBufferHandle != NULL ) if( xCallingTaskIsAuthorizedToAccessStreamBuffer == pdTRUE )
{ {
xReturn = xStreamBufferIsEmpty( xInternalStreamBufferHandle ); xInternalStreamBufferHandle = MPU_GetStreamBufferHandleAtIndex( CONVERT_TO_INTERNAL_INDEX( lIndex ) );
if( xInternalStreamBufferHandle != NULL )
{
xReturn = xStreamBufferIsEmpty( xInternalStreamBufferHandle );
}
} }
} }
return xReturn;
} }
return xReturn; #endif /* #if ( configUSE_STREAM_BUFFERS == 1 ) */
}
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
size_t MPU_xStreamBufferSpacesAvailableImpl( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION; #if ( configUSE_STREAM_BUFFERS == 1 )
size_t MPU_xStreamBufferSpacesAvailableImpl( StreamBufferHandle_t xStreamBuffer ) /* PRIVILEGED_FUNCTION */ size_t MPU_xStreamBufferSpacesAvailableImpl( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION;
{
size_t xReturn = 0;
StreamBufferHandle_t xInternalStreamBufferHandle = NULL;
int32_t lIndex;
BaseType_t xCallingTaskIsAuthorizedToAccessStreamBuffer = pdFALSE;
lIndex = ( int32_t ) xStreamBuffer; size_t MPU_xStreamBufferSpacesAvailableImpl( StreamBufferHandle_t xStreamBuffer ) /* PRIVILEGED_FUNCTION */
if( IS_EXTERNAL_INDEX_VALID( lIndex ) != pdFALSE )
{ {
xCallingTaskIsAuthorizedToAccessStreamBuffer = xPortIsAuthorizedToAccessKernelObject( CONVERT_TO_INTERNAL_INDEX( lIndex ) ); size_t xReturn = 0;
StreamBufferHandle_t xInternalStreamBufferHandle = NULL;
int32_t lIndex;
BaseType_t xCallingTaskIsAuthorizedToAccessStreamBuffer = pdFALSE;
if( xCallingTaskIsAuthorizedToAccessStreamBuffer == pdTRUE ) lIndex = ( int32_t ) xStreamBuffer;
if( IS_EXTERNAL_INDEX_VALID( lIndex ) != pdFALSE )
{ {
xInternalStreamBufferHandle = MPU_GetStreamBufferHandleAtIndex( CONVERT_TO_INTERNAL_INDEX( lIndex ) ); xCallingTaskIsAuthorizedToAccessStreamBuffer = xPortIsAuthorizedToAccessKernelObject( CONVERT_TO_INTERNAL_INDEX( lIndex ) );
if( xInternalStreamBufferHandle != NULL ) if( xCallingTaskIsAuthorizedToAccessStreamBuffer == pdTRUE )
{ {
xReturn = xStreamBufferSpacesAvailable( xInternalStreamBufferHandle ); xInternalStreamBufferHandle = MPU_GetStreamBufferHandleAtIndex( CONVERT_TO_INTERNAL_INDEX( lIndex ) );
if( xInternalStreamBufferHandle != NULL )
{
xReturn = xStreamBufferSpacesAvailable( xInternalStreamBufferHandle );
}
} }
} }
return xReturn;
} }
return xReturn; #endif /* #if ( configUSE_STREAM_BUFFERS == 1 ) */
}
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
size_t MPU_xStreamBufferBytesAvailableImpl( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION; #if ( configUSE_STREAM_BUFFERS == 1 )
size_t MPU_xStreamBufferBytesAvailableImpl( StreamBufferHandle_t xStreamBuffer ) /* PRIVILEGED_FUNCTION */ size_t MPU_xStreamBufferBytesAvailableImpl( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION;
{
size_t xReturn = 0;
StreamBufferHandle_t xInternalStreamBufferHandle = NULL;
int32_t lIndex;
BaseType_t xCallingTaskIsAuthorizedToAccessStreamBuffer = pdFALSE;
lIndex = ( int32_t ) xStreamBuffer; size_t MPU_xStreamBufferBytesAvailableImpl( StreamBufferHandle_t xStreamBuffer ) /* PRIVILEGED_FUNCTION */
if( IS_EXTERNAL_INDEX_VALID( lIndex ) != pdFALSE )
{ {
xCallingTaskIsAuthorizedToAccessStreamBuffer = xPortIsAuthorizedToAccessKernelObject( CONVERT_TO_INTERNAL_INDEX( lIndex ) ); size_t xReturn = 0;
StreamBufferHandle_t xInternalStreamBufferHandle = NULL;
int32_t lIndex;
BaseType_t xCallingTaskIsAuthorizedToAccessStreamBuffer = pdFALSE;
if( xCallingTaskIsAuthorizedToAccessStreamBuffer == pdTRUE ) lIndex = ( int32_t ) xStreamBuffer;
if( IS_EXTERNAL_INDEX_VALID( lIndex ) != pdFALSE )
{ {
xInternalStreamBufferHandle = MPU_GetStreamBufferHandleAtIndex( CONVERT_TO_INTERNAL_INDEX( lIndex ) ); xCallingTaskIsAuthorizedToAccessStreamBuffer = xPortIsAuthorizedToAccessKernelObject( CONVERT_TO_INTERNAL_INDEX( lIndex ) );
if( xInternalStreamBufferHandle != NULL ) if( xCallingTaskIsAuthorizedToAccessStreamBuffer == pdTRUE )
{ {
xReturn = xStreamBufferBytesAvailable( xInternalStreamBufferHandle ); xInternalStreamBufferHandle = MPU_GetStreamBufferHandleAtIndex( CONVERT_TO_INTERNAL_INDEX( lIndex ) );
if( xInternalStreamBufferHandle != NULL )
{
xReturn = xStreamBufferBytesAvailable( xInternalStreamBufferHandle );
}
} }
} }
return xReturn;
} }
return xReturn; #endif /* #if ( configUSE_STREAM_BUFFERS == 1 ) */
}
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
BaseType_t MPU_xStreamBufferSetTriggerLevelImpl( StreamBufferHandle_t xStreamBuffer, #if ( configUSE_STREAM_BUFFERS == 1 )
size_t xTriggerLevel ) PRIVILEGED_FUNCTION;
BaseType_t MPU_xStreamBufferSetTriggerLevelImpl( StreamBufferHandle_t xStreamBuffer, BaseType_t MPU_xStreamBufferSetTriggerLevelImpl( StreamBufferHandle_t xStreamBuffer,
size_t xTriggerLevel ) /* PRIVILEGED_FUNCTION */ size_t xTriggerLevel ) PRIVILEGED_FUNCTION;
{
BaseType_t xReturn = pdFALSE;
StreamBufferHandle_t xInternalStreamBufferHandle = NULL;
int32_t lIndex;
BaseType_t xCallingTaskIsAuthorizedToAccessStreamBuffer = pdFALSE;
lIndex = ( int32_t ) xStreamBuffer; BaseType_t MPU_xStreamBufferSetTriggerLevelImpl( StreamBufferHandle_t xStreamBuffer,
size_t xTriggerLevel ) /* PRIVILEGED_FUNCTION */
if( IS_EXTERNAL_INDEX_VALID( lIndex ) != pdFALSE )
{ {
xCallingTaskIsAuthorizedToAccessStreamBuffer = xPortIsAuthorizedToAccessKernelObject( CONVERT_TO_INTERNAL_INDEX( lIndex ) ); BaseType_t xReturn = pdFALSE;
StreamBufferHandle_t xInternalStreamBufferHandle = NULL;
int32_t lIndex;
BaseType_t xCallingTaskIsAuthorizedToAccessStreamBuffer = pdFALSE;
if( xCallingTaskIsAuthorizedToAccessStreamBuffer == pdTRUE ) lIndex = ( int32_t ) xStreamBuffer;
if( IS_EXTERNAL_INDEX_VALID( lIndex ) != pdFALSE )
{ {
xInternalStreamBufferHandle = MPU_GetStreamBufferHandleAtIndex( CONVERT_TO_INTERNAL_INDEX( lIndex ) ); xCallingTaskIsAuthorizedToAccessStreamBuffer = xPortIsAuthorizedToAccessKernelObject( CONVERT_TO_INTERNAL_INDEX( lIndex ) );
if( xInternalStreamBufferHandle != NULL ) if( xCallingTaskIsAuthorizedToAccessStreamBuffer == pdTRUE )
{ {
xReturn = xStreamBufferSetTriggerLevel( xInternalStreamBufferHandle, xTriggerLevel ); xInternalStreamBufferHandle = MPU_GetStreamBufferHandleAtIndex( CONVERT_TO_INTERNAL_INDEX( lIndex ) );
if( xInternalStreamBufferHandle != NULL )
{
xReturn = xStreamBufferSetTriggerLevel( xInternalStreamBufferHandle, xTriggerLevel );
}
} }
} }
return xReturn;
} }
return xReturn; #endif /* #if ( configUSE_STREAM_BUFFERS == 1 ) */
}
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
size_t MPU_xStreamBufferNextMessageLengthBytesImpl( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION; #if ( configUSE_STREAM_BUFFERS == 1 )
size_t MPU_xStreamBufferNextMessageLengthBytesImpl( StreamBufferHandle_t xStreamBuffer ) /* PRIVILEGED_FUNCTION */ size_t MPU_xStreamBufferNextMessageLengthBytesImpl( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION;
{
size_t xReturn = 0;
StreamBufferHandle_t xInternalStreamBufferHandle = NULL;
int32_t lIndex;
BaseType_t xCallingTaskIsAuthorizedToAccessStreamBuffer = pdFALSE;
lIndex = ( int32_t ) xStreamBuffer; size_t MPU_xStreamBufferNextMessageLengthBytesImpl( StreamBufferHandle_t xStreamBuffer ) /* PRIVILEGED_FUNCTION */
if( IS_EXTERNAL_INDEX_VALID( lIndex ) != pdFALSE )
{ {
xCallingTaskIsAuthorizedToAccessStreamBuffer = xPortIsAuthorizedToAccessKernelObject( CONVERT_TO_INTERNAL_INDEX( lIndex ) ); size_t xReturn = 0;
StreamBufferHandle_t xInternalStreamBufferHandle = NULL;
int32_t lIndex;
BaseType_t xCallingTaskIsAuthorizedToAccessStreamBuffer = pdFALSE;
if( xCallingTaskIsAuthorizedToAccessStreamBuffer == pdTRUE ) lIndex = ( int32_t ) xStreamBuffer;
if( IS_EXTERNAL_INDEX_VALID( lIndex ) != pdFALSE )
{ {
xInternalStreamBufferHandle = MPU_GetStreamBufferHandleAtIndex( CONVERT_TO_INTERNAL_INDEX( lIndex ) ); xCallingTaskIsAuthorizedToAccessStreamBuffer = xPortIsAuthorizedToAccessKernelObject( CONVERT_TO_INTERNAL_INDEX( lIndex ) );
if( xInternalStreamBufferHandle != NULL ) if( xCallingTaskIsAuthorizedToAccessStreamBuffer == pdTRUE )
{ {
xReturn = xStreamBufferNextMessageLengthBytes( xInternalStreamBufferHandle ); xInternalStreamBufferHandle = MPU_GetStreamBufferHandleAtIndex( CONVERT_TO_INTERNAL_INDEX( lIndex ) );
if( xInternalStreamBufferHandle != NULL )
{
xReturn = xStreamBufferNextMessageLengthBytes( xInternalStreamBufferHandle );
}
} }
} }
return xReturn;
} }
return xReturn; #endif /* #if ( configUSE_STREAM_BUFFERS == 1 ) */
}
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
/* Privileged only wrappers for Stream Buffer APIs. These are needed so that /* Privileged only wrappers for Stream Buffer APIs. These are needed so that
@ -4623,7 +4658,7 @@
* with all the APIs. */ * with all the APIs. */
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
#if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) #if ( ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) && ( configUSE_STREAM_BUFFERS == 1 ) )
StreamBufferHandle_t MPU_xStreamBufferGenericCreate( size_t xBufferSizeBytes, StreamBufferHandle_t MPU_xStreamBufferGenericCreate( size_t xBufferSizeBytes,
size_t xTriggerLevelBytes, size_t xTriggerLevelBytes,
@ -4675,10 +4710,10 @@
return xExternalStreamBufferHandle; return xExternalStreamBufferHandle;
} }
#endif /* configSUPPORT_DYNAMIC_ALLOCATION */ #endif /* #if ( ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) && ( configUSE_STREAM_BUFFERS == 1 ) ) */
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
#if ( configSUPPORT_STATIC_ALLOCATION == 1 ) #if ( ( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configUSE_STREAM_BUFFERS == 1 ) )
StreamBufferHandle_t MPU_xStreamBufferGenericCreateStatic( size_t xBufferSizeBytes, StreamBufferHandle_t MPU_xStreamBufferGenericCreateStatic( size_t xBufferSizeBytes,
size_t xTriggerLevelBytes, size_t xTriggerLevelBytes,
@ -4734,53 +4769,61 @@
return xExternalStreamBufferHandle; return xExternalStreamBufferHandle;
} }
#endif /* configSUPPORT_STATIC_ALLOCATION */ #endif /* #if ( ( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configUSE_STREAM_BUFFERS == 1 ) ) */
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
void MPU_vStreamBufferDelete( StreamBufferHandle_t xStreamBuffer ) /* PRIVILEGED_FUNCTION */ #if ( configUSE_STREAM_BUFFERS == 1 )
{
StreamBufferHandle_t xInternalStreamBufferHandle = NULL;
int32_t lIndex;
lIndex = ( int32_t ) xStreamBuffer; void MPU_vStreamBufferDelete( StreamBufferHandle_t xStreamBuffer ) /* PRIVILEGED_FUNCTION */
if( IS_EXTERNAL_INDEX_VALID( lIndex ) != pdFALSE )
{ {
xInternalStreamBufferHandle = MPU_GetStreamBufferHandleAtIndex( CONVERT_TO_INTERNAL_INDEX( lIndex ) ); StreamBufferHandle_t xInternalStreamBufferHandle = NULL;
int32_t lIndex;
if( xInternalStreamBufferHandle != NULL ) lIndex = ( int32_t ) xStreamBuffer;
if( IS_EXTERNAL_INDEX_VALID( lIndex ) != pdFALSE )
{ {
vStreamBufferDelete( xInternalStreamBufferHandle ); xInternalStreamBufferHandle = MPU_GetStreamBufferHandleAtIndex( CONVERT_TO_INTERNAL_INDEX( lIndex ) );
}
MPU_SetIndexFreeInKernelObjectPool( CONVERT_TO_INTERNAL_INDEX( lIndex ) ); if( xInternalStreamBufferHandle != NULL )
} {
} vStreamBufferDelete( xInternalStreamBufferHandle );
/*-----------------------------------------------------------*/ }
BaseType_t MPU_xStreamBufferReset( StreamBufferHandle_t xStreamBuffer ) /* PRIVILEGED_FUNCTION */ MPU_SetIndexFreeInKernelObjectPool( CONVERT_TO_INTERNAL_INDEX( lIndex ) );
{
BaseType_t xReturn = pdFALSE;
StreamBufferHandle_t xInternalStreamBufferHandle = NULL;
int32_t lIndex;
lIndex = ( int32_t ) xStreamBuffer;
if( IS_EXTERNAL_INDEX_VALID( lIndex ) != pdFALSE )
{
xInternalStreamBufferHandle = MPU_GetStreamBufferHandleAtIndex( CONVERT_TO_INTERNAL_INDEX( lIndex ) );
if( xInternalStreamBufferHandle != NULL )
{
xReturn = xStreamBufferReset( xInternalStreamBufferHandle );
} }
} }
return xReturn; #endif /* #if ( configUSE_STREAM_BUFFERS == 1 ) */
}
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
#if ( configSUPPORT_STATIC_ALLOCATION == 1 ) #if ( configUSE_STREAM_BUFFERS == 1 )
BaseType_t MPU_xStreamBufferReset( StreamBufferHandle_t xStreamBuffer ) /* PRIVILEGED_FUNCTION */
{
BaseType_t xReturn = pdFALSE;
StreamBufferHandle_t xInternalStreamBufferHandle = NULL;
int32_t lIndex;
lIndex = ( int32_t ) xStreamBuffer;
if( IS_EXTERNAL_INDEX_VALID( lIndex ) != pdFALSE )
{
xInternalStreamBufferHandle = MPU_GetStreamBufferHandleAtIndex( CONVERT_TO_INTERNAL_INDEX( lIndex ) );
if( xInternalStreamBufferHandle != NULL )
{
xReturn = xStreamBufferReset( xInternalStreamBufferHandle );
}
}
return xReturn;
}
#endif /* #if ( configUSE_STREAM_BUFFERS == 1 ) */
/*-----------------------------------------------------------*/
#if ( ( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configUSE_STREAM_BUFFERS == 1 ) )
BaseType_t MPU_xStreamBufferGetStaticBuffers( StreamBufferHandle_t xStreamBuffers, BaseType_t MPU_xStreamBufferGetStaticBuffers( StreamBufferHandle_t xStreamBuffers,
uint8_t * ppucStreamBufferStorageArea, uint8_t * ppucStreamBufferStorageArea,
@ -4805,9 +4848,11 @@
return xReturn; return xReturn;
} }
#endif /* if ( configSUPPORT_STATIC_ALLOCATION == 1 ) */ #endif /* #if ( ( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configUSE_STREAM_BUFFERS == 1 ) ) */
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
#if ( configUSE_STREAM_BUFFERS == 1 )
size_t MPU_xStreamBufferSendFromISR( StreamBufferHandle_t xStreamBuffer, size_t MPU_xStreamBufferSendFromISR( StreamBufferHandle_t xStreamBuffer,
const void * pvTxData, const void * pvTxData,
size_t xDataLengthBytes, size_t xDataLengthBytes,
@ -4831,8 +4876,12 @@
return xReturn; return xReturn;
} }
#endif /* #if ( configUSE_STREAM_BUFFERS == 1 ) */
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
#if ( configUSE_STREAM_BUFFERS == 1 )
size_t MPU_xStreamBufferReceiveFromISR( StreamBufferHandle_t xStreamBuffer, size_t MPU_xStreamBufferReceiveFromISR( StreamBufferHandle_t xStreamBuffer,
void * pvRxData, void * pvRxData,
size_t xBufferLengthBytes, size_t xBufferLengthBytes,
@ -4856,52 +4905,62 @@
return xReturn; return xReturn;
} }
#endif /* #if ( configUSE_STREAM_BUFFERS == 1 ) */
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
BaseType_t MPU_xStreamBufferSendCompletedFromISR( StreamBufferHandle_t xStreamBuffer, #if ( configUSE_STREAM_BUFFERS == 1 )
BaseType_t * pxHigherPriorityTaskWoken ) /* PRIVILEGED_FUNCTION */
{
BaseType_t xReturn = pdFALSE;
StreamBufferHandle_t xInternalStreamBufferHandle = NULL;
int32_t lIndex;
lIndex = ( int32_t ) xStreamBuffer; BaseType_t MPU_xStreamBufferSendCompletedFromISR( StreamBufferHandle_t xStreamBuffer,
BaseType_t * pxHigherPriorityTaskWoken ) /* PRIVILEGED_FUNCTION */
if( IS_EXTERNAL_INDEX_VALID( lIndex ) != pdFALSE )
{ {
xInternalStreamBufferHandle = MPU_GetStreamBufferHandleAtIndex( CONVERT_TO_INTERNAL_INDEX( lIndex ) ); BaseType_t xReturn = pdFALSE;
StreamBufferHandle_t xInternalStreamBufferHandle = NULL;
int32_t lIndex;
if( xInternalStreamBufferHandle != NULL ) lIndex = ( int32_t ) xStreamBuffer;
if( IS_EXTERNAL_INDEX_VALID( lIndex ) != pdFALSE )
{ {
xReturn = xStreamBufferSendCompletedFromISR( xInternalStreamBufferHandle, pxHigherPriorityTaskWoken ); xInternalStreamBufferHandle = MPU_GetStreamBufferHandleAtIndex( CONVERT_TO_INTERNAL_INDEX( lIndex ) );
}
}
return xReturn; if( xInternalStreamBufferHandle != NULL )
} {
xReturn = xStreamBufferSendCompletedFromISR( xInternalStreamBufferHandle, pxHigherPriorityTaskWoken );
}
}
return xReturn;
}
#endif /* #if ( configUSE_STREAM_BUFFERS == 1 ) */
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
BaseType_t MPU_xStreamBufferReceiveCompletedFromISR( StreamBufferHandle_t xStreamBuffer, #if ( configUSE_STREAM_BUFFERS == 1 )
BaseType_t * pxHigherPriorityTaskWoken ) /*PRIVILEGED_FUNCTION */
{
BaseType_t xReturn = pdFALSE;
StreamBufferHandle_t xInternalStreamBufferHandle = NULL;
int32_t lIndex;
lIndex = ( int32_t ) xStreamBuffer; BaseType_t MPU_xStreamBufferReceiveCompletedFromISR( StreamBufferHandle_t xStreamBuffer,
BaseType_t * pxHigherPriorityTaskWoken ) /*PRIVILEGED_FUNCTION */
if( IS_EXTERNAL_INDEX_VALID( lIndex ) != pdFALSE )
{ {
xInternalStreamBufferHandle = MPU_GetStreamBufferHandleAtIndex( CONVERT_TO_INTERNAL_INDEX( lIndex ) ); BaseType_t xReturn = pdFALSE;
StreamBufferHandle_t xInternalStreamBufferHandle = NULL;
int32_t lIndex;
if( xInternalStreamBufferHandle != NULL ) lIndex = ( int32_t ) xStreamBuffer;
if( IS_EXTERNAL_INDEX_VALID( lIndex ) != pdFALSE )
{ {
xReturn = xStreamBufferReceiveCompletedFromISR( xInternalStreamBufferHandle, pxHigherPriorityTaskWoken ); xInternalStreamBufferHandle = MPU_GetStreamBufferHandleAtIndex( CONVERT_TO_INTERNAL_INDEX( lIndex ) );
if( xInternalStreamBufferHandle != NULL )
{
xReturn = xStreamBufferReceiveCompletedFromISR( xInternalStreamBufferHandle, pxHigherPriorityTaskWoken );
}
} }
return xReturn;
} }
return xReturn; #endif /* #if ( configUSE_STREAM_BUFFERS == 1 ) */
}
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
@ -5154,14 +5213,26 @@
( UBaseType_t ) 0, /* SYSTEM_CALL_vEventGroupSetNumber. */ ( UBaseType_t ) 0, /* SYSTEM_CALL_vEventGroupSetNumber. */
#endif #endif
( UBaseType_t ) MPU_xStreamBufferSendImpl, /* SYSTEM_CALL_xStreamBufferSend. */ #if ( configUSE_STREAM_BUFFERS == 1 )
( UBaseType_t ) MPU_xStreamBufferReceiveImpl, /* SYSTEM_CALL_xStreamBufferReceive. */ ( UBaseType_t ) MPU_xStreamBufferSendImpl, /* SYSTEM_CALL_xStreamBufferSend. */
( UBaseType_t ) MPU_xStreamBufferIsFullImpl, /* SYSTEM_CALL_xStreamBufferIsFull. */ ( UBaseType_t ) MPU_xStreamBufferReceiveImpl, /* SYSTEM_CALL_xStreamBufferReceive. */
( UBaseType_t ) MPU_xStreamBufferIsEmptyImpl, /* SYSTEM_CALL_xStreamBufferIsEmpty. */ ( UBaseType_t ) MPU_xStreamBufferIsFullImpl, /* SYSTEM_CALL_xStreamBufferIsFull. */
( UBaseType_t ) MPU_xStreamBufferSpacesAvailableImpl, /* SYSTEM_CALL_xStreamBufferSpacesAvailable. */ ( UBaseType_t ) MPU_xStreamBufferIsEmptyImpl, /* SYSTEM_CALL_xStreamBufferIsEmpty. */
( UBaseType_t ) MPU_xStreamBufferBytesAvailableImpl, /* SYSTEM_CALL_xStreamBufferBytesAvailable. */ ( UBaseType_t ) MPU_xStreamBufferSpacesAvailableImpl, /* SYSTEM_CALL_xStreamBufferSpacesAvailable. */
( UBaseType_t ) MPU_xStreamBufferSetTriggerLevelImpl, /* SYSTEM_CALL_xStreamBufferSetTriggerLevel. */ ( UBaseType_t ) MPU_xStreamBufferBytesAvailableImpl, /* SYSTEM_CALL_xStreamBufferBytesAvailable. */
( UBaseType_t ) MPU_xStreamBufferNextMessageLengthBytesImpl /* SYSTEM_CALL_xStreamBufferNextMessageLengthBytes. */ ( UBaseType_t ) MPU_xStreamBufferSetTriggerLevelImpl, /* SYSTEM_CALL_xStreamBufferSetTriggerLevel. */
( UBaseType_t ) MPU_xStreamBufferNextMessageLengthBytesImpl /* SYSTEM_CALL_xStreamBufferNextMessageLengthBytes. */
#else
( UBaseType_t ) 0, /* SYSTEM_CALL_xStreamBufferSend. */
( UBaseType_t ) 0, /* SYSTEM_CALL_xStreamBufferReceive. */
( UBaseType_t ) 0, /* SYSTEM_CALL_xStreamBufferIsFull. */
( UBaseType_t ) 0, /* SYSTEM_CALL_xStreamBufferIsEmpty. */
( UBaseType_t ) 0, /* SYSTEM_CALL_xStreamBufferSpacesAvailable. */
( UBaseType_t ) 0, /* SYSTEM_CALL_xStreamBufferBytesAvailable. */
( UBaseType_t ) 0, /* SYSTEM_CALL_xStreamBufferSetTriggerLevel. */
( UBaseType_t ) 0, /* SYSTEM_CALL_xStreamBufferNextMessageLengthBytes. */
#endif
}; };
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/