📄 testapi.c
字号:
/*-------------------------------------------------------------------------------
// testApi.c
// 我的文档的主程序
// Create by jsguo 2005.9.19
--------------------------------------------------------------------------------*/
#include "../inc/nucleus.h"
#include "../inc/winconfig.h"
#include "MMI.h"
#include "../inc/windows.h"
#include "demoTest.h"
#include "../inc/high_api.h"
#include "../inc/44b.h"
#include "../inc/44blib.h"
#include "Extern.h"
#include "..\..\vc0528rdk\vim_high_api.h"
#include "..\..\vc0528rdk\VIM_AVI_Recorder.h"
#include "frame.h"
#include "..\inc\thin_usr.h"//"..\..\FS_library\fat_thin\thin_usr.h"
#include "..\inc\fat_thin.h"//"..\..\FS_library\fat_thin\fat_thin.h"
#include "../inc/nucleus.h"
#include "../inc/nu_sd.h"
#define VIM_USER_SUPPORT_REALTIME_ROTATION 1
extern NU_SERIAL_PORT port;
F_FILE *g_file;
/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*angela start *=*=*=*=*=*=*=*=*=*=*=*=*/
extern char BypassUpdate;
UINT8 g_outindex=1;
UINT8 g_withframe=0;
UINT8 SpecialEffec = 0;
UINT8 CAPTUREEND;
UINT8 FastPreview;
#define FASET_PREVIEW
UINT8 BmpBuf[176*220*2]; //guoying 1/17/2008 add
void User_CaptureAviCallback(UINT8 Status, UINT32 Byte_Length);
/*=*=*=*=*=*=*=*=*=*=*=*=*=*=* angela end *=*=*=*=*=*=*=*=*=*=*=*=*/
SETTING_ITEM MMI_VideoSetting[]=
{
{"拍照尺寸:",3,0},
{"拍照质量:",3,0},
{"照片尺寸:",3,0},
};
SETTING_ITEM MMI_AudioSetting[]=
{
{"SP",100,50},
{"HP",100,50},
{"DAC",100,50},
{"WAV",100,50},
{"MID",100,50},
};
SETTING_ITEM MMI_SysSetting[]=
{
{"LCD",100,50},
};
char Cam_Resolution[][10]=
{
"320x240",
"640x480",
"1280x960"
};
char Cam_Quality[][38]=
{
"Fine",
"Normal",
"Basic",
};
/*=*=*=*=*=*=*=*=*=*=*=*=*MAINMENU*=*=*=*=*=*=*=*=*=*=*=*=*/
int User_initMain(void)
{
return 1;
}
void MainMenu_MainList(UINT iMsg, WPARAM wParam, LPARAM lParam)
{
VIM_HAPI_SetWorkMode(VIM_HAPI_MODE_BYPASS);//through mode power on lcd
BypassUpdate=1;
SetMainList(User_initMain);
MWinMainForm(NULL,NULL,NULL,SW_SHOW);
}
/*=*=*=*=*=*=*=*=*=*=*=*=*Document*=*=*=*=*=*=*=*=*=*=*=*=*/
Menu DocumentMenu[] = {
{ "HOST", Menu_SDFileList},
};
Form FormDocumentList= { DocumentMenu,1,0};
int User_initDocument(void)
{
return 1;
}
void Menu_DocumentList(UINT iMsg, WPARAM wParam, LPARAM lParam)
{
SetDocumentList(User_initDocument,User_closeDocument,FormDocumentList);
VMDocumentMain(NULL,NULL,NULL,SW_SHOW);
}
int User_closeDocument()
{
return 1;
}
/*=*=*=*=*=*=*=*=*=*=*=*=*=*appFileList*=*=*=*=*=*=*=*=*=*=*=*=*/
#define MAX_FILE_ITEM 100
Menu FileListMenu[100] = {};
Form gMyFormFileListList = { FileListMenu, 100, 0};
int MMI_FileList_AddItem(char* str,int attr)
{
char test[50];
if(gMyFormFileListList.CurrentMenuItem>=100)
return 0;
strcpy(gMyFormFileListList.MenuList[gMyFormFileListList.CurrentMenuItem].MenuName, str);
Uart_Printf("NAME1 is %s\n",str);
Uart_Printf("NAME2 is %s\n",gMyFormFileListList.MenuList[gMyFormFileListList.CurrentMenuItem].MenuName);
if (attr&F_ATTR_DIR)
gMyFormFileListList.MenuList[gMyFormFileListList.CurrentMenuItem].event=NULL;
else
gMyFormFileListList.MenuList[gMyFormFileListList.CurrentMenuItem].event=Menu_MediaPlayer;
gMyFormFileListList.CurrentMenuItem++;
return 1;
}
extern int gnFileListselectItem;
int AppInit_FileList(const char *Dir)
{
F_FIND FindFile;
int filenum=0;
Uart_Printf("\n %s",Dir);
f_chdir(Dir);
if (!f_findfirst("*.*",&FindFile))
{
do {
Uart_Printf ("filename:%s",FindFile.filename);
if (FindFile.attr&F_ATTR_DIR)
Uart_Printf ("directory\n");
else
Uart_Printf ("size %d\n",FindFile.filesize);
MMI_FileList_AddItem(FindFile.filename,FindFile.attr);
filenum++;
} while (!f_findnext(&FindFile));
}
return filenum;
}
int User_InitFileList(void)
{
f_initvolume();
AppInit_FileList(".");
return 1;
}
int USER_FileList_Delete(char* FileName)
{
//f_delete(FileName);
//MMD_FILE_Mount(0);
/*if(MMD_FILE_Delete((unsigned char *)FileName))
return 0;
return 1;*/
}
int User_closeFileList()
{
memset(&FileListMenu,0,sizeof(FileListMenu));
return 1;
}
void Menu_SDFileList(UINT iMsg, WPARAM wParam, LPARAM lParam)
{
gMyFormFileListList.CurrentMenuItem=0;
SetFileList(User_InitFileList,User_closeFileList);
VMFileListMain(NULL,NULL,NULL,SW_SHOW);
SetFocus(GetActiveWindow());
}
/*=*=*=*=*=*=*=*=*=*=*=*=*=*DISPLAY*=*=*=*=*=*=*=*=*=*=*=*=*=*/
int gCalculagraphInParam=0;
int gSliderVolumeInParam=0;
int gSliderInParam=0;
void expiration_MediaPlayer(UNSIGNED id)
{
gSliderInParam+=3;
gSliderVolumeInParam+=2;
gCalculagraphInParam++;
MMI_SetSliderValue(gSliderInParam);
MMI_SetVolumeValue(gSliderVolumeInParam);
MMI_SetCalculagraphValue(gCalculagraphInParam);
}
//=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
#define JPEG_FILE 0
#define VIDEO_FILE 1
UINT16 Displaywidth =176;//MAINFRAME_WIDTH_DEFAULT-8;
UINT16 DisplayHeight =220;//MAINFRAME_WIDTH_DEFAULT+30-4;
UINT16 Picturewidth=128; //display pan source picture size
UINT16 PictureHeight=128;
UINT16 JpegOffsetX=0; //display pan for up/down key
UINT16 JpegOffsetY=0;
UINT8 PanWidthIndex = 0; //display pan class index (MAX=5)
UINT8 PanHeightIndex = 0; //display pan class index (MAX=5)
UINT8 DisplayRotation = 0; //display rotation index
UINT8 MediaPlayerFileEnd=0; //=0 means file is not playing end, =1 means file playing finish
UINT8 MediaPlayerStatus=1; //=1 means doing playing, =0 means not playing
UINT8 MediaPlayerFileType=0; //=0 means file is picture, =1 means file is video
UINT8 g_UAudioStop = 1;
UINT32 framecounter=0; //use for testing
UINT8 ZoomStep=0; //use for display zoom testing, guoying 2/25/2008
/***************************************************************************************************
****************************************************************************************************/
void User_DisplayVideoCallback(UINT8 Status, UINT32 Parameter)
{
char result;
switch (Status)
{
case VIM_HAPI_ONEFRAME_END:
framecounter++;
//Uart_Printf("\n display frame: %d",framecounter);
break;
case VIM_HAPI_CAPTURE_END:
Beep(1);
Delay(50);
Beep(0);
if(g_file)
{
result=f_close(g_file);
Uart_Printf("\n close file ok!result=%d ",result);
}
MediaPlayerFileEnd=1;
break;
}
}
int User_GetPictureSize(void)
{
UINT16 result;
result=VIM_HAPI_GetPictureSize(&Picturewidth,&PictureHeight);
Uart_Printf("\n VIM_HAPI_GetPictureSize return : %d ",result);
Uart_Printf("\n Picture source width : %d ",Picturewidth);
Uart_Printf("\n Picture source height : %d ",PictureHeight);
return 1;
}
int User_InitMediaPlayer(void)
{
char *filename;
Displaywidth =MAINFRAME_WIDTH_DEFAULT-8;
DisplayHeight =MAINFRAME_WIDTH_DEFAULT+30-4;
JpegOffsetX=JpegOffsetY=0;
PanHeightIndex=PanWidthIndex=0;
DisplayRotation=SpecialEffec =0;
MediaPlayerFileEnd=0;
filename= MMI_GetFileListSelectItem_Name();
if(strstr(filename,".JPG") || strstr(filename,".jpg"))
{
MMI_SetMediaPlayerInfo("↑ PAN ↓ ","← PAN →","ROTATION","CANCEL");
MediaPlayerFileType=JPEG_FILE;
}
else if(strstr(filename,".MJPG") || strstr(filename,".mjpg")
||strstr(filename,".AVI") || strstr(filename,".avi") )
{
MMI_SetMediaPlayerInfo(NULL,NULL,"PAUSE/PLAY","CANCEL");
MediaPlayerFileType=VIDEO_FILE;
}
else
MediaPlayerFileType=0xff;
return 1;
}
extern void User_DrawLCDBlack(UINT16 xStart,UINT16 yStart,UINT16 width,UINT16 height);
int USER_ExitInitMediaPlayer()
{
char *filename;
char result;
filename= MMI_GetFileListSelectItem_Name();
g_file=f_open(filename,"r");
if(!g_file)
{
Uart_Printf("\n open file: %s error!",filename);
return;
}
switch (MediaPlayerFileType)
{
case JPEG_FILE:
BypassUpdate=0;
VIM_HAPI_SetWorkMode(VIM_HAPI_MODE_PHOTOPROCESS);
VIM_HAPI_SetEffect(VIM_HAPI_SPECIAL_NORMAL);
VIM_HAPI_SetLCDMirror(VIM_HAPI_ROTATE_0,VIM_HAPI_A_LAYER);
User_DrawLCDBlack(2,4,MAINFRAME_WIDTH_DEFAULT-4,MAINFRAME_WIDTH_DEFAULT+30);
VIM_HAPI_SetLCDSize(VIM_HAPI_B0_LAYER,0,0,MAINFRAME_WIDTH_DEFAULT,32+4);
VIM_HAPI_SetLCDSize(VIM_HAPI_B1_LAYER,0,MAINFRAME_WIDTH_DEFAULT+30,MAINFRAME_WIDTH_DEFAULT,
MAINFRAME_HEIGHT_DEFAULT-MAINFRAME_WIDTH_DEFAULT-30);
MMI_SetUpdateB0Area(4,4,MAINFRAME_WIDTH_DEFAULT-8,20);
MMI_SetUpdateArea(0,MAINFRAME_WIDTH_DEFAULT+30,MAINFRAME_WIDTH_DEFAULT,
MAINFRAME_HEIGHT_DEFAULT-MAINFRAME_WIDTH_DEFAULT-30);
VIM_HAPI_SetLCDWorkMode(VIM_HAPI_LCDMODE_AFIRST,0);
VIM_HAPI_SetLCDSize(VIM_HAPI_B0_LAYER,0,0,0,0);
VIM_HAPI_SetLCDSize(VIM_HAPI_B1_LAYER,0,0,0,0);
VIM_HAPI_Display_Jpeg(VIM_HAPI_ROM_SAVE, g_file,0xffffffff, 4, 4, MAINFRAME_WIDTH_DEFAULT-8, 264);
//VIM_HAPI_Display_Jpeg(VIM_HAPI_ROM_SAVE, g_file,0xffffffff, 4, 4, 128, 160);
//***************
#if 0 //guoying 2/14/2008 testing
VIM_HAPI_SetLCDMirror(VIM_HAPI_ROTATE_0,VIM_HAPI_ALL_LAYER);
VIM_HAPI_SetLCDSize(VIM_HAPI_B1_LAYER,0,0,0,0);
VIM_HAPI_SetLCDSize(VIM_HAPI_B0_LAYER,0,0,128,160);
//VIM_HAPI_SetLCDColordep(VIM_HAPI_COLORDEP_16BIT);
//VIM_HAPI_Decode_Jpeg(VIM_HAPI_ROM_SAVE, g_file,0x7fffffff, x, y, w, h);
//VIM_HAPI_Decode_Jpeg(VIM_HAPI_RAM_SAVE,VIM_DECODE_RESIZE_TO_RGB,JPEG_128x160_422,BmpBuf,3072, 128*160*2,128,160);
VIM_HAPI_Decode_Jpeg(VIM_HAPI_ROM_SAVE,VIM_DECODE_RESIZE_TO_RGB,g_file,BmpBuf,0x7fffffff, 128*160*2,128,160);
VIM_HAPI_SetLCDWorkMode(VIM_HAPI_LCDMODE_BLONLY,0);
VIM_HAPI_DrawLCDPureColor(VIM_HAPI_B0_LAYER,0,0,128,160,0);
VIM_HAPI_UpdateLCD(VIM_HAPI_B0_LAYER,0,0,128,160);
Delay(100);
VIM_HAPI_DrawLCDRctngl(VIM_HAPI_B0_LAYER,0,0,128,160,BmpBuf);
VIM_HAPI_UpdateLCD(VIM_HAPI_B0_LAYER,0,0,128,160);
//***************
#endif
Delay(50);
VIM_HAPI_SetLCDSize(VIM_HAPI_B0_LAYER,0,0,MAINFRAME_WIDTH_DEFAULT,32+4);
VIM_HAPI_SetLCDSize(VIM_HAPI_B1_LAYER,0,MAINFRAME_WIDTH_DEFAULT+30,MAINFRAME_WIDTH_DEFAULT,
MAINFRAME_HEIGHT_DEFAULT-MAINFRAME_WIDTH_DEFAULT-30);
User_GetPictureSize();
VIM_HAPI_SetLCDWorkMode(VIM_HAPI_LCDMODE_BLONLY,0);
MediaPlayerFileEnd=1;
break;
case VIDEO_FILE:
framecounter=0;
BypassUpdate=2;
VIM_HAPI_SetWorkMode(VIM_HAPI_MODE_PHOTOPROCESS);
VIM_HAPI_SetEffect(0);
VIM_HAPI_SetLCDMirror(VIM_HAPI_ROTATE_0,VIM_HAPI_A_LAYER);
User_DrawLCDBlack(0,0,240,160);
User_DrawLCDBlack(0,160,240,160);
//User_DrawLCDBlack(4,4,MAINFRAME_WIDTH_DEFAULT-8,MAINFRAME_WIDTH_DEFAULT+30-4);
//VIM_HAPI_SetLCDSize(VIM_HAPI_B0_LAYER,0,0,MAINFRAME_WIDTH_DEFAULT,32+4);
//VIM_HAPI_SetLCDSize(VIM_HAPI_B1_LAYER,0,MAINFRAME_WIDTH_DEFAULT+30,MAINFRAME_WIDTH_DEFAULT,
// MAINFRAME_HEIGHT_DEFAULT-MAINFRAME_WIDTH_DEFAULT-30);
MMI_SetUpdateB0Area(4,4,MAINFRAME_WIDTH_DEFAULT-8,20);
MMI_SetUpdateArea(0,MAINFRAME_WIDTH_DEFAULT+30,MAINFRAME_WIDTH_DEFAULT,
MAINFRAME_HEIGHT_DEFAULT-MAINFRAME_WIDTH_DEFAULT-30);
//(12,40,240-24,188)
VIM_HAPI_SetLCDWorkMode(VIM_HAPI_LCDMODE_AFIRST,0);
VIM_HAPI_ReadyToDisplay(VIM_HAPI_ROM_SAVE, g_file,0xffffffff, 12, 40, 240-24, 188);
User_GetPictureSize();
if(Picturewidth==320)
VIM_HAPI_StartDisplayVideo(User_DisplayVideoCallback,6);
else
VIM_HAPI_StartDisplayVideo(User_DisplayVideoCallback,4);
MediaPlayerStatus=1;
break;
default:
f_close(g_file);
break;
}
return 1;
}
int USER_closeMediaPlayer()
{
char result;
if(!MediaPlayerFileEnd)
VIM_HAPI_StopDisplayVideo();
if(g_file)
{
result=f_close(g_file);
Uart_Printf("\n close file ok!result=%d ",result);
}
BypassUpdate=1;
VIM_HAPI_SetWorkMode(VIM_HAPI_MODE_BYPASS);
MMI_SetUpdateArea(0,0,MAINFRAME_WIDTH_DEFAULT,MAINFRAME_HEIGHT_DEFAULT);
return 1;
}
/***************************************************************************************************
****************************************************************************************************/
void Menu_MediaPlayer(UINT iMsg, WPARAM wParam, LPARAM lParam)
{
SetMediaPlayer(User_InitMediaPlayer,USER_ExitInitMediaPlayer,USER_closeMediaPlayer);
MMediaPlayerForm(NULL,NULL,NULL,SW_SHOW);
}
extern NU_TIMER video_timer;
void User_MediaPlayerKeyOk(void)
{
int w,h,x,y;
switch (MediaPlayerFileType)
{
case JPEG_FILE:
User_DrawLCDBlack(0,0,240,320);
SpecialEffec++;
if (SpecialEffec>VIM_HAPI_ROTATE_270)
SpecialEffec=0;
if(SpecialEffec%2)
{
w=320-8;
h=240-8;
x=4;
y=4;
//w=220;
//h=176;
//x=60;
//y=(240-176)/2;
}
else
{
w=240-8;
h=320-8;
x=4;
y=4;
//w=176;
//h=220;
//y=(320-220)/2;
//x=(240-176)/2;
}
//VIM_HAPI_Preview_Effect(SpecialEffec);
VIM_HAPI_SetLCDMirror(SpecialEffec,VIM_HAPI_A_LAYER);
VIM_HAPI_SetLCDSize(VIM_HAPI_B0_LAYER,0,0,0,0);
VIM_HAPI_SetLCDSize(VIM_HAPI_B1_LAYER,0,0,0,0);
if(g_file)
VIM_HAPI_Display_Jpeg(VIM_HAPI_ROM_SAVE, g_file,0x7fffffff, x, y, w, h);
Delay(100);
VIM_HAPI_SetLCDSize(VIM_HAPI_B0_LAYER,0,0,MAINFRAME_WIDTH_DEFAULT,32+4);
VIM_HAPI_SetLCDSize(VIM_HAPI_B1_LAYER,0,MAINFRAME_WIDTH_DEFAULT+30,MAINFRAME_WIDTH_DEFAULT,
MAINFRAME_HEIGHT_DEFAULT-MAINFRAME_WIDTH_DEFAULT-30);
break;
case VIDEO_FILE:
if(!MediaPlayerFileEnd)
{
if(MediaPlayerStatus)
{
VIM_USER_StopTimer();
MediaPlayerStatus=0;
Uart_Printf("VIM_USER_StopTimer");
}
else
{
VIM_USER_StartTimer();
MediaPlayerStatus=1;
Uart_Printf("VIM_USER_StartTimer");
}
}
break;
default:
break;
}
}
void User_MediaPlayer_Play(UINT iMsg, WPARAM wParam, LPARAM lParam)
{
User_MediaPlayerKeyOk();
}
void User_MediaPlayer_Pause(UINT iMsg, WPARAM wParam, LPARAM lParam)
{
}
void User_MediaPlayer_Stop(UINT iMsg, WPARAM wParam, LPARAM lParam)
{
}
void User_MediaPlayer_Record(UINT iMsg, WPARAM wParam, LPARAM lParam)
{
}
void User_MediaPlayerVolumeUp(void)
{
}
void User_MediaPlayerVolumeDown(void)
{
}
void User_KeyValueEvent(UINT iKeyValue)
{
}
/************************************use Middle key do rotation ************************************
DisplayRotation 0-----1----------2-----------3-----------4-------5---------6----------7----------0
Middle Rotate_0->Rotate_90->Rotate_180->Rotate_270->Mirror_0->Mirror_90->Mirror_180->Mirror_270->Rotate_0
****************************************************************************************************/
void User_DrawLCDBlack(UINT16 xStart,UINT16 yStart,UINT16 width,UINT16 height)
{
UINT16 result;
VIM_HAPI_SetLCDWorkMode(VIM_HAPI_LCDMODE_BLONLY,0);
VIM_HAPI_SetLCDSize(VIM_HAPI_B1_LAYER,xStart,yStart,width,height);
VIM_HAPI_DrawLCDPureColor(VIM_HAPI_B1_LAYER,xStart,yStart,width,height,0);
VIM_HAPI_UpdateLCD(VIM_HAPI_B1_LAYER,xStart,yStart,width,height);
Delay(50);
VIM_HAPI_SetLCDSize(VIM_HAPI_B1_LAYER,4,4,0,0);
}
void User_MediaPlayerDisplayPan(void)
{
UINT16 result;
if ((PictureHeight<DisplayHeight)||(Picturewidth<Displaywidth))
{
User_DrawLCDBlack(4,4,MAINFRAME_WIDTH_DEFAULT-8,MAINFRAME_WIDTH_DEFAULT+30-4);
VIM_HAPI_SetLCDWorkMode(VIM_HAPI_LCDMODE_AFIRST,0);
}
if(g_file)
{
VIM_HAPI_DisplayPan(4, 4, JpegOffsetX, JpegOffsetY,Displaywidth, DisplayHeight);
//VIM_HAPI_DisplayZoom(3, 3, PanHeightIndex); //only test the function of display zoom
}
}
void User_MediaPlayerKeyMiddle(void)
{
switch (MediaPlayerFileType)
{
case JPEG_FILE:
DisplayRotation++;
DisplayRotation&=7;
if (DisplayRotation % 2)
{
DisplayHeight =MAINFRAME_WIDTH_DEFAULT-8;
Displaywidth =MAINFRAME_WIDTH_DEFAULT+30-4;
}
else
{
Displaywidth =MAINFRAME_WIDTH_DEFAULT-8;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -