Convert over internal pseudo-function macros to true inline functions for added type-safety and compile-checking.
This commit is contained in:
parent
2461ae508c
commit
9b0e4b8356
21 changed files with 1689 additions and 1055 deletions
|
|
@ -76,66 +76,78 @@
|
|||
*/
|
||||
#define USB_OTG_STP_DATA 0
|
||||
|
||||
/* Pseudo-Function Macros: */
|
||||
#if defined(__DOXYGEN__)
|
||||
/** Initiate a Host Negotiation Protocol request. This indicates to the other connected device
|
||||
* that the device wishes to change device/host roles.
|
||||
*/
|
||||
static inline void USB_OTG_Device_RequestHNP(void);
|
||||
|
||||
/** Cancel a Host Negotiation Protocol request. This stops a pending HNP request to the other
|
||||
* connected device.
|
||||
*/
|
||||
static inline void USB_OTG_Device_CancelHNPRequest(void);
|
||||
|
||||
/** Determines if the device is currently sending a HNP to an attached host.
|
||||
*
|
||||
* \return Boolean true if currently sending a HNP to the other connected device, false otherwise
|
||||
*/
|
||||
static inline bool USB_OTG_Device_IsSendingHNP(void);
|
||||
|
||||
/** Initiates a Session Request Protocol request. Most OTG devices turn off VBUS when the USB
|
||||
* interface is not in use, to conserve power. Sending a SRP to a USB OTG device running in
|
||||
* host mode indicates that VBUS should be applied and a session started.
|
||||
*
|
||||
* There are two different methods of sending a SRP - either pulses on the VBUS line, or by
|
||||
* pulsing the Data + line via the internal pull-up resistor.
|
||||
*
|
||||
* \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(const uint8_t SRPTypeMask);
|
||||
/* Inline Functions: */
|
||||
/** Initiate a Host Negotiation Protocol request. This indicates to the other connected device
|
||||
* that the device wishes to change device/host roles.
|
||||
*/
|
||||
static inline void USB_OTG_Device_RequestHNP(void) ATTR_ALWAYS_INLINE;
|
||||
static inline void USB_OTG_Device_RequestHNP(void)
|
||||
{
|
||||
OTGCON |= (1 << HNPREQ);
|
||||
}
|
||||
|
||||
/** Cancel a Host Negotiation Protocol request. This stops a pending HNP request to the other
|
||||
* connected device.
|
||||
*/
|
||||
static inline void USB_OTG_Device_CancelHNPRequest(void) ATTR_ALWAYS_INLINE;
|
||||
static inline void USB_OTG_Device_CancelHNPRequest(void)
|
||||
{
|
||||
OTGCON &= ~(1 << HNPREQ);
|
||||
}
|
||||
|
||||
/** Determines if the device is currently sending a HNP to an attached host.
|
||||
*
|
||||
* \return Boolean true if currently sending a HNP to the other connected device, false otherwise
|
||||
*/
|
||||
static inline bool USB_OTG_Device_IsSendingHNP(void) ATTR_ALWAYS_INLINE;
|
||||
static inline bool USB_OTG_Device_IsSendingHNP(void)
|
||||
{
|
||||
return ((OTGCON & (1 << HNPREQ)) ? true : false);
|
||||
}
|
||||
|
||||
/** Initiates a Session Request Protocol request. Most OTG devices turn off VBUS when the USB
|
||||
* interface is not in use, to conserve power. Sending a SRP to a USB OTG device running in
|
||||
* host mode indicates that VBUS should be applied and a session started.
|
||||
*
|
||||
* There are two different methods of sending a SRP - either pulses on the VBUS line, or by
|
||||
* pulsing the Data + line via the internal pull-up resistor.
|
||||
*
|
||||
* \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(const uint8_t SRPTypeMask) ATTR_ALWAYS_INLINE;
|
||||
static inline void USB_OTG_Device_InitiateSRP(const uint8_t SRPTypeMask)
|
||||
{
|
||||
OTGCON = ((OTGCON & ~(1 << SRPSEL)) | (SRPTypeMask | (1 << SRPREQ)));
|
||||
}
|
||||
|
||||
/** Accepts a HNP from a connected device, indicating that both devices should exchange
|
||||
* device/host roles.
|
||||
*/
|
||||
static inline void USB_OTG_Host_AcceptHNP(void);
|
||||
|
||||
/** Rejects a HNP from a connected device, indicating that both devices should remain in their
|
||||
* current device/host roles.
|
||||
*/
|
||||
static inline void USB_OTG_Host_RejectHNP(void);
|
||||
|
||||
/** Indicates if the connected device is not currently sending a HNP request.
|
||||
*
|
||||
* \return Boolean true if a HNP is currently being issued by the connected device, false otherwise.
|
||||
*/
|
||||
static inline bool USB_OTG_Host_IsHNPReceived(void);
|
||||
#else
|
||||
#define USB_OTG_Device_RequestHNP() MACROS{ OTGCON |= (1 << HNPREQ); }MACROE
|
||||
|
||||
#define USB_OTG_Device_CancelHNPRequest() MACROS{ OTGCON &= ~(1 << HNPREQ); }MACROE
|
||||
|
||||
#define USB_OTG_Device_IsSendingHNP() ((OTGCON & (1 << HNPREQ)) ? true : false)
|
||||
|
||||
#define USB_OTG_Device_InitiateSRP(type) MACROS{ OTGCON = ((OTGCON & ~(1 << SRPSEL)) | ((type) | (1 << SRPREQ))); }MACROE
|
||||
|
||||
#define USB_OTG_Host_AcceptHNP() MACROS{ OTGCON |= (1 << HNPREQ); }MACROE
|
||||
|
||||
#define USB_OTG_Host_RejectHNP() MACROS{ OTGCON &= ~(1 << HNPREQ); }MACROE
|
||||
|
||||
#define USB_OTG_Host_IsHNPReceived() ((OTGCON & (1 << HNPREQ)) ? true : false)
|
||||
#endif
|
||||
/** Accepts a HNP from a connected device, indicating that both devices should exchange
|
||||
* device/host roles.
|
||||
*/
|
||||
static inline void USB_OTG_Host_AcceptHNP(void) ATTR_ALWAYS_INLINE;
|
||||
static inline void USB_OTG_Host_AcceptHNP(void)
|
||||
{
|
||||
OTGCON |= (1 << HNPREQ);
|
||||
}
|
||||
|
||||
/** Rejects a HNP from a connected device, indicating that both devices should remain in their
|
||||
* current device/host roles.
|
||||
*/
|
||||
static inline void USB_OTG_Host_RejectHNP(void) ATTR_ALWAYS_INLINE;
|
||||
static inline void USB_OTG_Host_RejectHNP(void)
|
||||
{
|
||||
OTGCON &= ~(1 << HNPREQ);
|
||||
}
|
||||
|
||||
/** Indicates if the connected device is not currently sending a HNP request.
|
||||
*
|
||||
* \return Boolean true if a HNP is currently being issued by the connected device, false otherwise.
|
||||
*/
|
||||
static inline bool USB_OTG_Host_IsHNPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
|
||||
static inline bool USB_OTG_Host_IsHNPReceived(void)
|
||||
{
|
||||
return ((OTGCON & (1 << HNPREQ)) ? true : false);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue