📄 main.c
字号:
/****************************************************************
* Viaon Technology (Suzhou) Co.,Ltd
*
* Copyright 2007, Viaon Technology (Suzhou) Co.,Ltd,Suzhou,China
* All rights reserved.
*
*
* Filename: main.c
*
* Programmer: Greg
*
* Created: 1/2/2008
*
* Description: public functions
*
*
* Change History (most recent first): 2008.1.2
****************************************************************/
//#include <stdio.h>
//#include <intrins.h>
//#include <string.h>
#include "utiltypedef.h"
#include "va4010reg.h"
#include "common.h"
#include "timer.h"
#include "halmp3dec.h"
#include "hali2c.h"
#include "hallcm.h"
#include "halir.h"
#include "halfm.h"
#include "libfatif.h"
#include "4010UI.h"
#include "halvol.h"
#include "halsdif.h"
#include "halusbhif.h"
#include "halinfo.h"
#include "halrunled.h"
#include "haldevchk.h"
#include "display.h"
BYTE data FSMState;
BYTE DBUF[SECT_LEN]; // 512B data buffer
STREAM *fd_mp3;
BYTE volatile data keystatus;
BYTE volatile data mp3status = MP3STATUS_IDLE;
ST_SEARCH_INFO Mp3SearchInfo;
ST_MP3_SREQ data Mp3SReq;
//extern BYTE code MyCarDot[];
#ifdef SDENUM_RETRY_ENABLE
extern BYTE data bDEVFlag;
#endif
static void _VA4010Reset(void)
{
//HW reset
MP3_DEC_DISABLE();//Mp3Ctrl = 0x04; //Disable and mute MP3 dec
//global variable clear
FSMState = FSMSTATE_USB;
keystatus = KEY_STATUS_NOKEY;
fd_mp3 = NULL;
//mp3status = MP3STATUS_IDLE;
#ifdef ENABLE_PLAYMODE_KEY
bPMode = MP3_PMODE_REPEAT; // Default Repeat All
#endif
return;
}
static void _halDevInit(void)
{
UartOutText("-I-: halDevInit() \r\n");
#if (UART_DEBUG == UART_DEBUG_ENABLE)
SCON = SCON_BLAZE; // set UART speed 115200bps
#endif
P3_DDR &= 0xf7;//P3^3 IR input direc.
MUTE_HW();
UartOutText("----MUTE_HW----\r\n");
halINTInit();
DispInit();
halLEDInit();
return;
}
/*------------------------------------------------------------------------------------*/
void main(void)
{
BYTE devid;
DISABLE_INTERRUPTS;
halCheckInfo1();
_halDevInit();
_VA4010Reset();
#ifdef SDENUM_RETRY_ENABLE
//ReadE2PRom((BYTE*)&bDEVFlag, sizeof(bDEVFlag), SDENUM_PAGE_ADDR<<E2PROM_PAGE_SIZEEXP);
Read_N_Bytes((BYTE*)&bDEVFlag, sizeof(bDEVFlag), SDENUM_PAGE_ADDR<<E2PROM_PAGE_SIZEEXP);
if(bDEVFlag == SD_ENUMGOING_FLAG){
UartOutText("\rread SD_ENUMGOING_FLAG\t\n");
FSMState = FSMSTATE_SD;
}
#endif
while(1){
//usb Attach detect
if(FSMState==FSMSTATE_USB){
UartOutText("-----FSMSTATE_USB\r\n");
SysTicks = 0;
while(SysTicks < 10);
if(halUsbInit() == TRUE){
halLCMClear(0, 3);
halLCMWriteData(32, 1,"USB", 3);
if(halUsbEnum()){
DelayMs(2000);
UartOutText("-I-: USB_DISK \r\n");
devid = USB_DISK;
FSMState = FSMSTATE_ATTACHED;
}
}else{
DelayMs(200);
#ifdef ENABLE_SD_CARD
FSMState = FSMSTATE_SD;
#endif
}
}
#ifdef ENABLE_SD_CARD
//sd Attach detect
if(FSMState == FSMSTATE_SD){
UartOutText("-----FSMSTATE_SD\r\n");
SysTicks = 0;
while(SysTicks < 10);
if(halSDCheck()){
halLCMClear(0, 3);
halLCMWriteData(40,1, "SD", 2);
halSDInit();
UartOutText("-I-: SD_DISK \r\n");
devid = SD_DISK;
FSMState = FSMSTATE_ATTACHED;
}else
FSMState = FSMSTATE_USB;
}
#endif
//File System Init
if(FSMState == FSMSTATE_ATTACHED){
FileSystemInit();
DriveAdd(devid);
UartOutText("\r\n\r\n------------------\r\n");
Mp3SReq.bySType = SEARCH_MP3_TOTALCNT;// Search through the whole disk for total mp3 counter.
FileSearch(&Mp3SearchInfo, &Mp3SReq);
halCheckMp3Info();
keystatus = KEY_STATUS_PLAYPAUSE;
mp3status = MP3STATUS_WAKEUP;
FSMState = FSMSTATE_INIT;
}
if(FSMState == FSMSTATE_INIT){
if(halMp3Req(fd_mp3) == MP3_DATREQ_OVER){
MP3_DEC_DISABLE();
UartOutText("\r\n/*---------OV--------------*/\r\n");
#if 0
//Check Device Disattachment
if(halDevCheck(devid, DEV_CHECK_CUR) == FALSE){
UartOutText("Current device removed\r\n");
//FSMState = FSMSTATE_USB;
//FSMState = FSMSta[drv->DevID];
keystatus = KEY_STATUS_DEVCHG;
}else{
#endif
#ifdef ENABLE_PLAYMODE_KEY
if(bPMode == MP3_PMODE_REPEAT1){
mp3status = MP3STATUS_WAKEUP;
keystatus = KEY_STATUS_PLAYPAUSE;
}else{
Mp3SReq.bySType = SEARCH_MP3_NEXT;
keystatus = KEY_STATUS_PLAYPAUSE;
mp3status = MP3STATUS_IDLE;
}
#else
Mp3SReq.bySType = SEARCH_MP3_NEXT;
keystatus = KEY_STATUS_PLAYPAUSE;
mp3status = MP3STATUS_IDLE;
#endif
//}
}
halVolSmthFSM();
halDevPnP();
}
halIRHandle();
halKeyFSM();
DispFSM();
halRunLED();
halKeyHandle(FSMState);
}
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -