Fixed incorrect DFU version number reported to the host in the DFU bootloader descri...
authorDean Camera <dean@fourwalledcubicle.com>
Sat, 5 May 2012 15:25:27 +0000 (15:25 +0000)
committerDean Camera <dean@fourwalledcubicle.com>
Sat, 5 May 2012 15:25:27 +0000 (15:25 +0000)
Bootloaders/DFU/Descriptors.c
LUFA/DoxygenPages/ChangeLog.txt
LUFA/Drivers/USB/Core/StdDescriptors.h

index d551590..ff33b6b 100644 (file)
@@ -111,7 +111,7 @@ const USB_Descriptor_Configuration_t ConfigurationDescriptor =
                        .DetachTimeout          = 0x0000,
                        .TransferSize           = 0x0C00,
 
-                       .DFUSpecification       = VERSION_BCD(01.01)
+                       .DFUSpecification       = VERSION_BCD(01.10)
                }
 };
 
index 2076b4b..5770208 100644 (file)
@@ -59,6 +59,8 @@
   *     defined (thanks to Steven Morehouse)
   *   - Fixed AVRISP-MKII programmer project reset line polarity inverted when the generated EEP file is loaded into the USB AVR's EEPROM and avr-dude is used
   *   - Fixed CDC and DFU bootloaders failing to compile when the bootloader section size is 8KB or more (thanks to Georg Glock)
+  *   - Fixed incorrect DFU version number reported to the host in the  DFU bootloader descriptors (thanks to Georg Glock)
+  *   - Fixed incorrect version hundredths value encoding in VERSION_BCD() macro (thanks to Georg Glock)
   *
   *  \section Sec_ChangeLog120219 Version 120219
   *  <b>New:</b>
index cee2d5e..c46129c 100644 (file)
@@ -94,8 +94,8 @@
                         *
                         *  \param[in]  x  Version number to encode as a 16-bit little-endian number, as a floating point number.
                         */
-                       #define VERSION_BCD(x)                    CPU_TO_LE16((((VERSION_TENS(x) << 4) | VERSION_ONES(x)) << 8) | \
-                                                                 ((VERSION_TENTHS(x) << 4) | VERSION_HUNDREDTHS(x)))
+                       #define VERSION_BCD(x)                    CPU_TO_LE16((VERSION_TENS(x) << 12)  | (VERSION_ONES(x) << 8) | \
+                                                                             (VERSION_TENTHS(x) << 4) | (VERSION_HUNDREDTHS(x) << 0) )
 
                        /** String language ID for the English language. Should be used in \ref USB_Descriptor_String_t descriptors
                         *  to indicate that the English language is supported by the device in its string descriptors.
        /* Private Interface - For use in library only: */
        #if !defined(__DOXYGEN__)
                /* Macros: */
-                       #define VERSION_TENS(x)                   (int)((x) / 10)
-                       #define VERSION_ONES(x)                   (int)((x) - (10 * VERSION_TENS(x)))
-                       #define VERSION_TENTHS(x)                 (int)(((x) - (int)(x)) * 10)
-                       #define VERSION_HUNDREDTHS(x)             (int)((((x) - (int)(x)) * 100) - (10 * VERSION_TENTHS(x)))
+                       #define VERSION_TENS(x)                   (int)((int)(x) / 10)
+                       #define VERSION_ONES(x)                   (int)((int)(x) % 10)
+                       #define VERSION_TENTHS(x)                 (int)(((x *  1) - ((int)(x *  1))) * 10)
+                       #define VERSION_HUNDREDTHS(x)             (int)(((x * 10) - ((int)(x * 10))) * 10)
        #endif
 
        /* Disable C linkage for C++ Compilers: */