Commit 66f14d44 authored by Dean Camera's avatar Dean Camera
Browse files

Added LEDs_ToggleLEDs() function to several board LED drivers which were...

Added LEDs_ToggleLEDs() function to several board LED drivers which were missing it (thanks to Andrei Krainev).

Simplify some of the LED driver functions to produce more compact code.
parent 7aaf9b20
...@@ -115,12 +115,12 @@ ...@@ -115,12 +115,12 @@
static inline void LEDs_ChangeLEDs(const uint8_t LEDMask, static inline void LEDs_ChangeLEDs(const uint8_t LEDMask,
const uint8_t ActiveMask) const uint8_t ActiveMask)
{ {
PORTD = ((PORTD & ~(LEDMask & LEDS_ALL_LEDS)) | (ActiveMask & LEDS_ALL_LEDS)); PORTD = ((PORTD & ~LEDMask) | ActiveMask);
} }
static inline void LEDs_ToggleLEDs(const uint8_t LEDMask) static inline void LEDs_ToggleLEDs(const uint8_t LEDMask)
{ {
PORTD = (PORTD ^ (LEDMask & LEDS_ALL_LEDS)); PORTD ^= LEDMask;
} }
static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT; static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT;
......
...@@ -120,6 +120,11 @@ ...@@ -120,6 +120,11 @@
PORTB = ((PORTB & ~LedMask) | ActiveMask); PORTB = ((PORTB & ~LedMask) | ActiveMask);
} }
static inline void LEDs_ToggleLEDs(const uint8_t LEDMask)
{
PORTB ^= LEDMask;
}
static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT; static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT;
static inline uint8_t LEDs_GetLEDs(void) static inline uint8_t LEDs_GetLEDs(void)
{ {
......
...@@ -114,7 +114,7 @@ ...@@ -114,7 +114,7 @@
static inline void LEDs_ToggleLEDs(const uint8_t LEDMask) static inline void LEDs_ToggleLEDs(const uint8_t LEDMask)
{ {
PORTD = (PORTD ^ (LEDMask & LEDS_ALL_LEDS)); PORTD ^= LEDMask;
} }
static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT; static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT;
......
...@@ -108,7 +108,7 @@ ...@@ -108,7 +108,7 @@
static inline void LEDs_ToggleLEDs(const uint8_t LEDMask) static inline void LEDs_ToggleLEDs(const uint8_t LEDMask)
{ {
PORTD = (PORTD ^ (LEDMask & LEDS_ALL_LEDS)); PORTD ^= LEDMask;
} }
static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT; static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT;
......
...@@ -122,7 +122,7 @@ ...@@ -122,7 +122,7 @@
#if defined(__cplusplus) #if defined(__cplusplus)
} }
#endif #endif
#endif #endif
/** @} */ /** @} */
...@@ -117,7 +117,7 @@ ...@@ -117,7 +117,7 @@
static inline void LEDs_ToggleLEDs(const uint8_t LEDMask) static inline void LEDs_ToggleLEDs(const uint8_t LEDMask)
{ {
PORTD = (PORTD ^ (LEDMask & LEDS_ALL_LEDS)); PORTD ^= LEDMask;
} }
static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT; static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT;
......
...@@ -112,12 +112,12 @@ ...@@ -112,12 +112,12 @@
static inline void LEDs_ChangeLEDs(const uint8_t LEDMask, static inline void LEDs_ChangeLEDs(const uint8_t LEDMask,
const uint8_t ActiveMask) const uint8_t ActiveMask)
{ {
PORTD = ((PORTD & ~(LEDMask & LEDS_ALL_LEDS)) | (ActiveMask & LEDS_ALL_LEDS)); PORTD = ((PORTD & ~LEDMask) | ActiveMask);
} }
static inline void LEDs_ToggleLEDs(const uint8_t LEDMask) static inline void LEDs_ToggleLEDs(const uint8_t LEDMask)
{ {
PORTD = (PORTD ^ (LEDMask & LEDS_ALL_LEDS)); PORTD ^= LEDMask;
} }
static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT; static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT;
......
...@@ -117,7 +117,7 @@ ...@@ -117,7 +117,7 @@
static inline void LEDs_ToggleLEDs(const uint8_t LEDMask) static inline void LEDs_ToggleLEDs(const uint8_t LEDMask)
{ {
PORTD = (PORTD ^ (LEDMask & LEDS_ALL_LEDS)); PORTD ^= LEDMask;
} }
static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT; static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT;
......
...@@ -110,6 +110,11 @@ ...@@ -110,6 +110,11 @@
PORTB = ((PORTB & ~LedMask) | ActiveMask); PORTB = ((PORTB & ~LedMask) | ActiveMask);
} }
static inline void LEDs_ToggleLEDs(const uint8_t LEDMask)
{
PORTB ^= LEDMask;
}
static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT; static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT;
static inline uint8_t LEDs_GetLEDs(void) static inline uint8_t LEDs_GetLEDs(void)
{ {
......
...@@ -103,12 +103,12 @@ ...@@ -103,12 +103,12 @@
static inline void LEDs_ChangeLEDs(const uint8_t LEDMask, static inline void LEDs_ChangeLEDs(const uint8_t LEDMask,
const uint8_t ActiveMask) const uint8_t ActiveMask)
{ {
PORTB = ((PORTB | (LEDMask & LEDS_ALL_LEDS)) & (~ActiveMask & LEDS_ALL_LEDS)); PORTB = ((PORTB | LEDMask) & ~ActiveMask);
} }
static inline void LEDs_ToggleLEDs(const uint8_t LEDMask) static inline void LEDs_ToggleLEDs(const uint8_t LEDMask)
{ {
PORTD = (PORTB ^ (LEDMask & LEDS_ALL_LEDS)); PORTB ^= LEDMask;
} }
static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT; static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT;
......
...@@ -46,6 +46,7 @@ ...@@ -46,6 +46,7 @@
* - Fixed USBtoSerial and Benito project SetLineEncoding calls failing if the USART is busy, due to the RX ISR delaying the control * - Fixed USBtoSerial and Benito project SetLineEncoding calls failing if the USART is busy, due to the RX ISR delaying the control
* request handler * request handler
* - Fixed LowLevel PrinterHost demo not sending control requests to the attached printer with the correct printer interface wIndex value * - Fixed LowLevel PrinterHost demo not sending control requests to the attached printer with the correct printer interface wIndex value
* - Added LEDs_ToggleLEDs() function to several board LED drivers which were missing it (thanks to Andrei Krainev)
* *
* \section Sec_ChangeLog100807 Version 100807 * \section Sec_ChangeLog100807 Version 100807
* <b>New:</b> * <b>New:</b>
......
...@@ -19,11 +19,12 @@ ...@@ -19,11 +19,12 @@
* are open design, and all are available for purchase as completed development boards suitable for project development. * are open design, and all are available for purchase as completed development boards suitable for project development.
* *
* - AT90USB162 Breadboard PCB (Russian): http://microsin.ru/content/view/685/44/ * - AT90USB162 Breadboard PCB (Russian): http://microsin.ru/content/view/685/44/
* - AVR-USB-162, a USBKEY-like development board for the AT90USB162: http://olimex.com/dev/avr-usb-162.html
* - Benito #7, a no-frills USB board: http://www.dorkbotpdx.org/wiki/benito * - Benito #7, a no-frills USB board: http://www.dorkbotpdx.org/wiki/benito
* - JM-DB-U2, an ATMEGA32U2 development board: http://u2.mattair.net/index.html * - JM-DB-U2, an ATMEGA32U2 development board: http://u2.mattair.net/index.html
* - Micropendous, an open design/source set of AVR USB development boards: http://micropendous.org/ * - Micropendous, an open design/source set of AVR USB development boards: http://micropendous.org/
* - Minimus USB, a board specially designed for PSGroove: http://www.minimususb.com/
* - Nanduino, a do-it-yourself AT90USB162 board: http://www.makestuff.eu/wordpress/?page_id=569 * - Nanduino, a do-it-yourself AT90USB162 board: http://www.makestuff.eu/wordpress/?page_id=569
* - AVR-USB-162, a USBKEY-like development board for the AT90USB162: http://olimex.com/dev/avr-usb-162.html
* - Teensy and Teensy++, two other AVR USB development boards: http://www.pjrc.com/teensy/index.html * - Teensy and Teensy++, two other AVR USB development boards: http://www.pjrc.com/teensy/index.html
* - U2DIL/U4DIL, a set of DIP layout USB AVR boards: http://www.reworld.eu/re/en/products/u2dil/ * - U2DIL/U4DIL, a set of DIP layout USB AVR boards: http://www.reworld.eu/re/en/products/u2dil/
* - USBFOO 2, AT90USB162 based development board: http://shop.kernelconcepts.de/product_info.php?products_id=102 * - USBFOO 2, AT90USB162 based development board: http://shop.kernelconcepts.de/product_info.php?products_id=102
...@@ -88,4 +89,5 @@ ...@@ -88,4 +89,5 @@
* - Elektor Magazine, "My First AVR-USB" by Antoine Authier (feature), January 2010 Issue * - Elektor Magazine, "My First AVR-USB" by Antoine Authier (feature), January 2010 Issue
* - Elektor Magazine, "USB is Cool/Sucks" by Jerry Jacobs and Chris Vossen (minor mention), January 2010 Issue * - Elektor Magazine, "USB is Cool/Sucks" by Jerry Jacobs and Chris Vossen (minor mention), January 2010 Issue
* - Elektor Magazine, "20 x Open Source" by Jens Nickel, March 2010 Issue * - Elektor Magazine, "20 x Open Source" by Jens Nickel, March 2010 Issue
* - Circuit Cellar Magazine, "Advanced USB Design Debugging" by Collin O'Flynn, August 2010 Issue
*/ */
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment