Convert over internal pseudo-function macros to true inline functions for added type...
[pub/lufa.git] / LUFA / Drivers / Board / Dataflash.h
index c09c4a8..a3975e1 100644 (file)
@@ -70,7 +70,7 @@
        /* Includes: */
        #include "../Peripheral/SPI.h"
        #include "../../Common/Common.h"
-               
+
        /* Enable C linkage for C++ Compilers: */
                #if defined(__cplusplus)
                        extern "C" {
                         */
                        #define DATAFLASH_CHIP_MASK(index)      __GET_DATAFLASH_MASK(index)
                        
-               /* Pseudo-Function Macros: */
-                       #if defined(__DOXYGEN__)
-                               /** Determines the currently selected dataflash chip.
-                                *
-                                *  \return Mask of the currently selected Dataflash chip, either \ref DATAFLASH_NO_CHIP if no chip is selected
-                                *  or a DATAFLASH_CHIPn mask (where n is the chip number).
-                                */
-                               static inline uint8_t Dataflash_GetSelectedChip(void);
-
-                               /** Selects the given dataflash chip.
-                                *
-                                *  \param[in]  ChipMask  Mask of the Dataflash IC to select, in the form of DATAFLASH_CHIPn mask (where n is
-                                *              the chip number).
-                                */
-                               static inline void Dataflash_SelectChip(uint8_t ChipMask);
-
-                               /** Deselects the current dataflash chip, so that no dataflash is selected. */
-                               static inline void Dataflash_DeselectChip(void);
-                       #else
-                               #define Dataflash_GetSelectedChip()          (DATAFLASH_CHIPCS_PORT & DATAFLASH_CHIPCS_MASK)
+               /* Inline Functions: */
+                       /** Initializes the dataflash driver so that commands and data may be sent to an attached dataflash IC.
+                        *  The AVR's SPI driver MUST be initialized before any of the dataflash commands are used.
+                        */
+                       static inline void Dataflash_Init(void);
 
-                               #define Dataflash_SelectChip(mask)   MACROS{ DATAFLASH_CHIPCS_PORT = ((DATAFLASH_CHIPCS_PORT \
-                                                                                                                        & ~DATAFLASH_CHIPCS_MASK) | (mask));            }MACROE
-                               
-                               #define Dataflash_DeselectChip()             Dataflash_SelectChip(DATAFLASH_NO_CHIP)
-                       #endif
+                       /** Determines the currently selected dataflash chip.
+                        *
+                        *  \return Mask of the currently selected Dataflash chip, either \ref DATAFLASH_NO_CHIP if no chip is selected
+                        *  or a DATAFLASH_CHIPn mask (where n is the chip number).
+                        */
+                       static inline uint8_t Dataflash_GetSelectedChip(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT;
+
+                       /** Selects the given dataflash chip.
+                        *
+                        *  \param[in]  ChipMask  Mask of the Dataflash IC to select, in the form of DATAFLASH_CHIPn mask (where n is
+                        *              the chip number).
+                        */
+                       static inline void Dataflash_SelectChip(const uint8_t ChipMask) ATTR_ALWAYS_INLINE;
+
+                       /** Deselects the current dataflash chip, so that no dataflash is selected. */
+                       static inline void Dataflash_DeselectChip(void) ATTR_ALWAYS_INLINE;
+
+                       /** Selects a dataflash IC from the given page number, which should range from 0 to
+                        *  ((DATAFLASH_PAGES * DATAFLASH_TOTALCHIPS) - 1). For boards containing only one
+                        *  dataflash IC, this will select DATAFLASH_CHIP1. If the given page number is outside
+                        *  the total number of pages contained in the boards dataflash ICs, all dataflash ICs
+                        *  are deselected.
+                        *
+                        *  \param[in] PageAddress  Address of the page to manipulate, ranging from
+                        *                          ((DATAFLASH_PAGES * DATAFLASH_TOTALCHIPS) - 1).
+                        */
+                       static inline void Dataflash_SelectChipFromPage(const uint16_t PageAddress);
                        
-               /* Inline Functions: */
+                       /** Toggles the select line of the currently selected dataflash IC, so that it is ready to receive
+                        *  a new command.
+                        */
+                       static inline void Dataflash_ToggleSelectedChipCS(void);
+
+                       /** Spin-loops while the currently selected dataflash is busy executing a command, such as a main
+                        *  memory page program or main memory to buffer transfer.
+                        */
+                       static inline void Dataflash_WaitWhileBusy(void);
+
+                       /** Sends a set of page and buffer address bytes to the currently selected dataflash IC, for use with
+                        *  dataflash commands which require a complete 24-byte address.
+                        *
+                        *  \param[in] PageAddress  Page address within the selected dataflash IC
+                        *  \param[in] BufferByte   Address within the dataflash's buffer
+                        */
+                       static inline void Dataflash_SendAddressBytes(uint16_t PageAddress,
+                                                                     const uint16_t BufferByte);
+
                        /** Sends a byte to the currently selected dataflash IC, and returns a byte from the dataflash.
                         *
                         *  \param[in] Byte of data to send to the dataflash
                        #else
                                #error The selected board does not contain a dataflash IC.
                        #endif
-               
-               /* Inline Functions: */
-                       /** Initializes the dataflash driver so that commands and data may be sent to an attached dataflash IC.
-                        *  The AVR's SPI driver MUST be initialized before any of the dataflash commands are used.
-                        */
-                       static inline void Dataflash_Init(void)
-                       {
-                               DATAFLASH_CHIPCS_DDR  |= DATAFLASH_CHIPCS_MASK;
-                               DATAFLASH_CHIPCS_PORT |= DATAFLASH_CHIPCS_MASK;
-                       }
-                       
-                       /** Toggles the select line of the currently selected dataflash IC, so that it is ready to receive
-                        *  a new command.
-                        */
-                       static inline void Dataflash_ToggleSelectedChipCS(void)
-                       {
-                               uint8_t SelectedChipMask = Dataflash_GetSelectedChip();
-                                       
-                               Dataflash_DeselectChip();
-                               Dataflash_SelectChip(SelectedChipMask);
-                       }
-
-                       /** Spin-loops while the currently selected dataflash is busy executing a command, such as a main
-                        *  memory page program or main memory to buffer transfer.
-                        */
-                       static inline void Dataflash_WaitWhileBusy(void)
-                       {
-                               Dataflash_ToggleSelectedChipCS();
-                               Dataflash_SendByte(DF_CMD_GETSTATUS);
-                               while (!(Dataflash_ReceiveByte() & DF_STATUS_READY));
-                               Dataflash_ToggleSelectedChipCS();                               
-                       }
-
-                       /** Selects a dataflash IC from the given page number, which should range from 0 to
-                        *  ((DATAFLASH_PAGES * DATAFLASH_TOTALCHIPS) - 1). For boards containing only one
-                        *  dataflash IC, this will select DATAFLASH_CHIP1. If the given page number is outside
-                        *  the total number of pages contained in the boards dataflash ICs, all dataflash ICs
-                        *  are deselected.
-                        *
-                        *  \param[in] PageAddress  Address of the page to manipulate, ranging from
-                        *                          ((DATAFLASH_PAGES * DATAFLASH_TOTALCHIPS) - 1).
-                        */
-                       static inline void Dataflash_SelectChipFromPage(const uint16_t PageAddress);
-
-                       /** Sends a set of page and buffer address bytes to the currently selected dataflash IC, for use with
-                        *  dataflash commands which require a complete 24-byte address.
-                        *
-                        *  \param[in] PageAddress  Page address within the selected dataflash IC.
-                        *  \param[in] BufferByte   Address within the dataflash's buffer.
-                        */
-                       static inline void Dataflash_SendAddressBytes(uint16_t PageAddress,
-                                                                     const uint16_t BufferByte);
 
        /* Disable C linkage for C++ Compilers: */
                #if defined(__cplusplus)