📄 testhiapi.c
字号:
/*************************************************************************/
/* */
/* FILE NAME VERSION */
/* */
/* Test User's Api 1.0 */
/* */
/* DESCRIPTION */
/* */
/* Vimicro558 User's API */
/* */
/* The last modification date: 02-23-2004 */
/* REMARKS: Created initial version 1.0 */
/* */
/* Copyright (C) 2004 Vimicro CO.,LTD */
/*************************************************************************/
#include "..\inc\44b.h"
#include "..\inc\44blib.h"
#include "..\inc\serial.h"
#include "..\inc\timer.h"
#include "..\inc\IntControl.h"
#include "..\..\vc0528rdk\vim_high_api.h"
#include "V5Hdemo.h"
#include <stdarg.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include"vc0528test.h"
//#include "..\inc\picture.h"
#define CBLEN 900
#define DOWNONE 600
char Command_buf[CBLEN];
UINT16 Command_length=0;
UINT8 PreCommand_length=0,DownSum=0;
UINT8 CommandIn=0;
UINT32 Command_para[9],DownFileLength,DownFrameLen;
UINT8 Hpara=0;
UINT8 Para_number=0;
extern UINT16 RGB_buf[240*320*2];
extern UINT8 YUVBuf[0x15000];
extern UINT8 BmpBuf[128*160*2];
extern void V5_SetReg(UINT32 adr, UINT32 val, UINT8 regWType);
extern UINT32 V5_GetReg(UINT32 adr, UINT8 regWType);
extern void V5M_GetMarbAllot(UINT32 *Add);
extern UINT32 Jpeg_Length;
typedef struct _V5H_COMMAND_
{
char str[200];
UINT32 ID;
} V5H_Command, * pV5H_Command;
typedef enum _V5H_TEST_DOWN
{
BINGING=0,
LENGTH,
CHECKSUM,
DATA,
DATAEND
}V5H_TEST_DOWN;
V5H_TEST_DOWN DownState=BINGING;
extern const V5H_Command V5HCommand[];
UINT32 CommandParse(void);
void V5H_DoCommand(UINT32 id);
#ifndef PYTHON
void RecV5H_Command(UINT8 uOneByte)
{
if(DownState==DATA)
{
Command_buf[Command_length]=uOneByte;
if(++Command_length>=DownFrameLen)
{
CommandIn=1;
DownState=DATAEND;
Command_length=0;
}
}
else if((DownState==CHECKSUM)||(DownState==DATAEND))
{
Command_buf[0]=uOneByte;
CommandIn=1;
}
else
{
if(uOneByte==0x0d||uOneByte==0x0a)
CommandIn=1;
else
{
Command_buf[Command_length]=uOneByte;
if(++Command_length>=CBLEN)
Command_length=0;
}
}
}
#endif
void SendV5H_Command(void)
{
}
extern UINT32 g_band ;
extern void RecV5H_Command(UINT8 uOneByte);
void Init_CommandReceive(void)
{
#ifndef PYTHON //InitUart0FroReciveCommand(g_band,(void (*)(UINT8 uOneByte)) Uart_parase);
SerialIntInit(0,UART_MODE_DEFAULTS ,UART_CTRL_DEFAULTS|UART_CTRL_REV_TOUT_INTR_ON,
UART_FIFO_DISABLE,g_band, (void (*)(UINT8 uOneByte)) RecV5H_Command, SendV5H_Command);
Uart_Printf("\nV5H>");
#else
SerialIntInit(0,UART_MODE_DEFAULTS ,UART_CTRL_DEFAULTS|UART_CTRL_REV_TOUT_INTR_ON,
UART_FIFO_DISABLE,g_band, (void (*)(UINT8 uOneByte)) RecV5H_Command, Uart_SendByte);
#endif
}
void Clear_Command(void)
{
Command_buf[0]=0;
}
void V5H_CommandDeal(void)
{
if(!CommandIn) return;
CommandIn=0;
V5H_DoCommand(CommandParse());
PreCommand_length=Command_length;
Command_length=0;
Uart_Printf("\n");
Uart_Printf("\nV5H>");
}
const V5H_Command V5HCommand[]={
{"get_file(string)", 1},
{"down_file(string)", 4},
{"get_marb", 2},
{"set_marb", 3},
{"V5B_SifI2cReadByte(add)",5},
{"V5B_SifI2cWriteByte(add, value)",6},
{"V5B_SifI2cReadWord(add)",105},
{"V5B_SifI2cWriteWord(add, value)",106},
{"get_reg(addr)", 8},
{"set_reg(addr,value)", 9},
// {"init_568(MODE)", 10},
// {"test_register", 11},
{"workmode_set(WorkMode)", 12},
{"preview_mode(MODE,index)", 13},
{"preview_exposuretype(TYPE)", 14},
{"V5H_Preview_Brightness(Mode,Step)",15},
{"V5H_Preview_Contrast(Mode,Step)",16},
{"V5H_Preview_WhiteBalance(Mode,Step)",17},
{"V5H_Preview_Mirror(mode)",18},
{"V5H_Preview_Effect(Mode)",19},
{"V5H_Preview_ExposureMode(mode)", 23},
{"V5H_Preview_Zoom(Mode,step)",22},
{"preview_parameter(Lcd_X,Lcd_Y, Width, Height, )", 20},
{"capture_parameter(CapWidth, CapHeight, ThumWidth)", 21},
{"V5H_Capture_Quality(Quality)",25},
{"V5H_LCD_WorkMode(Mode,Value)",24},
{"V5H_Display_Zoom(ZoomStep,jpeg_offsetx,jpeg_offsety)",26},//,Lcd_OffsetX,Lcd_OffsetY,Lcd_Display_W,Lcd_Display_H)",26},
{"V5H_Capture_Still", 30},
{"V5H_Capture_ThumbStill", 31},
{"V5HDEMO_CaptureMuliti(frame)",29},
{"V5HDEMO_CaptureVideo",28},
{"stop video",52},
{"V5H_Capture_CompressionRatio(Ratio)",42},
{"V5H_Decode_Jpeg(Width,Height, Mode)",41},
{"V5H_Display_Jpeg(Lcd_X, Lcd_Y, Display_W, Display_H, Mode)", 32},
//{"get_capturelength", 32},
{"V5H_LCD_Rctngl(startx,starty,Width,Height)",40},
{"V5H_LCD_Update(startx,starty,Width,Height)",44},
{"V5H_LCD_PureColor(startx,starty,Width,Height,color)",45},
{"V5H_LCD_MIRROR(MODE,LAYER)",43},
{"V5H_LCD_Panel(Panel)",46},
{"V5H_TEST",47},
{"V5H_GET_REG_LIST(MODULE)",48},
{"V5HDEMO_Encode(int Width,int Height)",49},
{"V5HDEMO_CaptureAVI",50},
{"V5HDEMO_DisplayVideo(Lcd_X, Lcd_Y, Display_W, Display_H)",51},
{"sensor output(index)",60},
{"usb_enter", 53}
};
UINT32 CommandParse(void)
{
UINT16 number=0,i;
char string[100];
char *ptr;
if(!Command_length) Command_length=PreCommand_length;
memcpy(string,Command_buf,Command_length);string[Command_length]='\0';
ptr=strchr(string,'?');
number=sizeof(V5HCommand)/sizeof(V5H_Command);
if(ptr )//help
{
if(ptr==string) //?--full help
{
for(i=0;i<number;i++)
{
Uart_Printf( (char *)V5HCommand[i].str);
Uart_Printf( "\n");
}
}
else//*?--part help
{
*ptr='\0';
for(i=0;i<number;i++)
{
if(strstr(V5HCommand[i].str,string))
{
Uart_Printf( (char *)V5HCommand[i].str);
Uart_Printf( "\n");
}
}
}
return 0;
}
//---------get parameter-----------------------------------------------
ptr=strchr(string,'(');
ptr++;
if(ptr)
{
if(strchr(ptr,'x')||strchr(ptr,'X'))
Hpara=1;
else
Hpara=0;
if(Hpara)
Para_number=sscanf(ptr, "%x,%x,%x,%x,%x,%x,%x,%x,%x", &Command_para[0],&Command_para[1],&Command_para[2],&Command_para[3],&Command_para[4],&Command_para[5],&Command_para[6],&Command_para[7],&Command_para[8]);
else
Para_number=sscanf(ptr, "%d,%d,%d,%d,%d,%d,%d,%d,%d", &Command_para[0],&Command_para[1],&Command_para[2],&Command_para[3],&Command_para[4],&Command_para[5],&Command_para[6],&Command_para[7],&Command_para[8]);
//Para_number=sscanf("12, 13)" ,"%d ,%d,%d ,%d", &Command_para[0],&Command_para[1],&Command_para[2],&Command_para[3]);
//Uart_Printf("\nPara_number=%d",Para_number);
}
//--------------------------------------------------------------------
ptr=strchr(string,'(');
*ptr='\0';
for(i=0;i<number;i++)
{
if(strstr(V5HCommand[i].str,string))
return V5HCommand[i].ID;
}
return 0;
}
///////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////
UINT32 V5H_MarbAdd[30];
unsigned char g_outputsize=0;
void V5H_DoCommand(UINT32 id)
{
char string[30],checksum=0;
char *ptr;
UINT32 i,length=0;
UINT16 W,H,value16;
switch(id)
{
case 1://get file
ptr=strchr(Command_buf,'(');
if(!ptr) return;
memcpy(string,ptr,20); string[20]='\0';
ptr=strchr(string,')');
if(!ptr) return;
*ptr='\0';
ptr=V5HDEMO_GetFile(string,&length);
if(!ptr) return;
if(!length)
{
Uart_Printf("NoPic\n");
return;
}
for(i=0;i<length;i++) checksum+=ptr[i];
Uart_Printf("check_sum=%d\n",checksum);
Delay(50);
Uart_Printf("file_length=%d\n",length);
Delay(50);
for(i=0;i<length;i++)
Uart_SendByte(ptr[i]);
Delay(50);
Uart_Printf("\n");
break;
case 4://down file
ptr=strchr(Command_buf,'(');
if(!ptr) return;
memcpy(string,ptr,20); string[20]='\0';
ptr=strchr(string,')');
if(!ptr) return;
Command_length=0;
ptr=Command_buf;
*ptr='\0';
ptr=V5HDEMO_DownFile(string);
if(!ptr) return;
length=0;
DownState=LENGTH;
while(1)
{
if(CommandIn)
{
CommandIn=0;
switch(DownState)
{
case LENGTH:
//DownFileLength=*(UINT32 *)Command_buf;
Command_length=0;
sscanf(Command_buf,"%d",&DownFileLength);
DownFrameLen=DOWNONE;
DownState=DATA;
break;
case DATA:
case DATAEND:
DownState=CHECKSUM;
for(i=0;i<DownFrameLen;i++)
{
ptr[length]=Command_buf[i];
DownSum+=Command_buf[i];
length++;
}
//Uart_Printf("CHECKSUM\n");
Command_length=0;
//DownState=CHECKSUM;
break;
case CHECKSUM:
if(DownSum!=Command_buf[0])
{
Uart_Printf("check_sum_error\n");
DownState=DATA;
Command_length=0;
length-=(DownFrameLen);
// return ;
}
else
{
Uart_Printf("check_sum_right\n");
DownSum=0;
Command_length=0;
if(length>=DownFileLength)
{
DownFrameLen=DOWNONE;
DownState=BINGING;
return;
}
else if((DownFileLength-length)<DOWNONE)
{
DownFrameLen=DownFileLength-length;
DownState=DATA;
}
else
DownState=DATA;
}
break;
default:
break;
}
}
}
break;
case 2://get marb
Uart_Printf("\nget_Marb");
//V5M_GetMarbAllot(&V5H_MarbAdd[0]);
Uart_Printf("B0_StartAddress=%x\n",V5H_MarbAdd[0]);//b0 add
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -