Add more const-ness to the stream endpoint/pipe functions where possible.
[pub/USBasp.git] / LUFA / Drivers / Peripheral / SPI.h
index 4e1fd09..0b8b17e 100644 (file)
@@ -1,13 +1,13 @@
 /*
              LUFA Library
-     Copyright (C) Dean Camera, 2010.
+     Copyright (C) Dean Camera, 2011.
 
   dean [at] fourwalledcubicle [dot] com
            www.lufa-lib.org
 */
 
 /*
-  Copyright 2010  Dean Camera (dean [at] fourwalledcubicle [dot] com)
+  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)
 
   Permission to use, copy, modify, distribute, and sell this
   software and its documentation for any purpose is hereby granted
  *  The following files must be built with any user project that uses this module:
  *    - None
  *
- *  \section Module Description
+ *  \section Sec_ModDescription Module Description
  *  Driver for the hardware SPI port available on most AVR models. This module provides
  *  an easy to use driver for the setup of and transfer of data over the AVR's SPI port.
  *
+ *  \section Sec_ExampleUsage Example Usage
+ *  The following snippet is an example of how this module may be used within a typical
+ *  application.
+ *
+ *  \code
+ *      // Initialise the SPI driver before first use
+ *      SPI_Init(SPI_SPEED_FCPU_DIV_2 | SPI_ORDER_MSB_FIRST | SPI_SCK_LEAD_FALLING |
+ *               SPI_SAMPLE_TRAILING | SPI_MODE_MASTER);
+ *
+ *      // Send several bytes, ignoring the returned data
+ *      SPI_SendByte(0x01);
+ *      SPI_SendByte(0x02);
+ *      SPI_SendByte(0x03);
+ *
+ *      // Receive several bytes, sending a dummy 0x00 byte each time
+ *      uint8_t Byte1 = SPI_ReceiveByte();
+ *      uint8_t Byte2 = SPI_ReceiveByte();
+ *      uint8_t Byte3 = SPI_ReceiveByte();
+ *
+ *      // Send a byte, and store the received byte from the same transaction
+ *      uint8_t ResponseByte = SPI_TransferByte(0xDC);
+ *  \endcode
+ * 
  *  @{
  */
 
                /* Macros: */
                        /** \name SPI Prescaler Configuration Masks */
                        //@{
-                       /** SPI prescaler mask for SPI_Init(). Divides the system clock by a factor of 2. */
+                       /** SPI prescaler mask for \c SPI_Init(). Divides the system clock by a factor of 2. */
                        #define SPI_SPEED_FCPU_DIV_2           SPI_USE_DOUBLESPEED
 
-                       /** SPI prescaler mask for SPI_Init(). Divides the system clock by a factor of 4. */
+                       /** SPI prescaler mask for \c SPI_Init(). Divides the system clock by a factor of 4. */
                        #define SPI_SPEED_FCPU_DIV_4           0
 
-                       /** SPI prescaler mask for SPI_Init(). Divides the system clock by a factor of 8. */
+                       /** SPI prescaler mask for \c SPI_Init(). Divides the system clock by a factor of 8. */
                        #define SPI_SPEED_FCPU_DIV_8           (SPI_USE_DOUBLESPEED | (1 << SPR0))
 
-                       /** SPI prescaler mask for SPI_Init(). Divides the system clock by a factor of 16. */
+                       /** SPI prescaler mask for \c SPI_Init(). Divides the system clock by a factor of 16. */
                        #define SPI_SPEED_FCPU_DIV_16          (1 << SPR0)
 
-                       /** SPI prescaler mask for SPI_Init(). Divides the system clock by a factor of 32. */
+                       /** SPI prescaler mask for \c SPI_Init(). Divides the system clock by a factor of 32. */
                        #define SPI_SPEED_FCPU_DIV_32          (SPI_USE_DOUBLESPEED | (1 << SPR1))
 
-                       /** SPI prescaler mask for SPI_Init(). Divides the system clock by a factor of 64. */
+                       /** SPI prescaler mask for \c SPI_Init(). Divides the system clock by a factor of 64. */
                        #define SPI_SPEED_FCPU_DIV_64          (SPI_USE_DOUBLESPEED | (1 << SPR1) | (1 << SPR0))
 
-                       /** SPI prescaler mask for SPI_Init(). Divides the system clock by a factor of 128. */
+                       /** SPI prescaler mask for \c SPI_Init(). Divides the system clock by a factor of 128. */
                        #define SPI_SPEED_FCPU_DIV_128         ((1 << SPR1) | (1 << SPR0))
                        //@}
 
                        /** \name SPI SCK Polarity Configuration Masks */
                        //@{
-                       /** SPI clock polarity mask for SPI_Init(). Indicates that the SCK should lead on the rising edge. */
+                       /** SPI clock polarity mask for \c SPI_Init(). Indicates that the SCK should lead on the rising edge. */
                        #define SPI_SCK_LEAD_RISING            (0 << CPOL)
 
-                       /** SPI clock polarity mask for SPI_Init(). Indicates that the SCK should lead on the falling edge. */
+                       /** SPI clock polarity mask for \c SPI_Init(). Indicates that the SCK should lead on the falling edge. */
                        #define SPI_SCK_LEAD_FALLING           (1 << CPOL)
                        //@}
 
                        /** \name SPI Sample Edge Configuration Masks */
                        //@{
-                       /** SPI data sample mode mask for SPI_Init(). Indicates that the data should sampled on the leading edge. */
+                       /** SPI data sample mode mask for \c SPI_Init(). Indicates that the data should sampled on the leading edge. */
                        #define SPI_SAMPLE_LEADING             (0 << CPHA)
 
-                       /** SPI data sample mode mask for SPI_Init(). Indicates that the data should be sampled on the trailing edge. */
+                       /** SPI data sample mode mask for \c SPI_Init(). Indicates that the data should be sampled on the trailing edge. */
                        #define SPI_SAMPLE_TRAILING            (1 << CPHA)
                        //@}
                        
                        /** \name SPI Data Ordering Configuration Masks */
                        //@{
-                       /** SPI data order mask for SPI_Init(). Indicates that data should be shifted out MSB first. */
+                       /** SPI data order mask for \c SPI_Init(). Indicates that data should be shifted out MSB first. */
                        #define SPI_ORDER_MSB_FIRST            (0 << DORD)
 
-                       /** SPI data order mask for SPI_Init(). Indicates that data should be shifted out MSB first. */
+                       /** SPI data order mask for \c SPI_Init(). Indicates that data should be shifted out MSB first. */
                        #define SPI_ORDER_LSB_FIRST            (1 << DORD)
                        //@}
                        
                        /** \name SPI Mode Configuration Masks */
                        //@{
-                       /** SPI mode mask for SPI_Init(). Indicates that the SPI interface should be initialized into slave mode. */
+                       /** SPI mode mask for \c SPI_Init(). Indicates that the SPI interface should be initialized into slave mode. */
                        #define SPI_MODE_SLAVE                 (0 << MSTR)
 
-                       /** SPI mode mask for SPI_Init(). Indicates that the SPI interface should be initialized into master mode. */
+                       /** SPI mode mask for \c SPI_Init(). Indicates that the SPI interface should be initialized into master mode. */
                        #define SPI_MODE_MASTER                (1 << MSTR)
                        //@}
                        
                        /** Initialises the SPI subsystem, ready for transfers. Must be called before calling any other
                         *  SPI routines.
                         *
-                        *  \param[in] SPIOptions  SPI Options, a mask consisting of one of each of the SPI_SPEED_*,
-                        *                         SPI_SCK_*, SPI_SAMPLE_*, SPI_ORDER_* and SPI_MODE_* masks.
+                        *  \param[in] SPIOptions  SPI Options, a mask consisting of one of each of the \c SPI_SPEED_*,
+                        *                         \c SPI_SCK_*, \c SPI_SAMPLE_*, \c SPI_ORDER_* and \c SPI_MODE_* masks.
                         */
                        static inline void SPI_Init(const uint8_t SPIOptions)
                        {
                        }
 
                        /** Turns off the SPI driver, disabling and returning used hardware to their default configuration. */
-                       static inline void SPI_ShutDown(void)
+                       static inline void SPI_Disable(void)
                        {
                                DDRB  &= ~((1 << 1) | (1 << 2));
                                PORTB &= ~((1 << 0) | (1 << 3));