359 lines
8.9 KiB
C
Executable File
359 lines
8.9 KiB
C
Executable File
////////////////////////////////////////////////////////////////////////////////
|
|
#include "System/SysCommon.h"
|
|
//#include "AppCommon.h"
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
#include "UIApp/UIAppCommon.h"
|
|
#include "UIApp/Photo/UIAppPhoto.h"
|
|
//#include "ExifVendor.h"
|
|
#include "GxSound.h"
|
|
//#include "af_api.h"
|
|
#include "ImageApp/ImageApp_Photo.h"
|
|
#include "ImageApp/ImageApp_Photo_CapCbMsg.h"
|
|
|
|
#include "KeyDef.h"
|
|
#include "UIApp/ExifVendor.h"
|
|
|
|
//#include "iq_api.h"
|
|
//#include "ImageUnit_VdoEnc.h"
|
|
//#include "ImageUnit_VdoOut.h"
|
|
|
|
#define THIS_DBGLVL 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
#define __MODULE__ UiPhotoCB
|
|
#define __DBGLVL__ ((THIS_DBGLVL>=PRJ_DBG_LVL)?THIS_DBGLVL:PRJ_DBG_LVL)
|
|
#define __DBGFLT__ "*" //*=All, [mark]=CustomClass
|
|
#include <kwrap/debug.h>
|
|
#include <kwrap/perf.h>
|
|
extern BOOL _g_bFirstPhoto;
|
|
//extern UINT32 System_GetEnableSensor(void);
|
|
|
|
void Photo_GenDateStrCB(void)
|
|
{
|
|
#if (PHOTO_MODE==ENABLE)
|
|
// update the date time str
|
|
Ux_SendEvent(&CustomPhotoObjCtrl, NVTEVT_EXE_GEN_DATE_STR, 0);
|
|
#endif
|
|
}
|
|
|
|
void Photo_GenDatePicCB(IMG_CAP_DATASTAMP_INFO *dateInfo)
|
|
{
|
|
#if (PHOTO_MODE==ENABLE)
|
|
// Generate the date time picture
|
|
Ux_SendEvent(&CustomPhotoObjCtrl, NVTEVT_EXE_GEN_DATE_PIC, 1, (UINT32)dateInfo);
|
|
#endif
|
|
}
|
|
|
|
void Photo_WriteExifCB(UINT32 *SensorID)
|
|
{
|
|
#if 1//( _TODO)
|
|
|
|
// Write Exif
|
|
EXIF_HANDLE_ID HandleID;
|
|
|
|
HandleID = *SensorID;
|
|
DBG_IND("WriteExifCB HandleID = %d\r\n", HandleID);
|
|
ExifVendor_Write0thIFD(HandleID);
|
|
ExifVendor_WriteExifIFD(HandleID);
|
|
ExifVendor_Write0thIntIFD(HandleID);
|
|
#endif
|
|
}
|
|
|
|
void Photo_WriteDebugCB(IMG_CAP_DEBUG_INFO *DebugInfo)
|
|
{
|
|
#if 0
|
|
UINT32 Addr;
|
|
|
|
Addr = DebugInfo->Addr;
|
|
#if !defined(_IPL1_IPL_FAKE_)
|
|
//if (System_GetEnableSensor() == (SENSOR_2) )
|
|
if (DebugInfo->SensorId == 1) {
|
|
Addr = AE_WriteDebugInfo(1, Addr);
|
|
Addr = AWB_WriteDebugInfo(1, Addr);
|
|
} else {
|
|
Addr = AE_WriteDebugInfo(0, Addr);
|
|
Addr = AWB_WriteDebugInfo(0, Addr);
|
|
}
|
|
#if _TODO
|
|
Addr = Flash_WriteDebugInfo(Addr);
|
|
#endif
|
|
#if (LENS_FUNCTION == ENABLE)
|
|
Addr = AF_WriteDebugInfo(Addr);
|
|
#endif
|
|
#endif
|
|
DebugInfo->UsedSize = Addr - DebugInfo->Addr;
|
|
if (Addr - DebugInfo->Addr > DebugInfo->TotalSize) {
|
|
DBG_ERR("Debug message of JPEG end is overflow!!\r\n");
|
|
}
|
|
#endif
|
|
}
|
|
|
|
void Photo_ShutterSoundCB(void)
|
|
{
|
|
}
|
|
/*
|
|
void Photo_AFCB(AF_CBMSG uiMsgID, void *Data)
|
|
{
|
|
|
|
switch (uiMsgID) {
|
|
case AF_CBMSG_AF_START:
|
|
DBG_IND("===AF Start! - ===\r\n");
|
|
#if (FLASHLIGHT_FUNCTION == ENABLE)
|
|
GxFlash_SuspendCharge();
|
|
#endif
|
|
break;
|
|
case AF_CBMSG_AF_DONE:
|
|
DBG_IND("===AF Done! - ===\r\n");
|
|
#if (FLASHLIGHT_FUNCTION == ENABLE)
|
|
GxFlash_ResumeCharge();
|
|
#endif
|
|
Ux_PostEvent(NVTEVT_ALGMSG_FOCUSEND, 1, NVTEVT_ALGMSG_FOCUSEND);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
*/
|
|
#if (PHOTO_MODE==ENABLE)
|
|
static IMG_CAP_QV_DATA gImgQvData = {0};
|
|
#endif
|
|
|
|
|
|
#if ( _TODO)
|
|
|
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
//
|
|
// Callback function for IPL events
|
|
//
|
|
//-------------------------------------------------------------------------------------------------
|
|
extern BOOL bEnableAE;
|
|
extern BOOL bStableAE;
|
|
extern BOOL bEnableVdo;
|
|
extern BOOL bShowPreview;
|
|
void Photo_IPLCB(IPL_PROC_ID Id, IPL_CBMSG uiMsgID, void *Data)
|
|
{
|
|
switch (uiMsgID) {
|
|
case IPL_CBMSG_PREVIEW:
|
|
DBG_IND("===IPL_CBMSG_PREVIEW===\r\n");
|
|
if(!bEnableAE)
|
|
bEnableAE = ae_isopen(AE_ID_1);
|
|
if (_g_bFirstPhoto) {
|
|
TM_BOOT_BEGIN("sensor", "photo_2a_stable");
|
|
}
|
|
Ux_PostEvent(NVTEVT_CALLBACK, 1, NVTEVT_ALGMSG_PREVIEW);
|
|
break;
|
|
case IPL_CBMSG_DZOOM:
|
|
DBG_IND("===IPL_CBMSG_DZOOM===\r\n");
|
|
// post event for update UI
|
|
Ux_PostEvent(NVTEVT_CB_ZOOM, 0);
|
|
break;
|
|
|
|
case IPL_CBMSG_SHUTTER_SOUND:
|
|
Photo_ShutterSoundCB();
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
#endif
|
|
/*
|
|
#include "ae_cb_msg.h"
|
|
static void Photo_AE_CB(AE_CBMSG uiMsgID, void *Data)
|
|
{
|
|
switch (uiMsgID) {
|
|
|
|
case AE_CBMSG_PREVIEWSTABLE:
|
|
DBG_IND("===AE_CBMSG_PREVIEWSTABLE===\r\n");
|
|
if (_g_bFirstPhoto) {
|
|
TM_BOOT_END("sensor", "photo_2a_stable");
|
|
}
|
|
if (_g_bFirstPhoto) {
|
|
_g_bFirstPhoto = FALSE;
|
|
bStableAE = TRUE;
|
|
if(bEnableVdo) {
|
|
if(!bShowPreview) {
|
|
bShowPreview = TRUE;
|
|
Display_ShowPreview(); //show preview immediately (AE should be last one)
|
|
DBG_DUMP("^YShow Preview! (IPL > Video VSync > AE stable)\r\n");
|
|
}
|
|
}
|
|
}
|
|
Ux_PostEvent(NVTEVT_CALLBACK, 1, NVTEVT_ALGMSG_PREVIEW_STABLE);
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
*/
|
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
//
|
|
// Callback function for Capture events
|
|
//
|
|
//-------------------------------------------------------------------------------------------------
|
|
void Photo_CaptureCB(IMG_CAP_CBMSG Msg, void *Data)
|
|
{
|
|
#if (PHOTO_MODE==ENABLE)
|
|
switch (Msg) {
|
|
case IMG_CAP_CBMSG_GET_RAWEND:
|
|
//DxSys_DumpCaptureDrvInfo();
|
|
break;
|
|
case IMG_CAP_CBMSG_GET_ONERAWEND:
|
|
DBG_IND("===GET_ONERAWEND===\r\n");
|
|
break;
|
|
case IMG_CAP_CBMSG_JPEG_OK:
|
|
//Data[0] = PriBS_Addr,Data[1] = PriBS_Size; Data[2] = ScrBS_Addr,Data[3] = ScrBS_Size; Data[4] = ThumbBS_Addr,Data[5] = ThumbBS_Size
|
|
DBG_IND("===JPEGOK===\r\n");
|
|
Ux_PostEvent(NVTEVT_CALLBACK, 1, NVTEVT_ALGMSG_JPGOK);
|
|
break;
|
|
case IMG_CAP_CBMSG_QUICKVIEW:
|
|
DBG_IND("===QVSTART===\r\n");
|
|
{
|
|
memcpy(&gImgQvData, Data, sizeof(gImgQvData));
|
|
Ux_PostEvent(NVTEVT_CALLBACK, 2, NVTEVT_ALGMSG_QVSTART, (UINT32)&gImgQvData);
|
|
}
|
|
break;
|
|
case IMG_CAP_CBMSG_CAPEND:
|
|
DBG_IND("===CAPTUREEND===\r\n");
|
|
Ux_PostEvent(NVTEVT_CALLBACK, 1, NVTEVT_ALGMSG_CAPTUREEND);
|
|
break;
|
|
case IMG_CAP_CBMSG_FSTOK:
|
|
DBG_IND("===CAPFSTOK===\r\n");
|
|
{
|
|
IMG_CAP_FST_INFO *pFstInfo;
|
|
pFstInfo = (IMG_CAP_FST_INFO *)Data;
|
|
//#NT#2016/10/04#Lincy Lin -begin
|
|
//#NT#Support SD hot plug function
|
|
if (pFstInfo->Status != FST_STA_OK) {
|
|
Photo_setS2Status(FALSE);
|
|
}
|
|
//#NT#2016/10/04#Lincy Lin -end
|
|
Ux_PostEvent(NVTEVT_CALLBACK, 2, NVTEVT_ALGMSG_CAPFSTOK, pFstInfo->Status);
|
|
}
|
|
break;
|
|
case IMG_CAP_CBMSG_GEN_DATASTAMP_STR:
|
|
DBG_IND("===Gen DataStamp str===\r\n");
|
|
Photo_GenDateStrCB();
|
|
break;
|
|
case IMG_CAP_CBMSG_GEN_DATASTAMP_PIC:
|
|
DBG_IND("===Gen DataStamp Pic===\r\n");
|
|
Photo_GenDatePicCB(Data);
|
|
break;
|
|
case IMG_CAP_CBMSG_RET_PRV:
|
|
//Before change to preview
|
|
DBG_IND("===Return Preview===\r\n");
|
|
break;
|
|
case IMG_CAP_CBMSG_SET_EXIF_DATA:
|
|
DBG_IND("===Set Exif data===\r\n");
|
|
Photo_WriteExifCB((UINT32 *)Data);
|
|
break;
|
|
case IMG_CAP_CBMSG_WRITE_DEBUG_DATA:
|
|
DBG_IND("===Write debug data===\r\n");
|
|
Photo_WriteDebugCB((IMG_CAP_DEBUG_INFO *)Data);
|
|
break;
|
|
case IMG_CAP_CBMSG_MFHDR:
|
|
DBG_IND("=== HDR ===\r\n");
|
|
break;
|
|
case IMG_CAP_CBMSG_MFANTISHAKE:
|
|
DBG_IND("=== Stab ===\r\n");
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
#endif
|
|
}
|
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
//
|
|
// Callback function for FD,SD events
|
|
//
|
|
//-------------------------------------------------------------------------------------------------
|
|
#if 0//_FD_FUNC_
|
|
void Photo_FdCB(FD_CBMSG uiMsgID, void *Data)
|
|
{
|
|
switch (uiMsgID) {
|
|
case FD_CBMSG_DETEND:
|
|
DBG_IND("===FDEND===\r\n");
|
|
Ux_PostEvent(NVTEVT_EXE_FDEND, 1, NVTEVT_EXE_FDEND);
|
|
break;
|
|
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
#endif
|
|
|
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
//
|
|
// Callback function for S2 key detect
|
|
//
|
|
//-------------------------------------------------------------------------------------------------
|
|
BOOL isS2Pressed = TRUE;
|
|
|
|
void Photo_setS2Status(BOOL isPressed)
|
|
{
|
|
isS2Pressed = isPressed;
|
|
}
|
|
|
|
|
|
BOOL Photo_DetS2CB(void)
|
|
{
|
|
#if 1
|
|
DBG_IND("isS2Pressed=%d\r\n", isS2Pressed);
|
|
return isS2Pressed;
|
|
#else
|
|
if ((GxKey_GetData(GXKEY_NORMAL_KEY) & FLGKEY_SHUTTER2)) {
|
|
return TRUE;
|
|
} else if ((GxKey_GetData(GXKEY_NORMAL_KEY) & FLGKEY_LEFT)) {
|
|
return TRUE;
|
|
}
|
|
return FALSE;
|
|
#endif
|
|
}
|
|
|
|
void Photo_3NDRCB(UINT32 id, UINT32 p3DNRConfig)
|
|
{
|
|
/*
|
|
UINT32 sensor_id;
|
|
|
|
sensor_id = IPL_PATH(0);
|
|
iq_get_tnr_config(sensor_id, p3DNRConfig);
|
|
*/
|
|
}
|
|
|
|
void Photo_RegCB(void)
|
|
{
|
|
ImageApp_Photo_CapConfig(PHOTO_CFG_CAP_MSG_CB ,(UINT32)Photo_CaptureCB);
|
|
ImageApp_Photo_CapConfig(PHOTO_CFG_CAP_DETS2_CB ,(UINT32)Photo_DetS2CB);
|
|
/*
|
|
#if _FD_FUNC_
|
|
FD_RegisterCB(Photo_FdCB);
|
|
#endif
|
|
#if !defined(_IPL1_IPL_FAKE_)
|
|
// Register AF callback func
|
|
AF_RegisterCB(Photo_AFCB);
|
|
#endif
|
|
if (System_GetEnableSensor() == (SENSOR_2)) {
|
|
ImageUnit_Begin(ISF_IPL(1), 0);
|
|
ImageUnit_SetParam(ISF_CTRL, IMAGEPIPE_PARAM_IPL_CB, (UINT32)Photo_IPLCB);
|
|
ImageUnit_End();
|
|
AE_CBMsgInit(IPL_PATH(1), Photo_AE_CB);
|
|
} else {
|
|
ImageUnit_Begin(ISF_IPL(0), 0);
|
|
ImageUnit_SetParam(ISF_CTRL, IMAGEPIPE_PARAM_IPL_CB, (UINT32)Photo_IPLCB);
|
|
ImageUnit_End();
|
|
AE_CBMsgInit(IPL_PATH(0), Photo_AE_CB);
|
|
}
|
|
ImageUnit_Begin(&ISF_Cap, 0);
|
|
ImageUnit_SetParam(ISF_CTRL, CAP_PARAM_CAP_CB, (UINT32)Photo_CaptureCB);
|
|
ImageUnit_SetParam(ISF_CTRL, CAP_PARAM_DETS2_CB, (UINT32)Photo_DetS2CB);
|
|
ImageUnit_End();
|
|
|
|
ImageUnit_Begin(&ISF_VdoEnc, 0);
|
|
ImageUnit_SetParam(ISF_OUT1, VDOENC_PARAM_3DNR_CB, (UINT32)Photo_3NDRCB);
|
|
ImageUnit_End();
|
|
*/
|
|
}
|
|
|