Obsolete the old MACROS and MACROE convenience macros.
authorDean Camera <dean@fourwalledcubicle.com>
Sun, 14 Sep 2014 01:45:02 +0000 (11:45 +1000)
committerDean Camera <dean@fourwalledcubicle.com>
Sun, 14 Sep 2014 01:45:02 +0000 (11:45 +1000)
14 files changed:
Bootloaders/MassStorage/Lib/SCSI.h
Demos/Device/ClassDriver/MassStorage/Lib/SCSI.h
Demos/Device/ClassDriver/MassStorageKeyboard/Lib/SCSI.h
Demos/Device/ClassDriver/RNDISEthernet/Lib/TCP.h
Demos/Device/ClassDriver/VirtualSerialMassStorage/Lib/SCSI.h
Demos/Device/LowLevel/MassStorage/Lib/SCSI.h
Demos/Device/LowLevel/RNDISEthernet/Lib/TCP.h
LUFA/Common/ArchitectureSpecific.h
LUFA/Common/Common.h
LUFA/Drivers/USB/Core/USBTask.h
Projects/AVRISP-MKII/Config/AppConfig.h
Projects/AVRISP-MKII/makefile
Projects/TempDataLogger/Lib/SCSI.h
Projects/Webserver/Lib/SCSI.h

index d3b0ddd..3529fde 100644 (file)
@@ -55,9 +55,9 @@
                 *  \param[in] Acode  New SCSI additional sense key to set the additional sense code to
                 *  \param[in] Aqual  New SCSI additional sense key qualifier to set the additional sense qualifier code to
                 */
-               #define SCSI_SET_SENSE(Key, Acode, Aqual)  MACROS{ SenseData.SenseKey                 = (Key);   \
-                                                                  SenseData.AdditionalSenseCode      = (Acode); \
-                                                                  SenseData.AdditionalSenseQualifier = (Aqual); }MACROE
+               #define SCSI_SET_SENSE(Key, Acode, Aqual)  do { SenseData.SenseKey                 = (Key);   \
+                                                               SenseData.AdditionalSenseCode      = (Acode); \
+                                                               SenseData.AdditionalSenseQualifier = (Aqual); } while (0)
 
                /** Macro for the \ref SCSI_Command_ReadWrite_10() function, to indicate that data is to be read from the storage medium. */
                #define DATA_READ           true
index a8f3b73..f663baa 100644 (file)
@@ -56,9 +56,9 @@
                 *  \param[in] Acode  New SCSI additional sense key to set the additional sense code to
                 *  \param[in] Aqual  New SCSI additional sense key qualifier to set the additional sense qualifier code to
                 */
-               #define SCSI_SET_SENSE(Key, Acode, Aqual)  MACROS{ SenseData.SenseKey                 = (Key);   \
-                                                                  SenseData.AdditionalSenseCode      = (Acode); \
-                                                                  SenseData.AdditionalSenseQualifier = (Aqual); }MACROE
+               #define SCSI_SET_SENSE(Key, Acode, Aqual)  do { SenseData.SenseKey                 = (Key);   \
+                                                               SenseData.AdditionalSenseCode      = (Acode); \
+                                                               SenseData.AdditionalSenseQualifier = (Aqual); } while (0)
 
                /** Macro for the \ref SCSI_Command_ReadWrite_10() function, to indicate that data is to be read from the storage medium. */
                #define DATA_READ           true
index 9db1069..8ccc146 100644 (file)
@@ -56,9 +56,9 @@
                 *  \param[in] Acode  New SCSI additional sense key to set the additional sense code to
                 *  \param[in] Aqual  New SCSI additional sense key qualifier to set the additional sense qualifier code to
                 */
-               #define SCSI_SET_SENSE(Key, Acode, Aqual)  MACROS{ SenseData.SenseKey                 = (Key);   \
-                                                                  SenseData.AdditionalSenseCode      = (Acode); \
-                                                                  SenseData.AdditionalSenseQualifier = (Aqual); }MACROE
+               #define SCSI_SET_SENSE(Key, Acode, Aqual)  do { SenseData.SenseKey                 = (Key);   \
+                                                               SenseData.AdditionalSenseCode      = (Acode); \
+                                                               SenseData.AdditionalSenseQualifier = (Aqual); } while (0)
 
                /** Macro for the \ref SCSI_Command_ReadWrite_10() function, to indicate that data is to be read from the storage medium. */
                #define DATA_READ           true
index 754842a..92fbdf3 100644 (file)
                 *
                 *  \param[in] Buffer  Application buffer to lock
                 */
-               #define TCP_APP_CAPTURE_BUFFER(Buffer)       MACROS{ Buffer->Direction = TCP_PACKETDIR_OUT; Buffer->InUse = true; }MACROE
+               #define TCP_APP_CAPTURE_BUFFER(Buffer)       do { Buffer->Direction = TCP_PACKETDIR_OUT; Buffer->InUse = true; } while (0)
 
                /** Application macro: Releases a captured application buffer, allowing for host-to-device packets to be received.
                 *
                 *  \param[in] Buffer  Application buffer to release
                 */
-               #define TCP_APP_RELEASE_BUFFER(Buffer)       MACROS{ Buffer->InUse = false; }MACROE
+               #define TCP_APP_RELEASE_BUFFER(Buffer)       do { Buffer->InUse = false; } while (0)
 
                /** Application macro: Sends the contents of the given application buffer to the host.
                 *
                 *  \param[in] Buffer  Application buffer to send
                 *  \param[in] Len     Length of data contained in the buffer
                 */
-               #define TCP_APP_SEND_BUFFER(Buffer, Len)     MACROS{ Buffer->Direction = TCP_PACKETDIR_OUT; Buffer->Length = Len; Buffer->Ready = true; }MACROE
+               #define TCP_APP_SEND_BUFFER(Buffer, Len)     do { Buffer->Direction = TCP_PACKETDIR_OUT; Buffer->Length = Len; Buffer->Ready = true; } while (0)
 
                /** Application macro: Clears the application buffer, ready for a packet to be written to it.
                 *
                 *  \param[in] Buffer  Application buffer to clear
                 */
-               #define TCP_APP_CLEAR_BUFFER(Buffer)         MACROS{ Buffer->Ready = false; Buffer->Length = 0; }MACROE
+               #define TCP_APP_CLEAR_BUFFER(Buffer)         do { Buffer->Ready = false; Buffer->Length = 0; } while (0)
 
                /** Application macro: Closes an open connection to a host.
                 *
                 *  \param[in] Connection  Open TCP connection to close
                 */
-               #define TCP_APP_CLOSECONNECTION(Connection)  MACROS{ Connection->State = TCP_Connection_Closing;  }MACROE
+               #define TCP_APP_CLOSECONNECTION(Connection)  do { Connection->State = TCP_Connection_Closing;  } while (0)
 
        /* Enums: */
                /** Enum for possible TCP port states. */
index 38cb6a6..d26a82b 100644 (file)
@@ -56,9 +56,9 @@
                 *  \param[in] Acode  New SCSI additional sense key to set the additional sense code to
                 *  \param[in] Aqual  New SCSI additional sense key qualifier to set the additional sense qualifier code to
                 */
-               #define SCSI_SET_SENSE(Key, Acode, Aqual)  MACROS{ SenseData.SenseKey                 = (Key);   \
-                                                                  SenseData.AdditionalSenseCode      = (Acode); \
-                                                                  SenseData.AdditionalSenseQualifier = (Aqual); }MACROE
+               #define SCSI_SET_SENSE(Key, Acode, Aqual)  do { SenseData.SenseKey                 = (Key);   \
+                                                               SenseData.AdditionalSenseCode      = (Acode); \
+                                                               SenseData.AdditionalSenseQualifier = (Aqual); } while (0)
 
                /** Macro for the \ref SCSI_Command_ReadWrite_10() function, to indicate that data is to be read from the storage medium. */
                #define DATA_READ           true
index 2b0133f..36553bd 100644 (file)
@@ -57,9 +57,9 @@
                 *  \param[in] Acode  New SCSI additional sense key to set the additional sense code to
                 *  \param[in] Aqual  New SCSI additional sense key qualifier to set the additional sense qualifier code to
                 */
-               #define SCSI_SET_SENSE(Key, Acode, Aqual)  MACROS{ SenseData.SenseKey                 = (Key);   \
-                                                                  SenseData.AdditionalSenseCode      = (Acode); \
-                                                                  SenseData.AdditionalSenseQualifier = (Aqual); }MACROE
+               #define SCSI_SET_SENSE(Key, Acode, Aqual)  do { SenseData.SenseKey                 = (Key);   \
+                                                               SenseData.AdditionalSenseCode      = (Acode); \
+                                                               SenseData.AdditionalSenseQualifier = (Aqual); } while (0)
 
                /** Macro for the \ref SCSI_Command_ReadWrite_10() function, to indicate that data is to be read from the storage medium. */
                #define DATA_READ           true
index e5bf0f3..0d96430 100644 (file)
                 *
                 *  \param[in] Buffer  Application buffer to lock
                 */
-               #define TCP_APP_CAPTURE_BUFFER(Buffer)       MACROS{ Buffer->Direction = TCP_PACKETDIR_OUT; Buffer->InUse = true; }MACROE
+               #define TCP_APP_CAPTURE_BUFFER(Buffer)       do { Buffer->Direction = TCP_PACKETDIR_OUT; Buffer->InUse = true; } while (0)
 
                /** Application macro: Releases a captured application buffer, allowing for host-to-device packets to be received.
                 *
                 *  \param[in] Buffer  Application buffer to release
                 */
-               #define TCP_APP_RELEASE_BUFFER(Buffer)       MACROS{ Buffer->InUse = false; }MACROE
+               #define TCP_APP_RELEASE_BUFFER(Buffer)       do { Buffer->InUse = false; } while (0)
 
                /** Application macro: Sends the contents of the given application buffer to the host.
                 *
                 *  \param[in] Buffer  Application buffer to send
                 *  \param[in] Len     Length of data contained in the buffer
                 */
-               #define TCP_APP_SEND_BUFFER(Buffer, Len)     MACROS{ Buffer->Direction = TCP_PACKETDIR_OUT; Buffer->Length = Len; Buffer->Ready = true; }MACROE
+               #define TCP_APP_SEND_BUFFER(Buffer, Len)     do { Buffer->Direction = TCP_PACKETDIR_OUT; Buffer->Length = Len; Buffer->Ready = true; } while (0)
 
                /** Application macro: Clears the application buffer, ready for a packet to be written to it.
                 *
                 *  \param[in] Buffer  Application buffer to clear
                 */
-               #define TCP_APP_CLEAR_BUFFER(Buffer)         MACROS{ Buffer->Ready = false; Buffer->Length = 0; }MACROE
+               #define TCP_APP_CLEAR_BUFFER(Buffer)         do { Buffer->Ready = false; Buffer->Length = 0; } while (0)
 
                /** Application macro: Closes an open connection to a host.
                 *
                 *  \param[in] Connection  Open TCP connection to close
                 */
-               #define TCP_APP_CLOSECONNECTION(Connection)  MACROS{ Connection->State = TCP_Connection_Closing;  }MACROE
+               #define TCP_APP_CLOSECONNECTION(Connection)  do { Connection->State = TCP_Connection_Closing;  } while (0)
 
        /* Enums: */
                /** Enum for possible TCP port states. */
index e7608d4..292e27b 100644 (file)
                                         *
                                         *  \note This macro is not available for all architectures.
                                         */
-                                       #define JTAG_ENABLE()                  MACROS{                                       \
-                                                                                                                                       __asm__ __volatile__ (               \
-                                                                                                                                       "in __tmp_reg__,__SREG__" "\n\t"     \
-                                                                                                                                       "cli" "\n\t"                         \
-                                                                                                                                       "out %1, %0" "\n\t"                  \
-                                                                                                                                       "out __SREG__, __tmp_reg__" "\n\t"   \
-                                                                                                                                       "out %1, %0" "\n\t"                  \
-                                                                                                                                       :                                    \
-                                                                                                                                       : "r" (MCUCR & ~(1 << JTD)),         \
-                                                                                                                                         "M" (_SFR_IO_ADDR(MCUCR))          \
-                                                                                                                                       : "r0");                             \
-                                                                                                                       }MACROE
+                                       #define JTAG_ENABLE()               do {                                     \
+                                                                               __asm__ __volatile__ (               \
+                                                                               "in __tmp_reg__,__SREG__" "\n\t"     \
+                                                                               "cli" "\n\t"                         \
+                                                                               "out %1, %0" "\n\t"                  \
+                                                                               "out __SREG__, __tmp_reg__" "\n\t"   \
+                                                                               "out %1, %0" "\n\t"                  \
+                                                                               :                                    \
+                                                                               : "r" (MCUCR & ~(1 << JTD)),         \
+                                                                                 "M" (_SFR_IO_ADDR(MCUCR))          \
+                                                                               : "r0");                             \
+                                                                           } while (0)
 
                                        /** Disables the AVR's JTAG bus in software, until a system reset. This will override the current JTAG
                                         *  status as set by the JTAGEN fuse, disabling JTAG debugging and reverting the JTAG pins back to GPIO
                                         *
                                         *  \note This macro is not available for all architectures.
                                         */
-                                       #define JTAG_DISABLE()                  MACROS{                                      \
-                                                                                                                                       __asm__ __volatile__ (               \
-                                                                                                                                       "in __tmp_reg__,__SREG__" "\n\t"     \
-                                                                                                                                       "cli" "\n\t"                         \
-                                                                                                                                       "out %1, %0" "\n\t"                  \
-                                                                                                                                       "out __SREG__, __tmp_reg__" "\n\t"   \
-                                                                                                                                       "out %1, %0" "\n\t"                  \
-                                                                                                                                       :                                    \
-                                                                                                                                       : "r" (MCUCR | (1 << JTD)),          \
-                                                                                                                                         "M" (_SFR_IO_ADDR(MCUCR))          \
-                                                                                                                                       : "r0");                             \
-                                                                                                                       }MACROE
+                                       #define JTAG_DISABLE()              do {                                     \
+                                                                               __asm__ __volatile__ (               \
+                                                                               "in __tmp_reg__,__SREG__" "\n\t"     \
+                                                                               "cli" "\n\t"                         \
+                                                                               "out %1, %0" "\n\t"                  \
+                                                                               "out __SREG__, __tmp_reg__" "\n\t"   \
+                                                                               "out %1, %0" "\n\t"                  \
+                                                                               :                                    \
+                                                                               : "r" (MCUCR | (1 << JTD)),          \
+                                                                                 "M" (_SFR_IO_ADDR(MCUCR))          \
+                                                                               : "r0");                             \
+                                                                           } while (0)
                                #endif
 
                                /** Defines a volatile \c NOP statement which cannot be optimized out by the compiler, and thus can always
                                 *
                                 *  \param[in] Condition  Condition that will be evaluated.
                                */
-                               #define JTAG_ASSERT(Condition)          MACROS{ if (!(Condition)) { JTAG_DEBUG_BREAK(); } }MACROE
+                               #define JTAG_ASSERT(Condition)          do {                       \
+                                                                           if (!(Condition))      \
+                                                                             JTAG_DEBUG_BREAK();  \
+                                                                       } while (0)
 
                                /** Macro for testing condition \c "x" and writing debug data to the stdout stream if \c false. The stdout stream
                                 *  must be pre-initialized before this macro is run and linked to an output device, such as the microcontroller's
                                 *
                                 *  \param[in] Condition  Condition that will be evaluated,
                                 */
-                               #define STDOUT_ASSERT(Condition)        MACROS{ if (!(Condition)) {                                     \
-                                                                                    printf_P(PSTR("%s: Function \"%s\", Line %d: "     \
-                                                                                                  "Assertion \"%s\" failed.\r\n"),     \
-                                                                                                  __FILE__, __func__, __LINE__, #Condition); } }MACROE
+                               #define STDOUT_ASSERT(Condition)        do {                                                           \
+                                                                           if (!(Condition))                                          \
+                                                                             printf_P(PSTR("%s: Function \"%s\", Line %d: "           \
+                                                                                           "Assertion \"%s\" failed.\r\n"),           \
+                                                                                           __FILE__, __func__, __LINE__, #Condition); \
+                                                                       } while (0)
 
                                #if !defined(pgm_read_ptr) || defined(__DOXYGEN__)
-                                       /** Reads a pointer out of PROGMEM space on the AVR8 architecture. This is currently a wrapper for the
-                                        *  avr-libc \c pgm_read_word() macro with a \c void* cast, so that its value can be assigned directly
-                                        *  to a pointer variable or used in pointer arithmetic without further casting in C. In a future
-                                        *  avr-libc distribution this will be part of the standard API and will be implemented in a more formal
-                                        *  manner.
+                                       /** Reads a pointer out of PROGMEM space on the AVR8 architecture. This is a wrapper for the avr-libc
+                                        *  \c pgm_read_word() macro with a \c void* cast, so that its value can be assigned directly to a
+                                        *  pointer variable or used in pointer arithmetic without further casting in C.
                                         *
                                         *  \note This macro is not available for all architectures.
                                         *
                                         *
                                         *  \return Pointer retrieved from PROGMEM space.
                                         */
-                                       #define pgm_read_ptr(Address)        (void*)pgm_read_word(Address)
+                                       #define pgm_read_ptr(Address)       (void*)pgm_read_word(Address)
                                #endif
                        #elif (ARCH == ARCH_UC3)
                                #define JTAG_DEBUG_POINT()              __asm__ __volatile__ ("nop" ::)
                                #define JTAG_DEBUG_BREAK()              __asm__ __volatile__ ("breakpoint" ::)
-                               #define JTAG_ASSERT(Condition)          MACROS{ if (!(Condition)) { JTAG_DEBUG_BREAK(); } }MACROE
-                               #define STDOUT_ASSERT(Condition)        MACROS{ if (!(Condition)) {                              \
-                                                                                    printf("%s: Function \"%s\", Line %d: "     \
-                                                                                           "Assertion \"%s\" failed.\r\n"),     \
-                                                                                           __FILE__, __func__, __LINE__, #Condition); } }MACROE
+                               #define JTAG_ASSERT(Condition)          do {                                                    \
+                                                                           if (!(Condition))                                   \
+                                                                             JTAG_DEBUG_BREAK();                               \
+                                                                       } while (0)
+                               #define STDOUT_ASSERT(Condition)        do {                                                    \
+                                                                           if (!(Condition))                                   \
+                                                                             printf("%s: Function \"%s\", Line %d: "           \
+                                                                                    "Assertion \"%s\" failed.\r\n",            \
+                                                                                    __FILE__, __func__, __LINE__, #Condition); \
+                                                                       } while (0)
                        #endif
 
        /* Disable C linkage for C++ Compilers: */
index 38afb85..3e12e4f 100644 (file)
 
        /* Public Interface - May be used in end-application: */
                /* Macros: */
-                       /** Macro for encasing other multi-statement macros. This should be used along with an opening brace
-                        *  before the start of any multi-statement macro, so that the macros contents as a whole are treated
-                        *  as a discrete block and not as a list of separate statements which may cause problems when used as
-                        *  a block (such as inline \c if statements).
-                        */
-                       #define MACROS                  do
-
-                       /** Macro for encasing other multi-statement macros. This should be used along with a preceding closing
-                        *  brace at the end of any multi-statement macro, so that the macros contents as a whole are treated
-                        *  as a discrete block and not as a list of separate statements which may cause problems when used as
-                        *  a block (such as inline \c if statements).
-                        */
-                       #define MACROE                  while (0)
+                       #if !defined(__DOXYGEN__)
+                               // Obsolete, retained for compatibility with user code
+                               #define MACROS                  do
+                               #define MACROE                  while (0)
+                       #endif
 
                        /** Convenience macro to determine the larger of two values.
                         *
index 7c0917f..7205ea1 100644 (file)
                        #endif
 
                /* Macros: */
-                       #define HOST_TASK_NONBLOCK_WAIT(Duration, NextState) MACROS{ USB_HostState   = HOST_STATE_WaitForDevice; \
-                                                                                    WaitMSRemaining = (Duration);               \
-                                                                                    PostWaitState   = (NextState);              }MACROE
+                       #define HOST_TASK_NONBLOCK_WAIT(Duration, NextState) do { USB_HostState   = HOST_STATE_WaitForDevice; \
+                                                                                 WaitMSRemaining = (Duration);               \
+                                                                                 PostWaitState   = (NextState);              } while (0)
        #endif
 
        /* Disable C linkage for C++ Compilers: */
index 0664806..979b354 100644 (file)
@@ -63,7 +63,7 @@
 //     #define XCK_RESCUE_CLOCK_ENABLE
 //     #define INVERTED_ISP_MISO
 
-//     #define LIBUSB_DRIVER_COMPAT
+       #define LIBUSB_DRIVER_COMPAT
 //     #define RESET_TOGGLES_LIBUSB_COMPAT
 //     #define FIRMWARE_VERSION_MINOR     0x11
 
index bf6ca31..c89648d 100644 (file)
 
 # Run "make help" for target help.
 
-MCU          = at90usb162
+MCU          = at90usb1287
 ARCH         = AVR8
-BOARD        = USBTINYMKII
-F_CPU        = 16000000
+BOARD        = USBKEY
+F_CPU        = 8000000
 F_USB        = $(F_CPU)
 OPTIMIZATION = s
 TARGET       = AVRISP-MKII
index 1a01a55..ec9c3e2 100644 (file)
@@ -56,9 +56,9 @@
                 *  \param[in] Acode  New SCSI additional sense key to set the additional sense code to
                 *  \param[in] Aqual  New SCSI additional sense key qualifier to set the additional sense qualifier code to
                 */
-               #define SCSI_SET_SENSE(Key, Acode, Aqual)  MACROS{ SenseData.SenseKey                 = (Key);   \
-                                                                  SenseData.AdditionalSenseCode      = (Acode); \
-                                                                  SenseData.AdditionalSenseQualifier = (Aqual); }MACROE
+               #define SCSI_SET_SENSE(Key, Acode, Aqual)  do { SenseData.SenseKey                 = (Key);   \
+                                                               SenseData.AdditionalSenseCode      = (Acode); \
+                                                               SenseData.AdditionalSenseQualifier = (Aqual); } while (0)
 
                /** Macro for the \ref SCSI_Command_ReadWrite_10() function, to indicate that data is to be read from the storage medium. */
                #define DATA_READ           true
index b4eca1d..53274dd 100644 (file)
@@ -54,9 +54,9 @@
                 *  \param[in] Acode  New SCSI additional sense key to set the additional sense code to
                 *  \param[in] Aqual  New SCSI additional sense key qualifier to set the additional sense qualifier code to
                 */
-               #define SCSI_SET_SENSE(Key, Acode, Aqual)  MACROS{ SenseData.SenseKey                 = (Key);   \
-                                                                  SenseData.AdditionalSenseCode      = (Acode); \
-                                                                  SenseData.AdditionalSenseQualifier = (Aqual); }MACROE
+               #define SCSI_SET_SENSE(Key, Acode, Aqual)  do { SenseData.SenseKey                 = (Key);   \
+                                                               SenseData.AdditionalSenseCode      = (Acode); \
+                                                               SenseData.AdditionalSenseQualifier = (Aqual); } while (0)
 
                /** Macro for the \ref SCSI_Command_ReadWrite_10() function, to indicate that data is to be read from the storage medium. */
                #define DATA_READ           true