Abstract class for LED driver component. Including "LedPwmOut API" class.
Diff: LedPwmOut.h
- Revision:
- 0:a0e4342d3b3d
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/LedPwmOut.h Wed Mar 04 08:16:10 2015 +0000 @@ -0,0 +1,80 @@ +/** 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