Add missing const qualifiers to class drivers.
Indent core library function parameters so that there is only one parameter per line, to increase readability.
This commit is contained in:
		
							parent
							
								
									99d8a39363
								
							
						
					
					
						commit
						97143bf814
					
				
					 79 changed files with 586 additions and 330 deletions
				
			
		| 
						 | 
				
			
			@ -59,7 +59,7 @@ void Audio_Device_ProcessControlRequest(USB_ClassInfo_Audio_Device_t* const Audi
 | 
			
		|||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool Audio_Device_ConfigureEndpoints(USB_ClassInfo_Audio_Device_t* AudioInterfaceInfo)
 | 
			
		||||
bool Audio_Device_ConfigureEndpoints(USB_ClassInfo_Audio_Device_t* const AudioInterfaceInfo)
 | 
			
		||||
{
 | 
			
		||||
	memset(&AudioInterfaceInfo->State, 0x00, sizeof(AudioInterfaceInfo->State));
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -41,7 +41,7 @@ void CDC_Device_Event_Stub(void)
 | 
			
		|||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void CDC_Device_ProcessControlRequest(USB_ClassInfo_CDC_Device_t* CDCInterfaceInfo)
 | 
			
		||||
void CDC_Device_ProcessControlRequest(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)
 | 
			
		||||
{
 | 
			
		||||
	if (!(Endpoint_IsSETUPReceived()))
 | 
			
		||||
	  return;
 | 
			
		||||
| 
						 | 
				
			
			@ -96,7 +96,7 @@ void CDC_Device_ProcessControlRequest(USB_ClassInfo_CDC_Device_t* CDCInterfaceIn
 | 
			
		|||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool CDC_Device_ConfigureEndpoints(USB_ClassInfo_CDC_Device_t* CDCInterfaceInfo)
 | 
			
		||||
bool CDC_Device_ConfigureEndpoints(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)
 | 
			
		||||
{
 | 
			
		||||
	memset(&CDCInterfaceInfo->State, 0x00, sizeof(CDCInterfaceInfo->State));
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -124,7 +124,7 @@ bool CDC_Device_ConfigureEndpoints(USB_ClassInfo_CDC_Device_t* CDCInterfaceInfo)
 | 
			
		|||
	return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void CDC_Device_USBTask(USB_ClassInfo_CDC_Device_t* CDCInterfaceInfo)
 | 
			
		||||
void CDC_Device_USBTask(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)
 | 
			
		||||
{
 | 
			
		||||
	if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS))
 | 
			
		||||
	  return;
 | 
			
		||||
| 
						 | 
				
			
			@ -137,7 +137,9 @@ void CDC_Device_USBTask(USB_ClassInfo_CDC_Device_t* CDCInterfaceInfo)
 | 
			
		|||
	CDC_Device_Flush(CDCInterfaceInfo);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint8_t CDC_Device_SendString(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, char* const Data, const uint16_t Length)
 | 
			
		||||
uint8_t CDC_Device_SendString(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo,
 | 
			
		||||
                              char* const Data,
 | 
			
		||||
                              const uint16_t Length)
 | 
			
		||||
{
 | 
			
		||||
	if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS))
 | 
			
		||||
	  return ENDPOINT_RWSTREAM_DeviceDisconnected;
 | 
			
		||||
| 
						 | 
				
			
			@ -146,7 +148,8 @@ uint8_t CDC_Device_SendString(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo
 | 
			
		|||
	return Endpoint_Write_Stream_LE(Data, Length, NO_STREAM_CALLBACK);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint8_t CDC_Device_SendByte(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, const uint8_t Data)
 | 
			
		||||
uint8_t CDC_Device_SendByte(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo,
 | 
			
		||||
                            const uint8_t Data)
 | 
			
		||||
{
 | 
			
		||||
	if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS))
 | 
			
		||||
	  return ENDPOINT_RWSTREAM_DeviceDisconnected;
 | 
			
		||||
| 
						 | 
				
			
			@ -219,7 +222,7 @@ uint16_t CDC_Device_BytesReceived(USB_ClassInfo_CDC_Device_t* const CDCInterface
 | 
			
		|||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint8_t CDC_Device_ReceiveByte(USB_ClassInfo_CDC_Device_t* CDCInterfaceInfo)
 | 
			
		||||
uint8_t CDC_Device_ReceiveByte(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)
 | 
			
		||||
{
 | 
			
		||||
	if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS))
 | 
			
		||||
	  return 0;
 | 
			
		||||
| 
						 | 
				
			
			@ -257,19 +260,22 @@ void CDC_Device_SendControlLineStateChange(USB_ClassInfo_CDC_Device_t* const CDC
 | 
			
		|||
	Endpoint_ClearIN();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void CDC_Device_CreateStream(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, FILE* const Stream)
 | 
			
		||||
void CDC_Device_CreateStream(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo,
 | 
			
		||||
                             FILE* const Stream)
 | 
			
		||||
{
 | 
			
		||||
	*Stream = (FILE)FDEV_SETUP_STREAM(CDC_Device_putchar, CDC_Device_getchar, _FDEV_SETUP_RW);
 | 
			
		||||
	fdev_set_udata(Stream, CDCInterfaceInfo);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void CDC_Device_CreateBlockingStream(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, FILE* const Stream)
 | 
			
		||||
void CDC_Device_CreateBlockingStream(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo,
 | 
			
		||||
                                     FILE* const Stream)
 | 
			
		||||
{
 | 
			
		||||
	*Stream = (FILE)FDEV_SETUP_STREAM(CDC_Device_putchar, CDC_Device_getchar_Blocking, _FDEV_SETUP_RW);
 | 
			
		||||
	fdev_set_udata(Stream, CDCInterfaceInfo);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int CDC_Device_putchar(char c, FILE* Stream)
 | 
			
		||||
static int CDC_Device_putchar(char c,
 | 
			
		||||
                              FILE* Stream)
 | 
			
		||||
{
 | 
			
		||||
	return CDC_Device_SendByte((USB_ClassInfo_CDC_Device_t*)fdev_get_udata(Stream), c) ? _FDEV_ERR : 0;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -196,7 +196,8 @@
 | 
			
		|||
			 *  \param[in,out] CDCInterfaceInfo  Pointer to a structure containing a CDC Class configuration and state.
 | 
			
		||||
			 *  \param[in]     Duration          Duration of the break that has been sent by the host, in milliseconds.
 | 
			
		||||
			 */
 | 
			
		||||
			void EVENT_CDC_Device_BreakSent(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, const uint8_t Duration) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
			void EVENT_CDC_Device_BreakSent(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo,
 | 
			
		||||
			                                const uint8_t Duration) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
 | 
			
		||||
			/** Sends a given string to the attached USB host, if connected. If a host is not connected when the function is called, the
 | 
			
		||||
			 *  string is discarded. Bytes will be queued for transmission to the host until either the endpoint bank becomes full, or the
 | 
			
		||||
| 
						 | 
				
			
			@ -212,8 +213,9 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Endpoint_Stream_RW_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t CDC_Device_SendString(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, char* const Data, const uint16_t Length)
 | 
			
		||||
			                              ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
 | 
			
		||||
			uint8_t CDC_Device_SendString(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo,
 | 
			
		||||
			                              char* const Data,
 | 
			
		||||
			                              const uint16_t Length) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
 | 
			
		||||
			
 | 
			
		||||
			/** Sends a given byte to the attached USB host, if connected. If a host is not connected when the function is called, the
 | 
			
		||||
			 *  byte is discarded. Bytes will be queued for transmission to the host until either the endpoint bank becomes full, or the
 | 
			
		||||
| 
						 | 
				
			
			@ -228,7 +230,8 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Endpoint_WaitUntilReady_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t CDC_Device_SendByte(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, const uint8_t Data) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
			uint8_t CDC_Device_SendByte(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo,
 | 
			
		||||
			                            const uint8_t Data) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
			
 | 
			
		||||
			/** Determines the number of bytes received by the CDC interface from the host, waiting to be read.
 | 
			
		||||
			 *
 | 
			
		||||
| 
						 | 
				
			
			@ -292,8 +295,8 @@
 | 
			
		|||
			 *  \param[in,out] CDCInterfaceInfo  Pointer to a structure containing a CDC Class configuration and state.
 | 
			
		||||
			 *  \param[in,out] Stream            Pointer to a FILE structure where the created stream should be placed.
 | 
			
		||||
			 */
 | 
			
		||||
			void CDC_Device_CreateStream(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, FILE* const Stream)
 | 
			
		||||
			                             ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
 | 
			
		||||
			void CDC_Device_CreateStream(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo,
 | 
			
		||||
			                             FILE* const Stream) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
 | 
			
		||||
 | 
			
		||||
			/** Identical to CDC_Device_CreateStream(), except that reads are blocking until the calling stream function terminates
 | 
			
		||||
			 *  the transfer. While blocking, the USB and CDC service tasks are called repeatedly to maintain USB communications.
 | 
			
		||||
| 
						 | 
				
			
			@ -301,24 +304,26 @@
 | 
			
		|||
			 *  \param[in,out] CDCInterfaceInfo  Pointer to a structure containing a CDC Class configuration and state.
 | 
			
		||||
			 *  \param[in,out] Stream            Pointer to a FILE structure where the created stream should be placed.
 | 
			
		||||
			 */
 | 
			
		||||
			void CDC_Device_CreateBlockingStream(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, FILE* const Stream)
 | 
			
		||||
			                                     ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
 | 
			
		||||
			void CDC_Device_CreateBlockingStream(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo,
 | 
			
		||||
			                                     FILE* const Stream) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
 | 
			
		||||
 | 
			
		||||
	/* Private Interface - For use in library only: */
 | 
			
		||||
	#if !defined(__DOXYGEN__)
 | 
			
		||||
		/* Function Prototypes: */
 | 
			
		||||
			#if defined(__INCLUDE_FROM_CDC_CLASS_DEVICE_C)
 | 
			
		||||
				static int CDC_Device_putchar(char c, FILE* Stream) ATTR_NON_NULL_PTR_ARG(2);
 | 
			
		||||
				static int CDC_Device_putchar(char c,
 | 
			
		||||
				                              FILE* Stream) ATTR_NON_NULL_PTR_ARG(2);
 | 
			
		||||
				static int CDC_Device_getchar(FILE* Stream) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
				static int CDC_Device_getchar_Blocking(FILE* Stream) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
				
 | 
			
		||||
				void CDC_Device_Event_Stub(void);
 | 
			
		||||
				void EVENT_CDC_Device_LineEncodingChanged(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)
 | 
			
		||||
														  ATTR_WEAK ATTR_NON_NULL_PTR_ARG(1) ATTR_ALIAS(CDC_Device_Event_Stub);
 | 
			
		||||
				                                          ATTR_WEAK ATTR_NON_NULL_PTR_ARG(1) ATTR_ALIAS(CDC_Device_Event_Stub);
 | 
			
		||||
				void EVENT_CDC_Device_ControLineStateChanged(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)
 | 
			
		||||
															 ATTR_WEAK ATTR_NON_NULL_PTR_ARG(1) ATTR_ALIAS(CDC_Device_Event_Stub);
 | 
			
		||||
				void EVENT_CDC_Device_BreakSent(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, const uint8_t Duration)
 | 
			
		||||
				                                ATTR_WEAK ATTR_NON_NULL_PTR_ARG(1) ATTR_ALIAS(CDC_Device_Event_Stub);
 | 
			
		||||
				                                             ATTR_WEAK ATTR_NON_NULL_PTR_ARG(1) ATTR_ALIAS(CDC_Device_Event_Stub);
 | 
			
		||||
				void EVENT_CDC_Device_BreakSent(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo,
 | 
			
		||||
				                                const uint8_t Duration) ATTR_WEAK ATTR_NON_NULL_PTR_ARG(1)
 | 
			
		||||
				                                ATTR_ALIAS(CDC_Device_Event_Stub);
 | 
			
		||||
			#endif
 | 
			
		||||
 | 
			
		||||
	#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -163,8 +163,11 @@
 | 
			
		|||
			 *  \return Boolean true to force the sending of the report even if it is identical to the previous report and still within
 | 
			
		||||
			 *          the idle period (useful for devices which report relative movement), false otherwise.
 | 
			
		||||
			 */
 | 
			
		||||
			bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,
 | 
			
		||||
                                                     const uint8_t ReportType, void* ReportData, uint16_t* const ReportSize) ATTR_NON_NULL_PTR_ARG(1)
 | 
			
		||||
			bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo,
 | 
			
		||||
			                                         uint8_t* const ReportID,
 | 
			
		||||
			                                         const uint8_t ReportType,
 | 
			
		||||
			                                         void* ReportData,
 | 
			
		||||
			                                         uint16_t* const ReportSize) ATTR_NON_NULL_PTR_ARG(1)
 | 
			
		||||
			                                         ATTR_NON_NULL_PTR_ARG(2) ATTR_NON_NULL_PTR_ARG(4) ATTR_NON_NULL_PTR_ARG(5);
 | 
			
		||||
			
 | 
			
		||||
			/** HID class driver callback for the user processing of a received HID OUT report. This callback may fire in response to
 | 
			
		||||
| 
						 | 
				
			
			@ -178,9 +181,11 @@
 | 
			
		|||
			 *  \param[in]     ReportData        Pointer to a buffer where the received HID report is stored.
 | 
			
		||||
			 *  \param[in]     ReportSize        Size in bytes of the received report from the host.
 | 
			
		||||
			 */
 | 
			
		||||
			void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID,
 | 
			
		||||
			                                          const uint8_t ReportType, const void* ReportData, const uint16_t ReportSize)
 | 
			
		||||
			                                          ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(4);
 | 
			
		||||
			void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo,
 | 
			
		||||
			                                          const uint8_t ReportID,
 | 
			
		||||
			                                          const uint8_t ReportType,
 | 
			
		||||
			                                          const void* ReportData,
 | 
			
		||||
			                                          const uint16_t ReportSize) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(4);
 | 
			
		||||
 | 
			
		||||
		/* Inline Functions: */
 | 
			
		||||
			/** Indicates that a millisecond of idle time has elapsed on the given HID interface, and the interface's idle count should be
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -62,7 +62,8 @@ bool MIDI_Device_ConfigureEndpoints(USB_ClassInfo_MIDI_Device_t* const MIDIInter
 | 
			
		|||
	return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint8_t MIDI_Device_SendEventPacket(USB_ClassInfo_MIDI_Device_t* const MIDIInterfaceInfo, const MIDI_EventPacket_t* const Event)
 | 
			
		||||
uint8_t MIDI_Device_SendEventPacket(USB_ClassInfo_MIDI_Device_t* const MIDIInterfaceInfo,
 | 
			
		||||
                                    const MIDI_EventPacket_t* const Event)
 | 
			
		||||
{
 | 
			
		||||
	if (USB_DeviceState != DEVICE_STATE_Configured)
 | 
			
		||||
	  return ENDPOINT_RWSTREAM_DeviceDisconnected;
 | 
			
		||||
| 
						 | 
				
			
			@ -103,7 +104,8 @@ uint8_t MIDI_Device_Flush(USB_ClassInfo_MIDI_Device_t* const MIDIInterfaceInfo)
 | 
			
		|||
	return ENDPOINT_READYWAIT_NoError;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool MIDI_Device_ReceiveEventPacket(USB_ClassInfo_MIDI_Device_t* const MIDIInterfaceInfo, MIDI_EventPacket_t* const Event)
 | 
			
		||||
bool MIDI_Device_ReceiveEventPacket(USB_ClassInfo_MIDI_Device_t* const MIDIInterfaceInfo,
 | 
			
		||||
                                    MIDI_EventPacket_t* const Event)
 | 
			
		||||
{
 | 
			
		||||
	if (USB_DeviceState != DEVICE_STATE_Configured)
 | 
			
		||||
	  return false;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -333,8 +333,11 @@ void RNDIS_Device_ProcessRNDISControlMessage(USB_ClassInfo_RNDIS_Device_t* const
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
static bool RNDIS_Device_ProcessNDISQuery(USB_ClassInfo_RNDIS_Device_t* const RNDISInterfaceInfo,
 | 
			
		||||
                                          const uint32_t OId, void* const QueryData, const uint16_t QuerySize,
 | 
			
		||||
                                          void* ResponseData, uint16_t* const ResponseSize)
 | 
			
		||||
                                          const uint32_t OId,
 | 
			
		||||
                                          void* const QueryData,
 | 
			
		||||
                                          const uint16_t QuerySize,
 | 
			
		||||
                                          void* ResponseData,
 | 
			
		||||
                                          uint16_t* const ResponseSize)
 | 
			
		||||
{
 | 
			
		||||
	(void)QueryData;
 | 
			
		||||
	(void)QuerySize;
 | 
			
		||||
| 
						 | 
				
			
			@ -447,8 +450,10 @@ static bool RNDIS_Device_ProcessNDISQuery(USB_ClassInfo_RNDIS_Device_t* const RN
 | 
			
		|||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static bool RNDIS_Device_ProcessNDISSet(USB_ClassInfo_RNDIS_Device_t* const RNDISInterfaceInfo, const uint32_t OId,
 | 
			
		||||
                                        const void* SetData, const uint16_t SetSize)
 | 
			
		||||
static bool RNDIS_Device_ProcessNDISSet(USB_ClassInfo_RNDIS_Device_t* const RNDISInterfaceInfo,
 | 
			
		||||
                                        const uint32_t OId,
 | 
			
		||||
                                        const void* SetData,
 | 
			
		||||
                                        const uint16_t SetSize)
 | 
			
		||||
{
 | 
			
		||||
	(void)SetSize;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -151,11 +151,16 @@
 | 
			
		|||
			static void RNDIS_Device_ProcessRNDISControlMessage(USB_ClassInfo_RNDIS_Device_t* const RNDISInterfaceInfo)
 | 
			
		||||
			                                                    ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
			static bool RNDIS_Device_ProcessNDISQuery(USB_ClassInfo_RNDIS_Device_t* const RNDISInterfaceInfo, 
 | 
			
		||||
			                                          const uint32_t OId, void* const QueryData, const uint16_t QuerySize,
 | 
			
		||||
										              void* ResponseData, uint16_t* const ResponseSize) ATTR_NON_NULL_PTR_ARG(1)
 | 
			
		||||
			                                          const uint32_t OId,
 | 
			
		||||
                                                      void* const QueryData,
 | 
			
		||||
                                                      const uint16_t QuerySize,
 | 
			
		||||
										              void* ResponseData,
 | 
			
		||||
                                                      uint16_t* const ResponseSize) ATTR_NON_NULL_PTR_ARG(1)
 | 
			
		||||
			                                          ATTR_NON_NULL_PTR_ARG(5) ATTR_NON_NULL_PTR_ARG(6);
 | 
			
		||||
			static bool RNDIS_Device_ProcessNDISSet(USB_ClassInfo_RNDIS_Device_t* const RNDISInterfaceInfo, const uint32_t OId,
 | 
			
		||||
			                                        const void* SetData, const uint16_t SetSize) ATTR_NON_NULL_PTR_ARG(1)
 | 
			
		||||
			static bool RNDIS_Device_ProcessNDISSet(USB_ClassInfo_RNDIS_Device_t* const RNDISInterfaceInfo,
 | 
			
		||||
                                                    const uint32_t OId,
 | 
			
		||||
			                                        const void* SetData,
 | 
			
		||||
                                                    const uint16_t SetSize) ATTR_NON_NULL_PTR_ARG(1)
 | 
			
		||||
			                                        ATTR_NON_NULL_PTR_ARG(3);
 | 
			
		||||
		#endif
 | 
			
		||||
		
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -36,7 +36,8 @@
 | 
			
		|||
#define  __INCLUDE_FROM_CDC_DRIVER
 | 
			
		||||
#include "CDC.h"
 | 
			
		||||
 | 
			
		||||
uint8_t CDC_Host_ConfigurePipes(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo, uint16_t ConfigDescriptorSize,
 | 
			
		||||
uint8_t CDC_Host_ConfigurePipes(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo,
 | 
			
		||||
                                uint16_t ConfigDescriptorSize,
 | 
			
		||||
                                void* ConfigDescriptorData)
 | 
			
		||||
{
 | 
			
		||||
	uint8_t FoundEndpoints = 0;
 | 
			
		||||
| 
						 | 
				
			
			@ -261,7 +262,8 @@ uint8_t CDC_Host_SendControlLineStateChange(USB_ClassInfo_CDC_Host_t* const CDCI
 | 
			
		|||
	return USB_Host_SendControlRequest(NULL);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint8_t CDC_Host_SendBreak(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo, const uint8_t Duration)
 | 
			
		||||
uint8_t CDC_Host_SendBreak(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo,
 | 
			
		||||
                           const uint8_t Duration)
 | 
			
		||||
{
 | 
			
		||||
	USB_ControlRequest = (USB_Request_Header_t)
 | 
			
		||||
	{
 | 
			
		||||
| 
						 | 
				
			
			@ -277,7 +279,9 @@ uint8_t CDC_Host_SendBreak(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo, con
 | 
			
		|||
	return USB_Host_SendControlRequest(NULL);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint8_t CDC_Host_SendString(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo, char* Data, const uint16_t Length)
 | 
			
		||||
uint8_t CDC_Host_SendString(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo,
 | 
			
		||||
                            char* const Data,
 | 
			
		||||
                            const uint16_t Length)
 | 
			
		||||
{
 | 
			
		||||
	if ((USB_HostState != HOST_STATE_Configured) || !(CDCInterfaceInfo->State.IsActive))
 | 
			
		||||
	  return PIPE_READYWAIT_DeviceDisconnected;
 | 
			
		||||
| 
						 | 
				
			
			@ -293,7 +297,8 @@ uint8_t CDC_Host_SendString(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo, ch
 | 
			
		|||
	return ErrorCode;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint8_t CDC_Host_SendByte(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo, const uint8_t Data)
 | 
			
		||||
uint8_t CDC_Host_SendByte(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo,
 | 
			
		||||
                          const uint8_t Data)
 | 
			
		||||
{
 | 
			
		||||
	if ((USB_HostState != HOST_STATE_Configured) || !(CDCInterfaceInfo->State.IsActive))
 | 
			
		||||
	  return PIPE_READYWAIT_DeviceDisconnected;
 | 
			
		||||
| 
						 | 
				
			
			@ -399,19 +404,22 @@ uint8_t CDC_Host_Flush(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo)
 | 
			
		|||
	return PIPE_READYWAIT_NoError;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void CDC_Host_CreateStream(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo, FILE* const Stream)
 | 
			
		||||
void CDC_Host_CreateStream(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo,
 | 
			
		||||
                           FILE* const Stream)
 | 
			
		||||
{
 | 
			
		||||
	*Stream = (FILE)FDEV_SETUP_STREAM(CDC_Host_putchar, CDC_Host_getchar, _FDEV_SETUP_RW);
 | 
			
		||||
	fdev_set_udata(Stream, CDCInterfaceInfo);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void CDC_Host_CreateBlockingStream(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo, FILE* const Stream)
 | 
			
		||||
void CDC_Host_CreateBlockingStream(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo,
 | 
			
		||||
                                   FILE* const Stream)
 | 
			
		||||
{
 | 
			
		||||
	*Stream = (FILE)FDEV_SETUP_STREAM(CDC_Host_putchar, CDC_Host_getchar_Blocking, _FDEV_SETUP_RW);
 | 
			
		||||
	fdev_set_udata(Stream, CDCInterfaceInfo);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int CDC_Host_putchar(char c, FILE* Stream)
 | 
			
		||||
static int CDC_Host_putchar(char c,
 | 
			
		||||
                            FILE* Stream)
 | 
			
		||||
{
 | 
			
		||||
	return CDC_Host_SendByte((USB_ClassInfo_CDC_Host_t*)fdev_get_udata(Stream), c) ? _FDEV_ERR : 0;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -167,7 +167,8 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref CDCHost_EnumerationFailure_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t CDC_Host_ConfigurePipes(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo, uint16_t ConfigDescriptorSize,
 | 
			
		||||
			uint8_t CDC_Host_ConfigurePipes(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo,
 | 
			
		||||
			                                uint16_t ConfigDescriptorSize,
 | 
			
		||||
			                                void* DeviceConfigDescriptor) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(3);
 | 
			
		||||
			
 | 
			
		||||
			/** Sets the line encoding for the attached device's virtual serial port. This should be called when the LineEncoding
 | 
			
		||||
| 
						 | 
				
			
			@ -198,7 +199,8 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref USB_Host_SendControlErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t CDC_Host_SendBreak(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo, const uint8_t Duration) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
			uint8_t CDC_Host_SendBreak(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo,
 | 
			
		||||
			                           const uint8_t Duration) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
			
 | 
			
		||||
			/** Sends a given string to the attached USB device, if connected. If a device is not connected when the function is called, the
 | 
			
		||||
			 *  string is discarded. Bytes will be queued for transmission to the device until either the pipe bank becomes full, or the
 | 
			
		||||
| 
						 | 
				
			
			@ -214,8 +216,9 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t CDC_Host_SendString(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo, char* Data, const uint16_t Length)
 | 
			
		||||
			                            ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
 | 
			
		||||
			uint8_t CDC_Host_SendString(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo,
 | 
			
		||||
			                            char* const Data,
 | 
			
		||||
			                            const uint16_t Length) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
 | 
			
		||||
			
 | 
			
		||||
			/** Sends a given byte to the attached USB device, if connected. If a device is not connected when the function is called, the
 | 
			
		||||
			 *  byte is discarded. Bytes will be queued for transmission to the device until either the pipe bank becomes full, or the
 | 
			
		||||
| 
						 | 
				
			
			@ -230,7 +233,8 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Pipe_WaitUntilReady_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t CDC_Host_SendByte(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo, const uint8_t Data) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
			uint8_t CDC_Host_SendByte(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo,
 | 
			
		||||
			                          const uint8_t Data) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
 | 
			
		||||
			/** Determines the number of bytes received by the CDC interface from the device, waiting to be read.
 | 
			
		||||
			 *
 | 
			
		||||
| 
						 | 
				
			
			@ -277,7 +281,8 @@
 | 
			
		|||
			 *  \param[in,out] CDCInterfaceInfo  Pointer to a structure containing a CDC Class configuration and state.
 | 
			
		||||
			 *  \param[in,out] Stream            Pointer to a FILE structure where the created stream should be placed.
 | 
			
		||||
			 */
 | 
			
		||||
			void CDC_Host_CreateStream(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo, FILE* const Stream);
 | 
			
		||||
			void CDC_Host_CreateStream(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo,
 | 
			
		||||
			                           FILE* const Stream);
 | 
			
		||||
 | 
			
		||||
			/** Identical to CDC_Host_CreateStream(), except that reads are blocking until the calling stream function terminates
 | 
			
		||||
			 *  the transfer. While blocking, the USB and CDC service tasks are called repeatedly to maintain USB communications.
 | 
			
		||||
| 
						 | 
				
			
			@ -285,7 +290,8 @@
 | 
			
		|||
			 *  \param[in,out] CDCInterfaceInfo  Pointer to a structure containing a CDC Class configuration and state.
 | 
			
		||||
			 *  \param[in,out] Stream            Pointer to a FILE structure where the created stream should be placed.
 | 
			
		||||
			 */
 | 
			
		||||
			void CDC_Host_CreateBlockingStream(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo, FILE* const Stream);
 | 
			
		||||
			void CDC_Host_CreateBlockingStream(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo,
 | 
			
		||||
			                                   FILE* const Stream);
 | 
			
		||||
 | 
			
		||||
			/** CDC class driver event for a control line state change on a CDC host interface. This event fires each time the device notifies
 | 
			
		||||
			 *  the host of a control line state change (containing the virtual serial control line states, such as DCD) and may be hooked in the
 | 
			
		||||
| 
						 | 
				
			
			@ -313,7 +319,8 @@
 | 
			
		|||
 | 
			
		||||
		/* Function Prototypes: */
 | 
			
		||||
			#if defined(__INCLUDE_FROM_CDC_CLASS_HOST_C)
 | 
			
		||||
				static int CDC_Host_putchar(char c, FILE* Stream) ATTR_NON_NULL_PTR_ARG(2);
 | 
			
		||||
				static int CDC_Host_putchar(char c,
 | 
			
		||||
				                            FILE* Stream) ATTR_NON_NULL_PTR_ARG(2);
 | 
			
		||||
				static int CDC_Host_getchar(FILE* Stream) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
				static int CDC_Host_getchar_Blocking(FILE* Stream) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -36,7 +36,8 @@
 | 
			
		|||
#define  __INCLUDE_FROM_HID_DRIVER
 | 
			
		||||
#include "HID.h"
 | 
			
		||||
 | 
			
		||||
uint8_t HID_Host_ConfigurePipes(USB_ClassInfo_HID_Host_t* const HIDInterfaceInfo, uint16_t ConfigDescriptorSize,
 | 
			
		||||
uint8_t HID_Host_ConfigurePipes(USB_ClassInfo_HID_Host_t* const HIDInterfaceInfo,
 | 
			
		||||
                                uint16_t ConfigDescriptorSize,
 | 
			
		||||
                                void* ConfigDescriptorData)
 | 
			
		||||
{
 | 
			
		||||
	uint8_t FoundEndpoints = 0;
 | 
			
		||||
| 
						 | 
				
			
			@ -153,7 +154,9 @@ static uint8_t DCOMP_HID_Host_NextHIDInterfaceEndpoint(void* const CurrentDescri
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
#if !defined(HID_HOST_BOOT_PROTOCOL_ONLY)
 | 
			
		||||
uint8_t HID_Host_ReceiveReportByID(USB_ClassInfo_HID_Host_t* const HIDInterfaceInfo, const uint8_t ReportID, void* Buffer)
 | 
			
		||||
uint8_t HID_Host_ReceiveReportByID(USB_ClassInfo_HID_Host_t* const HIDInterfaceInfo,
 | 
			
		||||
                                   const uint8_t ReportID,
 | 
			
		||||
                                   void* Buffer)
 | 
			
		||||
{
 | 
			
		||||
	USB_ControlRequest = (USB_Request_Header_t)
 | 
			
		||||
	{
 | 
			
		||||
| 
						 | 
				
			
			@ -170,7 +173,8 @@ uint8_t HID_Host_ReceiveReportByID(USB_ClassInfo_HID_Host_t* const HIDInterfaceI
 | 
			
		|||
}											   
 | 
			
		||||
#endif
 | 
			
		||||
										   
 | 
			
		||||
uint8_t HID_Host_ReceiveReport(USB_ClassInfo_HID_Host_t* const HIDInterfaceInfo, void* Buffer)
 | 
			
		||||
uint8_t HID_Host_ReceiveReport(USB_ClassInfo_HID_Host_t* const HIDInterfaceInfo,
 | 
			
		||||
                               void* Buffer)
 | 
			
		||||
{
 | 
			
		||||
	if ((USB_HostState != HOST_STATE_Configured) || !(HIDInterfaceInfo->State.IsActive))
 | 
			
		||||
	  return PIPE_READYWAIT_DeviceDisconnected;
 | 
			
		||||
| 
						 | 
				
			
			@ -215,7 +219,9 @@ uint8_t HID_Host_SendReportByID(USB_ClassInfo_HID_Host_t* const HIDInterfaceInfo
 | 
			
		|||
#if !defined(HID_HOST_BOOT_PROTOCOL_ONLY)
 | 
			
		||||
                                const uint8_t ReportID,
 | 
			
		||||
#endif
 | 
			
		||||
                                const uint8_t ReportType, void* Buffer, const uint16_t ReportSize)
 | 
			
		||||
                                const uint8_t ReportType,
 | 
			
		||||
                                void* Buffer,
 | 
			
		||||
                                const uint16_t ReportSize)
 | 
			
		||||
{
 | 
			
		||||
#if !defined(HID_HOST_BOOT_PROTOCOL_ONLY)
 | 
			
		||||
	if ((USB_HostState != HOST_STATE_Configured) || !(HIDInterfaceInfo->State.IsActive))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -161,7 +161,8 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref HIDHost_EnumerationFailure_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t HID_Host_ConfigurePipes(USB_ClassInfo_HID_Host_t* const HIDInterfaceInfo, uint16_t ConfigDescriptorSize,
 | 
			
		||||
			uint8_t HID_Host_ConfigurePipes(USB_ClassInfo_HID_Host_t* const HIDInterfaceInfo,
 | 
			
		||||
			                                uint16_t ConfigDescriptorSize,
 | 
			
		||||
			                                void* DeviceConfigDescriptor) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(3);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -178,8 +179,8 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return An error code from the \ref Pipe_Stream_RW_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t HID_Host_ReceiveReport(USB_ClassInfo_HID_Host_t* const HIDInterfaceInfo, void* Buffer)
 | 
			
		||||
			                               ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
 | 
			
		||||
			uint8_t HID_Host_ReceiveReport(USB_ClassInfo_HID_Host_t* const HIDInterfaceInfo,
 | 
			
		||||
			                               void* Buffer) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
 | 
			
		||||
 | 
			
		||||
			#if !defined(HID_HOST_BOOT_PROTOCOL_ONLY)
 | 
			
		||||
			/** Receives a HID IN report from the attached device, by the report ID.
 | 
			
		||||
| 
						 | 
				
			
			@ -195,7 +196,8 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref USB_Host_SendControlErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t HID_Host_ReceiveReportByID(USB_ClassInfo_HID_Host_t* const HIDInterfaceInfo, const uint8_t ReportID,
 | 
			
		||||
			uint8_t HID_Host_ReceiveReportByID(USB_ClassInfo_HID_Host_t* const HIDInterfaceInfo,
 | 
			
		||||
			                                   const uint8_t ReportID,
 | 
			
		||||
			                                   void* Buffer) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(3);
 | 
			
		||||
			#endif
 | 
			
		||||
			
 | 
			
		||||
| 
						 | 
				
			
			@ -221,7 +223,9 @@
 | 
			
		|||
			#if !defined(HID_HOST_BOOT_PROTOCOL_ONLY)
 | 
			
		||||
			                                const uint8_t ReportID,
 | 
			
		||||
			#endif
 | 
			
		||||
			                                const uint8_t ReportType, void* Buffer, const uint16_t ReportSize) ATTR_NON_NULL_PTR_ARG(1)
 | 
			
		||||
			                                const uint8_t ReportType,
 | 
			
		||||
			                                void* Buffer,
 | 
			
		||||
			                                const uint16_t ReportSize) ATTR_NON_NULL_PTR_ARG(1)
 | 
			
		||||
			#if !defined(HID_HOST_BOOT_PROTOCOL_ONLY)
 | 
			
		||||
			                                ATTR_NON_NULL_PTR_ARG(4);
 | 
			
		||||
			#else
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -34,7 +34,9 @@
 | 
			
		|||
 | 
			
		||||
#include "HIDParser.h"
 | 
			
		||||
 | 
			
		||||
uint8_t USB_ProcessHIDReport(const uint8_t* ReportData, uint16_t ReportSize, HID_ReportInfo_t* const ParserData)
 | 
			
		||||
uint8_t USB_ProcessHIDReport(const uint8_t* ReportData,
 | 
			
		||||
                             uint16_t ReportSize,
 | 
			
		||||
                             HID_ReportInfo_t* const ParserData)
 | 
			
		||||
{
 | 
			
		||||
	HID_StateTable_t      StateTable[HID_STATETABLE_STACK_DEPTH];
 | 
			
		||||
	HID_StateTable_t*     CurrStateTable          = &StateTable[0];
 | 
			
		||||
| 
						 | 
				
			
			@ -284,7 +286,8 @@ uint8_t USB_ProcessHIDReport(const uint8_t* ReportData, uint16_t ReportSize, HID
 | 
			
		|||
	return HID_PARSE_Successful;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool USB_GetHIDReportItemInfo(const uint8_t* ReportData, HID_ReportItem_t* const ReportItem)
 | 
			
		||||
bool USB_GetHIDReportItemInfo(const uint8_t* ReportData,
 | 
			
		||||
                              HID_ReportItem_t* const ReportItem)
 | 
			
		||||
{
 | 
			
		||||
	uint16_t DataBitsRem  = ReportItem->Attributes.BitSize;
 | 
			
		||||
	uint16_t CurrentBit   = ReportItem->BitOffset;
 | 
			
		||||
| 
						 | 
				
			
			@ -313,7 +316,8 @@ bool USB_GetHIDReportItemInfo(const uint8_t* ReportData, HID_ReportItem_t* const
 | 
			
		|||
	return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void USB_SetHIDReportItemInfo(uint8_t* ReportData, HID_ReportItem_t* const ReportItem)
 | 
			
		||||
void USB_SetHIDReportItemInfo(uint8_t* ReportData,
 | 
			
		||||
                              HID_ReportItem_t* const ReportItem)
 | 
			
		||||
{
 | 
			
		||||
	uint16_t DataBitsRem  = ReportItem->Attributes.BitSize;
 | 
			
		||||
	uint16_t CurrentBit   = ReportItem->BitOffset;
 | 
			
		||||
| 
						 | 
				
			
			@ -337,7 +341,9 @@ void USB_SetHIDReportItemInfo(uint8_t* ReportData, HID_ReportItem_t* const Repor
 | 
			
		|||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint16_t USB_GetHIDReportSize(HID_ReportInfo_t* const ParserData, const uint8_t ReportID, const uint8_t ReportType)
 | 
			
		||||
uint16_t USB_GetHIDReportSize(HID_ReportInfo_t* const ParserData,
 | 
			
		||||
                              const uint8_t ReportID,
 | 
			
		||||
                              const uint8_t ReportType)
 | 
			
		||||
{
 | 
			
		||||
	for (uint8_t i = 0; i < HID_MAX_REPORT_IDS; i++)
 | 
			
		||||
	{
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -278,8 +278,9 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value in the \ref HID_Parse_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t USB_ProcessHIDReport(const uint8_t* ReportData, uint16_t ReportSize, HID_ReportInfo_t* const ParserData)
 | 
			
		||||
			                             ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(3);
 | 
			
		||||
			uint8_t USB_ProcessHIDReport(const uint8_t* ReportData,
 | 
			
		||||
			                             uint16_t ReportSize,
 | 
			
		||||
			                             HID_ReportInfo_t* const ParserData) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(3);
 | 
			
		||||
 | 
			
		||||
			/** Extracts the given report item's value out of the given HID report and places it into the Value
 | 
			
		||||
			 *  member of the report item's \ref HID_ReportItem_t structure.
 | 
			
		||||
| 
						 | 
				
			
			@ -292,8 +293,8 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \returns Boolean true if the item to retrieve was located in the given report, false otherwise.
 | 
			
		||||
			 */
 | 
			
		||||
			bool USB_GetHIDReportItemInfo(const uint8_t* ReportData, HID_ReportItem_t* const ReportItem)
 | 
			
		||||
			                              ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
 | 
			
		||||
			bool USB_GetHIDReportItemInfo(const uint8_t* ReportData,
 | 
			
		||||
			                              HID_ReportItem_t* const ReportItem) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
 | 
			
		||||
 | 
			
		||||
			/** Retrieves the given report item's value out of the Value member of the report item's
 | 
			
		||||
			 *  \ref HID_ReportItem_t structure and places it into the correct position in the HID report
 | 
			
		||||
| 
						 | 
				
			
			@ -308,9 +309,9 @@
 | 
			
		|||
			 *  \param[out] ReportData  Buffer holding the current OUT or FEATURE report data.
 | 
			
		||||
			 *  \param[in]  ReportItem  Pointer to the report item of interest in a \ref HID_ReportInfo_t ReportItem array.
 | 
			
		||||
			 */
 | 
			
		||||
			void USB_SetHIDReportItemInfo(uint8_t* ReportData, HID_ReportItem_t* const ReportItem)
 | 
			
		||||
			                              ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
 | 
			
		||||
										  
 | 
			
		||||
			void USB_SetHIDReportItemInfo(uint8_t* ReportData,
 | 
			
		||||
			                              HID_ReportItem_t* const ReportItem) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
 | 
			
		||||
 | 
			
		||||
			/** Retrieves the size of a given HID report in bytes from it's Report ID.
 | 
			
		||||
			 *
 | 
			
		||||
			 *  \param[in] ParserData  Pointer to a \ref HID_ReportInfo_t instance containing the parser output.
 | 
			
		||||
| 
						 | 
				
			
			@ -320,7 +321,8 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return Size of the report in bytes, or 0 if the report does not exist.
 | 
			
		||||
			 */
 | 
			
		||||
			uint16_t USB_GetHIDReportSize(HID_ReportInfo_t* const ParserData, const uint8_t ReportID,
 | 
			
		||||
			uint16_t USB_GetHIDReportSize(HID_ReportInfo_t* const ParserData,
 | 
			
		||||
			                              const uint8_t ReportID,
 | 
			
		||||
			                              const uint8_t ReportType) ATTR_CONST ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
 | 
			
		||||
			/** Callback routine for the HID Report Parser. This callback <b>must</b> be implemented by the user code when
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -36,7 +36,8 @@
 | 
			
		|||
#define  __INCLUDE_FROM_MIDI_DRIVER
 | 
			
		||||
#include "MIDI.h"
 | 
			
		||||
 | 
			
		||||
uint8_t MIDI_Host_ConfigurePipes(USB_ClassInfo_MIDI_Host_t* const MIDIInterfaceInfo, uint16_t ConfigDescriptorSize,
 | 
			
		||||
uint8_t MIDI_Host_ConfigurePipes(USB_ClassInfo_MIDI_Host_t* const MIDIInterfaceInfo,
 | 
			
		||||
                                 uint16_t ConfigDescriptorSize,
 | 
			
		||||
                                 void* ConfigDescriptorData)
 | 
			
		||||
{
 | 
			
		||||
	uint8_t FoundEndpoints = 0;
 | 
			
		||||
| 
						 | 
				
			
			@ -144,7 +145,8 @@ uint8_t MIDI_Host_Flush(USB_ClassInfo_MIDI_Host_t* const MIDIInterfaceInfo)
 | 
			
		|||
	return PIPE_READYWAIT_NoError;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint8_t MIDI_Host_SendEventPacket(USB_ClassInfo_MIDI_Host_t* const MIDIInterfaceInfo, MIDI_EventPacket_t* const Event)
 | 
			
		||||
uint8_t MIDI_Host_SendEventPacket(USB_ClassInfo_MIDI_Host_t* const MIDIInterfaceInfo,
 | 
			
		||||
                                  MIDI_EventPacket_t* const Event)
 | 
			
		||||
{
 | 
			
		||||
	if ((USB_HostState != HOST_STATE_Configured) || !(MIDIInterfaceInfo->State.IsActive))
 | 
			
		||||
	  return HOST_SENDCONTROL_DeviceDisconnected;
 | 
			
		||||
| 
						 | 
				
			
			@ -165,7 +167,8 @@ uint8_t MIDI_Host_SendEventPacket(USB_ClassInfo_MIDI_Host_t* const MIDIInterface
 | 
			
		|||
	return PIPE_RWSTREAM_NoError;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool MIDI_Host_ReceiveEventPacket(USB_ClassInfo_MIDI_Host_t* const MIDIInterfaceInfo, MIDI_EventPacket_t* const Event)
 | 
			
		||||
bool MIDI_Host_ReceiveEventPacket(USB_ClassInfo_MIDI_Host_t* const MIDIInterfaceInfo,
 | 
			
		||||
                                  MIDI_EventPacket_t* const Event)
 | 
			
		||||
{
 | 
			
		||||
	if ((USB_HostState != HOST_STATE_Configured) || !(MIDIInterfaceInfo->State.IsActive))
 | 
			
		||||
	  return HOST_SENDCONTROL_DeviceDisconnected;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -125,7 +125,8 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref MIDIHost_EnumerationFailure_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t MIDI_Host_ConfigurePipes(USB_ClassInfo_MIDI_Host_t* const MIDIInterfaceInfo, uint16_t ConfigDescriptorSize,
 | 
			
		||||
			uint8_t MIDI_Host_ConfigurePipes(USB_ClassInfo_MIDI_Host_t* const MIDIInterfaceInfo,
 | 
			
		||||
			                                 uint16_t ConfigDescriptorSize,
 | 
			
		||||
			                                 void* DeviceConfigDescriptor) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(3);
 | 
			
		||||
 | 
			
		||||
			/** Sends a MIDI event packet to the device. If no device is connected, the event packet is discarded.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -36,7 +36,8 @@
 | 
			
		|||
#define  __INCLUDE_FROM_MS_DRIVER
 | 
			
		||||
#include "MassStorage.h"
 | 
			
		||||
 | 
			
		||||
uint8_t MS_Host_ConfigurePipes(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo, uint16_t ConfigDescriptorSize,
 | 
			
		||||
uint8_t MS_Host_ConfigurePipes(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo,
 | 
			
		||||
                               uint16_t ConfigDescriptorSize,
 | 
			
		||||
							   void* DeviceConfigDescriptor)
 | 
			
		||||
{
 | 
			
		||||
	uint8_t FoundEndpoints = 0;
 | 
			
		||||
| 
						 | 
				
			
			@ -129,7 +130,8 @@ static uint8_t DCOMP_MS_NextMSInterfaceEndpoint(void* const CurrentDescriptor)
 | 
			
		|||
	return DESCRIPTOR_SEARCH_NotFound;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static uint8_t MS_Host_SendCommand(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo, MS_CommandBlockWrapper_t* const SCSICommandBlock,
 | 
			
		||||
static uint8_t MS_Host_SendCommand(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo,
 | 
			
		||||
                                   MS_CommandBlockWrapper_t* const SCSICommandBlock,
 | 
			
		||||
                                   const void* const BufferPtr)
 | 
			
		||||
{
 | 
			
		||||
	uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
 | 
			
		||||
| 
						 | 
				
			
			@ -216,7 +218,8 @@ static uint8_t MS_Host_WaitForDataReceived(USB_ClassInfo_MS_Host_t* const MSInte
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
static uint8_t MS_Host_SendReceiveData(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo,
 | 
			
		||||
                                       MS_CommandBlockWrapper_t* const SCSICommandBlock, void* BufferPtr)
 | 
			
		||||
                                       MS_CommandBlockWrapper_t* const SCSICommandBlock,
 | 
			
		||||
                                       void* BufferPtr)
 | 
			
		||||
{
 | 
			
		||||
	uint8_t  ErrorCode = PIPE_RWSTREAM_NoError;
 | 
			
		||||
	uint16_t BytesRem  = SCSICommandBlock->DataTransferLength;
 | 
			
		||||
| 
						 | 
				
			
			@ -301,7 +304,8 @@ uint8_t MS_Host_ResetMSInterface(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo)
 | 
			
		|||
	return USB_Host_SendControlRequest(NULL);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint8_t MS_Host_GetMaxLUN(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo, uint8_t* const MaxLUNIndex)
 | 
			
		||||
uint8_t MS_Host_GetMaxLUN(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo,
 | 
			
		||||
                          uint8_t* const MaxLUNIndex)
 | 
			
		||||
{
 | 
			
		||||
	uint8_t ErrorCode = HOST_SENDCONTROL_Successful;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -325,7 +329,8 @@ uint8_t MS_Host_GetMaxLUN(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo, uint8_
 | 
			
		|||
	return ErrorCode;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint8_t MS_Host_GetInquiryData(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo, const uint8_t LUNIndex,
 | 
			
		||||
uint8_t MS_Host_GetInquiryData(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo,
 | 
			
		||||
                               const uint8_t LUNIndex,
 | 
			
		||||
                               SCSI_Inquiry_Response_t* const InquiryData)
 | 
			
		||||
{
 | 
			
		||||
	if ((USB_HostState != HOST_STATE_Configured) || !(MSInterfaceInfo->State.IsActive))
 | 
			
		||||
| 
						 | 
				
			
			@ -361,7 +366,8 @@ uint8_t MS_Host_GetInquiryData(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo, c
 | 
			
		|||
	return PIPE_RWSTREAM_NoError;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint8_t MS_Host_TestUnitReady(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo, const uint8_t LUNIndex)
 | 
			
		||||
uint8_t MS_Host_TestUnitReady(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo,
 | 
			
		||||
                              const uint8_t LUNIndex)
 | 
			
		||||
{
 | 
			
		||||
	if ((USB_HostState != HOST_STATE_Configured) || !(MSInterfaceInfo->State.IsActive))
 | 
			
		||||
	  return HOST_SENDCONTROL_DeviceDisconnected;
 | 
			
		||||
| 
						 | 
				
			
			@ -396,7 +402,8 @@ uint8_t MS_Host_TestUnitReady(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo, co
 | 
			
		|||
	return PIPE_RWSTREAM_NoError;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint8_t MS_Host_ReadDeviceCapacity(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo, const uint8_t LUNIndex,
 | 
			
		||||
uint8_t MS_Host_ReadDeviceCapacity(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo,
 | 
			
		||||
                                   const uint8_t LUNIndex,
 | 
			
		||||
                                   SCSI_Capacity_t* const DeviceCapacity)
 | 
			
		||||
{
 | 
			
		||||
	if ((USB_HostState != HOST_STATE_Configured) || !(MSInterfaceInfo->State.IsActive))
 | 
			
		||||
| 
						 | 
				
			
			@ -439,7 +446,8 @@ uint8_t MS_Host_ReadDeviceCapacity(USB_ClassInfo_MS_Host_t* const MSInterfaceInf
 | 
			
		|||
	return PIPE_RWSTREAM_NoError;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint8_t MS_Host_RequestSense(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo, const uint8_t LUNIndex,
 | 
			
		||||
uint8_t MS_Host_RequestSense(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo,
 | 
			
		||||
                             const uint8_t LUNIndex,
 | 
			
		||||
                             SCSI_Request_Sense_Response_t* const SenseData)
 | 
			
		||||
{
 | 
			
		||||
	if ((USB_HostState != HOST_STATE_Configured) || !(MSInterfaceInfo->State.IsActive))
 | 
			
		||||
| 
						 | 
				
			
			@ -475,7 +483,8 @@ uint8_t MS_Host_RequestSense(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo, con
 | 
			
		|||
	return PIPE_RWSTREAM_NoError;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint8_t MS_Host_PreventAllowMediumRemoval(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo, const uint8_t LUNIndex,
 | 
			
		||||
uint8_t MS_Host_PreventAllowMediumRemoval(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo,
 | 
			
		||||
                                          const uint8_t LUNIndex,
 | 
			
		||||
                                          const bool PreventRemoval)
 | 
			
		||||
{
 | 
			
		||||
	if ((USB_HostState != HOST_STATE_Configured) || !(MSInterfaceInfo->State.IsActive))
 | 
			
		||||
| 
						 | 
				
			
			@ -511,8 +520,12 @@ uint8_t MS_Host_PreventAllowMediumRemoval(USB_ClassInfo_MS_Host_t* const MSInter
 | 
			
		|||
	return PIPE_RWSTREAM_NoError;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint8_t MS_Host_ReadDeviceBlocks(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo, const uint8_t LUNIndex, const uint32_t BlockAddress,
 | 
			
		||||
                                 const uint8_t Blocks, const uint16_t BlockSize, void* BlockBuffer)
 | 
			
		||||
uint8_t MS_Host_ReadDeviceBlocks(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo,
 | 
			
		||||
                                 const uint8_t LUNIndex,
 | 
			
		||||
                                 const uint32_t BlockAddress,
 | 
			
		||||
                                 const uint8_t Blocks,
 | 
			
		||||
                                 const uint16_t BlockSize,
 | 
			
		||||
                                 void* BlockBuffer)
 | 
			
		||||
{
 | 
			
		||||
	if ((USB_HostState != HOST_STATE_Configured) || !(MSInterfaceInfo->State.IsActive))
 | 
			
		||||
	  return HOST_SENDCONTROL_DeviceDisconnected;
 | 
			
		||||
| 
						 | 
				
			
			@ -551,8 +564,12 @@ uint8_t MS_Host_ReadDeviceBlocks(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo,
 | 
			
		|||
	return PIPE_RWSTREAM_NoError;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint8_t MS_Host_WriteDeviceBlocks(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo, const uint8_t LUNIndex, const uint32_t BlockAddress,
 | 
			
		||||
                                  const uint8_t Blocks, const uint16_t BlockSize, const void* BlockBuffer)
 | 
			
		||||
uint8_t MS_Host_WriteDeviceBlocks(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo,
 | 
			
		||||
                                  const uint8_t LUNIndex,
 | 
			
		||||
                                  const uint32_t BlockAddress,
 | 
			
		||||
                                  const uint8_t Blocks,
 | 
			
		||||
                                  const uint16_t BlockSize,
 | 
			
		||||
                                  const void* BlockBuffer)
 | 
			
		||||
{
 | 
			
		||||
	if ((USB_HostState != HOST_STATE_Configured) || !(MSInterfaceInfo->State.IsActive))
 | 
			
		||||
	  return HOST_SENDCONTROL_DeviceDisconnected;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -143,7 +143,8 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref MSHost_EnumerationFailure_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t MS_Host_ConfigurePipes(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo, uint16_t ConfigDescriptorSize,
 | 
			
		||||
			uint8_t MS_Host_ConfigurePipes(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo,
 | 
			
		||||
			                               uint16_t ConfigDescriptorSize,
 | 
			
		||||
			                               void* DeviceConfigDescriptor) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(3);
 | 
			
		||||
 | 
			
		||||
			/** Sends a MASS STORAGE RESET control request to the attached device, resetting the Mass Storage Interface
 | 
			
		||||
| 
						 | 
				
			
			@ -168,8 +169,8 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref USB_Host_SendControlErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t MS_Host_GetMaxLUN(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo, uint8_t* const MaxLUNIndex)
 | 
			
		||||
			                          ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
 | 
			
		||||
			uint8_t MS_Host_GetMaxLUN(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo,
 | 
			
		||||
			                          uint8_t* const MaxLUNIndex) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
 | 
			
		||||
 | 
			
		||||
			/** Retrieves the Mass Storage device's inquiry data for the specified LUN, indicating the device characteristics and
 | 
			
		||||
			 *  properties.
 | 
			
		||||
| 
						 | 
				
			
			@ -183,7 +184,8 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum or MS_ERROR_LOGICAL_CMD_FAILED.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t MS_Host_GetInquiryData(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo, const uint8_t LUNIndex,
 | 
			
		||||
			uint8_t MS_Host_GetInquiryData(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo,
 | 
			
		||||
			                               const uint8_t LUNIndex,
 | 
			
		||||
			                               SCSI_Inquiry_Response_t* const InquiryData) ATTR_NON_NULL_PTR_ARG(1)
 | 
			
		||||
			                               ATTR_NON_NULL_PTR_ARG(3);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -194,8 +196,8 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum or MS_ERROR_LOGICAL_CMD_FAILED if not ready.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t MS_Host_TestUnitReady(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo, const uint8_t LUNIndex)
 | 
			
		||||
			                              ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
			uint8_t MS_Host_TestUnitReady(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo,
 | 
			
		||||
			                              const uint8_t LUNIndex) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
 | 
			
		||||
			/** Retrieves the total capacity of the attached USB Mass Storage device, in blocks, and block size.
 | 
			
		||||
			 *
 | 
			
		||||
| 
						 | 
				
			
			@ -208,7 +210,8 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum or MS_ERROR_LOGICAL_CMD_FAILED if not ready.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t MS_Host_ReadDeviceCapacity(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo, const uint8_t LUNIndex,
 | 
			
		||||
			uint8_t MS_Host_ReadDeviceCapacity(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo,
 | 
			
		||||
			                                   const uint8_t LUNIndex,
 | 
			
		||||
			                                   SCSI_Capacity_t* const DeviceCapacity) ATTR_NON_NULL_PTR_ARG(1)
 | 
			
		||||
			                                   ATTR_NON_NULL_PTR_ARG(3);
 | 
			
		||||
		
 | 
			
		||||
| 
						 | 
				
			
			@ -224,7 +227,8 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum or MS_ERROR_LOGICAL_CMD_FAILED if not ready.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t MS_Host_RequestSense(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo, const uint8_t LUNIndex,
 | 
			
		||||
			uint8_t MS_Host_RequestSense(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo,
 | 
			
		||||
			                             const uint8_t LUNIndex,
 | 
			
		||||
			                             SCSI_Request_Sense_Response_t* const SenseData) ATTR_NON_NULL_PTR_ARG(1)
 | 
			
		||||
			                             ATTR_NON_NULL_PTR_ARG(3);
 | 
			
		||||
		
 | 
			
		||||
| 
						 | 
				
			
			@ -240,7 +244,8 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum or MS_ERROR_LOGICAL_CMD_FAILED if not ready.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t MS_Host_PreventAllowMediumRemoval(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo, const uint8_t LUNIndex,
 | 
			
		||||
			uint8_t MS_Host_PreventAllowMediumRemoval(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo,
 | 
			
		||||
			                                          const uint8_t LUNIndex,
 | 
			
		||||
			                                          const bool PreventRemoval) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
			
 | 
			
		||||
			/** Reads blocks of data from the attached Mass Storage device's medium.
 | 
			
		||||
| 
						 | 
				
			
			@ -257,8 +262,11 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum or MS_ERROR_LOGICAL_CMD_FAILED if not ready.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t MS_Host_ReadDeviceBlocks(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo, const uint8_t LUNIndex,
 | 
			
		||||
			                                 const uint32_t BlockAddress, const uint8_t Blocks, const uint16_t BlockSize,
 | 
			
		||||
			uint8_t MS_Host_ReadDeviceBlocks(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo,
 | 
			
		||||
			                                 const uint8_t LUNIndex,
 | 
			
		||||
			                                 const uint32_t BlockAddress,
 | 
			
		||||
			                                 const uint8_t Blocks,
 | 
			
		||||
			                                 const uint16_t BlockSize,
 | 
			
		||||
			                                 void* BlockBuffer) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(6);
 | 
			
		||||
		
 | 
			
		||||
			/** Writes blocks of data to the attached Mass Storage device's medium.
 | 
			
		||||
| 
						 | 
				
			
			@ -275,8 +283,11 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum or MS_ERROR_LOGICAL_CMD_FAILED if not ready.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t MS_Host_WriteDeviceBlocks(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo, const uint8_t LUNIndex,
 | 
			
		||||
			                                  const uint32_t BlockAddress, const uint8_t Blocks, const uint16_t BlockSize,
 | 
			
		||||
			uint8_t MS_Host_WriteDeviceBlocks(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo,
 | 
			
		||||
			                                  const uint8_t LUNIndex,
 | 
			
		||||
			                                  const uint32_t BlockAddress,
 | 
			
		||||
			                                  const uint8_t Blocks,
 | 
			
		||||
			                                  const uint16_t BlockSize,
 | 
			
		||||
			                                  const void* BlockBuffer) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(6);
 | 
			
		||||
 | 
			
		||||
		/* Inline Functions: */
 | 
			
		||||
| 
						 | 
				
			
			@ -323,8 +334,8 @@
 | 
			
		|||
				                                   const void* const BufferPtr) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
 | 
			
		||||
				static uint8_t MS_Host_WaitForDataReceived(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
				static uint8_t MS_Host_SendReceiveData(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo, 
 | 
			
		||||
                                                       MS_CommandBlockWrapper_t* const SCSICommandBlock, void* BufferPtr)
 | 
			
		||||
				                                        ATTR_NON_NULL_PTR_ARG(1)  ATTR_NON_NULL_PTR_ARG(2);
 | 
			
		||||
				                                       MS_CommandBlockWrapper_t* const SCSICommandBlock,
 | 
			
		||||
				                                       void* BufferPtr) ATTR_NON_NULL_PTR_ARG(1)  ATTR_NON_NULL_PTR_ARG(2);
 | 
			
		||||
				static uint8_t MS_Host_GetReturnedStatus(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo,
 | 
			
		||||
				                                         MS_CommandStatusWrapper_t* const SCSICommandStatus)
 | 
			
		||||
				                                         ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -36,7 +36,8 @@
 | 
			
		|||
#define  __INCLUDE_FROM_PRINTER_DRIVER
 | 
			
		||||
#include "Printer.h"
 | 
			
		||||
 | 
			
		||||
uint8_t PRNT_Host_ConfigurePipes(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo, uint16_t ConfigDescriptorSize,
 | 
			
		||||
uint8_t PRNT_Host_ConfigurePipes(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo,
 | 
			
		||||
                                 uint16_t ConfigDescriptorSize,
 | 
			
		||||
							     void* DeviceConfigDescriptor)
 | 
			
		||||
{
 | 
			
		||||
	uint8_t FoundEndpoints = 0;
 | 
			
		||||
| 
						 | 
				
			
			@ -148,7 +149,8 @@ uint8_t PRNT_Host_SetBidirectionalMode(USB_ClassInfo_PRNT_Host_t* const PRNTInte
 | 
			
		|||
	return HOST_SENDCONTROL_Successful;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint8_t PRNT_Host_GetPortStatus(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo, uint8_t* const PortStatus)
 | 
			
		||||
uint8_t PRNT_Host_GetPortStatus(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo,
 | 
			
		||||
                                uint8_t* const PortStatus)
 | 
			
		||||
{
 | 
			
		||||
	USB_ControlRequest = (USB_Request_Header_t)
 | 
			
		||||
		{
 | 
			
		||||
| 
						 | 
				
			
			@ -180,7 +182,9 @@ uint8_t PRNT_Host_SoftReset(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo)
 | 
			
		|||
	return USB_Host_SendControlRequest(NULL);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint8_t PRNT_Host_SendData(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo, void* PrinterCommands, const uint16_t CommandSize)
 | 
			
		||||
uint8_t PRNT_Host_SendData(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo,
 | 
			
		||||
                           void* PrinterCommands,
 | 
			
		||||
                           const uint16_t CommandSize)
 | 
			
		||||
{
 | 
			
		||||
	uint8_t ErrorCode;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -205,7 +209,9 @@ uint8_t PRNT_Host_SendData(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo, v
 | 
			
		|||
	return PIPE_RWSTREAM_NoError;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint8_t PRNT_Host_GetDeviceID(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo, char* DeviceIDString, const uint16_t BufferSize)
 | 
			
		||||
uint8_t PRNT_Host_GetDeviceID(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo,
 | 
			
		||||
                              char* const DeviceIDString,
 | 
			
		||||
                              const uint16_t BufferSize)
 | 
			
		||||
{
 | 
			
		||||
	uint8_t  ErrorCode = HOST_SENDCONTROL_Successful;
 | 
			
		||||
	uint16_t DeviceIDStringLength = 0;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -126,7 +126,8 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref PRNTHost_EnumerationFailure_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t PRNT_Host_ConfigurePipes(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo, uint16_t ConfigDescriptorSize,
 | 
			
		||||
			uint8_t PRNT_Host_ConfigurePipes(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo,
 | 
			
		||||
			                                 uint16_t ConfigDescriptorSize,
 | 
			
		||||
			                                 void* DeviceConfigDescriptor) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(3);
 | 
			
		||||
			
 | 
			
		||||
			/** Configures the printer to enable Bidirectional mode, if it is not already in this mode. This should be called
 | 
			
		||||
| 
						 | 
				
			
			@ -146,7 +147,8 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref USB_Host_SendControlErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t PRNT_Host_GetPortStatus(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo, uint8_t* const PortStatus)
 | 
			
		||||
			uint8_t PRNT_Host_GetPortStatus(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo,
 | 
			
		||||
			                                uint8_t* const PortStatus)
 | 
			
		||||
			                                ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
 | 
			
		||||
 | 
			
		||||
			/** Soft-resets the attached printer, readying it for new commands.
 | 
			
		||||
| 
						 | 
				
			
			@ -170,7 +172,8 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t PRNT_Host_SendData(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo, void* PrinterCommands, 
 | 
			
		||||
			uint8_t PRNT_Host_SendData(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo,
 | 
			
		||||
			                           void* PrinterCommands, 
 | 
			
		||||
			                           const uint16_t CommandSize) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
 | 
			
		||||
 | 
			
		||||
			/** Retrieves the attached printer device's ID string, formatted according to IEEE 1284. This string is sent as a
 | 
			
		||||
| 
						 | 
				
			
			@ -186,7 +189,8 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t PRNT_Host_GetDeviceID(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo, char* DeviceIDString,
 | 
			
		||||
			uint8_t PRNT_Host_GetDeviceID(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo,
 | 
			
		||||
			                              char* const DeviceIDString,
 | 
			
		||||
			                              const uint16_t BufferSize) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
 | 
			
		||||
 | 
			
		||||
		/* Inline Functions: */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -36,8 +36,9 @@
 | 
			
		|||
#define  __INCLUDE_FROM_RNDIS_DRIVER
 | 
			
		||||
#include "RNDIS.h"
 | 
			
		||||
 | 
			
		||||
uint8_t RNDIS_Host_ConfigurePipes(USB_ClassInfo_RNDIS_Host_t* const RNDISInterfaceInfo, uint16_t ConfigDescriptorSize,
 | 
			
		||||
                                void* ConfigDescriptorData)
 | 
			
		||||
uint8_t RNDIS_Host_ConfigurePipes(USB_ClassInfo_RNDIS_Host_t* const RNDISInterfaceInfo,
 | 
			
		||||
                                  uint16_t ConfigDescriptorSize,
 | 
			
		||||
                                  void* ConfigDescriptorData)
 | 
			
		||||
{
 | 
			
		||||
	uint8_t FoundEndpoints = 0;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -195,7 +196,8 @@ static uint8_t DCOMP_RNDIS_Host_NextRNDISInterfaceEndpoint(void* const CurrentDe
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
static uint8_t RNDIS_SendEncapsulatedCommand(USB_ClassInfo_RNDIS_Host_t* const RNDISInterfaceInfo,
 | 
			
		||||
                                             void* Buffer, const uint16_t Length)
 | 
			
		||||
                                             void* Buffer,
 | 
			
		||||
                                             const uint16_t Length)
 | 
			
		||||
{
 | 
			
		||||
	USB_ControlRequest = (USB_Request_Header_t)
 | 
			
		||||
		{
 | 
			
		||||
| 
						 | 
				
			
			@ -211,7 +213,8 @@ static uint8_t RNDIS_SendEncapsulatedCommand(USB_ClassInfo_RNDIS_Host_t* const R
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
static uint8_t RNDIS_GetEncapsulatedResponse(USB_ClassInfo_RNDIS_Host_t* const RNDISInterfaceInfo,
 | 
			
		||||
                                             void* Buffer, const uint16_t Length)
 | 
			
		||||
                                             void* Buffer,
 | 
			
		||||
                                             const uint16_t Length)
 | 
			
		||||
{
 | 
			
		||||
	USB_ControlRequest = (USB_Request_Header_t)
 | 
			
		||||
		{
 | 
			
		||||
| 
						 | 
				
			
			@ -287,8 +290,10 @@ uint8_t RNDIS_Host_InitializeDevice(USB_ClassInfo_RNDIS_Host_t* const RNDISInter
 | 
			
		|||
	return HOST_SENDCONTROL_Successful;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint8_t RNDIS_Host_SetRNDISProperty(USB_ClassInfo_RNDIS_Host_t* const RNDISInterfaceInfo, const uint32_t Oid,
 | 
			
		||||
                                    void* Buffer, const uint16_t Length)
 | 
			
		||||
uint8_t RNDIS_Host_SetRNDISProperty(USB_ClassInfo_RNDIS_Host_t* const RNDISInterfaceInfo,
 | 
			
		||||
                                    const uint32_t Oid,
 | 
			
		||||
                                    void* Buffer,
 | 
			
		||||
                                    const uint16_t Length)
 | 
			
		||||
{
 | 
			
		||||
	uint8_t ErrorCode;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -329,8 +334,10 @@ uint8_t RNDIS_Host_SetRNDISProperty(USB_ClassInfo_RNDIS_Host_t* const RNDISInter
 | 
			
		|||
	return HOST_SENDCONTROL_Successful;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint8_t RNDIS_Host_QueryRNDISProperty(USB_ClassInfo_RNDIS_Host_t* const RNDISInterfaceInfo, const uint32_t Oid,
 | 
			
		||||
                                      void* Buffer, const uint16_t MaxLength)
 | 
			
		||||
uint8_t RNDIS_Host_QueryRNDISProperty(USB_ClassInfo_RNDIS_Host_t* const RNDISInterfaceInfo,
 | 
			
		||||
                                      const uint32_t Oid,
 | 
			
		||||
                                      void* Buffer,
 | 
			
		||||
                                      const uint16_t MaxLength)
 | 
			
		||||
{
 | 
			
		||||
	uint8_t ErrorCode;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -390,7 +397,9 @@ bool RNDIS_Host_IsPacketReceived(USB_ClassInfo_RNDIS_Host_t* const RNDISInterfac
 | 
			
		|||
	return PacketWaiting;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint8_t RNDIS_Host_ReadPacket(USB_ClassInfo_RNDIS_Host_t* const RNDISInterfaceInfo, void* Buffer, uint16_t* const PacketLength)
 | 
			
		||||
uint8_t RNDIS_Host_ReadPacket(USB_ClassInfo_RNDIS_Host_t* const RNDISInterfaceInfo,
 | 
			
		||||
                              void* Buffer,
 | 
			
		||||
                              uint16_t* const PacketLength)
 | 
			
		||||
{
 | 
			
		||||
	uint8_t ErrorCode;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -434,7 +443,9 @@ uint8_t RNDIS_Host_ReadPacket(USB_ClassInfo_RNDIS_Host_t* const RNDISInterfaceIn
 | 
			
		|||
	return PIPE_RWSTREAM_NoError;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint8_t RNDIS_Host_SendPacket(USB_ClassInfo_RNDIS_Host_t* const RNDISInterfaceInfo, void* Buffer, const uint16_t PacketLength)
 | 
			
		||||
uint8_t RNDIS_Host_SendPacket(USB_ClassInfo_RNDIS_Host_t* const RNDISInterfaceInfo,
 | 
			
		||||
                              void* Buffer,
 | 
			
		||||
                              const uint16_t PacketLength)
 | 
			
		||||
{
 | 
			
		||||
	uint8_t ErrorCode;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -129,7 +129,7 @@
 | 
			
		|||
 | 
			
		||||
		/* Macros: */
 | 
			
		||||
			/** Additional error code for RNDIS functions when a device returns a logical command failure. */
 | 
			
		||||
			#define RNDIS_COMMAND_FAILED                  0xC0	
 | 
			
		||||
			#define RNDIS_COMMAND_FAILED                  0xC0
 | 
			
		||||
 | 
			
		||||
		/* Function Prototypes: */
 | 
			
		||||
			/** Host interface configuration routine, to configure a given RNDIS host interface instance using the Configuration
 | 
			
		||||
| 
						 | 
				
			
			@ -144,8 +144,9 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref RNDISHost_EnumerationFailure_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t RNDIS_Host_ConfigurePipes(USB_ClassInfo_RNDIS_Host_t* const RNDISInterfaceInfo, uint16_t ConfigDescriptorSize,
 | 
			
		||||
			                                void* DeviceConfigDescriptor) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(3);
 | 
			
		||||
			uint8_t RNDIS_Host_ConfigurePipes(USB_ClassInfo_RNDIS_Host_t* const RNDISInterfaceInfo,
 | 
			
		||||
			                                  uint16_t ConfigDescriptorSize,
 | 
			
		||||
			                                  void* DeviceConfigDescriptor) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(3);
 | 
			
		||||
 | 
			
		||||
			/** Sends a RNDIS KEEPALIVE command to the device, to ensure that it does not enter standby mode after periods
 | 
			
		||||
			 *  of long inactivity.
 | 
			
		||||
| 
						 | 
				
			
			@ -177,8 +178,10 @@
 | 
			
		|||
			 *  \return A value from the USB_Host_SendControlErrorCodes_t enum or RNDIS_COMMAND_FAILED if the device returned a
 | 
			
		||||
			 *          logical command failure.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t RNDIS_Host_SetRNDISProperty(USB_ClassInfo_RNDIS_Host_t* const RNDISInterfaceInfo, const uint32_t Oid, void* Buffer,
 | 
			
		||||
			                                    const uint16_t Length) ATTR_NON_NULL_PTR_ARG(1)  ATTR_NON_NULL_PTR_ARG(3);
 | 
			
		||||
			uint8_t RNDIS_Host_SetRNDISProperty(USB_ClassInfo_RNDIS_Host_t* const RNDISInterfaceInfo,
 | 
			
		||||
			                                    const uint32_t Oid,
 | 
			
		||||
			                                    void* Buffer,
 | 
			
		||||
			                                    const uint16_t Length) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(3);
 | 
			
		||||
 | 
			
		||||
			/** Gets a given RNDIS property of an attached RNDIS device.
 | 
			
		||||
			 *
 | 
			
		||||
| 
						 | 
				
			
			@ -190,7 +193,9 @@
 | 
			
		|||
			 *  \return A value from the USB_Host_SendControlErrorCodes_t enum or RNDIS_COMMAND_FAILED if the device returned a
 | 
			
		||||
			 *          logical command failure.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t RNDIS_Host_QueryRNDISProperty(USB_ClassInfo_RNDIS_Host_t* const RNDISInterfaceInfo, const uint32_t Oid, void* Buffer,
 | 
			
		||||
			uint8_t RNDIS_Host_QueryRNDISProperty(USB_ClassInfo_RNDIS_Host_t* const RNDISInterfaceInfo,
 | 
			
		||||
			                                      const uint32_t Oid,
 | 
			
		||||
			                                      void* Buffer,
 | 
			
		||||
			                                      const uint16_t MaxLength) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(3);
 | 
			
		||||
 | 
			
		||||
			/** Determines if a packet is currently waiting for the host to read in and process.
 | 
			
		||||
| 
						 | 
				
			
			@ -216,8 +221,10 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the Pipe_Stream_RW_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t RNDIS_Host_ReadPacket(USB_ClassInfo_RNDIS_Host_t* const RNDISInterfaceInfo, void* Buffer, uint16_t* const PacketLength)
 | 
			
		||||
			                              ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2) ATTR_NON_NULL_PTR_ARG(3);
 | 
			
		||||
			uint8_t RNDIS_Host_ReadPacket(USB_ClassInfo_RNDIS_Host_t* const RNDISInterfaceInfo,
 | 
			
		||||
			                              void* Buffer,
 | 
			
		||||
			                              uint16_t* const PacketLength) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2)
 | 
			
		||||
			                              ATTR_NON_NULL_PTR_ARG(3);
 | 
			
		||||
 | 
			
		||||
			/** Sends the given packet to the attached RNDIS device, after adding a RNDIS packet message header.
 | 
			
		||||
			 *
 | 
			
		||||
| 
						 | 
				
			
			@ -230,8 +237,9 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the Pipe_Stream_RW_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t RNDIS_Host_SendPacket(USB_ClassInfo_RNDIS_Host_t* const RNDISInterfaceInfo, void* Buffer, const uint16_t PacketLength)
 | 
			
		||||
			                              ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
 | 
			
		||||
			uint8_t RNDIS_Host_SendPacket(USB_ClassInfo_RNDIS_Host_t* const RNDISInterfaceInfo,
 | 
			
		||||
			                              void* Buffer,
 | 
			
		||||
			                              const uint16_t PacketLength) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
 | 
			
		||||
 | 
			
		||||
		/* Inline Functions: */
 | 
			
		||||
			/** General management task for a given RNDIS host class interface, required for the correct operation of the interface. This should
 | 
			
		||||
| 
						 | 
				
			
			@ -262,18 +270,20 @@
 | 
			
		|||
		/* Function Prototypes: */
 | 
			
		||||
			#if defined(__INCLUDE_FROM_RNDIS_CLASS_HOST_C)
 | 
			
		||||
				static uint8_t RNDIS_SendEncapsulatedCommand(USB_ClassInfo_RNDIS_Host_t* const RNDISInterfaceInfo, 
 | 
			
		||||
				                                             void* Buffer, const uint16_t Length) ATTR_NON_NULL_PTR_ARG(1)
 | 
			
		||||
				                                             void* Buffer,
 | 
			
		||||
				                                             const uint16_t Length) ATTR_NON_NULL_PTR_ARG(1)
 | 
			
		||||
				                                             ATTR_NON_NULL_PTR_ARG(2);
 | 
			
		||||
				static uint8_t RNDIS_GetEncapsulatedResponse(USB_ClassInfo_RNDIS_Host_t* const RNDISInterfaceInfo,
 | 
			
		||||
				                                             void* Buffer, const uint16_t Length) ATTR_NON_NULL_PTR_ARG(1)
 | 
			
		||||
				                                             void* Buffer,
 | 
			
		||||
				                                             const uint16_t Length) ATTR_NON_NULL_PTR_ARG(1)
 | 
			
		||||
				                                             ATTR_NON_NULL_PTR_ARG(2);
 | 
			
		||||
 | 
			
		||||
				static uint8_t DCOMP_RNDIS_Host_NextRNDISControlInterface(void* const CurrentDescriptor) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
				static uint8_t DCOMP_RNDIS_Host_NextRNDISDataInterface(void* const CurrentDescriptor) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
				static uint8_t DCOMP_RNDIS_Host_NextRNDISInterfaceEndpoint(void* const CurrentDescriptor) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
			#endif	
 | 
			
		||||
			#endif
 | 
			
		||||
	#endif
 | 
			
		||||
				
 | 
			
		||||
 | 
			
		||||
	/* Disable C linkage for C++ Compilers: */
 | 
			
		||||
		#if defined(__cplusplus)
 | 
			
		||||
			}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -36,7 +36,8 @@
 | 
			
		|||
#define  __INCLUDE_FROM_SI_DRIVER
 | 
			
		||||
#include "StillImage.h"
 | 
			
		||||
 | 
			
		||||
uint8_t SImage_Host_ConfigurePipes(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo, uint16_t ConfigDescriptorSize,
 | 
			
		||||
uint8_t SImage_Host_ConfigurePipes(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo,
 | 
			
		||||
                                   uint16_t ConfigDescriptorSize,
 | 
			
		||||
                                   void* DeviceConfigDescriptor)
 | 
			
		||||
{
 | 
			
		||||
	uint8_t  FoundEndpoints = 0;
 | 
			
		||||
| 
						 | 
				
			
			@ -144,7 +145,8 @@ uint8_t DCOMP_SI_Host_NextSIInterfaceEndpoint(void* const CurrentDescriptor)
 | 
			
		|||
	return DESCRIPTOR_SEARCH_NotFound;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint8_t SImage_Host_SendBlockHeader(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo, SI_PIMA_Container_t* const PIMAHeader)
 | 
			
		||||
uint8_t SImage_Host_SendBlockHeader(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo,
 | 
			
		||||
                                    SI_PIMA_Container_t* const PIMAHeader)
 | 
			
		||||
{
 | 
			
		||||
	uint8_t ErrorCode;
 | 
			
		||||
	
 | 
			
		||||
| 
						 | 
				
			
			@ -174,7 +176,8 @@ uint8_t SImage_Host_SendBlockHeader(USB_ClassInfo_SI_Host_t* const SIInterfaceIn
 | 
			
		|||
	return PIPE_RWSTREAM_NoError;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint8_t SImage_Host_ReceiveBlockHeader(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo, SI_PIMA_Container_t* const PIMAHeader)
 | 
			
		||||
uint8_t SImage_Host_ReceiveBlockHeader(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo,
 | 
			
		||||
                                       SI_PIMA_Container_t* const PIMAHeader)
 | 
			
		||||
{
 | 
			
		||||
	uint16_t TimeoutMSRem = COMMAND_DATA_TIMEOUT_MS;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -238,7 +241,9 @@ uint8_t SImage_Host_ReceiveBlockHeader(USB_ClassInfo_SI_Host_t* const SIInterfac
 | 
			
		|||
	return PIPE_RWSTREAM_NoError;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint8_t SImage_Host_SendData(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo, void* Buffer, const uint16_t Bytes)
 | 
			
		||||
uint8_t SImage_Host_SendData(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo,
 | 
			
		||||
                             void* Buffer,
 | 
			
		||||
                             const uint16_t Bytes)
 | 
			
		||||
{
 | 
			
		||||
	uint8_t ErrorCode;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -256,7 +261,9 @@ uint8_t SImage_Host_SendData(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo, voi
 | 
			
		|||
	return ErrorCode;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint8_t SImage_Host_ReadData(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo, void* Buffer, const uint16_t Bytes)
 | 
			
		||||
uint8_t SImage_Host_ReadData(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo,
 | 
			
		||||
                             void* Buffer,
 | 
			
		||||
                             const uint16_t Bytes)
 | 
			
		||||
{
 | 
			
		||||
	uint8_t ErrorCode;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -273,7 +280,7 @@ uint8_t SImage_Host_ReadData(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo, voi
 | 
			
		|||
	return ErrorCode;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool SImage_Host_IsEventReceived(USB_ClassInfo_SI_Host_t* SIInterfaceInfo)
 | 
			
		||||
bool SImage_Host_IsEventReceived(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo)
 | 
			
		||||
{
 | 
			
		||||
	bool IsEventReceived = false;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -291,7 +298,8 @@ bool SImage_Host_IsEventReceived(USB_ClassInfo_SI_Host_t* SIInterfaceInfo)
 | 
			
		|||
	return IsEventReceived;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint8_t SImage_Host_ReceiveEventHeader(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo, SI_PIMA_Container_t* const PIMAHeader)
 | 
			
		||||
uint8_t SImage_Host_ReceiveEventHeader(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo,
 | 
			
		||||
                                       SI_PIMA_Container_t* const PIMAHeader)
 | 
			
		||||
{
 | 
			
		||||
	uint8_t ErrorCode;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -370,8 +378,10 @@ uint8_t SImage_Host_CloseSession(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo)
 | 
			
		|||
	return PIPE_RWSTREAM_NoError;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint8_t SImage_Host_SendCommand(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo, const uint16_t Operation,
 | 
			
		||||
                                const uint8_t TotalParams, uint32_t* const Params)
 | 
			
		||||
uint8_t SImage_Host_SendCommand(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo,
 | 
			
		||||
                                const uint16_t Operation,
 | 
			
		||||
                                const uint8_t TotalParams,
 | 
			
		||||
                                uint32_t* const Params)
 | 
			
		||||
{
 | 
			
		||||
	if ((USB_HostState != HOST_STATE_Configured) || !(SIInterfaceInfo->State.IsActive))
 | 
			
		||||
	  return HOST_SENDCONTROL_DeviceDisconnected;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -140,8 +140,9 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref SIHost_EnumerationFailure_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t SImage_Host_ConfigurePipes(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo, uint16_t ConfigDescriptorSize,
 | 
			
		||||
                                               void* DeviceConfigDescriptor) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(3);
 | 
			
		||||
			uint8_t SImage_Host_ConfigurePipes(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo,
 | 
			
		||||
			                                   uint16_t ConfigDescriptorSize,
 | 
			
		||||
			                                   void* DeviceConfigDescriptor) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(3);
 | 
			
		||||
 | 
			
		||||
			/** Opens a new PIMA session with the attached device. This should be used before any session-orientated PIMA commands
 | 
			
		||||
			 *  are issued to the device. Only one session can be open at the one time.
 | 
			
		||||
| 
						 | 
				
			
			@ -212,12 +213,14 @@
 | 
			
		|||
			 *  \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum, or \ref SI_ERROR_LOGICAL_CMD_FAILED if the device
 | 
			
		||||
			 *          returned a logical command failure.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t SImage_Host_SendCommand(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo, const uint16_t Operation,
 | 
			
		||||
			                                const uint8_t TotalParams, uint32_t* const Params) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
			uint8_t SImage_Host_SendCommand(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo,
 | 
			
		||||
			                                const uint16_t Operation,
 | 
			
		||||
			                                const uint8_t TotalParams,
 | 
			
		||||
			                                uint32_t* const Params) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
 | 
			
		||||
			/** Receives and checks a response block from the attached PIMA device, once a command has been issued and all data
 | 
			
		||||
			 *  associated with the command has been transferred.
 | 
			
		||||
			 *	
 | 
			
		||||
			 *
 | 
			
		||||
			 *  \pre This function must only be called when the Host state machine is in the HOST_STATE_Configured state or the
 | 
			
		||||
			 *       call will fail.
 | 
			
		||||
			 *
 | 
			
		||||
| 
						 | 
				
			
			@ -251,7 +254,7 @@
 | 
			
		|||
			 *          returned a logical command failure.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t SImage_Host_ReceiveEventHeader(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo,
 | 
			
		||||
				                                   SI_PIMA_Container_t* const PIMAHeader) ATTR_NON_NULL_PTR_ARG(1)
 | 
			
		||||
			                                       SI_PIMA_Container_t* const PIMAHeader) ATTR_NON_NULL_PTR_ARG(1)
 | 
			
		||||
			                                       ATTR_NON_NULL_PTR_ARG(2);
 | 
			
		||||
			
 | 
			
		||||
			/** Sends arbitrary data to the attached device, for use in the data phase of PIMA commands which require data
 | 
			
		||||
| 
						 | 
				
			
			@ -266,7 +269,8 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t SImage_Host_SendData(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo, void* Buffer,
 | 
			
		||||
			uint8_t SImage_Host_SendData(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo,
 | 
			
		||||
			                             void* Buffer,
 | 
			
		||||
			                             const uint16_t Bytes) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
 | 
			
		||||
 | 
			
		||||
			/** Receives arbitrary data from the attached device, for use in the data phase of PIMA commands which require data
 | 
			
		||||
| 
						 | 
				
			
			@ -281,7 +285,8 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t SImage_Host_ReadData(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo, void* Buffer,
 | 
			
		||||
			uint8_t SImage_Host_ReadData(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo,
 | 
			
		||||
			                             void* Buffer,
 | 
			
		||||
			                             const uint16_t Bytes) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
 | 
			
		||||
		
 | 
			
		||||
		/* Inline Functions: */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -254,7 +254,9 @@
 | 
			
		|||
			 *  }
 | 
			
		||||
			 *  \endcode
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t USB_GetNextDescriptorComp(uint16_t* const BytesRem, void** const CurrConfigLoc, ConfigComparatorPtr_t const ComparatorRoutine);
 | 
			
		||||
			uint8_t USB_GetNextDescriptorComp(uint16_t* const BytesRem,
 | 
			
		||||
			                                  void** const CurrConfigLoc,
 | 
			
		||||
			                                  ConfigComparatorPtr_t const ComparatorRoutine);
 | 
			
		||||
 | 
			
		||||
		/* Inline Functions: */
 | 
			
		||||
			/** Skips over the current sub-descriptor inside the configuration descriptor, so that the pointer then
 | 
			
		||||
| 
						 | 
				
			
			@ -263,9 +265,10 @@
 | 
			
		|||
			 * \param[in,out] BytesRem       Pointer to the number of bytes remaining of the configuration descriptor.
 | 
			
		||||
			 * \param[in,out] CurrConfigLoc  Pointer to the current descriptor inside the configuration descriptor.
 | 
			
		||||
			 */
 | 
			
		||||
			static inline void USB_GetNextDescriptor(uint16_t* const BytesRem, void** CurrConfigLoc) 
 | 
			
		||||
			                                         ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);									  
 | 
			
		||||
			static inline void USB_GetNextDescriptor(uint16_t* const BytesRem, void** CurrConfigLoc)
 | 
			
		||||
			static inline void USB_GetNextDescriptor(uint16_t* const BytesRem,
 | 
			
		||||
			                                         void** CurrConfigLoc) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);									  
 | 
			
		||||
			static inline void USB_GetNextDescriptor(uint16_t* const BytesRem,
 | 
			
		||||
			                                         void** CurrConfigLoc)
 | 
			
		||||
			{
 | 
			
		||||
				uint16_t CurrDescriptorSize = DESCRIPTOR_CAST(*CurrConfigLoc, USB_Descriptor_Header_t).Size;
 | 
			
		||||
				
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -167,7 +167,8 @@
 | 
			
		|||
			 *  \note This event does not exist if the USB_DEVICE_ONLY token is supplied to the compiler (see
 | 
			
		||||
			 *        \ref Group_USBManagement documentation).
 | 
			
		||||
			 */
 | 
			
		||||
			void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode);
 | 
			
		||||
			void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
 | 
			
		||||
			                                            const uint8_t SubErrorCode);
 | 
			
		||||
 | 
			
		||||
			/** Event for USB device enumeration completion. This event fires when a the USB interface is
 | 
			
		||||
			 *  in host mode and an attached USB device has been completely enumerated and is ready to be
 | 
			
		||||
| 
						 | 
				
			
			@ -335,8 +336,9 @@
 | 
			
		|||
					void EVENT_USB_Host_DeviceAttached(void) ATTR_WEAK ATTR_ALIAS(USB_Event_Stub);
 | 
			
		||||
					void EVENT_USB_Host_DeviceUnattached(void) ATTR_WEAK ATTR_ALIAS(USB_Event_Stub);
 | 
			
		||||
					void EVENT_USB_Host_DeviceEnumerationComplete(void) ATTR_WEAK ATTR_ALIAS(USB_Event_Stub);
 | 
			
		||||
					void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode)
 | 
			
		||||
					                                       ATTR_WEAK ATTR_ALIAS(USB_Event_Stub);
 | 
			
		||||
					void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
 | 
			
		||||
                                                                const uint8_t SubErrorCode)
 | 
			
		||||
					                                            ATTR_WEAK ATTR_ALIAS(USB_Event_Stub);
 | 
			
		||||
				#endif
 | 
			
		||||
 | 
			
		||||
				#if defined(USB_CAN_BE_DEVICE)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -36,7 +36,7 @@
 | 
			
		|||
#define  __INCLUDE_FROM_HOSTSTDREQ_C
 | 
			
		||||
#include "HostStandardReq.h"
 | 
			
		||||
 | 
			
		||||
uint8_t USB_Host_SendControlRequest(void* BufferPtr)
 | 
			
		||||
uint8_t USB_Host_SendControlRequest(void* const BufferPtr)
 | 
			
		||||
{
 | 
			
		||||
	uint8_t* HeaderStream   = (uint8_t*)&USB_ControlRequest;
 | 
			
		||||
	uint8_t* DataStream     = (uint8_t*)BufferPtr;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -91,7 +91,7 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref USB_Host_SendControlErrorCodes_t enum to indicate the result.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t USB_Host_SendControlRequest(void* BufferPtr);
 | 
			
		||||
			uint8_t USB_Host_SendControlRequest(void* const BufferPtr);
 | 
			
		||||
			
 | 
			
		||||
	/* Private Interface - For use in library only: */
 | 
			
		||||
	#if !defined(__DOXYGEN__)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -109,7 +109,7 @@
 | 
			
		|||
			void USB_Device_SendRemoteWakeup(void);
 | 
			
		||||
							
 | 
			
		||||
		/* Pseudo-Function Macros: */
 | 
			
		||||
			#if defined(__DOXYGEN__)				
 | 
			
		||||
			#if defined(__DOXYGEN__)
 | 
			
		||||
				/** Enables the device mode Start Of Frame events. When enabled, this causes the
 | 
			
		||||
				 *  \ref EVENT_USB_Device_StartOfFrame() event to fire once per millisecond, synchronized to the USB bus,
 | 
			
		||||
				 *  at the start of each USB frame when enumerated in device mode.
 | 
			
		||||
| 
						 | 
				
			
			@ -181,16 +181,17 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return Size in bytes of the descriptor if it exists, zero or \ref NO_DESCRIPTOR otherwise.
 | 
			
		||||
			 */
 | 
			
		||||
			uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress
 | 
			
		||||
			uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
 | 
			
		||||
			                                    const uint8_t wIndex,
 | 
			
		||||
			                                    void** const DescriptorAddress
 | 
			
		||||
			#if !defined(USE_FLASH_DESCRIPTORS) && !defined(USE_EEPROM_DESCRIPTORS) && !defined(USE_RAM_DESCRIPTORS)
 | 
			
		||||
			                                    , uint8_t* MemoryAddressSpace
 | 
			
		||||
			#endif			
 | 
			
		||||
			                                    )
 | 
			
		||||
									            ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
 | 
			
		||||
			#endif
 | 
			
		||||
			                                    ) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
 | 
			
		||||
 | 
			
		||||
	/* Private Interface - For use in library only: */
 | 
			
		||||
	#if !defined(__DOXYGEN__)
 | 
			
		||||
		/* Macros: */		
 | 
			
		||||
		/* Macros: */
 | 
			
		||||
			#define USB_Device_SetLowSpeed()          MACROS{ UDCON |=  (1 << LSM);   }MACROE
 | 
			
		||||
			#define USB_Device_SetFullSpeed()         MACROS{ UDCON &= ~(1 << LSM);   }MACROE
 | 
			
		||||
			
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -45,7 +45,9 @@ uint8_t Endpoint_BytesToEPSizeMaskDynamic(const uint16_t Size)
 | 
			
		|||
	return Endpoint_BytesToEPSizeMask(Size);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool Endpoint_ConfigureEndpoint_Prv(const uint8_t Number, const uint8_t UECFG0XData, const uint8_t UECFG1XData)
 | 
			
		||||
bool Endpoint_ConfigureEndpoint_Prv(const uint8_t Number,
 | 
			
		||||
                                    const uint8_t UECFG0XData,
 | 
			
		||||
                                    const uint8_t UECFG1XData)
 | 
			
		||||
{
 | 
			
		||||
	Endpoint_SelectEndpoint(Number);
 | 
			
		||||
	Endpoint_EnableEndpoint();
 | 
			
		||||
| 
						 | 
				
			
			@ -115,7 +117,7 @@ uint8_t Endpoint_WaitUntilReady(void)
 | 
			
		|||
		else
 | 
			
		||||
		{
 | 
			
		||||
			if (Endpoint_IsOUTReceived())
 | 
			
		||||
			  return ENDPOINT_READYWAIT_NoError;		
 | 
			
		||||
			  return ENDPOINT_READYWAIT_NoError;
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		if (USB_DeviceState == DEVICE_STATE_Unattached)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -169,12 +169,12 @@
 | 
			
		|||
					 *  be used in the device. Different USB AVR models support different amounts of endpoints,
 | 
			
		||||
					 *  this value reflects the maximum number of endpoints for the currently selected AVR model.
 | 
			
		||||
					 */
 | 
			
		||||
					#define ENDPOINT_TOTAL_ENDPOINTS          7
 | 
			
		||||
					#define ENDPOINT_TOTAL_ENDPOINTS      7
 | 
			
		||||
				#else
 | 
			
		||||
					#define ENDPOINT_TOTAL_ENDPOINTS          5			
 | 
			
		||||
					#define ENDPOINT_TOTAL_ENDPOINTS      5
 | 
			
		||||
				#endif
 | 
			
		||||
			#else
 | 
			
		||||
				#define ENDPOINT_TOTAL_ENDPOINTS              1
 | 
			
		||||
				#define ENDPOINT_TOTAL_ENDPOINTS          1
 | 
			
		||||
			#endif
 | 
			
		||||
			
 | 
			
		||||
		/* Pseudo-Function Macros: */
 | 
			
		||||
| 
						 | 
				
			
			@ -207,14 +207,14 @@
 | 
			
		|||
				 *
 | 
			
		||||
				 *  \param[in] EndpointNumber Endpoint number to select.
 | 
			
		||||
				 */
 | 
			
		||||
				static inline void Endpoint_SelectEndpoint(uint8_t EndpointNumber);
 | 
			
		||||
				static inline void Endpoint_SelectEndpoint(const uint8_t EndpointNumber);
 | 
			
		||||
				
 | 
			
		||||
				/** Resets the endpoint bank FIFO. This clears all the endpoint banks and resets the USB controller's
 | 
			
		||||
				 *  In and Out pointers to the bank's contents.
 | 
			
		||||
				 *
 | 
			
		||||
				 *  \param[in] EndpointNumber Endpoint number whose FIFO buffers are to be reset.
 | 
			
		||||
				 */
 | 
			
		||||
				static inline void Endpoint_ResetFIFO(uint8_t EndpointNumber);
 | 
			
		||||
				static inline void Endpoint_ResetFIFO(const uint8_t EndpointNumber);
 | 
			
		||||
				
 | 
			
		||||
				/** Enables the currently selected endpoint so that data can be sent and received through it to
 | 
			
		||||
				 *  and from a host.
 | 
			
		||||
| 
						 | 
				
			
			@ -267,7 +267,7 @@
 | 
			
		|||
				 *
 | 
			
		||||
				 *  \return Boolean true if the specified endpoint has interrupted, false otherwise.
 | 
			
		||||
				 */
 | 
			
		||||
				static inline bool Endpoint_HasEndpointInterrupted(uint8_t EndpointNumber);
 | 
			
		||||
				static inline bool Endpoint_HasEndpointInterrupted(const uint8_t EndpointNumber);
 | 
			
		||||
				
 | 
			
		||||
				/** Determines if the selected IN endpoint is ready for a new packet.
 | 
			
		||||
				 *
 | 
			
		||||
| 
						 | 
				
			
			@ -298,7 +298,7 @@
 | 
			
		|||
				 *
 | 
			
		||||
				 *  \ingroup Group_EndpointPacketManagement
 | 
			
		||||
				 *
 | 
			
		||||
				 *  \note This is not applicable for non CONTROL type endpoints.			 
 | 
			
		||||
				 *  \note This is not applicable for non CONTROL type endpoints. 
 | 
			
		||||
				 */
 | 
			
		||||
				static inline void Endpoint_ClearSETUP(void);
 | 
			
		||||
				
 | 
			
		||||
| 
						 | 
				
			
			@ -356,12 +356,12 @@
 | 
			
		|||
				 *
 | 
			
		||||
				 *  \param[in] DirectionMask  New endpoint direction, as a ENDPOINT_DIR_* mask.
 | 
			
		||||
				 */
 | 
			
		||||
				static inline void Endpoint_SetEndpointDirection(uint8_t DirectionMask);
 | 
			
		||||
				static inline void Endpoint_SetEndpointDirection(const uint8_t DirectionMask);
 | 
			
		||||
			#else
 | 
			
		||||
				#if defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)
 | 
			
		||||
					#define Endpoint_BytesInEndpoint()        UEBCX
 | 
			
		||||
				#elif defined(USB_SERIES_4_AVR)
 | 
			
		||||
					#define Endpoint_BytesInEndpoint()        (((uint16_t)UEBCHX << 8) | UEBCLX)				
 | 
			
		||||
					#define Endpoint_BytesInEndpoint()        (((uint16_t)UEBCHX << 8) | UEBCLX)
 | 
			
		||||
				#elif defined(USB_SERIES_2_AVR)
 | 
			
		||||
					#define Endpoint_BytesInEndpoint()        UEBCLX
 | 
			
		||||
				#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -739,7 +739,7 @@
 | 
			
		|||
			#if !defined(NO_STREAM_CALLBACKS) || defined(__DOXYGEN__)
 | 
			
		||||
				#define __CALLBACK_PARAM     , StreamCallbackPtr_t Callback
 | 
			
		||||
			#else
 | 
			
		||||
				#define __CALLBACK_PARAM			
 | 
			
		||||
				#define __CALLBACK_PARAM
 | 
			
		||||
			#endif
 | 
			
		||||
		
 | 
			
		||||
			/** Configures the specified endpoint number with the given endpoint type, direction, bank size
 | 
			
		||||
| 
						 | 
				
			
			@ -765,8 +765,11 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return Boolean true if the configuration succeeded, false otherwise.
 | 
			
		||||
			 */
 | 
			
		||||
			bool Endpoint_ConfigureEndpoint(const uint8_t  Number, const uint8_t Type, const uint8_t Direction,
 | 
			
		||||
			                                const uint16_t Size, const uint8_t Banks);
 | 
			
		||||
			bool Endpoint_ConfigureEndpoint(const uint8_t  Number,
 | 
			
		||||
			                                const uint8_t Type,
 | 
			
		||||
			                                const uint8_t Direction,
 | 
			
		||||
			                                const uint16_t Size,
 | 
			
		||||
			                                const uint8_t Banks);
 | 
			
		||||
 | 
			
		||||
			/** Spin-loops until the currently selected non-control endpoint is ready for the next packet of data
 | 
			
		||||
			 *  to be read or written to it.
 | 
			
		||||
| 
						 | 
				
			
			@ -805,7 +808,8 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Endpoint_Stream_RW_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t Endpoint_Discard_Stream(uint16_t Length __CALLBACK_PARAM);
 | 
			
		||||
			uint8_t Endpoint_Discard_Stream(uint16_t Length
 | 
			
		||||
			                                __CALLBACK_PARAM);
 | 
			
		||||
 | 
			
		||||
			/** Writes the given number of bytes to the endpoint from the given buffer in little endian,
 | 
			
		||||
			 *  sending full packets to the host as needed. The last packet filled is not automatically sent;
 | 
			
		||||
| 
						 | 
				
			
			@ -828,7 +832,9 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Endpoint_Stream_RW_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t Endpoint_Write_Stream_LE(const void* Buffer, uint16_t Length __CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
			uint8_t Endpoint_Write_Stream_LE(const void* Buffer,
 | 
			
		||||
			                                 uint16_t Length
 | 
			
		||||
			                                 __CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
 | 
			
		||||
			/** EEPROM buffer source version of \ref Endpoint_Write_Stream_LE().
 | 
			
		||||
			 *
 | 
			
		||||
| 
						 | 
				
			
			@ -840,7 +846,9 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Endpoint_Stream_RW_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t Endpoint_Write_EStream_LE(const void* Buffer, uint16_t Length __CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
			uint8_t Endpoint_Write_EStream_LE(const void* Buffer,
 | 
			
		||||
			                                  uint16_t Length
 | 
			
		||||
			                                  __CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
 | 
			
		||||
			/** FLASH buffer source version of \ref Endpoint_Write_Stream_LE().
 | 
			
		||||
			 *
 | 
			
		||||
| 
						 | 
				
			
			@ -854,7 +862,9 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Endpoint_Stream_RW_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t Endpoint_Write_PStream_LE(const void* Buffer, uint16_t Length __CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
			uint8_t Endpoint_Write_PStream_LE(const void* Buffer,
 | 
			
		||||
			                                  uint16_t Length
 | 
			
		||||
			                                  __CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
 | 
			
		||||
			/** Writes the given number of bytes to the endpoint from the given buffer in big endian,
 | 
			
		||||
			 *  sending full packets to the host as needed. The last packet filled is not automatically sent;
 | 
			
		||||
| 
						 | 
				
			
			@ -877,7 +887,9 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Endpoint_Stream_RW_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t Endpoint_Write_Stream_BE(const void* Buffer, uint16_t Length __CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
			uint8_t Endpoint_Write_Stream_BE(const void* Buffer,
 | 
			
		||||
			                                 uint16_t Length
 | 
			
		||||
			                                 __CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
 | 
			
		||||
			/** EEPROM buffer source version of \ref Endpoint_Write_Stream_BE().
 | 
			
		||||
			 *
 | 
			
		||||
| 
						 | 
				
			
			@ -889,7 +901,9 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Endpoint_Stream_RW_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t Endpoint_Write_EStream_BE(const void* Buffer, uint16_t Length __CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
			uint8_t Endpoint_Write_EStream_BE(const void* Buffer,
 | 
			
		||||
			                                  uint16_t Length
 | 
			
		||||
			                                  __CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
 | 
			
		||||
			/** FLASH buffer source version of \ref Endpoint_Write_Stream_BE().
 | 
			
		||||
			 *
 | 
			
		||||
| 
						 | 
				
			
			@ -903,7 +917,9 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Endpoint_Stream_RW_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t Endpoint_Write_PStream_BE(const void* Buffer, uint16_t Length __CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
			uint8_t Endpoint_Write_PStream_BE(const void* Buffer,
 | 
			
		||||
			                                  uint16_t Length
 | 
			
		||||
			                                  __CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
 | 
			
		||||
			/** Reads the given number of bytes from the endpoint from the given buffer in little endian,
 | 
			
		||||
			 *  discarding fully read packets from the host as needed. The last packet is not automatically
 | 
			
		||||
| 
						 | 
				
			
			@ -926,7 +942,9 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Endpoint_Stream_RW_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t Endpoint_Read_Stream_LE(void* Buffer, uint16_t Length __CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
			uint8_t Endpoint_Read_Stream_LE(void* Buffer,
 | 
			
		||||
			                                uint16_t Length
 | 
			
		||||
			                                __CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
 | 
			
		||||
			/** EEPROM buffer source version of \ref Endpoint_Read_Stream_LE().
 | 
			
		||||
			 *
 | 
			
		||||
| 
						 | 
				
			
			@ -938,7 +956,9 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Endpoint_Stream_RW_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t Endpoint_Read_EStream_LE(void* Buffer, uint16_t Length __CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
			uint8_t Endpoint_Read_EStream_LE(void* Buffer,
 | 
			
		||||
			                                 uint16_t Length
 | 
			
		||||
			                                 __CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
			
 | 
			
		||||
			/** Reads the given number of bytes from the endpoint from the given buffer in big endian,
 | 
			
		||||
			 *  discarding fully read packets from the host as needed. The last packet is not automatically
 | 
			
		||||
| 
						 | 
				
			
			@ -961,7 +981,9 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Endpoint_Stream_RW_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t Endpoint_Read_Stream_BE(void* Buffer, uint16_t Length __CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
			uint8_t Endpoint_Read_Stream_BE(void* Buffer,
 | 
			
		||||
			                                uint16_t Length
 | 
			
		||||
			                                __CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
 | 
			
		||||
			/** EEPROM buffer source version of \ref Endpoint_Read_Stream_BE().
 | 
			
		||||
			 *
 | 
			
		||||
| 
						 | 
				
			
			@ -973,7 +995,9 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Endpoint_Stream_RW_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t Endpoint_Read_EStream_BE(void* Buffer, uint16_t Length __CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
			uint8_t Endpoint_Read_EStream_BE(void* Buffer,
 | 
			
		||||
			                                 uint16_t Length
 | 
			
		||||
			                                 __CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
 | 
			
		||||
			/** Writes the given number of bytes to the CONTROL type endpoint from the given buffer in little endian,
 | 
			
		||||
			 *  sending full packets to the host as needed. The host OUT acknowledgement is not automatically cleared
 | 
			
		||||
| 
						 | 
				
			
			@ -996,7 +1020,8 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Endpoint_ControlStream_RW_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t Endpoint_Write_Control_Stream_LE(const void* Buffer, uint16_t Length) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
			uint8_t Endpoint_Write_Control_Stream_LE(const void* Buffer,
 | 
			
		||||
			                                         uint16_t Length) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
 | 
			
		||||
			/** EEPROM buffer source version of Endpoint_Write_Control_Stream_LE.
 | 
			
		||||
			 *
 | 
			
		||||
| 
						 | 
				
			
			@ -1016,7 +1041,8 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Endpoint_ControlStream_RW_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t Endpoint_Write_Control_EStream_LE(const void* Buffer, uint16_t Length) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
			uint8_t Endpoint_Write_Control_EStream_LE(const void* Buffer,
 | 
			
		||||
			                                          uint16_t Length) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
 | 
			
		||||
			/** FLASH buffer source version of \ref Endpoint_Write_Control_Stream_LE().
 | 
			
		||||
			 *
 | 
			
		||||
| 
						 | 
				
			
			@ -1038,7 +1064,8 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Endpoint_ControlStream_RW_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t Endpoint_Write_Control_PStream_LE(const void* Buffer, uint16_t Length) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
			uint8_t Endpoint_Write_Control_PStream_LE(const void* Buffer,
 | 
			
		||||
			                                          uint16_t Length) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
 | 
			
		||||
			/** Writes the given number of bytes to the CONTROL type endpoint from the given buffer in big endian,
 | 
			
		||||
			 *  sending full packets to the host as needed. The host OUT acknowledgement is not automatically cleared
 | 
			
		||||
| 
						 | 
				
			
			@ -1061,7 +1088,8 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Endpoint_ControlStream_RW_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t Endpoint_Write_Control_Stream_BE(const void* Buffer, uint16_t Length) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
			uint8_t Endpoint_Write_Control_Stream_BE(const void* Buffer,
 | 
			
		||||
			                                         uint16_t Length) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
 | 
			
		||||
			/** EEPROM buffer source version of \ref Endpoint_Write_Control_Stream_BE().
 | 
			
		||||
			 *
 | 
			
		||||
| 
						 | 
				
			
			@ -1081,7 +1109,8 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Endpoint_ControlStream_RW_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t Endpoint_Write_Control_EStream_BE(const void* Buffer, uint16_t Length) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
			uint8_t Endpoint_Write_Control_EStream_BE(const void* Buffer,
 | 
			
		||||
			                                          uint16_t Length) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
 | 
			
		||||
			/** FLASH buffer source version of \ref Endpoint_Write_Control_Stream_BE().
 | 
			
		||||
			 *
 | 
			
		||||
| 
						 | 
				
			
			@ -1103,7 +1132,8 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Endpoint_ControlStream_RW_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t Endpoint_Write_Control_PStream_BE(const void* Buffer, uint16_t Length) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
			uint8_t Endpoint_Write_Control_PStream_BE(const void* Buffer,
 | 
			
		||||
			                                          uint16_t Length) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
 | 
			
		||||
			/** Reads the given number of bytes from the CONTROL endpoint from the given buffer in little endian,
 | 
			
		||||
			 *  discarding fully read packets from the host as needed. The device IN acknowledgement is not
 | 
			
		||||
| 
						 | 
				
			
			@ -1126,7 +1156,8 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Endpoint_ControlStream_RW_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t Endpoint_Read_Control_Stream_LE(void* Buffer, uint16_t Length) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
			uint8_t Endpoint_Read_Control_Stream_LE(void* Buffer,
 | 
			
		||||
			                                        uint16_t Length) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
 | 
			
		||||
			/** EEPROM buffer source version of \ref Endpoint_Read_Control_Stream_LE().
 | 
			
		||||
			 *
 | 
			
		||||
| 
						 | 
				
			
			@ -1146,7 +1177,8 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Endpoint_ControlStream_RW_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t Endpoint_Read_Control_EStream_LE(void* Buffer, uint16_t Length) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
			uint8_t Endpoint_Read_Control_EStream_LE(void* Buffer,
 | 
			
		||||
			                                         uint16_t Length) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
 | 
			
		||||
			/** Reads the given number of bytes from the CONTROL endpoint from the given buffer in big endian,
 | 
			
		||||
			 *  discarding fully read packets from the host as needed. The device IN acknowledgement is not
 | 
			
		||||
| 
						 | 
				
			
			@ -1169,7 +1201,8 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Endpoint_ControlStream_RW_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t Endpoint_Read_Control_Stream_BE(void* Buffer, uint16_t Length) ATTR_NON_NULL_PTR_ARG(1);		
 | 
			
		||||
			uint8_t Endpoint_Read_Control_Stream_BE(void* Buffer,
 | 
			
		||||
			                                        uint16_t Length) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
			
 | 
			
		||||
			/** EEPROM buffer source version of \ref Endpoint_Read_Control_Stream_BE().
 | 
			
		||||
			 *
 | 
			
		||||
| 
						 | 
				
			
			@ -1189,7 +1222,8 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Endpoint_ControlStream_RW_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t Endpoint_Read_Control_EStream_BE(void* Buffer, uint16_t Length) ATTR_NON_NULL_PTR_ARG(1);		
 | 
			
		||||
			uint8_t Endpoint_Read_Control_EStream_BE(void* Buffer,
 | 
			
		||||
			                                         uint16_t Length) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
 | 
			
		||||
	/* Private Interface - For use in library only: */
 | 
			
		||||
	#if !defined(__DOXYGEN__)
 | 
			
		||||
| 
						 | 
				
			
			@ -1225,11 +1259,13 @@
 | 
			
		|||
			                                                (__builtin_constant_p(Size) ?       \
 | 
			
		||||
			                                                 Endpoint_BytesToEPSizeMask(Size) : \
 | 
			
		||||
			                                                 Endpoint_BytesToEPSizeMaskDynamic(Size))))
 | 
			
		||||
													
 | 
			
		||||
			
 | 
			
		||||
		/* Function Prototypes: */
 | 
			
		||||
			void    Endpoint_ClearEndpoints(void);
 | 
			
		||||
			uint8_t Endpoint_BytesToEPSizeMaskDynamic(const uint16_t Size);
 | 
			
		||||
			bool    Endpoint_ConfigureEndpoint_Prv(const uint8_t Number, const uint8_t UECFG0XData, const uint8_t UECFG1XData);
 | 
			
		||||
			bool    Endpoint_ConfigureEndpoint_Prv(const uint8_t Number,
 | 
			
		||||
			                                       const uint8_t UECFG0XData,
 | 
			
		||||
			                                       const uint8_t UECFG1XData);
 | 
			
		||||
			
 | 
			
		||||
		/* Inline Functions: */
 | 
			
		||||
			static inline uint8_t Endpoint_BytesToEPSizeMask(const uint16_t Bytes) ATTR_WARN_UNUSED_RESULT ATTR_CONST ATTR_ALWAYS_INLINE;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -305,7 +305,9 @@ uint8_t USB_Host_GetDeviceDescriptor(void* const DeviceDescriptorPtr)
 | 
			
		|||
	return USB_Host_SendControlRequest(DeviceDescriptorPtr);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint8_t USB_Host_GetDeviceStringDescriptor(const uint8_t Index, void* const Buffer, const uint8_t BufferLength)
 | 
			
		||||
uint8_t USB_Host_GetDeviceStringDescriptor(const uint8_t Index,
 | 
			
		||||
                                           void* const Buffer,
 | 
			
		||||
                                           const uint8_t BufferLength)
 | 
			
		||||
{
 | 
			
		||||
	USB_ControlRequest = (USB_Request_Header_t)
 | 
			
		||||
		{
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -177,7 +177,7 @@
 | 
			
		|||
				#define USB_Host_SuspendBus()              MACROS{ UHCON &= ~(1 << SOFEN);          }MACROE 
 | 
			
		||||
				
 | 
			
		||||
				#define USB_Host_IsBusSuspended()                ((UHCON &   (1 << SOFEN)) ? false : true)
 | 
			
		||||
			
 | 
			
		||||
 | 
			
		||||
				#define USB_Host_IsDeviceFullSpeed()             ((USBSTA &  (1 << SPEED)) ? true : false)
 | 
			
		||||
 | 
			
		||||
				#define USB_Host_IsRemoteWakeupSent()            ((UHINT &   (1 << RXRSMI)) ? true : false)
 | 
			
		||||
| 
						 | 
				
			
			@ -229,7 +229,9 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref USB_Host_SendControlErrorCodes_t enum to indicate the result.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t USB_Host_GetDeviceStringDescriptor(const uint8_t Index, void* const Buffer, const uint8_t BufferLength);
 | 
			
		||||
			uint8_t USB_Host_GetDeviceStringDescriptor(const uint8_t Index,
 | 
			
		||||
			                                           void* const Buffer,
 | 
			
		||||
			                                           const uint8_t BufferLength);
 | 
			
		||||
			
 | 
			
		||||
			/** Clears a stall condition on the given pipe, via a ClearFeature request to the attached device.
 | 
			
		||||
			 *
 | 
			
		||||
| 
						 | 
				
			
			@ -238,7 +240,7 @@
 | 
			
		|||
			 *  \param[in] EndpointIndex  Index of the endpoint to clear.
 | 
			
		||||
			 *
 | 
			
		||||
			 *  \return A value from the \ref USB_Host_SendControlErrorCodes_t enum to indicate the result.
 | 
			
		||||
			 */			
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t USB_Host_ClearPipeStall(uint8_t EndpointIndex);
 | 
			
		||||
 | 
			
		||||
		/* Enums: */
 | 
			
		||||
| 
						 | 
				
			
			@ -377,7 +379,7 @@
 | 
			
		|||
				                                      */
 | 
			
		||||
				HOST_ENUMERROR_ControlError     = 3, /**< One of the enumeration control requests failed to
 | 
			
		||||
				                                      *   complete successfully.
 | 
			
		||||
													  */
 | 
			
		||||
				                                      */
 | 
			
		||||
				HOST_ENUMERROR_PipeConfigError  = 4, /**< The default control pipe (address 0) failed to
 | 
			
		||||
				                                      *   configure correctly.
 | 
			
		||||
				                                      */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -104,7 +104,7 @@
 | 
			
		|||
				 *  \param[in] SRPTypeMask  Mask indicating the type of SRP to use, either \ref USB_OTG_SRP_VBUS or
 | 
			
		||||
				 *                          \ref USB_OTG_STP_DATA.
 | 
			
		||||
				 */
 | 
			
		||||
				static inline void USB_OTG_Device_InitiateSRP(uint8_t SRPTypeMask);
 | 
			
		||||
				static inline void USB_OTG_Device_InitiateSRP(const uint8_t SRPTypeMask);
 | 
			
		||||
 | 
			
		||||
				/** Accepts a HNP from a connected device, indicating that both devices should exchange
 | 
			
		||||
				 *  device/host roles.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -38,8 +38,12 @@
 | 
			
		|||
 | 
			
		||||
uint8_t USB_ControlPipeSize = PIPE_CONTROLPIPE_DEFAULT_SIZE;
 | 
			
		||||
 | 
			
		||||
bool Pipe_ConfigurePipe(const uint8_t Number, const uint8_t Type, const uint8_t Token, const uint8_t EndpointNumber,
 | 
			
		||||
						const uint16_t Size, const uint8_t Banks)
 | 
			
		||||
bool Pipe_ConfigurePipe(const uint8_t Number,
 | 
			
		||||
                        const uint8_t Type,
 | 
			
		||||
                        const uint8_t Token,
 | 
			
		||||
                        const uint8_t EndpointNumber,
 | 
			
		||||
                        const uint16_t Size,
 | 
			
		||||
                        const uint8_t Banks)
 | 
			
		||||
{
 | 
			
		||||
	Pipe_SelectPipe(Number);
 | 
			
		||||
	Pipe_EnablePipe();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -776,7 +776,7 @@
 | 
			
		|||
			#if !defined(NO_STREAM_CALLBACKS) || defined(__DOXYGEN__)
 | 
			
		||||
				#define __CALLBACK_PARAM     , StreamCallbackPtr_t Callback
 | 
			
		||||
			#else
 | 
			
		||||
				#define __CALLBACK_PARAM			
 | 
			
		||||
				#define __CALLBACK_PARAM
 | 
			
		||||
			#endif
 | 
			
		||||
 | 
			
		||||
			/** Configures the specified pipe number with the given pipe type, token, target endpoint number in the
 | 
			
		||||
| 
						 | 
				
			
			@ -808,8 +808,12 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return Boolean true if the configuration is successful, false otherwise.
 | 
			
		||||
			 */
 | 
			
		||||
			bool Pipe_ConfigurePipe(const uint8_t  Number, const uint8_t Type, const uint8_t Token, const uint8_t EndpointNumber,
 | 
			
		||||
			                        const uint16_t Size, const uint8_t Banks);
 | 
			
		||||
			bool Pipe_ConfigurePipe(const uint8_t  Number,
 | 
			
		||||
			                        const uint8_t Type,
 | 
			
		||||
			                        const uint8_t Token,
 | 
			
		||||
			                        const uint8_t EndpointNumber,
 | 
			
		||||
			                        const uint16_t Size,
 | 
			
		||||
			                        const uint8_t Banks);
 | 
			
		||||
 | 
			
		||||
			/** Spin-loops until the currently selected non-control pipe is ready for the next packed of data to be read 
 | 
			
		||||
			 *  or written to it, aborting in the case of an error condition (such as a timeout or device disconnect).
 | 
			
		||||
| 
						 | 
				
			
			@ -850,7 +854,8 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t Pipe_Discard_Stream(uint16_t Length __CALLBACK_PARAM);
 | 
			
		||||
			uint8_t Pipe_Discard_Stream(uint16_t Length
 | 
			
		||||
			                            __CALLBACK_PARAM);
 | 
			
		||||
 | 
			
		||||
			/** Writes the given number of bytes to the pipe from the given buffer in little endian,
 | 
			
		||||
			 *  sending full packets to the device as needed. The last packet filled is not automatically sent;
 | 
			
		||||
| 
						 | 
				
			
			@ -873,7 +878,9 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t Pipe_Write_Stream_LE(const void* Buffer, uint16_t Length __CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);				
 | 
			
		||||
			uint8_t Pipe_Write_Stream_LE(const void* Buffer,
 | 
			
		||||
			                             uint16_t Length
 | 
			
		||||
			                             __CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
 | 
			
		||||
			/** EEPROM buffer source version of \ref Pipe_Write_Stream_LE().
 | 
			
		||||
			 *
 | 
			
		||||
| 
						 | 
				
			
			@ -885,7 +892,9 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t Pipe_Write_EStream_LE(const void* Buffer, uint16_t Length __CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
			uint8_t Pipe_Write_EStream_LE(const void* Buffer,
 | 
			
		||||
			                              uint16_t Length
 | 
			
		||||
			                              __CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
			
 | 
			
		||||
			/** FLASH buffer source version of \ref Pipe_Write_Stream_LE().
 | 
			
		||||
			 *
 | 
			
		||||
| 
						 | 
				
			
			@ -899,8 +908,10 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t Pipe_Write_PStream_LE(const void* Buffer, uint16_t Length __CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
						
 | 
			
		||||
			uint8_t Pipe_Write_PStream_LE(const void* Buffer,
 | 
			
		||||
			                              uint16_t Length
 | 
			
		||||
			                              __CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
			
 | 
			
		||||
			/** Writes the given number of bytes to the pipe from the given buffer in big endian,
 | 
			
		||||
			 *  sending full packets to the device as needed. The last packet filled is not automatically sent;
 | 
			
		||||
			 *  the user is responsible for manually sending the last written packet to the host via the
 | 
			
		||||
| 
						 | 
				
			
			@ -922,7 +933,9 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t Pipe_Write_Stream_BE(const void* Buffer, uint16_t Length __CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
			uint8_t Pipe_Write_Stream_BE(const void* Buffer,
 | 
			
		||||
			                             uint16_t Length
 | 
			
		||||
			                             __CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
 | 
			
		||||
			/** EEPROM buffer source version of \ref Pipe_Write_Stream_BE().
 | 
			
		||||
			 *
 | 
			
		||||
| 
						 | 
				
			
			@ -934,7 +947,9 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t Pipe_Write_EStream_BE(const void* Buffer, uint16_t Length __CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
			uint8_t Pipe_Write_EStream_BE(const void* Buffer,
 | 
			
		||||
			                              uint16_t Length
 | 
			
		||||
			                              __CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
			
 | 
			
		||||
			/** FLASH buffer source version of \ref Pipe_Write_Stream_BE().
 | 
			
		||||
			 *
 | 
			
		||||
| 
						 | 
				
			
			@ -948,7 +963,9 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t Pipe_Write_PStream_BE(const void* Buffer, uint16_t Length __CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
			uint8_t Pipe_Write_PStream_BE(const void* Buffer,
 | 
			
		||||
			                              uint16_t Length
 | 
			
		||||
			                              __CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
 | 
			
		||||
			/** Reads the given number of bytes from the pipe into the given buffer in little endian,
 | 
			
		||||
			 *  sending full packets to the device as needed. The last packet filled is not automatically sent;
 | 
			
		||||
| 
						 | 
				
			
			@ -971,7 +988,9 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t Pipe_Read_Stream_LE(void* Buffer, uint16_t Length __CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
			uint8_t Pipe_Read_Stream_LE(void* Buffer,
 | 
			
		||||
			                            uint16_t Length
 | 
			
		||||
			                            __CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
 | 
			
		||||
			/** EEPROM buffer source version of \ref Pipe_Read_Stream_LE().
 | 
			
		||||
			 *
 | 
			
		||||
| 
						 | 
				
			
			@ -983,7 +1002,9 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t Pipe_Read_EStream_LE(void* Buffer, uint16_t Length __CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
			uint8_t Pipe_Read_EStream_LE(void* Buffer,
 | 
			
		||||
			                             uint16_t Length
 | 
			
		||||
			                             __CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
 | 
			
		||||
			/** Reads the given number of bytes from the pipe into the given buffer in big endian,
 | 
			
		||||
			 *  sending full packets to the device as needed. The last packet filled is not automatically sent;
 | 
			
		||||
| 
						 | 
				
			
			@ -1006,7 +1027,9 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t Pipe_Read_Stream_BE(void* Buffer, uint16_t Length __CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
			uint8_t Pipe_Read_Stream_BE(void* Buffer,
 | 
			
		||||
			                            uint16_t Length
 | 
			
		||||
			                            __CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
			
 | 
			
		||||
			/** EEPROM buffer source version of \ref Pipe_Read_Stream_BE().
 | 
			
		||||
			 *
 | 
			
		||||
| 
						 | 
				
			
			@ -1018,7 +1041,9 @@
 | 
			
		|||
			 *
 | 
			
		||||
			 *  \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum.
 | 
			
		||||
			 */
 | 
			
		||||
			uint8_t Pipe_Read_EStream_BE(void* Buffer, uint16_t Length __CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
			uint8_t Pipe_Read_EStream_BE(void* Buffer,
 | 
			
		||||
			                             uint16_t Length
 | 
			
		||||
			                             __CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
 | 
			
		||||
	/* Private Interface - For use in library only: */
 | 
			
		||||
	#if !defined(__DOXYGEN__)
 | 
			
		||||
| 
						 | 
				
			
			@ -1033,8 +1058,8 @@
 | 
			
		|||
			void Pipe_ClearPipes(void);
 | 
			
		||||
 | 
			
		||||
		/* Inline Functions: */
 | 
			
		||||
			static inline uint8_t Pipe_BytesToEPSizeMask(uint16_t Bytes) ATTR_WARN_UNUSED_RESULT ATTR_CONST ATTR_ALWAYS_INLINE;
 | 
			
		||||
			static inline uint8_t Pipe_BytesToEPSizeMask(uint16_t Bytes)
 | 
			
		||||
			static inline uint8_t Pipe_BytesToEPSizeMask(const uint16_t Bytes) ATTR_WARN_UNUSED_RESULT ATTR_CONST ATTR_ALWAYS_INLINE;
 | 
			
		||||
			static inline uint8_t Pipe_BytesToEPSizeMask(const uint16_t Bytes)
 | 
			
		||||
			{
 | 
			
		||||
				if (Bytes <= 8)
 | 
			
		||||
				  return (0 << EPSIZE0);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,5 @@
 | 
			
		|||
uint8_t TEMPLATE_FUNC_NAME (void* Buffer, uint16_t Length)
 | 
			
		||||
uint8_t TEMPLATE_FUNC_NAME (void* Buffer,
 | 
			
		||||
                            uint16_t Length)
 | 
			
		||||
{
 | 
			
		||||
	uint8_t* DataStream = ((uint8_t*)Buffer + TEMPLATE_BUFFER_OFFSET(Length));
 | 
			
		||||
	
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,5 @@
 | 
			
		|||
uint8_t TEMPLATE_FUNC_NAME (const void* Buffer, uint16_t Length)
 | 
			
		||||
uint8_t TEMPLATE_FUNC_NAME (const void* Buffer,
 | 
			
		||||
                            uint16_t Length)
 | 
			
		||||
{
 | 
			
		||||
	uint8_t* DataStream     = ((uint8_t*)Buffer + TEMPLATE_BUFFER_OFFSET(Length));
 | 
			
		||||
	bool     LastPacketFull = false;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,6 @@
 | 
			
		|||
uint8_t TEMPLATE_FUNC_NAME (TEMPLATE_BUFFER_TYPE Buffer, uint16_t Length __CALLBACK_PARAM)
 | 
			
		||||
uint8_t TEMPLATE_FUNC_NAME (TEMPLATE_BUFFER_TYPE Buffer,
 | 
			
		||||
                            uint16_t Length
 | 
			
		||||
                            __CALLBACK_PARAM)
 | 
			
		||||
{
 | 
			
		||||
	uint8_t* DataStream = ((uint8_t*)Buffer + TEMPLATE_BUFFER_OFFSET(Length));
 | 
			
		||||
	uint8_t  ErrorCode;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,6 @@
 | 
			
		|||
uint8_t TEMPLATE_FUNC_NAME (TEMPLATE_BUFFER_TYPE Buffer, uint16_t Length __CALLBACK_PARAM)
 | 
			
		||||
uint8_t TEMPLATE_FUNC_NAME (TEMPLATE_BUFFER_TYPE Buffer,
 | 
			
		||||
                            uint16_t Length
 | 
			
		||||
                            __CALLBACK_PARAM)
 | 
			
		||||
{
 | 
			
		||||
	uint8_t* DataStream = ((uint8_t*)Buffer + TEMPLATE_BUFFER_OFFSET(Length));
 | 
			
		||||
	uint8_t  ErrorCode;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -92,7 +92,7 @@
 | 
			
		|||
		#if (F_CLOCK == 8000000)
 | 
			
		||||
			#if (defined(__AVR_AT90USB82__) || defined(__AVR_AT90USB162__) || \
 | 
			
		||||
			     defined(__AVR_ATmega8U2__) || defined(__AVR_ATmega16U2__) || \
 | 
			
		||||
				 defined(__AVR_ATmega32U2__))
 | 
			
		||||
			     defined(__AVR_ATmega32U2__))
 | 
			
		||||
				#define USB_PLL_PSC                0
 | 
			
		||||
			#elif (defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__))
 | 
			
		||||
				#define USB_PLL_PSC                0
 | 
			
		||||
| 
						 | 
				
			
			@ -104,7 +104,7 @@
 | 
			
		|||
		#elif (F_CLOCK == 16000000)
 | 
			
		||||
			#if (defined(__AVR_AT90USB82__) || defined(__AVR_AT90USB162__) || \
 | 
			
		||||
			     defined(__AVR_ATmega8U2__) || defined(__AVR_ATmega16U2__) || \
 | 
			
		||||
				 defined(__AVR_ATmega32U2__))
 | 
			
		||||
			     defined(__AVR_ATmega32U2__))
 | 
			
		||||
				#define USB_PLL_PSC                (1 << PLLP0)
 | 
			
		||||
			#elif (defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__))
 | 
			
		||||
				#define USB_PLL_PSC                (1 << PINDIV)
 | 
			
		||||
| 
						 | 
				
			
			@ -278,14 +278,14 @@
 | 
			
		|||
			void USB_Init(
 | 
			
		||||
			               #if defined(USB_CAN_BE_BOTH) || defined(__DOXYGEN__)
 | 
			
		||||
			               const uint8_t Mode
 | 
			
		||||
						   #endif
 | 
			
		||||
			               #endif
 | 
			
		||||
 | 
			
		||||
			               #if (defined(USB_CAN_BE_BOTH) && !defined(USE_STATIC_OPTIONS)) || defined(__DOXYGEN__)
 | 
			
		||||
			               ,
 | 
			
		||||
						   #elif (!defined(USB_CAN_BE_BOTH) && defined(USE_STATIC_OPTIONS))
 | 
			
		||||
						   void
 | 
			
		||||
			               #elif (!defined(USB_CAN_BE_BOTH) && defined(USE_STATIC_OPTIONS))
 | 
			
		||||
			               void
 | 
			
		||||
			               #endif
 | 
			
		||||
						   
 | 
			
		||||
 | 
			
		||||
			               #if !defined(USE_STATIC_OPTIONS) || defined(__DOXYGEN__)
 | 
			
		||||
			               const uint8_t Options
 | 
			
		||||
			               #endif
 | 
			
		||||
| 
						 | 
				
			
			@ -309,8 +309,8 @@
 | 
			
		|||
			enum USB_InitErrorCodes_t
 | 
			
		||||
			{
 | 
			
		||||
				USB_INITERROR_NoUSBModeSpecified       = 0, /**< Indicates that \ref USB_Init() was called with an
 | 
			
		||||
			                                                 *   invalid or missing Mode parameter.
 | 
			
		||||
			                                                 */
 | 
			
		||||
				                                             *   invalid or missing Mode parameter.
 | 
			
		||||
				                                             */
 | 
			
		||||
			};
 | 
			
		||||
 | 
			
		||||
		/* Global Variables: */
 | 
			
		||||
| 
						 | 
				
			
			@ -352,7 +352,7 @@
 | 
			
		|||
				#define USB_REG_Off()          MACROS{ UHWCON  &= ~(1 << UVREGE);               }MACROE
 | 
			
		||||
			#else
 | 
			
		||||
				#define USB_REG_On()           MACROS{ REGCR   &= ~(1 << REGDIS);               }MACROE
 | 
			
		||||
				#define USB_REG_Off()          MACROS{ REGCR   |=  (1 << REGDIS);               }MACROE			
 | 
			
		||||
				#define USB_REG_Off()          MACROS{ REGCR   |=  (1 << REGDIS);               }MACROE
 | 
			
		||||
			#endif
 | 
			
		||||
			
 | 
			
		||||
			#define USB_OTGPAD_On()            MACROS{ USBCON  |=  (1 << OTGPADE);              }MACROE
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue