Abstract class for LED driver component. Including "LedPwmOut API" class.

Dependents:   PCA962x PCA9632

LedPwmOut.h

Committer:
nxp_ip
Date:
2015-03-19
Revision:
1:8a0aa36b236c
Parent:
0:a0e4342d3b3d

File content as of revision 1:8a0aa36b236c:

/** LedPwmOut class for LED driver component
 *
 *  @author  Akifumi (Tedd) OKANO, NXP Semiconductors
 *  @version 0.5
 *  @date    04-Mar-2015
 *
 *  Released under the Apache 2 license License
 */

#ifndef     MBED_LedPwmOut
#define     MBED_LedPwmOut

#include    "mbed.h"
#include    "CompLedDvr.h"

/** LedPwmOut class
 *
 *  @class LedPwmOut
 *
 *  "LedPwmOut" 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 "PCA9626.h"
 *  
 *  PCA9626     led_cntlr( p28, p27, 0xC4 );  //  SDA, SCL, Slave_address(option)
 *  LedPwmOut   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 LedPwmOut
{
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. 
     */
    LedPwmOut( CompLedDvr &ledp, LedPinName pin_name );

    /** Destractor
     */
    virtual ~LedPwmOut();

    /** 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 );

    /** A shorthand for pwm()
     */
    LedPwmOut&      operator= ( float rhs );

private:
    CompLedDvr      *leddvrp;
    LedPinName      pin;

    void    pwm( int pin, float value );
}
;

#endif  //  MBED_LedPwmOut