WS2812

Dependents:   pelion-example-common

Revision:
1:aadbf08c62a2
Parent:
0:0b79cafcb387
Child:
2:6e647820f587
diff -r 0b79cafcb387 -r aadbf08c62a2 WS2812.h
--- a/WS2812.h	Thu Feb 12 19:17:10 2015 +0000
+++ b/WS2812.h	Thu Feb 12 20:20:10 2015 +0000
@@ -21,12 +21,8 @@
 
 #include "mbed.h"
 
-#define WS1 0x38
-#define WS0 0x30
-#define SPICLK 5000000
 #define FRAME_SIZE 24
 
-
 //!Library for the WS2812 RGB LED with integrated controller
 /*!
 The WS2812 is controller that is built into a range of LEDs
@@ -34,23 +30,71 @@
 class WS2812
 {
 public:
-    //!Creates an instance of the class.
-    /*!
-    Connect WS2812 address addr using digital pins
+    enum BrightnessControl { OFF, GLOBAL, PER_PIXEL };
+
+    /**
+    *   Constructor
+    *
+    * @param pin Output pin. Connect to "Din" on the first WS2812 in the strip
+    * @param size Number of LEDs in your strip
+    * @param zeroHigh How many NOPs to insert to ensure TOH is properly generated. See library description for more information.
+    * @param zeroLow How many NOPs to insert to ensure TOL is properly generated. See library description for more information.
+    * @param oneHigh How many NOPs to insert to ensure T1H is properly generated. See library description for more information.
+    * @param oneLow How many NOPs to insert to ensure T1L is properly generated. See library description for more information.
+    *
     */
-    WS2812(PinName d, int size);
+    WS2812(PinName pin, int size, int zeroHigh, int zeroLow, int oneHigh, int oneLow);
 
     /*!
     Destroys instance.
     */
     ~WS2812();
     
+    /**
+    *   Sets the timing parameters for the bit-banged signal
+    *
+    * @param zeroHigh How many NOPs to insert to ensure TOH is properly generated. See library description for more information.
+    * @param zeroLow How many NOPs to insert to ensure TOL is properly generated. See library description for more information.
+    * @param oneHigh How many NOPs to insert to ensure T1H is properly generated. See library description for more information.
+    * @param oneLow How many NOPs to insert to ensure T1L is properly generated. See library description for more information.
+    *
+    */
     void setDelays(int zeroHigh, int zeroLow, int oneHigh, int oneLow);
 
+    /**
+    *   Sets the timing parameters for the bit-banged signal
+    *
+    * @param buf Pointer to the PixelArray buffer
+    * @param r_offset The offset where each each pixel pulls its red component. Wraps to beginning if end is reached.
+    * @param g_offset The offset where each each pixel pulls its green component. Wraps to beginning if end is reached.
+    * @param b_offset The offset where each each pixel pulls its blue component. Wraps to beginning if end is reached.
+    *
+    */
+    void write_offsets(int buf[], int r_offset = 0, int g_offset = 0, int b_offset = 0);
+
+
+    /**
+    *   Write the given buffer to the LED strip
+    *
+    * @param buf Pointer to the PixelArray buffer
+    *
+    */
     void write(int buf[]);
-    void write_offsets(int buf[],int r_offset=0, int g_offset=0, int b_offset=0);
-
-    void useII(int d);
+    
+    /**
+    *   Sets the brightness mode
+    *
+    * @param bc The brightness control. Defaults to OFF. Possible values include OFF, GLOBAL, and PER_PIXEL
+    *
+    */
+    void useII(BrightnessControl bc);
+    
+    /**
+    *   Sets the global brightness level.
+    *
+    * @param II The brightness level. Possible values include 0 - 255 (0x00 - 0xFF).
+    *
+    */
     void setII(unsigned char II);
     
 
@@ -60,7 +104,7 @@
     int __size;
     int __zeroHigh, __zeroLow, __oneHigh, __oneLow;
     unsigned char __II;
-    int __use_II;
+    BrightnessControl __use_II;
     bool *__transmitBuf;
     void __loadBuf(int buf[],int r_offset=0, int g_offset=0, int b_offset=0);
     PinName __outPin;