uint8_t Pipe_Write_Stream_LE(const void* Data, uint16_t Length #if !defined(NO_STREAM_CALLBACKS) , uint8_t (* const Callback)(void) #endif ) { uint8_t* DataStream = (uint8_t*)Data; uint8_t ErrorCode; if ((ErrorCode = Pipe_WaitUntilReady())) return ErrorCode; while (Length--) { if (!(Pipe_ReadWriteAllowed())) { Pipe_ClearCurrentBank(); #if !defined(NO_STREAM_CALLBACKS) if ((Callback != NULL) && (Callback() == STREAMCALLBACK_Abort)) return PIPE_RWSTREAM_ERROR_CallbackAborted; #endif if ((ErrorCode = Pipe_WaitUntilReady())) return ErrorCode; } Pipe_Write_Byte(*(DataStream++)); } return PIPE_RWSTREAM_ERROR_NoError; }
uint8_t Pipe_Read_Stream_BE(void* Buffer, uint16_t Length #if !defined(NO_STREAM_CALLBACKS) , uint8_t (* const Callback)(void) #endif ) { uint8_t* DataStream = (uint8_t*)(Buffer + Length - 1); uint8_t ErrorCode; while (Length) { if (!(Pipe_ReadWriteAllowed())) { Pipe_ClearCurrentBank(); #if !defined(NO_STREAM_CALLBACKS) if ((Callback != NULL) && (Callback() == STREAMCALLBACK_Abort)) return ENDPOINT_RWSTREAM_ERROR_CallbackAborted; #endif if ((ErrorCode = Pipe_WaitUntilReady())) return ErrorCode; } *(DataStream--) = Pipe_Read_Byte(); Length--; if (!(USB_IsConnected)) return PIPE_RWSTREAM_ERROR_DeviceDisconnected; else if (Pipe_IsStalled()) return PIPE_RWSTREAM_ERROR_PipeStalled; } return PIPE_RWSTREAM_ERROR_NoError; }
static void Bluetooth_DiscardRemainingHCIEventParameters(void) { Pipe_SelectPipe(BLUETOOTH_EVENTS_PIPE); Pipe_Discard_Stream(HCIEventHeader.ParameterLength); Pipe_ClearCurrentBank(); }