hardware: samsung_slsi: libcamera2: modify CAF sequence for flash
authorYounghwan Joo <yhwan.joo@samsung.com>
Fri, 21 Sep 2012 07:42:08 +0000 (00:42 -0700)
committerRebecca Schultz Zavin <rebecca@android.com>
Tue, 25 Sep 2012 06:41:36 +0000 (23:41 -0700)
This patch is to modify CAF sequence for proper operation
with flash

Change-Id: I59fb549d8eec763ca74d7fa2ba3be747946ef995
Signed-off-by: Younghwan Joo <yhwan.joo@samsung.com>
libcamera2/ExynosCameraHWInterface2.cpp

index b458d298ebca3f514dfbdaa811fb661c68cc9610..18afdf709a0848a161f317d549e679f8dcfb3562 100644 (file)
@@ -4917,6 +4917,11 @@ void ExynosCameraHWInterface2::OnAfNotificationCAFPicture(enum aa_afstate noti)
         }
     }
     else if (m_afState == HAL_AFSTATE_NEEDS_DETERMINATION) {
+        //Skip notification in case of flash, wait the end of flash on
+        if (m_ctlInfo.flash.m_flashEnableFlg && m_ctlInfo.flash.m_afFlashDoneFlg) {
+            if (m_ctlInfo.flash.m_flashCnt < IS_FLASH_STATE_ON_DONE)
+                return;
+        }
         switch (noti) {
         case AA_AFSTATE_INACTIVE:
             nextState = NO_TRANSITION;
@@ -4927,13 +4932,14 @@ void ExynosCameraHWInterface2::OnAfNotificationCAFPicture(enum aa_afstate noti)
         case AA_AFSTATE_AF_ACQUIRED_FOCUS:
             // If Flash mode is enable, after AF execute pre-capture metering
             if (m_ctlInfo.flash.m_flashEnableFlg && m_ctlInfo.flash.m_afFlashDoneFlg) {
-                ALOGV("[AF Flash] AUTO start with Mode (%d) state (%d) noti (%d)", m_afMode, m_afState, (int)noti);
                 switch (m_ctlInfo.flash.m_flashCnt) {
                 case IS_FLASH_STATE_ON_DONE:
+                    ALOGV("[AF Flash] AUTO start with Mode (%d) state (%d) noti (%d)", m_afMode, m_afState, (int)noti);
                     m_ctlInfo.flash.m_flashCnt = IS_FLASH_STATE_AUTO_AE_AWB_LOCK;
                     nextState = NO_TRANSITION;
                     break;
                 case IS_FLASH_STATE_AUTO_DONE:
+                    ALOGV("[AF Flash] AUTO end with Mode (%d) state (%d) noti (%d)", m_afMode, m_afState, (int)noti);
                     m_ctlInfo.flash.m_flashCnt = IS_FLASH_STATE_AUTO_OFF;
                     m_IsAfLockRequired = true;
                     nextState = HAL_AFSTATE_LOCKED;
@@ -4951,13 +4957,14 @@ void ExynosCameraHWInterface2::OnAfNotificationCAFPicture(enum aa_afstate noti)
         case AA_AFSTATE_AF_FAILED_FOCUS:
             // If Flash mode is enable, after AF execute pre-capture metering
             if (m_ctlInfo.flash.m_flashEnableFlg && m_ctlInfo.flash.m_afFlashDoneFlg) {
-                ALOGV("[AF Flash] AUTO start with Mode (%d) state (%d) noti (%d)", m_afMode, m_afState, (int)noti);
                 switch (m_ctlInfo.flash.m_flashCnt) {
                 case IS_FLASH_STATE_ON_DONE:
+                    ALOGV("[AF Flash] AUTO start with Mode (%d) state (%d) noti (%d)", m_afMode, m_afState, (int)noti);
                     m_ctlInfo.flash.m_flashCnt = IS_FLASH_STATE_AUTO_AE_AWB_LOCK;
                     nextState = NO_TRANSITION;
                     break;
                 case IS_FLASH_STATE_AUTO_DONE:
+                    ALOGV("[AF Flash] AUTO end with Mode (%d) state (%d) noti (%d)", m_afMode, m_afState, (int)noti);
                     m_ctlInfo.flash.m_flashCnt = IS_FLASH_STATE_AUTO_OFF;
                     m_IsAfLockRequired = true;
                     nextState = HAL_AFSTATE_FAILED;