FLASH_PROJECT_PARA& cust_getFlashProjectPara(int aeMode, NVRAM_CAMERA_STROBE_STRUCT* nvrame) { static FLASH_PROJECT_PARA para; para.dutyNum = 3; para.stepNum = 1; //tuning if(nvrame!=0) { XLOGD("cust_getFlashProjectPara nvrame->tuningPara[0].yTar=%d", nvrame->tuningPara[0].yTar); switch(aeMode) { case LIB3A_AE_MODE_OFF: case LIB3A_AE_MODE_AUTO: copyTuningPara(¶.tuningPara, &nvrame->tuningPara[0]); break; case LIB3A_AE_MODE_NIGHT: case LIB3A_AE_MODE_CANDLELIGHT: case LIB3A_AE_MODE_FIREWORKS: case LIB3A_AE_MODE_NIGHT_PORTRAIT: copyTuningPara(¶.tuningPara, &nvrame->tuningPara[1]); break; case LIB3A_AE_MODE_ACTION: case LIB3A_AE_MODE_SPORTS: case LIB3A_AE_MODE_ISO_ANTI_SHAKE: copyTuningPara(¶.tuningPara, &nvrame->tuningPara[2]); break; case LIB3A_AE_MODE_PORTRAIT: copyTuningPara(¶.tuningPara, &nvrame->tuningPara[3]); break; default: copyTuningPara(¶.tuningPara, &nvrame->tuningPara[0]); break; } } //-------------------- //eng level //index mode //torch para.engLevel.torchEngMode = ENUM_FLASH_ENG_INDEX_MODE; para.engLevel.torchDuty = 0; para.engLevel.torchStep = 0; //af para.engLevel.afEngMode = ENUM_FLASH_ENG_INDEX_MODE; para.engLevel.afDuty = 0; para.engLevel.afStep = 0; //pf, mf, normal para.engLevel.pmfEngMode = ENUM_FLASH_ENG_INDEX_MODE; para.engLevel.pfDuty = 1; para.engLevel.mfDutyMax = 2; para.engLevel.mfDutyMin = 0; para.engLevel.pmfStep = 0; //low bat para.engLevel.IChangeByVBatEn=0; para.engLevel.vBatL = 3550; //mv para.engLevel.pfDutyL = 1; para.engLevel.mfDutyMaxL = 2; para.engLevel.mfDutyMinL = 0; para.engLevel.pmfStepL = 0; //burst setting para.engLevel.IChangeByBurstEn=1; para.engLevel.pfDutyB = 1; para.engLevel.mfDutyMaxB = 1; para.engLevel.mfDutyMinB = 0; para.engLevel.pmfStepB = 0; //-------------------- //cooling delay para para.coolTimeOutPara.tabMode = ENUM_FLASH_ENG_INDEX_MODE; para.coolTimeOutPara.tabNum = 3; para.coolTimeOutPara.tabId[0]=0; para.coolTimeOutPara.tabId[1]=1; para.coolTimeOutPara.tabId[2]=2; para.coolTimeOutPara.coolingTM[0]=0; para.coolTimeOutPara.coolingTM[1]=0; para.coolTimeOutPara.coolingTM[2]=5; para.coolTimeOutPara.timOutMs[0]=ENUM_FLASH_TIME_NO_TIME_OUT; para.coolTimeOutPara.timOutMs[1]=ENUM_FLASH_TIME_NO_TIME_OUT; para.coolTimeOutPara.timOutMs[2]=500; para.maxCapExpTimeUs=100000; para.pfExpFollowPline=0; //para.maxPfAfe=3000; para.maxAfeGain=4096; //92 new para.lowReflectanceTuningEnable=1; para.yTargetWeight=0; para.lowReflectanceThreshold=16; para.flashReflectanceWeight = 0; if(nvrame!=0) { if(nvrame->isTorchEngUpdate) { para.engLevel.torchEngMode = nvrame->engLevel.torchEngMode; para.engLevel.torchPeakI = nvrame->engLevel.torchPeakI; para.engLevel.torchAveI = nvrame->engLevel.torchAveI; para.engLevel.torchDuty = nvrame->engLevel.torchDuty; para.engLevel.torchStep = nvrame->engLevel.torchStep; } if(nvrame->isAfEngUpdate) { para.engLevel.afEngMode = nvrame->engLevel.afEngMode; para.engLevel.afPeakI = nvrame->engLevel.afPeakI; para.engLevel.afAveI = nvrame->engLevel.afAveI; para.engLevel.afDuty = nvrame->engLevel.afDuty; para.engLevel.afStep = nvrame->engLevel.afStep; } if(nvrame->isNormaEnglUpdate) { para.engLevel.pfAveI = nvrame->engLevel.pfAveI; para.engLevel.mfAveIMax = nvrame->engLevel.mfAveIMax; para.engLevel.mfAveIMin = nvrame->engLevel.mfAveIMin; para.engLevel.pmfPeakI = nvrame->engLevel.pmfPeakI; para.engLevel.pfDuty = nvrame->engLevel.pfDuty; para.engLevel.mfDutyMax = nvrame->engLevel.mfDutyMax; para.engLevel.mfDutyMin = nvrame->engLevel.mfDutyMin; para.engLevel.pmfStep = nvrame->engLevel.pmfStep; } if(nvrame->isLowBatEngUpdate) { para.engLevel.IChangeByVBatEn = nvrame->engLevel.IChangeByVBatEn; para.engLevel.vBatL = nvrame->engLevel.vBatL; para.engLevel.pfAveIL = nvrame->engLevel.pfAveIL; para.engLevel.mfAveIMaxL = nvrame->engLevel.mfAveIMaxL; para.engLevel.mfAveIMinL = nvrame->engLevel.mfAveIMinL; para.engLevel.pmfPeakIL = nvrame->engLevel.pmfPeakIL; para.engLevel.pfDutyL = nvrame->engLevel.pfDutyL; para.engLevel.mfDutyMaxL = nvrame->engLevel.mfDutyMaxL; para.engLevel.mfDutyMinL = nvrame->engLevel.mfDutyMinL; para.engLevel.pmfStepL = nvrame->engLevel.pmfStepL; } if(nvrame->isBurstEngUpdate) { para.engLevel.IChangeByBurstEn = nvrame->engLevel.IChangeByBurstEn; para.engLevel.pfAveIB = nvrame->engLevel.pfAveIB; para.engLevel.mfAveIMaxB = nvrame->engLevel.mfAveIMaxB; para.engLevel.mfAveIMaxB = nvrame->engLevel.mfAveIMaxB; para.engLevel.mfAveIMinB = nvrame->engLevel.mfAveIMinB; para.engLevel.pmfPeakIB = nvrame->engLevel.pmfPeakIB; para.engLevel.pfDutyB = nvrame->engLevel.pfDutyB; para.engLevel.mfDutyMaxB = nvrame->engLevel.mfDutyMaxB; para.engLevel.mfDutyMinB = nvrame->engLevel.mfDutyMinB; para.engLevel.pmfStepB = nvrame->engLevel.pmfStepB; } } return para; }
FLASH_PROJECT_PARA& cust_getFlashProjectPara_sub2(int aeMode, NVRAM_CAMERA_STROBE_STRUCT* nvrame) { XLOGD("cust_getFlashProjectPara_sub2"); static FLASH_PROJECT_PARA para; para.dutyNum = 16; para.stepNum = 1; //tuning if(nvrame!=0) { XLOGD("nvrame!=0"); switch(aeMode) { case LIB3A_AE_MODE_OFF: case LIB3A_AE_MODE_AUTO: copyTuningPara(¶.tuningPara, &nvrame->tuningPara[0]); break; case LIB3A_AE_MODE_NIGHT: case LIB3A_AE_MODE_CANDLELIGHT: case LIB3A_AE_MODE_FIREWORKS: case LIB3A_AE_MODE_NIGHT_PORTRAIT: copyTuningPara(¶.tuningPara, &nvrame->tuningPara[1]); break; case LIB3A_AE_MODE_ACTION: case LIB3A_AE_MODE_SPORTS: case LIB3A_AE_MODE_ISO_ANTI_SHAKE: copyTuningPara(¶.tuningPara, &nvrame->tuningPara[2]); break; case LIB3A_AE_MODE_PORTRAIT: copyTuningPara(¶.tuningPara, &nvrame->tuningPara[3]); break; default: copyTuningPara(¶.tuningPara, &nvrame->tuningPara[0]); break; } } //-------------------- //eng level //index mode //torch para.engLevel.torchEngMode = ENUM_FLASH_ENG_INDEX_MODE; para.engLevel.torchDuty = 2; para.engLevel.torchStep = 0; //af para.engLevel.afEngMode = ENUM_FLASH_ENG_INDEX_MODE; para.engLevel.afDuty = 2; para.engLevel.afStep = 0; //pf, mf, normal para.engLevel.pmfEngMode = ENUM_FLASH_ENG_INDEX_MODE; para.engLevel.pfDuty = 2; para.engLevel.mfDutyMax = 15; para.engLevel.mfDutyMin = 0; para.engLevel.pmfStep = 0; //low bat para.engLevel.IChangeByVBatEn=0; para.engLevel.vBatL = 3400; //mv para.engLevel.pfDutyL = 1; para.engLevel.mfDutyMaxL = 2; para.engLevel.mfDutyMinL = 0; para.engLevel.pmfStepL = 0; //burst setting para.engLevel.IChangeByBurstEn=1; para.engLevel.pfDutyB = 2; para.engLevel.mfDutyMaxB = 3; para.engLevel.mfDutyMinB = 0; para.engLevel.pmfStepB = 0; //-------------------- //cooling delay para para.coolTimeOutPara.tabMode = ENUM_FLASH_ENG_INDEX_MODE; para.coolTimeOutPara.tabNum = 5; para.coolTimeOutPara.tabId[0]=0; para.coolTimeOutPara.tabId[1]=4; para.coolTimeOutPara.tabId[2]=8; para.coolTimeOutPara.tabId[3]=12; para.coolTimeOutPara.tabId[4]=15; para.coolTimeOutPara.coolingTM[0]=0; para.coolTimeOutPara.coolingTM[1]=0; para.coolTimeOutPara.coolingTM[2]=1; para.coolTimeOutPara.coolingTM[3]=2; para.coolTimeOutPara.coolingTM[4]=3; para.coolTimeOutPara.timOutMs[0]=ENUM_FLASH_TIME_NO_TIME_OUT; para.coolTimeOutPara.timOutMs[1]=ENUM_FLASH_TIME_NO_TIME_OUT; para.coolTimeOutPara.timOutMs[2]=500; para.coolTimeOutPara.timOutMs[3]=500; para.coolTimeOutPara.timOutMs[4]=500; /* //--------------- //current mode, for mtk internal pmic //torch para.engLevel.torchEngMode = ENUM_FLASH_ENG_CURRENT_MODE; para.engLevel.torchPeakI = 100; para.engLevel.torchAveI = 100; //af para.engLevel.afEngMode = ENUM_FLASH_ENG_CURRENT_MODE; para.engLevel.afPeakI = 200; para.engLevel.afAveI = 200; //pf, mf normal para.engLevel.pmfEngMode = ENUM_FLASH_ENG_CURRENT_MODE; para.engLevel.pfAveI = 200; para.engLevel.mfAveIMax = 600; para.engLevel.mfAveIMin = 50; para.engLevel.pmfPeakI = 800; //low bat setting para.engLevel.IChangeByVBatEn = 0; para.engLevel.vBatL = 3400; para.engLevel.pfAveIL = 200; para.engLevel.mfAveIMaxL = 800; para.engLevel.mfAveIMinL = 100; para.engLevel.pmfPeakIL =1000; //burst setting para.engLevel.IChangeByBurstEn=1; para.engLevel.pfAveIB = 200; para.engLevel.mfAveIMaxB = 400; para.engLevel.mfAveIMinB = 100; para.engLevel.pmfPeakIB = 500; //stable current para.engLevel.extrapI = 200; para.engLevel.extrapRefI = 200; //calibration para.engLevel.minPassI = 200; para.engLevel.maxTestI = 800; para.engLevel.minTestBatV = 3500; para.engLevel.toleranceI = 200; para.engLevel.toleranceV = 200; */ if(nvrame!=0) { if(nvrame->isTorchEngUpdate) { para.engLevel.torchEngMode = nvrame->engLevel.torchEngMode; para.engLevel.torchPeakI = nvrame->engLevel.torchPeakI; para.engLevel.torchAveI = nvrame->engLevel.torchAveI; para.engLevel.torchDuty = nvrame->engLevel.torchDuty; para.engLevel.torchStep = nvrame->engLevel.torchStep; } if(nvrame->isAfEngUpdate) { para.engLevel.afEngMode = nvrame->engLevel.afEngMode; para.engLevel.afPeakI = nvrame->engLevel.afPeakI; para.engLevel.afAveI = nvrame->engLevel.afAveI; para.engLevel.afDuty = nvrame->engLevel.afDuty; para.engLevel.afStep = nvrame->engLevel.afStep; } if(nvrame->isNormaEnglUpdate) { para.engLevel.pfAveI = nvrame->engLevel.pfAveI; para.engLevel.mfAveIMax = nvrame->engLevel.mfAveIMax; para.engLevel.mfAveIMin = nvrame->engLevel.mfAveIMin; para.engLevel.pmfPeakI = nvrame->engLevel.pmfPeakI; para.engLevel.pfDuty = nvrame->engLevel.pfDuty; para.engLevel.mfDutyMax = nvrame->engLevel.mfDutyMax; para.engLevel.mfDutyMin = nvrame->engLevel.mfDutyMin; para.engLevel.pmfStep = nvrame->engLevel.pmfStep; } if(nvrame->isLowBatEngUpdate) { para.engLevel.IChangeByVBatEn = nvrame->engLevel.IChangeByVBatEn; para.engLevel.vBatL = nvrame->engLevel.vBatL; para.engLevel.pfAveIL = nvrame->engLevel.pfAveIL; para.engLevel.mfAveIMaxL = nvrame->engLevel.mfAveIMaxL; para.engLevel.mfAveIMinL = nvrame->engLevel.mfAveIMinL; para.engLevel.pmfPeakIL = nvrame->engLevel.pmfPeakIL; para.engLevel.pfDutyL = nvrame->engLevel.pfDutyL; para.engLevel.mfDutyMaxL = nvrame->engLevel.mfDutyMaxL; para.engLevel.mfDutyMinL = nvrame->engLevel.mfDutyMinL; para.engLevel.pmfStepL = nvrame->engLevel.pmfStepL; } if(nvrame->isBurstEngUpdate) { para.engLevel.IChangeByBurstEn = nvrame->engLevel.IChangeByBurstEn; para.engLevel.pfAveIB = nvrame->engLevel.pfAveIB; para.engLevel.mfAveIMaxB = nvrame->engLevel.mfAveIMaxB; para.engLevel.mfAveIMaxB = nvrame->engLevel.mfAveIMaxB; para.engLevel.mfAveIMinB = nvrame->engLevel.mfAveIMinB; para.engLevel.pmfPeakIB = nvrame->engLevel.pmfPeakIB; para.engLevel.pfDutyB = nvrame->engLevel.pfDutyB; para.engLevel.mfDutyMaxB = nvrame->engLevel.mfDutyMaxB; para.engLevel.mfDutyMinB = nvrame->engLevel.mfDutyMinB; para.engLevel.pmfStepB = nvrame->engLevel.pmfStepB; } } return para; }
FLASH_PROJECT_PARA& cust_getFlashProjectPara_main2 (int aeScene, int isForceFlash, NVRAM_CAMERA_STROBE_STRUCT* nvrame) { static FLASH_PROJECT_PARA para; para.dutyNum = 10; if(nvrame!=0) { int ind=0; int aeSceneInd=-1; int i; switch(aeScene) { case LIB3A_AE_SCENE_OFF: aeSceneInd=1; break; case LIB3A_AE_SCENE_AUTO: aeSceneInd=2; break; case LIB3A_AE_SCENE_NIGHT: aeSceneInd=3; break; case LIB3A_AE_SCENE_ACTION: aeSceneInd=4; break; case LIB3A_AE_SCENE_BEACH: aeSceneInd=5; break; case LIB3A_AE_SCENE_CANDLELIGHT: aeSceneInd=6; break; case LIB3A_AE_SCENE_FIREWORKS: aeSceneInd=7; break; case LIB3A_AE_SCENE_LANDSCAPE: aeSceneInd=8; break; case LIB3A_AE_SCENE_PORTRAIT: aeSceneInd=9; break; case LIB3A_AE_SCENE_NIGHT_PORTRAIT: aeSceneInd=10; break; case LIB3A_AE_SCENE_PARTY: aeSceneInd=11; break; case LIB3A_AE_SCENE_SNOW: aeSceneInd=12; break; case LIB3A_AE_SCENE_SPORTS: aeSceneInd=13; break; case LIB3A_AE_SCENE_STEADYPHOTO: aeSceneInd=14; break; case LIB3A_AE_SCENE_SUNSET: aeSceneInd=15; break; case LIB3A_AE_SCENE_THEATRE: aeSceneInd=16; break; case LIB3A_AE_SCENE_ISO_ANTI_SHAKE: aeSceneInd=17; break; case LIB3A_AE_SCENE_BACKLIGHT: aeSceneInd=18; break; default: aeSceneInd=0; break; } if(isForceFlash==1) ind = nvrame->paraIdxForceOn[aeSceneInd]; else ind = nvrame->paraIdxAuto[aeSceneInd]; XLOGD("paraIdx=%d aeSceneInd =%d", ind, aeSceneInd); copyTuningPara(¶.tuningPara, &nvrame->tuningPara[ind]); copyTuningParaDualFlash(¶.tuningPara, nvrame); } //-------------------- //cooling delay para para.coolTimeOutPara.tabNum = 5; para.coolTimeOutPara.tabId[0]=0; para.coolTimeOutPara.tabId[1]=2; para.coolTimeOutPara.tabId[2]=6; para.coolTimeOutPara.tabId[3]=12; para.coolTimeOutPara.tabId[4]=16; para.coolTimeOutPara.coolingTM[0]=0; para.coolTimeOutPara.coolingTM[1]=0; para.coolTimeOutPara.coolingTM[2]=2; para.coolTimeOutPara.coolingTM[3]=5; para.coolTimeOutPara.coolingTM[4]=8; para.coolTimeOutPara.timOutMs[0]=ENUM_FLASH_TIME_NO_TIME_OUT; para.coolTimeOutPara.timOutMs[1]=ENUM_FLASH_TIME_NO_TIME_OUT; para.coolTimeOutPara.timOutMs[2]=600; para.coolTimeOutPara.timOutMs[3]=500; para.coolTimeOutPara.timOutMs[4]=300; para.maxCapExpTimeUs=100000; return para; }