The following table identifies the data stream states during which a call to certain SPI functions returns an error to the application.
Key:
E
┌──────────────────────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┐│SPI Function │Running│Paused │Stopped│Flush │Discard│Destroy│Pre- │Pre- │ │ │State │State │State │Pending│Pending│Pending│rolling│rolled │ │ │ │ │ │State │State │State │State │State │ ├──────────────────────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤ │SpiAssociate │E │E │OK │E │E │E │E │E │ ├──────────────────────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤ │SpiEnumerateHandlers │N/A │N/A │N/A │N/A │N/A │N/A │N/A │N/A │ ├──────────────────────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤ │SpiGetHandler │N/A │N/A │N/A │N/A │N/A │N/A │N/A │N/A │ ├──────────────────────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤ │SpiCreateStream │N/A │N/A │N/A │N/A │N/A │N/A │N/A │N/A │ ├──────────────────────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤ │SpiDestroyStream │OK │OK │OK │OK │OK │E │OK │OK │ ├──────────────────────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤ │SpiGetTime │OK │OK │OK │OK │OK │E │OK │OK │ ├──────────────────────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤ │SpiSeekStream │E │E │OK │E │E │E │E │E │ ├──────────────────────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤ │SpiStartStream │E │OK │OK │E │E │E │E │OK │ ├──────────────────────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤ │SpiStartStream │E │OK │OK │E │E │E │E │OK │ │(Preroll) │ │ │ │ │ │ │ │ │ ├──────────────────────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤ │SpiStopStream (Flush) │OK │OK │E │E │E │E │E │E │ ├──────────────────────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤ │SpiStopStream │OK │OK │E │E │E │E │OK │OK │ │(Discard) │ │ │ │ │ │ │ │ │ ├──────────────────────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤ │SpiStopStream (Pause) │OK │E │E │E │E │E │E │OK │ ├──────────────────────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤ │SpiEnableEvent │OK │OK │OK │OK │OK │E │OK │OK │ ├──────────────────────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤ │SpiDisableEvent │OK │OK │OK │OK │OK │E │OK │OK │ ├──────────────────────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤ │SpiEnableSync │OK │OK │OK │OK │OK │E │OK │OK │ ├──────────────────────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤ │SpiDisableSync │OK │OK │OK │OK │OK │E │E │OK │ ├──────────────────────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤ │SpiGetProtocol │N/A │N/A │N/A │N/A │N/A │N/A │N/A │N/A │ ├──────────────────────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤ │SpiEnumerateProtocols │N/A │N/A │N/A │N/A │N/A │N/A │N/A │N/A │ ├──────────────────────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤ │SpiInstallProtocol │N/A │N/A │N/A │N/A │N/A │N/A │N/A │N/A │ ├──────────────────────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤ │SpiDetermineSyncMaster│N/A │N/A │N/A │N/A │N/A │N/A │N/A │N/A │ └──────────────────────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┘