Abstract class for 'constant current (CC)' LED driver component. Including "LedPwmOutCC API" class.
Revision 0:6d2f6c0fcc40, committed 2015-03-04
- Comitter:
- nxp_ip
- Date:
- Wed Mar 04 10:14:02 2015 +0000
- Child:
- 1:877856770b37
- Commit message:
- Initial version
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/CompLedDvrCC.cpp Wed Mar 04 10:14:02 2015 +0000
@@ -0,0 +1,6 @@
+
+#include "mbed.h"
+#include "CompLedDvrCC.h"
+
+CompLedDvrCC::CompLedDvrCC() {}
+CompLedDvrCC::~CompLedDvrCC() {}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/CompLedDvrCC.h Wed Mar 04 10:14:02 2015 +0000
@@ -0,0 +1,74 @@
+/** Abstract class for 'constant-current (CC)' LED driver component
+ *
+ * Abstract class for CC-LED driver family
+ * No instance can be made from this class
+ *
+ * @author Akifumi (Tedd) OKANO, NXP Semiconductors
+ * @version 0.5
+ * @date 04-Mar-2015
+ *
+ * Released under the Apache 2 license License
+ */
+
+#ifndef MBED_CompLedDvrCC
+#define MBED_CompLedDvrCC
+
+#include "mbed.h"
+
+typedef enum {
+ /** Pin names of LED driver. Those are L0 .. L3, not like "LED0" to avoid mbed board LED names */
+ L0, /**< LED0 pin */
+ L1, /**< LED2 pin */
+ L2, /**< LED2 pin */
+ L3, /**< LED2 pin */
+ L4, /**< LED2 pin */
+ L5, /**< LED2 pin */
+ L6, /**< LED2 pin */
+ L7, /**< LED2 pin */
+ L8, /**< LED2 pin */
+ L9, /**< LED2 pin */
+ L10, /**< LED2 pin */
+ L11, /**< LED2 pin */
+ L12, /**< LED2 pin */
+ L13, /**< LED2 pin */
+ L14, /**< LED2 pin */
+ L15, /**< LED2 pin */
+ L16, /**< LED2 pin */
+ L17, /**< LED2 pin */
+ L18, /**< LED2 pin */
+ L19, /**< LED2 pin */
+ L20, /**< LED2 pin */
+ L21, /**< LED2 pin */
+ L22, /**< LED2 pin */
+ L23, /**< LED23 pin */
+ L_NC = ~0x0L /**< for when the pin is left no-connection */
+} LedPinName;
+
+
+/** Abstract class for CC-LED driver component
+ *
+ * @class CompLedDvrCC
+ *
+ * Abstract class for LED driver family
+ * No instance can be made from this class
+ */
+class CompLedDvrCC
+{
+public:
+ /** Default constructor */
+ CompLedDvrCC();
+
+ /** Destructor */
+ virtual ~CompLedDvrCC();
+
+ /** Virtual function to define standard function of the component */
+ virtual void pwm( int port, float v ) = 0;
+
+ /** Virtual function to define standard function of the component */
+ virtual void current( int port, float v ) = 0;
+}
+;
+
+#endif // MBED_CompLedDvrCC
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CompLedDvrCCAPI.h Wed Mar 04 10:14:02 2015 +0000 @@ -0,0 +1,1 @@ +#include "LedPwmOutCC.h"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/LedPwmOutCC.cpp Wed Mar 04 10:14:02 2015 +0000
@@ -0,0 +1,27 @@
+#include "mbed.h"
+#include "LedPwmOutCC.h"
+
+LedPwmOutCC::LedPwmOutCC( CompLedDvrCC &ledp, LedPinName pin_name )
+ : leddvrp( &ledp ), pin( pin_name )
+{
+ pwm( 0.0 );
+}
+
+LedPwmOutCC::~LedPwmOutCC()
+{
+}
+
+void LedPwmOutCC::pwm( float v )
+{
+ leddvrp->pwm( pin, v );
+}
+
+void LedPwmOutCC::current( float v )
+{
+ leddvrp->current( pin, v );
+}
+LedPwmOutCC& LedPwmOutCC::operator=( float rhs )
+{
+ pwm( rhs );
+ return ( *this );
+}
\ No newline at end of file
--- /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