LP55231 driver

LP55231.cpp

Committer:
duchonic
Date:
2018-08-22
Revision:
2:79b94bf1cf59
Parent:
1:4ab9f195e998

File content as of revision 2:79b94bf1cf59:

/**
  * @file LP55231.cpp
  *
  */

#include "LP55231.h"
#include "main.h"

LP55231::LP55231(PinName sda, PinName scl, uint8_t addr) : m_i2c(sda, scl), m_addr(addr) {}

uint8_t LP55231::LP55231_Init(void){
  
  SetRegister(REG_ENGINE_CNTRL1, 0x40);
  SetRegister(REG_MISC, 0x53);

  return 0;
}

LP55231::~LP55231(void) {
};


void LP55231::LP55231_SetLed(LP55231_leds led, LP55231_colors color)
{
    switch(led)
    {
        case LP55231_LED1:
        {
            SetRegister(REG_D7_PWM, color.red); /* RED1   */
            SetRegister(REG_D1_PWM, color.green); /* GREEN1 */
            SetRegister(REG_D2_PWM, color.blue); /* BLUE1  */   
            break;    
        }   
        case LP55231_LED2:
        {
            SetRegister(REG_D8_PWM, color.red); /* RED2   */
            SetRegister(REG_D3_PWM, color.green); /* GREEN2 */
            SetRegister(REG_D4_PWM, color.blue); /* BLUE2  */
            break;
        }
        case LP55231_LED3:
        {
            SetRegister(REG_D9_PWM, color.red); /* RED3   */
            SetRegister(REG_D5_PWM, color.green); /* GREEN3 */
            SetRegister(REG_D6_PWM, color.blue); /* BLUE3  */
            break;          
        }
        default:
        {
            ASSERT(0);
            break;
        }
    }
}

// --- Private Functions --- //

void LP55231::SetRegister(uint8_t registerAddr, uint8_t data)
{
    char data_write[2];
    data_write[0] = registerAddr;
    data_write[1] = data;
    m_i2c.write(m_addr, data_write, 2); 
}