?? vc0528test.c
字號(hào):
/*
* Com.c
*
* Copyright (C) 2004 Vimicro Corporation
*
* This file is the demo for RDK/DRIVER testing
*/
#include "Com.h"
#include "vc0528test.h"
#include"..\..\vc0528rdk\vim_common.h"
#include "..\inc\bmp.h"
#include "..\..\vc0528demo\inc\thin_usr.h"
#include "..\..\vc0528demo\inc\fat_thin.h"
/* 使用示范代碼
1,實(shí)現(xiàn)串口收數(shù)和發(fā)數(shù)API
*/
//UINT32 (*pReceiveCom)(UINT8* pbDptr)----->Get_UartRec(UINT8* ptr)
//void (*pSendCom)(UINT8* pbDptr, UINT32 dNum)--->void Send_Uart(UINT8* pbDptr, UINT32 dNum)
UINT8 rec_buffer[100];
UINT8 *precbuff=rec_buffer;
UINT8 *preadbuff=rec_buffer;
UINT16 RGB_buf[240*320];
F_FILE *g_file;
#ifdef PYTHON
void RecV5H_Command(UINT8 uOneByte) //將此函數(shù)放到串口接收中斷即可
{
*precbuff++=uOneByte;
if((precbuff-rec_buffer)>=100)
precbuff=rec_buffer;
}
#endif
UINT32 Get_UartRec(UINT8* ptr)
{
if(preadbuff!=precbuff)
{
*ptr++=*preadbuff++;
if((preadbuff-rec_buffer)>=100)
preadbuff=rec_buffer;
return 1;
}
else
return 0;
}
void Send_Uart(UINT8* pbDptr, UINT32 dNum)
{
while(dNum--)
Uart_SendByte(*pbDptr++);
}
/*
//將下面的代碼放到MAIN.C中,注意之前先初始化UART
Com_Init(Get_UartRec, Send_Uart);
while(1)
{
Test_Process();
}
*/
void test578_LCDIF_BypassLcdRed(UINT16 startx,UINT16 starty,UINT16 width,UINT16 height)
{
UINT16 i,j;
VIM_HAPI_SetWorkMode(VIM_HAPI_MODE_BYPASS);
for(i=starty;i<starty+height;i++)
{
*(volatile UINT16*)(0x8000000) = 0x21;
*(volatile UINT16*)(0x8000200) = 0x100*i+startx;
*(volatile UINT8*)(0x8000000) = 0x22;
for(j=startx;j<startx+width;j++)
{
*(volatile UINT16*)(0x8000200) = 0xf800;
}
}
}
#define BUFLEN 0x160000
UINT32 g_BufLen = 1;
UINT32 g_BufLen2 = 0;
UINT32 g_BufId = 0;
UINT32 g_picnum = 1;
extern UINT8 JpegBuf[0x160000];
extern UINT8 YUVBuf[0x15000];
extern UINT8 BmpBuf[128*160*2];
extern UINT8 ThumbBuf[0x1000];
UINT8 *g_TestBuffer=JpegBuf;
char g_TestBuffer2[20480];
void CaptureCallback(UINT8 Status, UINT32 Byte_Length)
{
switch (Status)
{
case VIM_HAPI_ONEFRAME_END:
break;
case VIM_HAPI_CAPTURE_END:
Beep(1);
Delay(50);
Beep(0);
g_BufLen=Byte_Length;
//Uart_Printf("\n568 ISR_MarbEncDone!CapFileLength=%x",Byte_Length);
//Uart_Printf("\n568 ISR_MarbEncDone!V5H_Capture_GetFrmCount=%d",V5H_Capture_GetFrmCount());
break;
//case V5H_FIFO_FULL:
//Uart_Printf("\n568 ISR_MarbFifoCnt!CapFileLength=%x",Byte_Length);
//break;
case VIM_HAPI_BUF_ERROR:
g_BufLen=0;
//Uart_Printf("\n568 ISR_Buf error,ID%d",Byte_Length);
break;
}
}
void Test_Process(void)
{
UINT16 ID;
UINT32 i;
UINT8 temp;
const char name[200];
if(Com_Check())
{
if(Com_GetMainID()==FILE_COMMAND)
{
ID=Com_GetFuncID();
//Com_GetFuncPara();
switch(ID)
{
case FILE_UPLOAD_COMMAND:
//memset(g_TestBuffer,0x2,10240);
g_BufId = dPara[1];
if(g_BufId > 1)
{
dPara[0] = 0x10; // buffer Id Error
Com_ReturnValue(1);
}
else
{
if(g_BufId == 0)
{
dPara[0] = 0x0;
dPara[1] = g_BufLen;
Com_ReturnValue(2);
Delay(500);
Com_UploadFile((UINT8 *)g_TestBuffer,dPara[1]);
}
else if (g_BufId == 1)
{
dPara[0] = 0x0;
dPara[1] = g_BufLen2;
Com_ReturnValue(2);
Delay(500);
Com_UploadFile((UINT8 *)g_TestBuffer2,dPara[1]);
}
}
break;
case FILE_DOWNLOAD_COMMAND:
//memset(g_TestBuffer,0x1,10240);
g_BufId = dPara[1];
if(g_BufId > 1)
{
dPara[0] = 0x10; // buffer Id Error
Com_ReturnValue(1);
}
else
{
if(g_BufId == 0)
{
g_BufLen = dPara[0];
dPara[0] = 0x0;
Com_ReturnValue(1);
g_TestBuffer=JpegBuf;
Com_DownloadFile(g_TestBuffer,g_BufLen);
}
else
{
g_BufLen2 = dPara[0];
dPara[0] = 0x0;
Com_ReturnValue(1);
Com_DownloadFile((UINT8 *)g_TestBuffer2,g_BufLen2);
}
}
Delay(1);
break;
}
}
else if(Com_GetMainID()==COMMAND578)
{
ID=Com_GetFuncID() ;
//Com_GetFuncPara();
switch(ID)
{
case cV858_HIF8_WRITE:
Com_ReturnValue(0);
VIM_HIF_SetReg8(dPara[0],dPara[1]);
break;
case cV858_HIF8_READ:
dPara[0]=VIM_HIF_GetReg8(dPara[0]);
//dPara[0]=8;
Com_ReturnValue(1);
break;
case cV858_HIF16_WRITE:
Com_ReturnValue(0);
VIM_HIF_SetReg16(dPara[0],dPara[1]);
break;
case cV858_HIF16_READ:
//dPara[0]=16;
dPara[0]=VIM_HIF_GetReg16(dPara[0]);
Com_ReturnValue(1);
break;
case cV858_HIF32_WRITE:
Com_ReturnValue(0);
VIM_HIF_SetReg32(dPara[0],dPara[1]);
break;
case cV858_HIF32_READ:
//dPara[0]=32;
dPara[0]=VIM_HIF_GetReg32(dPara[0]);
Com_ReturnValue(1);
break;
//file operate
case cVIM_OPEN_FILE_WRITE:
sprintf(name,"%d.jpg",g_picnum);
g_file=f_open(name,"w+");
if(g_file)
dPara[0]=0;
else
dPara[0]=1;
Com_ReturnValue(1);
break;
case cVIM_OPEN_FILE_READ:
if( g_picnum>37)
g_picnum=0;
sprintf(name,"%d.jpg",g_picnum);
g_file=f_open(name,"r+");
if(g_file)
dPara[0]=0;
else
dPara[0]=1;
Com_ReturnValue(1);
break;
case cVIM_CLOSE_FILE:
if(g_BufLen)
dPara[0]=f_close(g_file);
else
dPara[0]=28;
g_picnum++;
Com_ReturnValue(1);
break;
case cV578_HAPI_SetWordMode:
dPara[0]=(UINT32)VIM_HAPI_SetWorkMode((VIM_HAPI_WORKMODE)dPara[0]);
Com_ReturnValue(1);
break;
case cV578_LCDIF_BypassLcdRed:
test578_LCDIF_BypassLcdRed(dPara[0],dPara[1],dPara[2],dPara[3]);
Com_ReturnValue(0);
break;
case cV578_HAPI_DrawLcdRctngl:
if((dPara[3]==40)&(dPara[4]==30))
g_TestBuffer=(UINT8 *)rgb40x30;
else if((dPara[3]==64)&(dPara[4]==48))
g_TestBuffer=(UINT8 *)rgb64x48;
else
g_TestBuffer=(UINT8 *)BMP1;
dPara[0]=VIM_HAPI_DrawLCDRctngl((VIM_HAPI_LAYER)dPara[0],dPara[1],dPara[2],dPara[3],dPara[4],(HUGE UINT8 *)g_TestBuffer);//(UINT8 *)RGB_buf);
Com_ReturnValue(1);
break;
case cV578_HAPI_UpdateLcd:
dPara[0]=VIM_HAPI_UpdateLCD((VIM_HAPI_LAYER)dPara[0],dPara[1],dPara[2],dPara[3],dPara[4]);
Com_ReturnValue(1);
break;
case cVIM_HAPI_SelectLCDPanel:
dPara[0] = VIM_HAPI_SelectLCDPanel(dPara[0]);
Com_ReturnValue(1);
break;
case cVIM_HAPI_DrawLCDPureColor:
dPara[0] = VIM_HAPI_DrawLCDPureColor(dPara[0],dPara[1],dPara[2],dPara[3],dPara[4],dPara[5]);
Com_ReturnValue(1);
break;
case cVIM_HAPI_SetLCDColordep:
dPara[0] = VIM_HAPI_SetLCDColordep(dPara[0]);
Com_ReturnValue(1);
break;
case cVIM_HAPI_SetLCDMirror:
dPara[0] = VIM_HAPI_SetLCDMirror(dPara[0],dPara[1]);
Com_ReturnValue(1);
break;
case cVIM_HAPI_SetLCDSize:
dPara[0] = VIM_HAPI_SetLCDSize(dPara[0],dPara[1],dPara[2],dPara[3],dPara[4]);
Com_ReturnValue(1);
break;
case cV578_HAPI_SetLcdWorkMode:
dPara[0]=VIM_HAPI_SetLCDWorkMode((VIM_HAPI_LCDWORKMODE)dPara[0],dPara[1]);
Com_ReturnValue(1);
break;
case cV578_I2cWriteByte:
dPara[0] = VIM_SIF_I2cWriteByte((UINT8)dPara[0],dPara[1]);
Com_ReturnValue(1);
break;
case cV578_I2cReadByte:
dPara[0] = VIM_SIF_I2cReadByte((UINT8)dPara[0],&temp);
dPara[1] = temp;
Com_ReturnValue(2);
break;
case cV578_HAPI_SetCaptureParameter:
dPara[0] = VIM_HAPI_SetCaptureParameter((UINT16)dPara[0],(UINT16)dPara[1]);
Com_ReturnValue(1);
break;
case cV578_HAPI_SetPreviewParameter:
dPara[0] = VIM_HAPI_SetPreviewParameter((UINT16)dPara[0],(UINT16)dPara[1],(UINT16)dPara[2],(UINT16)dPara[3]);
Com_ReturnValue(1);
break;
case cV578_HAPI_SetPreviewMode:
dPara[0] = VIM_HAPI_SetPreviewMode((VIM_HAPI_PREVIEW_MODE)dPara[0]);
Com_ReturnValue(1);
break;
case cVIM_HAPI_CaptureStill:
if(dPara[0]==VIM_HAPI_ROM_SAVE)
g_TestBuffer=(UINT8 *)g_file;
else
g_TestBuffer=JpegBuf;
g_BufLen=0;
if(dPara[1]==0)
{
dPara[0] = VIM_HAPI_CaptureStill((UINT8)dPara[0],g_TestBuffer,BUFLEN,0);
g_BufLen=VIM_HAPI_GetCaptureLength();
Beep(1);
Delay(50);
Beep(0);
}
else
dPara[0] = VIM_HAPI_CaptureStill((UINT8)dPara[0],g_TestBuffer,BUFLEN,CaptureCallback);
Com_ReturnValue(1);
break;
case cVIM_INT_USB:
MassStorage_Init();
break;
case cVIM_HAPI_SetCaptureVideoInfo:
if(dPara[0]==VIM_HAPI_ROM_SAVE)
g_TestBuffer=(UINT8 *)g_file;
else
g_TestBuffer=JpegBuf;
dPara[0]=VIM_HAPI_SetCaptureVideoInfo((UINT8)dPara[0],(UINT8)dPara[1],(UINT8)dPara[2]);
Com_ReturnValue(1);
break;
case cVIM_HAPI_StartCaptureVideo:
dPara[0]=VIM_HAPI_StartCaptureVideo(g_TestBuffer,BUFLEN,CaptureCallback);
Com_ReturnValue(1);
break;
case cVIM_HAPI_StopCapture:
dPara[0]=VIM_HAPI_StopCapture();
Com_ReturnValue(1);
break;
//form here testing by Amanda Deng
case cVIM_HAPI_ReadyToDisplay:
if(dPara[0]==VIM_HAPI_ROM_SAVE)
g_TestBuffer=(UINT8 *)g_file;
else
g_TestBuffer=JpegBuf;
dPara[0] = VIM_HAPI_ReadyToDisplay((VIM_HAPI_SAVE_MODE)dPara[0],g_TestBuffer,dPara[1],(UINT16)dPara[2],(UINT16)dPara[3],(UINT16)dPara[4],(UINT16)dPara[5]);
//UINT16 VIM_HAPI_ReadyToDisplay ( SaveMode, jpegBuf, length, LcdOffsetX, LcdOffsetY, DisplayWidth, DisplayHeight)
Com_ReturnValue(1);
break;
case cVIM_HAPI_DisplayOneFrame:
dPara[0] =VIM_HAPI_DisplayOneFrame(NULL,0);
Com_ReturnValue(1);
break;
case cVIM_HAPI_Display_Jpeg:
if(dPara[0]==VIM_HAPI_ROM_SAVE)
g_TestBuffer=(UINT8 *)g_file;
else
g_TestBuffer=JpegBuf;
dPara[0] = VIM_HAPI_Display_Jpeg((VIM_HAPI_SAVE_MODE)dPara[0],g_TestBuffer,dPara[1],(UINT16)dPara[2],(UINT16)dPara[3],(UINT16)dPara[4],(UINT16)dPara[5]);
//UINT16 VIM_HAPI_Display_Jpeg ( SaveMode, jpegBuf, length, LcdOffsetX, LcdOffsetY, DisplayWidth, DisplayHeight)
Com_ReturnValue(1);
break;
case cVIM_HAPI_DisplayPan:
//UINT16 VIM_HAPI_DisplayPan( LcdOffsetX, LcdOffsetY, JpegOffsetX, JpegOffsetY, DisplayWidth, DisplayHeight);
dPara[0] = VIM_HAPI_DisplayPan((UINT16)dPara[0],(UINT16)dPara[1],(UINT16)dPara[2],(UINT16)dPara[3],(UINT16)dPara[4],(UINT16)dPara[5]);
Com_ReturnValue(1);
break;
case cVIM_HAPI_SetThumbParameter:
dPara[0] =VIM_HAPI_SetThumbParameter((UINT16)dPara[0],(UINT16)dPara[1]);
Com_ReturnValue(1);
break;
case cVIM_HAPI_Decode_Jpeg:
if(dPara[0]==VIM_HAPI_ROM_SAVE)
g_TestBuffer=(UINT8 *)g_file;
else
g_TestBuffer=JpegBuf;
//UINT16 VIM_HAPI_Decode_Jpeg( SaveMode, DecodeMode, jpegBuf, pDest, jpeglength, Destlength, Target_Width, Target_Height);
switch (dPara[1])
{
case VIM_DECODE_RESIZE_TO_RGB:
case VIM_DECODE_WITHFRAME_TO_RGB:
dPara[0] = VIM_HAPI_Decode_Jpeg((VIM_HAPI_SAVE_MODE)dPara[0],(UINT8)dPara[1],g_TestBuffer,BmpBuf,dPara[2],dPara[3],(UINT16)dPara[4],(UINT16)dPara[5]);
break;
case VIM_DECODE_RESIZE_TO_YUV:
case VIM_DECODE_WITHFRAME_TO_YUV:
dPara[0] = VIM_HAPI_Decode_Jpeg((VIM_HAPI_SAVE_MODE)dPara[0],(UINT8)dPara[1],g_TestBuffer, YUVBuf,dPara[2],dPara[3],(UINT16)dPara[4],(UINT16)dPara[5]);
break;
}
Com_ReturnValue(1);
break;
case cVIM_HAPI_YuvToRgb:
//UINT16 VIM_HAPI_YuvToRgb( pYUV, pRgb, Source_Width, Source_height, Method);
dPara[0] = VIM_HAPI_YuvToRgb(YUVBuf,BmpBuf,(UINT16)dPara[0],(UINT16)dPara[1],VIM_CON_UYVY_565);
Com_ReturnValue(1);
break;
case cVIM_HAPI_SetPreviewZoom:
dPara[0] = VIM_HAPI_SetPreviewZoom((UINT16)dPara[0],(UINT16)dPara[1]);
Com_ReturnValue(1);
break;
case cVIM_HAPI_SetCaptureQuality:
dPara[0] = VIM_HAPI_SetCaptureQuality((UINT16)dPara[0]);
Com_ReturnValue(1);
break;
case cVIM_HAPI_CaptureThumbStill:
VIM_HAPI_CaptureThumbStill(VIM_HAPI_RAM_SAVE,JpegBuf,ThumbBuf,0x160000,0);
g_Reverse=0;
VIM_HAPI_SetLCDColordep(VIM_HAPI_COLORDEP_16BIT);
VIM_HAPI_DrawLCDRctngl(VIM_HAPI_B0_LAYER,0,0,(UINT16)dPara[0],(UINT16)dPara[1],ThumbBuf);
//VIM_HAPI_DrawLCDRctngl(VIM_HAPI_B1_LAYER,0,30,40,30,ThumbBuf);
VIM_HAPI_UpdateLCD(VIM_HAPI_B0_LAYER,0,0,(UINT16)dPara[0],(UINT16)dPara[1]);
Delay(10);
dPara[0]=0;
VIM_HAPI_SetLCDColordep(VIM_HAPI_COLORDEP_15BIT);
Com_ReturnValue(1);
break;
}
}
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -