Abstract class for 'constant current (CC)' LED driver component. Including "LedPwmOutCC API" class.

Dependents:   PCA995xA

Revision:
0:6d2f6c0fcc40
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/LedPwmOutCC.h	Wed Mar 04 10:14:02 2015 +0000
@@ -0,0 +1,86 @@
+/** LedPwmOutCC class for LED driver component
+ *
+ *  @author  Akifumi (Tedd) OKANO, NXP Semiconductors
+ *  @version 0.5
+ *  @date    04-Mar-2015
+ *
+ *  Released under the Apache 2 license
+ */
+
+#ifndef     MBED_LedPwmOutCC
+#define     MBED_LedPwmOutCC
+
+#include    "mbed.h"
+#include    "CompLedDvrCC.h"
+
+/** LedPwmOutCC class
+ *
+ *  @class LedPwmOutCC
+ *
+ *  "LedPwmOutCC" class works like "PwmOut" class of mbed-SDK. 
+ *  This class provides API on device's pin level with abstracting the LED controller. 
+ *
+ *  Example:
+ *  @code
+ *  #include "mbed.h"
+ *  #include "PCA9956A.h"
+ *  
+ *  PCA9956A    led_cntlr( p28, p27, 0xC4 );  //  SDA, SCL, Slave_address(option)
+ *  LedPwmOutCC led( led_cntlr, L0 );
+ *  
+ *  int main()
+ *  {
+ *      while( 1 ) {
+ *          for( float p = 0.0f; p < 1.0f; p += 0.1f ) {
+ *              led     = p;
+ *              wait( 0.1 );
+ *          }
+ *      }
+ *  }
+ *  @endcode
+ */
+class LedPwmOutCC
+{
+public:
+
+    /** Create a LedPwmOutCC instance connected to a pin on the LED driver
+     *  A pin which performs PWM and constant current sink
+     *
+     * @param ledp          Instance of a device (LED driver)
+     * @param pin_name      Specifying pin by LedPinName like 'L7'. 
+     *
+     * @note
+     *   Pin names of LED driver are defined like L0, L1, L2.. It is not like "LED0". 
+     *   Because we cannot use mbed reserved symbols. 
+     */
+    LedPwmOutCC( CompLedDvrCC &ledp, LedPinName pin_name );
+
+    /** Destractor
+     */
+    virtual ~LedPwmOutCC();
+
+    /** Set PWM duty-cycle
+     *
+     * @param v             Ratio of duty-cycle. '0.0' for 0 %. '1.0' for 99.6 % on PCA9956A and 100 % for PCA9955A.
+     */
+    virtual void    pwm( float v );
+
+    /** Set output current
+     *
+     * @param v             Ratio of output current. 1.0 for 100 % output of hardware setting
+     */
+    virtual void    current( float v );
+    
+    /** A shorthand for pwm()
+     */
+    LedPwmOutCC&      operator= ( float rhs );
+
+private:
+    CompLedDvrCC    *leddvrp;
+    LedPinName      pin;
+
+    void    pwm( int pin, float value );
+}
+;
+
+#endif  //  MBED_LedPwmOutCC