📄 l1_system.c
字号:
#if (TURNKEY_OPTION == 1)
L2_GetGPIOBit(18,&temp_key);
#else
L2_GetGPIOBit(1,&temp_key);
#endif
if(temp_key > 0)
//Joe@2003.3.20 16:15 add end
{
G_UI_USBConnect = K_UI_USB_DISCONNECT; //yichang
if(G_Timer0StopFlag)
{
TIMER0_Start();
G_Timer0StopFlag = 0;
}
}
}
else
{
//Joe@2003.3.20 16:15 add begin
DELAY_10ms();DELAY_10ms();
#if (TURNKEY_OPTION == 1)
L2_GetGPIOBit(18,&temp_key);
#else
L2_GetGPIOBit(1,&temp_key);
#endif
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
if(!G_Timer0StopFlag)
{
TIMER0_Stop();
G_Timer0StopFlag = 1; //wendy
}
}
else
{
G_UI_USBConnect = K_UI_USB_CONNECT;//K_UI_USB_DISCONNECT; //yichang
}
}
}
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);
L2_SetFOSDIndex(1, 5, 0X075);
L2_SetFOSDIndex(1, 6, 0X068);
L2_SetFOSDIndex(1, 7, 0X064);
L2_SetFOSDIndex(1, 8, 0X076);
if(G_PVZFactor==20)
{
L2_SetFOSDIndex(1, 11, 0X079);
L2_SetFOSDIndex(1, 12, 0X06E);
L2_SetFOSDIndex(1, 13, 0X06E);
L2_SetFOSDIndex(1, 14, 0X06C);
}
break;
case 0X0101 : //DSC (zoom)
L2_SetFOSDIndex(1, 2, 0X063);
L2_SetFOSDIndex(1, 3, 0X072);
L2_SetFOSDIndex(1, 4, 0X062);
if(G_PVZFactor==20)
{
L2_SetFOSDIndex(1, 11, 0X079);
L2_SetFOSDIndex(1, 12, 0X06E);
L2_SetFOSDIndex(1, 13, 0X06E);
L2_SetFOSDIndex(1, 14, 0X06C);
}
break;
case 0X0102 : //VideoClip (zoom)
L2_SetFOSDIndex(1, 2, 0X075);
L2_SetFOSDIndex(1, 3, 0X068);
L2_SetFOSDIndex(1, 4, 0X063);
L2_SetFOSDIndex(1, 5, 0X064);
L2_SetFOSDIndex(1, 6, 0X06E);
L2_SetFOSDIndex(1, 7, 0X062);
L2_SetFOSDIndex(1, 8, 0X06B);
L2_SetFOSDIndex(1, 9, 0X068);
L2_SetFOSDIndex(1,10, 0X06F);
if(G_PVZFactor==20)
{
L2_SetFOSDIndex(1, 12, 0X079);
L2_SetFOSDIndex(1, 13, 0X06E);
L2_SetFOSDIndex(1, 14, 0X06E);
L2_SetFOSDIndex(1, 15, 0X06C);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -