//----------------------------------------------------------------------------- MBOOL ResMgrDrvImp::SetMode(RES_MGR_DRV_MODE_STRUCT* pMode) { MBOOL Result = MTRUE; RES_MGR_DRV_MODE_STRUCT CurrMode; CAM_PIPE_MGR_LOCK_STRUCT CamPipeMgrLock; CAM_PIPE_MGR_UNLOCK_STRUCT CamPipeMgrUnlock; CAM_PIPE_MGR_DISABLE_STRUCT CamPipeMgrDisable; // if(mUser <= 0) { LOG_ERR("No user"); Result = MFALSE; goto EXIT; } // if(mFdCamPipeMgr < 0) { LOG_ERR("CamPipeMgr kernel is not opened"); Result = MFALSE; goto EXIT; } // LOG_MSG("ScenSw(%d),ScenHw(%d),Dev(%d)", pMode->ScenSw, pMode->ScenHw, pMode->Dev); // GetMode(&CurrMode); // if( CurrMode.ScenSw == (pMode->ScenSw) && CurrMode.ScenHw == (pMode->ScenHw) && CurrMode.Dev == (pMode->Dev)) { LOG_MSG("OK:Same"); goto EXIT; } // if(Result) { if(ioctl(mFdCamPipeMgr, CAM_PIPE_MGR_SET_MODE, (CAM_PIPE_MGR_MODE_STRUCT*)pMode) == 0) { LOG_MSG("OK"); } else { LOG_ERR("SET_MODE fail(%d):%s",errno,strerror(errno)); Result = MFALSE; } } // if(Result) { BWC BwcIns; // if(CurrMode.ScenSw == (pMode->ScenSw)) { LOG_MSG("Same SW(%d/%d)",CurrMode.ScenSw,pMode->ScenSw); goto EXIT; } // if(pMode->Dev == RES_MGR_DRV_DEV_VT) { if(pMode->ScenSw == RES_MGR_DRV_SCEN_SW_NONE) { BwcIns.Profile_Change(BWCPT_VIDEO_TELEPHONY,false); } else { BwcIns.Profile_Change(BWCPT_VIDEO_TELEPHONY,true); mBwcParams.profileType = BWCPT_VIDEO_TELEPHONY; } } else { switch(CurrMode.ScenSw) { case RES_MGR_DRV_SCEN_SW_CAM_PRV: { BwcIns.Profile_Change(BWCPT_CAMERA_PREVIEW,false); break; } case RES_MGR_DRV_SCEN_SW_VIDEO_PRV: case RES_MGR_DRV_SCEN_SW_VIDEO_REC: case RES_MGR_DRV_SCEN_SW_VIDEO_VSS: { BwcIns.Profile_Change(BWCPT_VIDEO_RECORD_CAMERA,false); break; } case RES_MGR_DRV_SCEN_SW_CAM_CAP: { BwcIns.Profile_Change(BWCPT_CAMERA_CAPTURE,false); break; } case RES_MGR_DRV_SCEN_SW_ZSD: { BwcIns.Profile_Change(BWCPT_CAMERA_ZSD,false); break; } default: { //do nothing. } } // switch(pMode->ScenSw) { case RES_MGR_DRV_SCEN_SW_NONE: case RES_MGR_DRV_SCEN_SW_CAM_IDLE: { BwcIns.Profile_Change(BWCPT_CAMERA_PREVIEW,false); break; } case RES_MGR_DRV_SCEN_SW_CAM_PRV: { BwcIns.Profile_Change(BWCPT_CAMERA_PREVIEW,true); mBwcParams.profileType = BWCPT_CAMERA_PREVIEW; break; } case RES_MGR_DRV_SCEN_SW_VIDEO_PRV: case RES_MGR_DRV_SCEN_SW_VIDEO_REC: case RES_MGR_DRV_SCEN_SW_VIDEO_VSS: { BwcIns.Profile_Change(BWCPT_VIDEO_RECORD_CAMERA,true); mBwcParams.profileType = BWCPT_VIDEO_RECORD_CAMERA; break; } case RES_MGR_DRV_SCEN_SW_CAM_CAP: { BwcIns.Profile_Change(BWCPT_CAMERA_CAPTURE,true); mBwcParams.profileType = BWCPT_CAMERA_CAPTURE; break; } case RES_MGR_DRV_SCEN_SW_ZSD: { BwcIns.Profile_Change(BWCPT_CAMERA_ZSD,true); mBwcParams.profileType = BWCPT_CAMERA_ZSD; break; } default: { //do nothing. } } // switch(pMode->ScenSw) { case RES_MGR_DRV_SCEN_SW_NONE: { CloseHdmi(MFALSE); break; } default: { CloseHdmi(MTRUE); break; } } } } // EXIT: //LOG_MSG("Result(%d)",Result); return Result; }
//----------------------------------------------------------------------------- MBOOL ResMgrDrvImp::SetMode(RES_MGR_DRV_MODE_STRUCT* pMode) { MBOOL Result = MTRUE, IsCdpConcurLocked = MFALSE, IsCdpLinkLocked = MFALSE;; RES_MGR_DRV_MODE_STRUCT CurrMode; CAM_PIPE_MGR_LOCK_STRUCT CamPipeMgrLock; CAM_PIPE_MGR_UNLOCK_STRUCT CamPipeMgrUnlock; CAM_PIPE_MGR_DISABLE_STRUCT CamPipeMgrDisable; // if(mUser <= 0) { LOG_ERR("No user"); Result = MFALSE; goto EXIT; } // if(mFdCamPipeMgr < 0) { LOG_ERR("CamPipeMgr kernel is not opened"); Result = MFALSE; goto EXIT; } // LOG_MSG("ScenSw(%d),ScenHw(%d),Dev(%d)", pMode->ScenSw, pMode->ScenHw, pMode->Dev); // GetMode(&CurrMode); // if( CurrMode.ScenSw == (pMode->ScenSw) && CurrMode.ScenHw == (pMode->ScenHw) && CurrMode.Dev == (pMode->Dev)) { LOG_MSG("OK:Same"); goto EXIT; } // switch(CurrMode.ScenSw) { case RES_MGR_DRV_SCEN_SW_NONE: { IsCdpLinkLocked = MTRUE; break; } default: { //do nothing. } } // if(IsCdpLinkLocked) { CamPipeMgrLock.PipeMask = CAM_PIPE_MGR_PIPE_MASK_CDP_LINK; CamPipeMgrLock.Timeout = RES_MGR_DRV_WAIT_CDP_LINK_TIMEOUT; if(ioctl(mFdCamPipeMgr, CAM_PIPE_MGR_LOCK, &CamPipeMgrLock) == 0) { CamPipeMgrDisable.PipeMask = CAM_PIPE_MGR_PIPE_MASK_CDP_LINK; if(ioctl(mFdCamPipeMgr, CAM_PIPE_MGR_DISABLE_PIPE, &CamPipeMgrDisable) == 0) { CamPipeMgrUnlock.PipeMask = CAM_PIPE_MGR_PIPE_MASK_CDP_LINK; if(ioctl(mFdCamPipeMgr, CAM_PIPE_MGR_UNLOCK, &CamPipeMgrUnlock) == 0) { LOG_MSG("CDP_LINK:LOCK->DISABLE->UNLOCK OK"); } else { LOG_ERR("CDP_LINK:LOCK->DISABLE->UNLOCK fail"); Result = MFALSE; } } else { LOG_ERR("CDP_LINK:LOCK->DISABLE fail"); Result = MFALSE; } } else { LOG_ERR("CDP_LINK:LOCK fail"); Result = MFALSE; } } // #if 0 switch(CurrMode.ScenSw) { case RES_MGR_DRV_SCEN_SW_CAM_PRV: case RES_MGR_DRV_SCEN_SW_VIDEO_PRV: { if(CurrMode.ScenHw == RES_MGR_DRV_SCEN_HW_VSS) { IsCdpConcurLocked = MTRUE; } break; } case RES_MGR_DRV_SCEN_SW_ZSD: { if(CurrMode.ScenHw == RES_MGR_DRV_SCEN_HW_ZSD) { IsCdpConcurLocked = MTRUE; } break; } default: { //do nothing. } } // if(IsCdpConcurLocked) { CamPipeMgrLock.PipeMask = CAM_PIPE_MGR_PIPE_MASK_CDP_CONCUR; CamPipeMgrLock.Timeout = RES_MGR_DRV_WAIT_CDP_CONCUR_TIMEOUT; if(ioctl(mFdCamPipeMgr, CAM_PIPE_MGR_LOCK, &CamPipeMgrLock) == 0) { CamPipeMgrDisable.PipeMask = CAM_PIPE_MGR_PIPE_MASK_CDP_CONCUR; if(ioctl(mFdCamPipeMgr, CAM_PIPE_MGR_DISABLE_PIPE, &CamPipeMgrDisable) == 0) { CamPipeMgrUnlock.PipeMask = CAM_PIPE_MGR_PIPE_MASK_CDP_CONCUR; if(ioctl(mFdCamPipeMgr, CAM_PIPE_MGR_UNLOCK, &CamPipeMgrUnlock) == 0) { LOG_MSG("CDP_CONCUR:LOCK->DISABLE->UNLOCK OK"); } else { LOG_ERR("CDP_CONCUR:LOCK->DISABLE->UNLOCK fail"); Result = MFALSE; } } else { LOG_ERR("CDP_CONCUR:LOCK->DISABLE fail"); Result = MFALSE; } } else { LOG_ERR("CDP_CONCUR:LOCK fail"); Result = MFALSE; } } #endif // if(Result) { if(ioctl(mFdCamPipeMgr, CAM_PIPE_MGR_SET_MODE, (CAM_PIPE_MGR_MODE_STRUCT*)pMode) == 0) { LOG_MSG("OK"); } else { LOG_ERR("SET_MODE fail"); Result = MFALSE; } } // if(Result) { BWC BwcIns; // if(CurrMode.ScenSw == (pMode->ScenSw)) { LOG_MSG("Same SW(%d/%d)",CurrMode.ScenSw,pMode->ScenSw); goto EXIT; } // if(pMode->Dev == RES_MGR_DRV_DEV_VT) { if(pMode->ScenSw == RES_MGR_DRV_SCEN_SW_NONE) { BwcIns.Profile_Change(BWCPT_VIDEO_TELEPHONY,false); } else { BwcIns.Profile_Change(BWCPT_VIDEO_TELEPHONY,true); } } else { switch(CurrMode.ScenSw) { case RES_MGR_DRV_SCEN_SW_CAM_PRV: { BwcIns.Profile_Change(BWCPT_CAMERA_PREVIEW,false); break; } case RES_MGR_DRV_SCEN_SW_VIDEO_PRV: case RES_MGR_DRV_SCEN_SW_VIDEO_REC: case RES_MGR_DRV_SCEN_SW_VIDEO_VSS: { BwcIns.Profile_Change(BWCPT_VIDEO_RECORD_CAMERA,false); break; } case RES_MGR_DRV_SCEN_SW_CAM_CAP: { BwcIns.Profile_Change(BWCPT_CAMERA_CAPTURE,false); break; } case RES_MGR_DRV_SCEN_SW_ZSD: { BwcIns.Profile_Change(BWCPT_CAMERA_ZSD,false); break; } default: { //do nothing. } } // switch(pMode->ScenSw) { case RES_MGR_DRV_SCEN_SW_NONE: case RES_MGR_DRV_SCEN_SW_CAM_IDLE: { BwcIns.Profile_Change(BWCPT_CAMERA_PREVIEW,false); break; } case RES_MGR_DRV_SCEN_SW_CAM_PRV: { BwcIns.Profile_Change(BWCPT_CAMERA_PREVIEW,true); break; } case RES_MGR_DRV_SCEN_SW_VIDEO_PRV: case RES_MGR_DRV_SCEN_SW_VIDEO_REC: case RES_MGR_DRV_SCEN_SW_VIDEO_VSS: { BwcIns.Profile_Change(BWCPT_VIDEO_RECORD_CAMERA,true); break; } case RES_MGR_DRV_SCEN_SW_CAM_CAP: { BwcIns.Profile_Change(BWCPT_CAMERA_CAPTURE,true); break; } case RES_MGR_DRV_SCEN_SW_ZSD: { BwcIns.Profile_Change(BWCPT_CAMERA_ZSD,true); break; } default: { //do nothing. } } // switch(pMode->ScenSw) { case RES_MGR_DRV_SCEN_SW_NONE: { CloseHdmi(MFALSE); break; } default: { CloseHdmi(MTRUE); break; } } } } // EXIT: //LOG_MSG("Result(%d)",Result); return Result; }