@@ -639,6 +639,68 @@ BaseType_t xStreamBufferReset( StreamBufferHandle_t xStreamBuffer )
639
639
}
640
640
/*-----------------------------------------------------------*/
641
641
642
+ BaseType_t xStreamBufferResetFromISR ( StreamBufferHandle_t xStreamBuffer )
643
+ {
644
+ StreamBuffer_t * const pxStreamBuffer = xStreamBuffer ;
645
+ BaseType_t xReturn = pdFAIL ;
646
+ StreamBufferCallbackFunction_t pxSendCallback = NULL , pxReceiveCallback = NULL ;
647
+ UBaseType_t uxSavedInterruptStatus ;
648
+
649
+ #if ( configUSE_TRACE_FACILITY == 1 )
650
+ UBaseType_t uxStreamBufferNumber ;
651
+ #endif
652
+
653
+ traceENTER_xStreamBufferResetFromISR ( xStreamBuffer );
654
+
655
+ configASSERT ( pxStreamBuffer );
656
+
657
+ #if ( configUSE_TRACE_FACILITY == 1 )
658
+ {
659
+ /* Store the stream buffer number so it can be restored after the
660
+ * reset. */
661
+ uxStreamBufferNumber = pxStreamBuffer -> uxStreamBufferNumber ;
662
+ }
663
+ #endif
664
+
665
+ /* Can only reset a message buffer if there are no tasks blocked on it. */
666
+ uxSavedInterruptStatus = taskENTER_CRITICAL_FROM_ISR ();
667
+ {
668
+ if ( ( pxStreamBuffer -> xTaskWaitingToReceive == NULL ) && ( pxStreamBuffer -> xTaskWaitingToSend == NULL ) )
669
+ {
670
+ #if ( configUSE_SB_COMPLETED_CALLBACK == 1 )
671
+ {
672
+ pxSendCallback = pxStreamBuffer -> pxSendCompletedCallback ;
673
+ pxReceiveCallback = pxStreamBuffer -> pxReceiveCompletedCallback ;
674
+ }
675
+ #endif
676
+
677
+ prvInitialiseNewStreamBuffer ( pxStreamBuffer ,
678
+ pxStreamBuffer -> pucBuffer ,
679
+ pxStreamBuffer -> xLength ,
680
+ pxStreamBuffer -> xTriggerLevelBytes ,
681
+ pxStreamBuffer -> ucFlags ,
682
+ pxSendCallback ,
683
+ pxReceiveCallback );
684
+
685
+ #if ( configUSE_TRACE_FACILITY == 1 )
686
+ {
687
+ pxStreamBuffer -> uxStreamBufferNumber = uxStreamBufferNumber ;
688
+ }
689
+ #endif
690
+
691
+ traceSTREAM_BUFFER_RESET ( xStreamBuffer );
692
+
693
+ xReturn = pdPASS ;
694
+ }
695
+ }
696
+ taskEXIT_CRITICAL_FROM_ISR ( uxSavedInterruptStatus );
697
+
698
+ traceRETURN_xStreamBufferResetFromISR ( xReturn );
699
+
700
+ return xReturn ;
701
+ }
702
+ /*-----------------------------------------------------------*/
703
+
642
704
BaseType_t xStreamBufferSetTriggerLevel ( StreamBufferHandle_t xStreamBuffer ,
643
705
size_t xTriggerLevel )
644
706
{
0 commit comments