⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pmic_tcled.cpp

📁 i.mx27 soc for wince 6.0
💻 CPP
📖 第 1 页 / 共 5 页
字号:
            break;

    }

    if(! DeviceIoControl(hPMI, PMIC_IOCTL_LLA_WRITE_REG, &param,
              sizeof(param), NULL, 0, NULL, NULL))
        return PMIC_ERROR;

    DEBUGMSG(ZONE_FUNC, (TEXT("-%s()\r\n"), __WFUNCTION__));

    return PMIC_SUCCESS;
}


//-----------------------------------------------------------------------------
//
// Function: PmicTCLEDFunLightGetCurrentLevel
//
// This function retrieves the current level when Tri-Color LED is operating
// in fun light mode.
//
// Parameters:
//      bank
//           [in] bank.
//      channel
//           [in] channel.
//      level
//           [out] variable to receive current level.
//
// Returns:
//      PMIC_STATUS.
//
//-----------------------------------------------------------------------------
PMIC_STATUS PmicTCLEDFunLightGetCurrentLevel(FUNLIGHT_BANK bank,
                                             FUNLIGHT_CHANNEL channel,
                                             TCLED_CUR_LEVEL* level)
{
    UINT32 param;
    UINT32 temp;

    DEBUGMSG(ZONE_FUNC, (TEXT("+%s()\r\n"), __WFUNCTION__));

    switch(bank)
    {
        case TCLED_FUN_BANK1:
            param = MC13783_LED_CTL3_ADDR;
            break;

        case TCLED_FUN_BANK2:
            param = MC13783_LED_CTL4_ADDR;
            break;

        case TCLED_FUN_BANK3:
            param = MC13783_LED_CTL5_ADDR;
            break;
    }

    if(!DeviceIoControl(hPMI, PMIC_IOCTL_LLA_READ_REG, &param, sizeof(param),
                        &temp, sizeof(temp), NULL, NULL))
    {
        return PMIC_ERROR;
    }

    switch(channel)
    {
        case TCLED_FUN_CHANNEL1:
            *level = (TCLED_CUR_LEVEL)CSP_BITFEXT(temp, MC13783_LED_CTL3_LEDR1);
            break;

       case TCLED_FUN_CHANNEL2:
            *level = (TCLED_CUR_LEVEL)CSP_BITFEXT(temp, MC13783_LED_CTL3_LEDG1);
            break;

        case TCLED_FUN_CHANNEL3:
            *level = (TCLED_CUR_LEVEL)CSP_BITFEXT(temp, MC13783_LED_CTL3_LEDB1);
            break;
    }

    DEBUGMSG(ZONE_FUNC, (TEXT("-%s()\r\n"), __WFUNCTION__));

    return PMIC_SUCCESS;
}


//-----------------------------------------------------------------------------
//
// Function: PmicTCLEDFunLightSetCycleTime
//
// This function sets the cycle time when Tri-Color LED is operating in fun
// light mode.
//
// Parameters:
//      bank
//           [in] bank.
//      ct
//           [in] cycle time.
//
// Returns:
//      PMIC_STATUS.
//
//-----------------------------------------------------------------------------
PMIC_STATUS PmicTCLEDFunLightSetCycleTime(FUNLIGHT_BANK bank,
                                          TCLED_FUN_CYCLE_TIME ct)
{
    PMIC_PARAM_LLA_WRITE_REG param;

    DEBUGMSG(ZONE_FUNC, (TEXT("+%s()\r\n"), __WFUNCTION__));
    if (ct > MC13783_MAX_FUNLIGHT_CYCLE_TIME)
    {
        DEBUGMSG(ZONE_ERROR, (_T("PmicTCLEDFunLightSetCycleTime:Invalid ")
                              _T("Parameter\r\n")));
        return PMIC_PARAMETER_ERROR;
    }

    switch(bank)
    {
        case TCLED_FUN_BANK1:
            param.data = CSP_BITFVAL(MC13783_LED_CTL3_TC1PERIOD, ct);
            param.mask = CSP_BITFMASK(MC13783_LED_CTL3_TC1PERIOD);
            param.addr = MC13783_LED_CTL3_ADDR;
            break;

        case TCLED_FUN_BANK2:
            param.data = CSP_BITFVAL(MC13783_LED_CTL4_TC2PERIOD, ct);
            param.mask = CSP_BITFMASK(MC13783_LED_CTL4_TC2PERIOD);
            param.addr = MC13783_LED_CTL4_ADDR;
            break;

        case TCLED_FUN_BANK3:
            param.data = CSP_BITFVAL(MC13783_LED_CTL5_TC3PERIOD, ct);
            param.mask = CSP_BITFMASK(MC13783_LED_CTL5_TC3PERIOD);
            param.addr = MC13783_LED_CTL5_ADDR;
            break;

    }

    if(! DeviceIoControl(hPMI, PMIC_IOCTL_LLA_WRITE_REG, &param,
              sizeof(param), NULL, 0, NULL, NULL))
        return PMIC_ERROR;

    DEBUGMSG(ZONE_FUNC, (TEXT("-%s()\r\n"), __WFUNCTION__));

    return PMIC_SUCCESS;
}


//-----------------------------------------------------------------------------
//
// Function: PmicTCLEDFunLightGetCycleTime
//
// This function retrieves the cycle time when Tri-Color LED is operating in
// fun light mode.
//
// Parameters:
//      bank
//           [in] bank.
//      ct
//           [out] variable to receive cycle time.
//
// Returns:
//      PMIC_STATUS.
//
//-----------------------------------------------------------------------------
PMIC_STATUS PmicTCLEDFunLightGetCycleTime(FUNLIGHT_BANK bank,
                                          TCLED_FUN_CYCLE_TIME* ct)
{
    UINT32 param;
    UINT32 temp;

    DEBUGMSG(ZONE_FUNC, (TEXT("+%s()\r\n"), __WFUNCTION__));

    switch(bank)
    {
        case TCLED_FUN_BANK1:
            param = MC13783_LED_CTL3_ADDR;
            break;

        case TCLED_FUN_BANK2:
            param = MC13783_LED_CTL4_ADDR;
            break;

        case TCLED_FUN_BANK3:
            param = MC13783_LED_CTL5_ADDR;
            break;
    }

    if(!DeviceIoControl(hPMI, PMIC_IOCTL_LLA_READ_REG, &param, sizeof(param),
              &temp, sizeof(temp), NULL, NULL))
    {
        return PMIC_ERROR;
    }

    *ct = (TCLED_FUN_CYCLE_TIME)CSP_BITFEXT(temp, MC13783_LED_CTL3_TC1PERIOD);

    DEBUGMSG(ZONE_FUNC, (TEXT("-%s()\r\n"), __WFUNCTION__));

    return PMIC_SUCCESS;
}


//-----------------------------------------------------------------------------
//
// Function: PmicTCLEDFunLightSetDutyCycle
//
// This function sets the duty cycle when Tri-Color LED is operating in fun
// light mode. The valid duty cycle settings are integers from 0 to 31.
//
// Parameters:
//      bank
//           [in] bank.
//      channel
//           [in] channel.
//      dc
//           [in] duty cycle.
//
// Returns:
//      PMIC_STATUS.
//
//-----------------------------------------------------------------------------
PMIC_STATUS PmicTCLEDFunLightSetDutyCycle(FUNLIGHT_BANK bank,
                                          FUNLIGHT_CHANNEL channel,
                                          unsigned char dc)
{
    PMIC_PARAM_LLA_WRITE_REG param;

    DEBUGMSG(ZONE_FUNC, (TEXT("+%s()\r\n"), __WFUNCTION__));

    if (dc > MC13783_MAX_FUNLIGHT_DUTY_CYCLE)
    {
        DEBUGMSG(ZONE_ERROR, (_T("PmicTCLEDFunLightSetDutyCycle:Invalid ")
                              _T("Parameter\r\n")));
        return PMIC_PARAMETER_ERROR;
    }

    switch(bank)
    {
        case TCLED_FUN_BANK1:
            switch(channel)
            {
                case TCLED_FUN_CHANNEL1:
                    param.data = CSP_BITFVAL(MC13783_LED_CTL3_LEDR1DC, dc);
                    param.mask = CSP_BITFMASK(MC13783_LED_CTL3_LEDR1DC);
                    break;

                case TCLED_FUN_CHANNEL2:
                    param.data = CSP_BITFVAL(MC13783_LED_CTL3_LEDG1DC, dc);
                    param.mask = CSP_BITFMASK(MC13783_LED_CTL3_LEDG1DC);
                    break;

                case TCLED_FUN_CHANNEL3:
                    param.data = CSP_BITFVAL(MC13783_LED_CTL3_LEDB1DC, dc);
                    param.mask = CSP_BITFMASK(MC13783_LED_CTL3_LEDB1DC);
                    break;
            }
            param.addr = MC13783_LED_CTL3_ADDR;
            break;

        case TCLED_FUN_BANK2:
            switch(channel)
            {
                case TCLED_FUN_CHANNEL1:
                    param.data = CSP_BITFVAL(MC13783_LED_CTL4_LEDR2DC, dc);
                    param.mask = CSP_BITFMASK(MC13783_LED_CTL4_LEDR2DC);
                    break;

                case TCLED_FUN_CHANNEL2:
                    param.data = CSP_BITFVAL(MC13783_LED_CTL4_LEDG2DC, dc);
                    param.mask = CSP_BITFMASK(MC13783_LED_CTL4_LEDG2DC);
                    break;

                case TCLED_FUN_CHANNEL3:
                    param.data = CSP_BITFVAL(MC13783_LED_CTL4_LEDB2DC, dc);
                    param.mask = CSP_BITFMASK(MC13783_LED_CTL4_LEDB2DC);
                    break;
            }
            param.addr = MC13783_LED_CTL4_ADDR;
            break;

        case TCLED_FUN_BANK3:
            switch(channel)
            {
                case TCLED_FUN_CHANNEL1:
                    param.data = CSP_BITFVAL(MC13783_LED_CTL5_LEDR3DC, dc);
                    param.mask = CSP_BITFMASK(MC13783_LED_CTL5_LEDR3DC);
                    break;

                case TCLED_FUN_CHANNEL2:
                    param.data = CSP_BITFVAL(MC13783_LED_CTL5_LEDG3DC, dc);
                    param.mask = CSP_BITFMASK(MC13783_LED_CTL5_LEDG3DC);
                    break;

                case TCLED_FUN_CHANNEL3:
                    param.data = CSP_BITFVAL(MC13783_LED_CTL5_LEDB3DC, dc);
                    param.mask = CSP_BITFMASK(MC13783_LED_CTL5_LEDB3DC);
                    break;
            }
            param.addr = MC13783_LED_CTL5_ADDR;
            break;

    }
    if(! DeviceIoControl(hPMI, PMIC_IOCTL_LLA_WRITE_REG, &param,
              sizeof(param), NULL, 0, NULL, NULL))
        return PMIC_ERROR;

    DEBUGMSG(ZONE_FUNC, (TEXT("-%s()\r\n"), __WFUNCTION__));

    return PMIC_SUCCESS;
}


//-----------------------------------------------------------------------------
//
// Function: PmicTCLEDFunLightGetDutyCycle
//
// This function retrieves the duty cycle when Tri-Color LED is operating in
// fun light mode.
//
// Parameters:
//      bank
//           [in] bank.
//      channel
//           [in] channel.
//      dc
//           [out] variable to receive duty cycle.
//
// Returns:
//      PMIC_STATUS.
//
//-----------------------------------------------------------------------------
PMIC_STATUS PmicTCLEDFunLightGetDutyCycle(FUNLIGHT_BANK bank,
                                          FUNLIGHT_CHANNEL channel,
                                          unsigned char* dc)
{
    UINT32 param;
    UINT32 temp;

    DEBUGMSG(ZONE_FUNC, (TEXT("+%s()\r\n"), __WFUNCTION__));

    switch(bank)
    {
        case TCLED_FUN_BANK1:
            param = MC13783_LED_CTL3_ADDR;
            break;

        case TCLED_FUN_BANK2:
            param = MC13783_LED_CTL4_ADDR;
            break;

        case TCLED_FUN_BANK3:
            param = MC13783_LED_CTL5_ADDR;
            break;
    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -