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

📄 pmic_tcled.cpp

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

    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:
            *dc = CSP_BITFEXT(temp, MC13783_LED_CTL3_LEDR1DC);
            break;

       case TCLED_FUN_CHANNEL2:
            *dc = CSP_BITFEXT(temp, MC13783_LED_CTL3_LEDG1DC);
            break;

        case TCLED_FUN_CHANNEL3:
            *dc = CSP_BITFEXT(temp, MC13783_LED_CTL3_LEDB1DC);
            break;
    }

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

    return PMIC_SUCCESS;
}


//-----------------------------------------------------------------------------
//
// Function: PmicTCLEDFunLightBlendedRamps
//
// This function sets the fun light in Blended Ramps pattern.
// The calling program has to disable the bank before changing to a new
// pattern, if the bank is enabled.
//
//
// Parameters:
//      bank
//           [in] bank.
//      speed
//           [in] speed.
//
// Returns:
//      PMIC_STATUS.
//
//-----------------------------------------------------------------------------
PMIC_STATUS PmicTCLEDFunLightBlendedRamps(FUNLIGHT_BANK bank,
                                          TCLED_FUN_SPEED speed)
{
    PMIC_PARAM_LLA_WRITE_REG param;

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

    param.addr = MC13783_LED_CTL0_ADDR;

    switch(speed)
    {
        case TC_OFF:
            switch(bank)
            {
                case TCLED_FUN_BANK1:
                    param.data = CSP_BITFVAL(MC13783_LED_CTL0_FLBANK1,
                                             MC13783_LED_CTL0_FLBANK_DISABLE);
                    param.mask = CSP_BITFMASK(MC13783_LED_CTL0_FLBANK1);
                    break;

                case TCLED_FUN_BANK2:
                    param.data = CSP_BITFVAL(MC13783_LED_CTL0_FLBANK2,
                                             MC13783_LED_CTL0_FLBANK_DISABLE);
                    param.mask = CSP_BITFMASK(MC13783_LED_CTL0_FLBANK2);
                    break;

                case TCLED_FUN_BANK3:
                    param.data = CSP_BITFVAL(MC13783_LED_CTL0_FLBANK3,
                                             MC13783_LED_CTL0_FLBANK_DISABLE);
                    param.mask = CSP_BITFMASK(MC13783_LED_CTL0_FLBANK3);
                    break;
            }

            goto callioctl;
            break;

         case TC_SLOW:
            param.data = CSP_BITFVAL(MC13783_LED_CTL0_FLPATTERN,
                                     MC13783_BLENDED_RAMPS_SLOW);
            param.mask = CSP_BITFMASK(MC13783_LED_CTL0_FLPATTERN);
            break;

         case TC_FAST:
            param.data = CSP_BITFVAL(MC13783_LED_CTL0_FLPATTERN,
                                     MC13783_BLENDED_RAMPS_FAST);
            param.mask = CSP_BITFMASK(MC13783_LED_CTL0_FLPATTERN);
            break;
    }

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

    switch(bank)
    {
        case TCLED_FUN_BANK1:
            param.data = CSP_BITFVAL(MC13783_LED_CTL0_FLBANK1,
                                     MC13783_LED_CTL0_FLBANK_ENABLE);
            param.mask = CSP_BITFMASK(MC13783_LED_CTL0_FLBANK1);
            break;

        case TCLED_FUN_BANK2:
            param.data = CSP_BITFVAL(MC13783_LED_CTL0_FLBANK2,
                                     MC13783_LED_CTL0_FLBANK_ENABLE);
            param.mask = CSP_BITFMASK(MC13783_LED_CTL0_FLBANK2);
            break;

        case TCLED_FUN_BANK3:
            param.data = CSP_BITFVAL(MC13783_LED_CTL0_FLBANK3,
                                     MC13783_LED_CTL0_FLBANK_ENABLE);
            param.mask = CSP_BITFMASK(MC13783_LED_CTL0_FLBANK3);
            break;
    }

    callioctl:
    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: PmicTCLEDFunLightSawRamps
//
// This function sets the fun light in Saw Ramps pattern.
// The calling program has to disable the bank before changing to a new
// pattern, if the bank is enabled.
//
// Parameters:
//      bank
//           [in] bank.
//      speed
//           [in] speed.
//
// Returns:
//      PMIC_STATUS.
//
//-----------------------------------------------------------------------------
PMIC_STATUS PmicTCLEDFunLightSawRamps(FUNLIGHT_BANK bank, TCLED_FUN_SPEED speed)
{
    PMIC_PARAM_LLA_WRITE_REG param;

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

    param.addr = MC13783_LED_CTL0_ADDR;

    switch(speed)
    {
        case TC_OFF:
            switch(bank)
            {
                case TCLED_FUN_BANK1:
                    param.data = CSP_BITFVAL(MC13783_LED_CTL0_FLBANK1,
                                             MC13783_LED_CTL0_FLBANK_DISABLE);
                    param.mask = CSP_BITFMASK(MC13783_LED_CTL0_FLBANK1);
                    break;

                case TCLED_FUN_BANK2:
                    param.data = CSP_BITFVAL(MC13783_LED_CTL0_FLBANK2,
                                             MC13783_LED_CTL0_FLBANK_DISABLE);
                    param.mask = CSP_BITFMASK(MC13783_LED_CTL0_FLBANK2);
                    break;

                case TCLED_FUN_BANK3:
                    param.data = CSP_BITFVAL(MC13783_LED_CTL0_FLBANK3,
                                             MC13783_LED_CTL0_FLBANK_DISABLE);
                    param.mask = CSP_BITFMASK(MC13783_LED_CTL0_FLBANK3);
                    break;
            }

            goto callioctl;
            break;

         case TC_SLOW:
            param.data = CSP_BITFVAL(MC13783_LED_CTL0_FLPATTERN,
                                     MC13783_SAW_RAMPS_SLOW);
            param.mask = CSP_BITFMASK(MC13783_LED_CTL0_FLPATTERN);
            break;

         case TC_FAST:
            param.data = CSP_BITFVAL(MC13783_LED_CTL0_FLPATTERN,
                                     MC13783_SAW_RAMPS_FAST);
            param.mask = CSP_BITFMASK(MC13783_LED_CTL0_FLPATTERN);
            break;
    }

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

    switch(bank)
    {
        case TCLED_FUN_BANK1:
            param.data = CSP_BITFVAL(MC13783_LED_CTL0_FLBANK1,
                                     MC13783_LED_CTL0_FLBANK_ENABLE);
            param.mask = CSP_BITFMASK(MC13783_LED_CTL0_FLBANK1);
            break;

        case TCLED_FUN_BANK2:
            param.data = CSP_BITFVAL(MC13783_LED_CTL0_FLBANK2,
                                     MC13783_LED_CTL0_FLBANK_ENABLE);
            param.mask = CSP_BITFMASK(MC13783_LED_CTL0_FLBANK2);
            break;

        case TCLED_FUN_BANK3:
            param.data = CSP_BITFVAL(MC13783_LED_CTL0_FLBANK3,
                                     MC13783_LED_CTL0_FLBANK_ENABLE);
            param.mask = CSP_BITFMASK(MC13783_LED_CTL0_FLBANK3);
            break;
    }

    callioctl:
    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: PmicTCLEDFunLightBlendedBowtie
//
// This function sets the fun light in Blended Bowtie pattern.
// The calling program has to disable the bank before changing to a new
// pattern, if the bank is enabled.
//
// Parameters:
//      bank
//           [in] bank.
//      speed
//           [in] speed.
//
// Returns:
//      PMIC_STATUS.
//
//-----------------------------------------------------------------------------
PMIC_STATUS PmicTCLEDFunLightBlendedBowtie(FUNLIGHT_BANK bank,
                                           TCLED_FUN_SPEED speed)
{
    PMIC_PARAM_LLA_WRITE_REG param;

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

    param.addr = MC13783_LED_CTL0_ADDR;

    switch(speed)
    {
        case TC_OFF:
            switch(bank)
            {
                case TCLED_FUN_BANK1:
                    param.data = CSP_BITFVAL(MC13783_LED_CTL0_FLBANK1,
                                             MC13783_LED_CTL0_FLBANK_DISABLE);
                    param.mask = CSP_BITFMASK(MC13783_LED_CTL0_FLBANK1);
                    break;

                case TCLED_FUN_BANK2:
                    param.data = CSP_BITFVAL(MC13783_LED_CTL0_FLBANK2,
                                             MC13783_LED_CTL0_FLBANK_DISABLE);
                    param.mask = CSP_BITFMASK(MC13783_LED_CTL0_FLBANK2);
                    break;

                case TCLED_FUN_BANK3:
                    param.data = CSP_BITFVAL(MC13783_LED_CTL0_FLBANK3,
                                             MC13783_LED_CTL0_FLBANK_DISABLE);
                    param.mask = CSP_BITFMASK(MC13783_LED_CTL0_FLBANK3);
                    break;
            }

            goto callioctl;
            break;

         case TC_SLOW:
            param.data = CSP_BITFVAL(MC13783_LED_CTL0_FLPATTERN,
                                     MC13783_BLENDED_BOWTIE_RAMPS_SLOW);
            param.mask = CSP_BITFMASK(MC13783_LED_CTL0_FLPATTERN);
            break;

         case TC_FAST:
            param.data = CSP_BITFVAL(MC13783_LED_CTL0_FLPATTERN,
                                     MC13783_BLENDED_BOWTIE_RAMPS_FAST);
            param.mask = CSP_BITFMASK(MC13783_LED_CTL0_FLPATTERN);
            break;
    }

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

    switch(bank)
    {
        case TCLED_FUN_BANK1:
            param.data = CSP_BITFVAL(MC13783_LED_CTL0_FLBANK1,
                                     MC13783_LED_CTL0_FLBANK_ENABLE);
            param.mask = CSP_BITFMASK(MC13783_LED_CTL0_FLBANK1);
            break;

        case TCLED_FUN_BANK2:
            param.data = CSP_BITFVAL(MC13783_LED_CTL0_FLBANK2,
                                     MC13783_LED_CTL0_FLBANK_ENABLE);
            param.mask = CSP_BITFMASK(MC13783_LED_CTL0_FLBANK2);
            break;

        case TCLED_FUN_BANK3:
            param.data = CSP_BITFVAL(MC13783_LED_CTL0_FLBANK3,
                                     MC13783_LED_CTL0_FLBANK_ENABLE);
            param.mask = CSP_BITFMASK(MC13783_LED_CTL0_FLBANK3);
            break;
    }

    callioctl:
    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: PmicTCLEDFunLightChasingLightsPattern
//

⌨️ 快捷键说明

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