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

📄 l1_system.c

📁 台湾凌阳方案300万数码相机源代码
💻 C
📖 第 1 页 / 共 4 页
字号:
    //PRINT_L1("    L1_InitPlayback: Enter.\n");
	L2_SetJPEGVscale(G_Vsize, G_Vsize);  	//turn off JPEG Vertical scaling function	//cytsai@0219
	/*
	if(G_KeyState ==K_UI_BUTTON_PLAY_SWITCH)	//add  for debug
	{}
	else{
		L2_SetDisplayType(G_DisplayType);
	}
	//*/
	L2_SetDisplayType(G_DisplayType);
	L2_SetDisplaySrcImgSize(G_DSPHsize, G_DSPVsize, G_DisplayType);
//arlpha mask add @050308
        //L2_CtrlScreen(0);       //disable OSD         //cytsai@0128 // XiaoAo mask
		// L2_TurnOnOffDisplay(0); // XiaoAo mask
//arlpha mask end @050308
	//DbgPrint("L2_TurnOnOffDisplay10=%bu\n",10);
	// Disable frame rate conversion
	// set display buffer index is equal to B frame buffer index
	L2_SetDisplayMode(0x00, 0x10);

        //patch4.1@yichang@0516 reset to idle mode when Initial playback
        XBYTE[0x2000]=0x00;
        // set camera operation mode: playback
	L1_InitSPCA533(5);

	//L2_TurnOnOffDisplay (1);			// Turn on display
        //PRINT_L1("    L1_InitPlayback: Exit.\n");
}

//-----------------------------------------------------------------------------
//L1_InitDSC
//-----------------------------------------------------------------------------

void L1_InitDSC() USING_0
{
    //PRINT_L1("    L1_InitDSC: Enter.\n");

    //PRINT_L1("    L1_InitDSC: Exit.\n");
}

//-----------------------------------------------------------------------------
//L1_UICtrl
//-----------------------------------------------------------------------------
void L1_UICtrl() USING_0
{
     UCHAR mode, usbmode;
     UCHAR temp_key;
     #if (TURNKEY_OPTION == 1)
     L2_ConfigGPIOBit(18,0);
     L2_GetGPIOBit(18,&temp_key);
     #else
     L2_ConfigGPIOBit(1,0);
     L2_GetGPIOBit(1,&temp_key);
     #endif
     if(temp_key > 0)
     {
     	//Joe@2003.3.20 16:15 add begin
     	DELAY_10ms();
	DELAY_10ms();

	if(temp_key > 0)
	//Joe@2003.3.20 16:15 add end
	{
		G_UI_USBConnect = K_UI_USB_DISCONNECT; //yichang
		if(G_Timer0StopFlag)
		{
		L2_SetGPIOBit(14,0);     //Power off
			//TIMER0_Start();
			G_Timer0StopFlag = 0;
	UI_Buzzer();
	DELAY_100ms();
	UI_Buzzer();
	DELAY_100ms();
	DELAY_100ms();
	UI_Buzzer();
	DELAY_100ms();
	DELAY_100ms();
	UI_ClearFOSD(25,8,0x00);

	UI_ShowGoodBye();
	DELAY_100ms();
	DELAY_1s();
	UI_Buzzer();
	DELAY_100ms();
	DELAY_100ms();
	L2_ConfigGPIOBit(14,1);
	L2_SetGPIOBit(16,0);  //wendy@2004/9/8//TFT power	//add for debug
	L2_TurnOnOffDisplay (0);  //debug
	L2_CtrlScreen(1);//wendy@2004/9/8
	UI_ClearFOSD(25, 8, 0x08);
	
	L2_SetGPIOBit(14,0);     //Power off
	  UI_CardPowerOnOff(0);//add for debug
	 L2_Suspend_UI(0);
	 G_AutoPowerOffCount=0;
	 L2_Resume_UI();
		}
	}
     }
     else
     {
     	//Joe@2003.3.20 16:15 add begin
     	DELAY_10ms();DELAY_10ms();

	if(temp_key == 0)
	//Joe@2003.3.20 16:15 add end
	{
	      mode = (UCHAR)(((G_UIStatusH& UI_Status_Level2_Mask) >> 8) - 1);
		usbmode = (UCHAR)(((G_UIStatusH& UI_Status_Level1_Mask) >> 12) - 1);
		if((G_KeyState ==K_UI_BUTTON_PCCAM_SWITCH)||(G_KeyState ==K_UI_BUTTON_PLAY_SWITCH)||((G_KeyState==K_UI_BUTTON_NULL)&&(((mode==3)&&(usbmode==0))||((mode==0)&&(usbmode==1))||(mode==1))))
		{
                     G_UI_USBConnect = K_UI_USB_CONNECT; //yichang
                     L2_SetGPIOBit(14,1);     //Power off

        		if(!G_Timer0StopFlag)
		       {
			 	//TIMER0_Stop();
			 	G_Timer0StopFlag = 1;        //wendy
		       }

		}
		else
		{
			G_UI_USBConnect = K_UI_USB_CONNECT;//K_UI_USB_DISCONNECT; //yichang
			L2_SetGPIOBit(14,1);     //Power off
		}
		}
     	}

	//if( ((G_UIStatusH & 0xff00) == K_UISTATUS_DSC_PREVIEW) ||( (G_UIStatusH & 0xff00)== K_UISTATUS_DSC_VIDEO))
      	//	UI_Get_FoucsSwitch();//Davis:patch4.0.0.1_2005/Jun/15

	if(G_KeyState==K_UI_BUTTON_NULL)
	{
 		usbmode = (UCHAR)(((G_UIStatusH& UI_Status_Level1_Mask) >> 12) - 1);
 		mode = (UCHAR)(((G_UIStatusH& UI_Status_Level2_Mask) >> 8) - 1);
	 	if(G_UI_USBConnect == K_UI_USB_CONNECT)
 		{
			if( (mode == K_UI_MODE_USB_PCCAM)&& (usbmode == K_UI_MODE_DSC) )
        		{
        			G_KeyState=K_UI_BUTTON_PCCAM_SWITCH;
             		UI_UsbDPlusPullHigh(0);
				DELAY_100ms();
        		}

			else if( (mode == K_UI_MODE_USB_MASS_STORAGE)&& (usbmode == K_UI_MODE_DSC) )
			{
				 UI_UsbDPlusPullHigh(0);
		 		DELAY_100ms();
		 		G_KeyState=K_UI_BUTTON_PLAY_SWITCH;
			}
			else
			{

			}
 		}
 	else
 	{
	 if( (mode == K_UI_MODE_USB_PCCAM)&& (usbmode == K_UI_MODE_USB) )
	{
		 G_KeyState=K_UI_BUTTON_PCCAM_SWITCH;
	        UI_UsbDPlusPullHigh(0);
		 DELAY_100ms();
       }
	 else if( (mode == K_UI_MODE_USB_MASS_STORAGE)&& (usbmode == K_UI_MODE_USB) )
	 {
		  UI_UsbDPlusPullHigh(0);
		  DELAY_100ms();
		  G_KeyState=K_UI_BUTTON_PLAY_SWITCH;
	 }
	 else
	 {

	 }
 }

}
//wendy@2004/9/8
else
{
//Davis@05.03.14 close if usb plugin MSDC and PC CAM can't change
//if(G_UI_USBConnect == K_UI_USB_DISCONNECT)
	{
		if((G_UIStatusH==K_UISTATUS_USBMODE_PCCAM)||(G_UIStatusH==K_UISTATUS_USBMODE_MASS))
		{
			if(( G_KeyState==K_UI_BUTTON_PREVIEW_SWITCH)||( G_KeyState==K_UI_BUTTON_VIDEO_SWITCH)||( G_KeyState==K_UI_BUTTON_AUDIO_SWITCH))
			UI_UsbDPlusPullHigh(0);
			DELAY_100ms();
		}
	}
//wendy@2004/9/8
}

     if(G_KeyState !=  K_UI_BUTTON_NULL)
     {

     	//Joe@2003.2.25 9:54 add begin
     	G_AutoPowerOffCount = 0;
     	//Joe@2003.2.25 9:54 add end

           if(G_UI_USBConnect == K_UI_USB_CONNECT)
           {

		if((G_KeyState ==K_UI_BUTTON_PCCAM_SWITCH)||(G_KeyState ==K_UI_BUTTON_PLAY_SWITCH))
		{
			UI_SendMessage(G_KeyState, K_UI_GPIO_USB_KEYPRESS);
		//Joe@2003.3.7 12:52 add begin
                	UI_UsbDPlusPullHigh(1);
        //Joe@2003.3.7 12:52 add end
	   	}
          }

           else
           {
		UI_SendMessage(G_KeyState, K_UI_GPIO_KEYPRESS);
	   }

     }

//    UI_PrintOSDNumber(G_AutoPowerOffCount, 2,2, 4);
//    UI_PrintOSDNumber(G_AutoTimeInSec, 2,3,4);


}
//-----------------------------------------------------------------------------
//L1_UpLoadGOSD
//-----------------------------------------------------------------------------
/*++

Routine Description:
        Load Graphic OSD from ROM and de-compresss(Q=1) it to SDRAM

Arguments:
		RomAddr		- 	ROM starting address
		GOSDAddr	-	Graphic OSD location in SDRAM
		nByte		-   number of bytes to be uploaded
		Hsize		-   OSD picture horizontal size
		Vsize		-   OSD picture vertical size
		TempAddr	-   free spcae in SDRAM for decompression
Return Value:
		0x00	- success
		others	- error
--*/

UCHAR L1_UpLoadGOSD(ULONG NANDAddr, ULONG nByte, USHORT OSDHsize, USHORT OSDVsize) USING_0
{
	  UCHAR QIndex;



		//PRINT_L1("    L1_UpLoadGOSD: Enter\n");

		// Read the Q table index
		L2_ReadQTable(0, &QIndex, 0);
		// read graphics OSD vlc stream from NAND flash (address: NANDAddr) to AFB
		//patch5.0@richie@sdram mapping
		L1_NANDtoDRAM(K_SDRAM_ImageCaptureBufAddr, NANDAddr, nByte);
		// set Q table = all 1's
		L2_WriteQTable(0x00, K_Q1, 0);					// parm2=0: Q=1;
		// decompress the vlc stream from AFB to DRAM address "GOSDAddr"
		//patch5.0@richie@sdram mapping
		L2_DeCompress(K_SDRAM_ImageCaptureBufAddr, OSDHsize, OSDVsize, K_SDRAM_GrafFontBufAddr, 0x00, 0x00, 0x00);
//		L2_TurnOnOffDisplay(1);
		// restore the Q table setting
		L2_WriteQTable(0x01, QIndex, 0);						// parm2=1: Q=85;

		//PRINT_L1("    L1_UpLoadGOSD: Exit\n");
		return L1K_SUCCESS;
}

//-----------------------------------------------------------------------------
//L1_UpLoadFOSD
//-----------------------------------------------------------------------------
/*++

Routine Description:
        Load font-based OSD from ROM to SDRAM

Arguments:
		RomAddr		- 	ROM starting address
		FOSDAddr	-	Graphic OSD location in SDRAM
		nByte		-   number of bytes to be uploaded
Return Value:
		0x00	- success
		others	- error
--*/

UCHAR L1_UpLoadFOSD(ULONG NANDAddr, ULONG nByte) USING_0
{
        ULONG charFontBufAddr = K_SDRAM_CharFontBufAddr;

	//PRINT_L1("    L1_UpLoadFOSD: Enter\n");

        // read font OSD from NAND flash (address: NANDAddr) to DRAM address "charFontBufAddr"
        L1_NANDtoDRAM(charFontBufAddr, NANDAddr, nByte);

	//PRINT_L1("    L1_UpLoadFOSD: Exit\n");

	return L1K_SUCCESS;
}

//-----------------------------------------------------------------------------
//L1_UpLoadBadPxlCoor
//-----------------------------------------------------------------------------
/*++

Routine Description:
        Load bad pixel coordinates to SDRAM

Arguments:
		RomAddr		- 	ROM starting address
		GOSDAddr	-	Graphic OSD location in SDRAM
		nByte		-   number of bytes to be uploaded
		Hsize		-   OSD picture horizontal size
		Vsize		-   OSD picture vertical size
		TempAddr	-   free spcae in SDRAM for decompression
Return Value:
		0x00	- success
		others	- error
--*/
UCHAR L1_UpLoadBadPxlCoor(USHORT RomAddr) USING_0
{
		USHORT length;
		USHORT i;
		UCHAR cmp;


		//PRINT_L1("    L1_UpLoadBadPxlCoor: Enter\n");
		//PRINT_L1("    L1_UpLoadBadPxlCoor: RomAddr=%x\n",RomAddr);

		// the information of how many of bad pixel need to be corrected
		// is stored in the first two bytes
		length = CBYTE[RomAddr]*256 + CBYTE[RomAddr+1];
		//PRINT_L1("    L1_UpLoadBadPxlCoor: length=%d\n",length);

		// no more than 1024 coordinates
		if(length>2048) return L1K_ERROR_PARAMETER;

// note: WritePort(0x00) will be replaced by FillDRAM after ECO
		L2_ResetDMA();

		if(length>1024) {
                        // DMA source: DMAPort(XBYTE[0x2300]), DMA target: SDRAM address "badPixelCoordBufAddr"
                        L2_SetDRAMDMA(K_SDRAM_BadPixelCoordBufAddr);
			L2_DoDMA(0x05, 0x00, 1024, 0x01, 0x00);
			// move the coordinates information to the SDRAM via L2_WriteDMAPort
			for(i=0; i<1024; i++) L2_WriteDMAPort(CBYTE[RomAddr+2+i]);
			do {
				L2_CheckDMACmp(&cmp);
			} while(cmp==0);
                        // DMA source: DMAPort(XBYTE[0x2300]), DMA target: SDRAM address "badPixelCoordBufAddr+512"
                        L2_SetDRAMDMA(K_SDRAM_BadPixelCoordBufAddr+512);
			L2_DoDMA(0x05, 0x00, 1024, 0x01, 0x00);
			// move the coordinates information to the SDRAM via L2_WriteDMAPort
			for(i; i<length; i++) L2_WriteDMAPort(CBYTE[RomAddr+2+i]);
			// fill the unused SDRAM space with data '0x00'
			for(i; i<2048; i++) L2_WriteDMAPort(0x00);
			do {
				L2_CheckDMACmp(&cmp);
			} while(cmp==0);
		}

		else {
                        L2_SetDRAMDMA(K_SDRAM_BadPixelCoordBufAddr);
			L2_DoDMA(0x05, 0x00, 1024, 0x01, 0x00);
			for(i=0; i<length; i++) L2_WriteDMAPort(CBYTE[RomAddr+2+i]);
			for(i; i<1024; i++) L2_WriteDMAPort(0x00);
			do {
				L2_CheckDMACmp(&cmp);
			} while(cmp==0);

                        L2_SetDRAMDMA(K_SDRAM_BadPixelCoordBufAddr+512);
			L2_DoDMA(0x05, 0x00, 1024, 0x01, 0x00);
			for(i; i<2048; i++) L2_WriteDMAPort(0x00);
			do {
				L2_CheckDMACmp(&cmp);
			} while(cmp==0);
		}

		//PRINT_L1("    L1_UpLoadBadPxlCoor: Exit\n");
		return L1K_SUCCESS;
}


void L1_TestOSD(USHORT L1_ID) USING_0
 {
 //patch4.5@richie@no use mark begin
/*

 UCHAR i;

   for(i=0;i<25;i++)  L2_SetFOSDIndex(1, i, 0X000);

    switch(L1_ID)
	 {
	  case 0X0100 : //preview (zoom)
  		           L2_SetFOSDIndex(1, 2, 0X06F);
		           L2_SetFOSDIndex(1, 3, 0X071);
		           L2_SetFOSDIndex(1, 4, 0X064);

⌨️ 快捷键说明

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