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

📄 cardusr.c

📁 台湾凌阳方案300万数码相机源代码
💻 C
字号:
// WWW1 start
#include "general.h"
#include "cardimpt.h"
#include "cardlink.h"
#include "cardusr.h"
// WWW1 end

//patch3.2@ada@0401 For Multi-Frame Play Back
#include "dosvar.h"
#include "dosusr.h"

//version4.0@ada@0513 for Play Back
#include "uiflow.h"
#include "exifhdr.h"

//-----------------------------------------------------------------------------
//Variable
//-----------------------------------------------------------------------------
xdata   UCHAR    G_thumbnailPlayFlag;  //cch@10/26
xdata   UCHAR    G_Image_Type;

//version4.0@ada@0513 for Card Write Protect
xdata   UCHAR    G_Card_WriteProtect;
extern xdata UCHAR G_FlashStatus;
extern void UI_SensorPowerOnOff(UCHAR On);


//cytsai@1211
// WWWW3
//patch3.2@ada@0401 For Multi-Frame Play Back
//patch3.2@ada@0401 For DPOF
UCHAR Card_CaptureObject(USHORT objType) USING_0
{
        BYTE cameraMode;
        BYTE bAudio;
        BYTE name[12];
        BYTE sts = FALSE;
        USHORT i;

        if ( objType == K_CAPTURE_Image )       //cch
                cameraMode = K_MODE_DSC;        //DSC
        else
                cameraMode = K_MODE_VIDEOCLIP;  //Video clip

        INITIO_SetCameraSize(cameraMode);

        #if (SINGLE_DIRECTORY == 0)
        //version4.0@ada@0513 for Multi-Directory
        if (G_USR_FileIndex >= 10000)
        {
             printf("G_USR_FileIndex 1= %d\n",G_USR_FileIndex);

             sts = USR_CreateNewDir1();

             if (sts == FALSE)
             {
               return FALSE;
             }
        }
        #endif

        switch (objType)
        {
                case K_CAPTURE_Image:
                        //cch@10/18
                        i = 0;
			#if 0
                        do
                        {
			#endif
                        //DbgPrint("Card_CaptureObject: capture one image starting; where G_wValueLock = %x, i = %x\n", G_wValueLock, i);

#if (OSD_OPTION == 1)
                        OSD_ShowPlaybackNumber(3,i+1);         //cch@10/22
#endif
                        G_Image_SrcDataType = K_File_DataType_YUV422;

                        USR_SetJpgName(name, G_USR_FileIndex);
                        File_SendMessage( K_File_UI_Start_DscFile, G_USR_FileCount );
                        sts = File_SnapJpg(name);

                        if ( sts == TRUE )
                        {
                              //ada@0401 For Multi-Frame Play Back
                              //For JPEG file play back speeding-up
                              //version4.0@ada@0513 for DCF
                              //USR_WriteDramFdbParameter(K_SDRAM_JPG_FdbParameterBufAddr + ((ULONG)G_USR_FileIndex - 1) * 3);
                              USR_WriteDramFdbParameter(K_USR_JPG_TYPE,G_USR_FileIndex);

                              //ada@0401 For DPOF

                              //patch4.4@ada@DPOF begin
                              //if (sts)
                              //{
                              //     L2_DRAMSetStartAddr((K_SDRAM_DPOF3_BufAddr + ((ULONG)G_USR_FileIndex - 1) * 3),K_SDRAM_NoPrefetch);
                                   //version4.0@ada@0513 for DPOF
                              //     L2_DRAMWriteWord(0xff,0x00);
                              //     L2_DRAMWriteWord(0x00,K_EXIF_IMAGE_FORMAT);
                              //}
                              //patch4.4@ada@DPOF end

                              //version4.0@ada@0513 for DCF
                              G_USR_LastFileIndex = G_USR_FileIndex;

							//patch4.5@ada@Fix file index bug begin
							if (G_USR_FileCount == 0)
							{
								G_USR_FirstFileIndex = G_USR_FileIndex;
							}

							if (G_USR_JpgFileCount == 0)
							{
								G_USR_FirstJpgFileIndex = G_USR_FileIndex;
							}
							//patch4.5@ada@Fix file index bug end

                              G_USR_FileIndex++;
                              G_USR_FileCount++;

                              //patch4.4@ada@DPOF skip AVI & WAV begin
                              G_USR_LastJpgFileIndex++;
                              G_USR_JpgFileCount++;
                              //printf("G_USR_FirstJpgFileIndex = %d\n",G_USR_FirstJpgFileIndex);
                              //printf("G_USR_LastJpgFileIndex = %d\n",G_USR_LastJpgFileIndex);
                              //printf("G_USR_JpgFileCount = %d\n",G_USR_JpgFileCount);
                              //patch4.4@ada@DPOF skip AVI & WAV end

                              File_SendMessage( K_File_UI_End_DscFile, G_USR_FileCount );
                        }
                        else
			{
                                File_SendMessage( K_File_UI_Err_DscFile, 0 );
				//patch5.0@richie@card full
				//break;
			}
                        L2_WriteQTable(K_QWriteTable, K_Qxx, NULL);  // restore

                        //DbgPrint("Card_CaptureObject: capture one image ended\n");
                        i++;

			#if 0
                        } while ( i< G_wValueLock );
			#endif
				UI_SensorPowerOnOff(1);
				XBYTE[0x2080] = 0x01; //power on TGPLL
				L2_InitFront(0);
				L2_InitAEAW(0);


                        L1_InitPreview(1);       //cytsai@0102
                        //wendy@2004/9/9
            if(G_FlashStatus==0)
			{
//		L2_SetGPIOBit(15,0);	//LCD_BACKLIGHT
			L2_TurnOnOffDisplay (0);  //debug
			}
                        //wendy@2004/9/9

                        break;

                case K_CAPTURE_AudioStream:    // WAV file, @WYEO, 102501
                	#if ( AUDIO_OPTION == 1 )
			USR_SetWaveName(name, G_USR_FileIndex);
                        File_SendMessage( K_File_UI_Start_WaveFile, G_USR_FileCount );
			sts = File_RecordWave(&name[0], G_File_SDRAM_AudioBufAddr, G_File_SDRAM_AudioBufSize, 0); // WWW1
                        if ( sts == TRUE )
                        {
                                G_USR_FileIndex++;
                                G_USR_FileCount++;
                                File_SendMessage( K_File_UI_End_WaveFile, G_USR_FileCount );
                        }
                        else
                                File_SendMessage( K_File_UI_Err_WaveFile, 0 );
			#endif
                        break;

                case K_CAPTURE_VideoStream:
                case K_CAPTURE_AudioVideoStream:
                        if ( objType == 3 )
                                bAudio = TRUE;
                        else
                                bAudio = FALSE;

                        G_Image_QTableIndex = K_Q50;
                        G_Image_SrcDataType = K_File_DataType_YUV411;
                        USR_SetAviName(name, G_USR_FileIndex);
                        File_SendMessage( K_File_UI_Start_AviFile, G_USR_FileCount );
                        sts = File_RecordAvi(&name[0], bAudio);
                        if ( sts == TRUE )
                        {
                                G_USR_FileIndex++;
                                G_USR_FileCount++;
                                File_SendMessage( K_File_UI_End_AviFile, G_USR_FileCount );
                        }
                        else
                                File_SendMessage( K_File_UI_Err_AviFile, 0 );
                        L2_WriteQTable(K_QWriteTable, K_Qxx, NULL);  // restore
                        break;
                default:
                	sts = FALSE;
                        break;
        }
        return sts;
}

UCHAR Card_DeleteObject(USHORT objIndex) USING_0
{
	UCHAR	sts;

        switch (objIndex)
        {
                case 0x0000:
                        sts = UI_DeleteAllFile();
                        break;

                default:
                        //version4.0@ada@0513 for DCF
                        sts = UI_Delete1File(objIndex);
                        break;
        }
        return sts;
}

UCHAR Card_UploadObject(USHORT objType, USHORT objIndex) USING_0
{
	UCHAR	sts;

        switch (objType)
        {
                case 0x0001:
                        sts = USR_UploadFdb(objIndex);
                        break;

                case 0x0002:
                case 0x0003:
                        sts = USR_Upload1File(objIndex);
                        break;
		//patch4.5@richie@partial file upload begin
                case 0x0004:
                        sts = USR_UploadPartialFile(G_ArgBuf[0],G_ArgBuf[1],objIndex);
                        break;
		//patch4.5@richie@partial file upload end

                default:
                	sts = FALSE;
                        break;
        }
        return sts;
}

#if (PLAYBACK_OPTION)

UCHAR Card_PlaybackObject(USHORT objType, USHORT objIndex) USING_0
{
	 UCHAR sts = TRUE;
        USHORT i;
        UCHAR    PIndex=0;
        UCHAR    addr273a;
        USHORT    x=20;    // x offset
        USHORT    y=15;    // y offset
        XBYTE[0x2306] = 0x00;   //cch@10/18
        SETMODE_ChangeCameraMode(K_MODE_PLAYBACK);
        XBYTE[0x2745] = 0x00;
        XBYTE[0x2740] = 0x00;
        XBYTE[0x2742] = 0x00;
        addr273a      = XBYTE[0x273a] ;
        G_thumbnailPlayFlag =0;              //cch @10/26

        switch (objType)
        {
                case 0x0000:    // nine thumbnail playback
                        for (i=1 ;i<= G_USR_FileIndex ;i++) // // @WYEO, 102401
                        {
                            G_thumbnailPlayFlag =1;
                            XBYTE[0x273a] = 0x1;
                            // one fix position
#if (OSD_OPTION == 1)
                            G_PIndex = i;
#endif
                            PIndex = i%9;
                            if (PIndex == 0) PIndex = 9;
                            x = ((PIndex-1) % 3) * ( 80+ 10) +30 ;
                            y = ((PIndex-1) / 3) * ( 60+ 10) +20 ;
                            XBYTE[0x2745] = 0x01;
                            XBYTE[0x2740] = (BYTE) x;
                            XBYTE[0x2742] = (BYTE) y;
                        USR_PlayJpg(i, G_SDRAM_ImageAddr);
#if (OSD_OPTION == 1)
                        OSD_ShowPlaybackNumber(PIndex,i);         //cch@10/22
#endif
                        }
//                      SETMODE_ChangeCameraMode(K_MODE_IDLE);
                        break;
//                case 0x0001:    // four thumbnail playback
 //               	sts = FALSE;
  //                      break;
                case 0x0001:    // one image playback

                        //XBYTE[0x273a] = 0x21;
#if (OSD_OPTION == 1)
                        //OSD_ShowPlaybackNumber(3,objIndex);         //cch@10/22
#endif
                        sts = USR_PlayJpg(objIndex, G_SDRAM_ImageAddr);
                        break;
                case 0x0002:    // image slide show playback
                        for (i=1 ;i<=G_USR_FileIndex ;i++)      // @WYEO, 102401
                        {
                        XBYTE[0x273a] = 0x21;
#if (OSD_OPTION == 1)
                        OSD_ShowPlaybackNumber(3,i);       //cch@10/22
#endif
                        USR_PlayJpg(i, G_SDRAM_ImageAddr);
                        }
//                      SETMODE_ChangeCameraMode(K_MODE_IDLE);
                        break;
                case 0x0003:    // video playback
                        //@WYEO, 1016
                        XBYTE[0x273a] = 0x1;
#if (OSD_OPTION == 1)
                        OSD_ShowPlaybackNumber(3,objIndex);         //cch@10/22
#endif
                        //@WYEO, 1023
                        //USR_PlayAvi(objIndex, G_SDRAM_ImageAddr, (G_DOS_SDRAM_MaxAddr - G_SDRAM_ImageAddr)<<1, 0, 0);
                        sts = USR_Play1File(objIndex, FALSE);         // @WYEO
                        break;

                case 0x0004:    // image slide show playback
                        for (i=1 ;i<=G_USR_FileIndex ;i++)      // @WYEO, 102401
                        {
#if (OSD_OPTION == 1)
                        OSD_ShowPlaybackNumber(3,i);       //cch@10/22
#endif
                        USR_Play1File(i, FALSE);         // @WYEO
                        }
//                      SETMODE_ChangeCameraMode(K_MODE_IDLE);
                        break;
                default:
                	sts = FALSE;
                        break;
        }
        XBYTE[0x273a] = addr273a;
//cch   SETMODE_ChangeCameraMode(K_MODE_IDLE);
	return sts;
}
#endif

⌨️ 快捷键说明

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