Convert over internal pseudo-function macros to true inline functions for added type...
[pub/USBasp.git] / LUFA / Drivers / USB / LowLevel / OTG.h
index 0e32346..deb7866 100644 (file)
                         */                      
                        #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);
-
-                               /** 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
+               /* 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)));
+                       }
 
-                               #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