xReturned = xStreamBufferSend( xStreamBuffer, ( void * ) pucData, sizeof( pucData[ 0 ] ), xBlockTime );\r
xTimeAfterCall = xTaskGetTickCount();\r
vTaskPrioritySet( NULL, uxOriginalPriority );\r
- prvCheckExpectedState( ( xTimeAfterCall - xTimeBeforeCall ) >= xBlockTime );\r
- prvCheckExpectedState( ( xTimeAfterCall - xTimeBeforeCall ) < ( xBlockTime + xAllowableMargin ) );\r
+ prvCheckExpectedState( ( ( TickType_t ) ( xTimeAfterCall - xTimeBeforeCall ) ) >= xBlockTime );\r
+ prvCheckExpectedState( ( ( TickType_t ) ( xTimeAfterCall - xTimeBeforeCall ) ) < ( xBlockTime + xAllowableMargin ) );\r
prvCheckExpectedState( xReturned == 0 );\r
\r
/* The buffer is now full of data in the form "000000", "111111", etc. Make\r
xReturned = xStreamBufferReceive( xStreamBuffer, ( void * ) pucReadData, x6ByteLength, xBlockTime );\r
xTimeAfterCall = xTaskGetTickCount();\r
vTaskPrioritySet( NULL, uxOriginalPriority );\r
- prvCheckExpectedState( ( xTimeAfterCall - xTimeBeforeCall ) >= xBlockTime );\r
- prvCheckExpectedState( ( xTimeAfterCall - xTimeBeforeCall ) < ( xBlockTime + xAllowableMargin ) );\r
+ prvCheckExpectedState( ( ( TickType_t ) ( xTimeAfterCall - xTimeBeforeCall ) ) >= xBlockTime );\r
+ prvCheckExpectedState( ( ( TickType_t ) ( xTimeAfterCall - xTimeBeforeCall ) ) < ( xBlockTime + xAllowableMargin ) );\r
prvCheckExpectedState( xReturned == 0 );\r
\r
\r
/* Don't expect to receive anything yet! */\r
xTimeOnEntering = xTaskGetTickCount();\r
xReceivedLength = xStreamBufferReceive( xStreamBuffers.xEchoClientBuffer, ( void * ) pcReceivedString, sbSTREAM_BUFFER_LENGTH_BYTES, xTicksToBlock );\r
- prvCheckExpectedState( ( xTaskGetTickCount() - xTimeOnEntering ) >= xTicksToBlock );\r
+ prvCheckExpectedState( ( ( TickType_t ) ( xTaskGetTickCount() - xTimeOnEntering ) ) >= xTicksToBlock );\r
prvCheckExpectedState( xReceivedLength == 0 );\r
\r
/* Now the stream buffers have been created the echo client task can be\r
{\r
/* Create the stream buffer that will be used from inside the tick\r
interrupt. */\r
+ memset( ucRxData, 0x00, sizeof( ucRxData ) );\r
xStreamBuffer = xStreamBufferCreate( xStreamBufferSizeBytes, xTriggerLevel );\r
configASSERT( xStreamBuffer );\r
\r
/* Now check the number of bytes received equals the trigger level,\r
except in the case that the read timed out before the trigger level\r
was reached. */\r
- if( xBytesReceived < xTriggerLevel )\r
+ if( xTriggerLevel > xReadBlockTime )\r
{\r
- /* This should only happen if the trigger level was greater than\r
- the block time. */\r
- if( xTriggerLevel < xReadBlockTime )\r
+ /* Trigger level was greater than the block time so expect to\r
+ time out having received xReadBlockTime bytes. */\r
+ if( ( xReadBlockTime - xBytesReceived ) > xAllowableMargin )\r
{\r
xErrorDetected = pdTRUE;\r
}\r
}\r
- else if( ( xBytesReceived - xTriggerLevel ) > xAllowableMargin )\r
+ else if( xTriggerLevel < xReadBlockTime )\r
{\r
- /* A margin may be required here if there are other high priority\r
- tasks prevent the task that reads from the message buffer running\r
- immediately. */\r
- xErrorDetected = pdTRUE;\r
+ /* Trigger level was less than the block time so we expect to\r
+ have received the trigger level number of bytes. */\r
+ if( ( xTriggerLevel - xBytesReceived ) > xAllowableMargin )\r
+ {\r
+ xErrorDetected = pdTRUE;\r
+ }\r
+ }\r
+ else\r
+ {\r
+ /* The trigger level equaled the block time, so expect to\r
+ receive no greater than the block time, but one or two less is\r
+ ok due to variations in how far through the time slice the\r
+ functions get executed. */\r
+ if( xBytesReceived > xReadBlockTime )\r
+ {\r
+ xErrorDetected = pdTRUE;\r
+ }\r
}\r
\r
if( xBytesReceived > sizeof( ucRxData ) )\r