📄 dsa.c
字号:
};
#elif defined(MODE_VCD132A)
#define IconMap_Max 16
UINT16 code IconMapTab[] = {
LCD_SEG_PLAY, LCD_SEG_PAUSE, LCD_SEG_ALBUME,
LCD_SEG_INTRO, LCD_SEG_RDM, LCD_SEG_PGM,
LCD_SEG_REPEAT, LCD_SEG_REP1, LCD_SEG_CD,
LCD_SEG_WMA, LCD_SEG_MP3, LCD_SEG_USB,
LCD_SEG_AUX, LCD_SEG_IN, LCD_SEG_MIC,
LCD_SEG_COL
};
#elif defined(MODE_VCD367)
#define IconMap_Max 20
UINT16 code IconMapTab[] = {
LCD_SEG_PLAY, LCD_SEG_PAUSE, LCD_SEG_ALBUME,
LCD_SEG_INTRO, LCD_SEG_RDM, LCD_SEG_PGM,
LCD_SEG_REPEAT, LCD_SEG_REP1, LCD_SEG_CD,
LCD_SEG_WMA, LCD_SEG_MP3, LCD_SEG_ALL,
LCD_SEG_DISC, LCD_SEG_REPS1, LCD_SEG_REPS2,
LCD_SEG_WMAS, LCD_SEG_TRACK, LCD_SEG_TOTAL,
LCD_SEG_REMAIN, LCD_SEG_COL
};
#elif defined (VFD_INTECHBD326)
UINT16 code IconMapTab[] = {
LCD_SEG_DISC1,LCD_SEG_DISC1S,
LCD_SEG_DISC2,LCD_SEG_DISC2S,
LCD_SEG_DISC3,LCD_SEG_DISC3S,
LCD_SEG_DISC4,LCD_SEG_DISC4S,
LCD_SEG_DISC5,LCD_SEG_DISC5S,
LCD_SEG_DOT,LCD_SEG_DOT1,
LCD_SEG_COL
};
#define IconMap_Max sizeof (IconMapTab)/2
#else
#define IconMap_Max 16
UINT16 code IconMapTab[] = {
LCD_SEG_REP1, LCD_SEG_ALL, LCD_SEG_DIR,
LCD_SEG_INTRO, LCD_SEG_RDM, LCD_SEG_PGM,
LCD_SEG_COL, LCD_SEG_ESP1, LCD_SEG_MP3,
LCD_SEG_CD, LCD_SEG_ESP2, LCD_SEG_ESP3,
LCD_SEG_ESP4, LCD_SEG_ESP0, LCD_SEG_VCD,
LCD_SEG_REPEAT
};
#endif
#endif
//==========================
// dsp reset without dsa 1s
// 11 -14 -v1
//==========================
#ifdef SUPPORT_DSA_RESET
void CheckDsa()
{
if(bDsafirst)
{
if(!gbDsaReset)
{
CD_RESET=0;
gbSystemTimer = TIMER_50ms;
while(gbSystemTimer);
CD_RESET=1;
gbDsaReset=TIMER_1s;
}
}
}
#endif
//==========================
void VCD_state(void)
{
BYTE i;
BYTE tempdsa[2];
BIT bMuteOld=0;
TV_POWER_OFF;
SetDAT_READ();
SetACK_READ();
SetSTB_READ();
CD_POWER_ON;
SetDAT_READ();
SetACK_READ();
SetSTB_READ();
AUDIO_HMUTE = AUDIO_MUTE;
gbSystemTimer = TIMER_50ms;
while(gbSystemTimer);
//=========================
PowerOnOff(1);
VideoSwitch(1);
#if defined(MODE_VCD802) || defined(MODE_VCD1000) || defined(MODE_VCD132A) || defined(MODE_V3)
CD_RESET = 1;
#endif
#ifdef SUPPORT_AUDIO
stAudio.channel = AUDIO_IN5;
Send_Audio_CH(stAudio.channel);
#endif
SetDAT_READ();
SetACK_READ();
SetSTB_READ();
dsa_mode = DSA_IDLE;
dsa_receive_flag = 0;
dsa_send_flag = 0;
dsa_send_data_head = dsa_send_data_tail = 0;
bCDPlayState = 1;
bDispMode = 0;
gbDispTimer = 0;
gbDeMuteTimer = TIMER_5s;
OsdShowSource(STATE_VCD);
// while(1);
#if defined(MODE_V3)
gbDispTimer1 = 0;
#endif
#ifdef SUPPORT_DSA_RESET
gbDsaReset=TIMER_2s;
bDsafirst=1;
#endif
bMuteFreeze=0;
MuteEn=0;
bMuteOff=0;
bCDReset=0;
bCDResetAct=0;
bOldState=0;
gbDispTimer=0;
gbDispTimer1=0;
bDispRefresh=0;
bClear=0;
AUDIO_SWITCH(0);
gbOsdTimer=TIMER_5s;
while(1){
#ifdef SUPPORT_DSA_RESET
CheckDsa();
#endif
if(gbDeMuteTimer & 0x80)
{
Audio_Mute(0);
gbDeMuteTimer = 0;
}
VCD_key_server();
if(gbSysState.Main != STATE_VCD){
break;
}
Dsa_Process();
if (dsa_mode != DSA_T_SYNC) {
while(dsa_mode != DSA_IDLE) Dsa_Process();
}
if(gbSysState.Main != STATE_VCD) dsa_receive_flag=0;
if(dsa_receive_flag)
{
#ifdef SUPPORT_DSA_RESET
bDsafirst=0;
gbDsaReset=0;
#endif
//==========================
tempdsa[0] = LOBYTE(dsa_in_data);
tempdsa[1] = HIBYTE(dsa_in_data);
#if (LCD_DEVICE == LCD_PD16311)
if(tempdsa[1] == 0x83)
{
if(!tempdsa[0])
{
for(i = 0; i < IconMap_Max; i++)
LCD_ShowSeg(0, IconMapTab[i]);
} else {
i = (tempdsa[0] & 0x3f) - 1;
if(i < IconMap_Max)
LCD_ShowSeg(1 - (tempdsa[0] >> 7), IconMapTab[i]);
if(IconMapTab[i] == LCD_SEG_CD)
MuteEn=0x01;
else if(IconMapTab[i] == LCD_SEG_MP3)
MuteEn=0x02;
}
}
else if(tempdsa[1] == 0x82)
{
if(tempdsa[0] < 3)
{
LCD_ClearBlink(LCD_BLINK_MSG);
gbMsgPtr = 0;
bDispMode = 0;
}
if(!tempdsa[0]) LCD_ShowChar(LCD_ALL_SPACE);
else if(tempdsa[0] == 2) bDispMode = 1;
else if(tempdsa[0] == 1) bDispMode = 0;
}
else if(tempdsa[1] == 0x81)
{
if(!tempdsa[0])
{
for(i = 0; i < 9; i++)
LCD_PrintDigital(i, LCD_SPACE);
LCD_WriteData(0x40,MAX_LCD_BUF_NUM);
LCD_ShowSeg(0, LCD_SEG_COL);
}
}
else if(tempdsa[1] == 0x80)
{
gbLCDMsg[0] = tempdsa[0];
gbLCDMsg[tempdsa[0] + 1] = 0;
}
else if(tempdsa[1] == 0xc8)
{
if(tempdsa[0] < 2) bCDPlayState = tempdsa[0];
#ifdef SUPPORT_POWER_OFF
else if(tempdsa[0] == 0xff) POWER_OFF = 0;
#endif
}else if((tempdsa[1] >= 0x90) && (tempdsa[1] <= 0xb7)){
i = tempdsa[1] - 0x90 + 1;
gbLCDMsg[i] = tempdsa[0];
if(!LCD_IsShowMsg() && (i >= gbLCDMsg[0])){
LCD_ShowMsg(&gbLCDMsg[1], 1);
}
}else if((tempdsa[1] >= 0x84) && (tempdsa[1] <= 0x8f)){
i=tempdsa[1]-0x84;
if((tempdsa[0] >= '0') && (tempdsa[0] <= '9'))
tempdsa[0] -= '0';
else if((tempdsa[0] >= 'A') && (tempdsa[0] <= 'Z'))
tempdsa[0] -= ('A' - 10);
else if(tempdsa[0] == ' ') tempdsa[0] = LCD_SPACE;
else if(tempdsa[0] == '-') tempdsa[0] = LCD_DASH;
else if(tempdsa[0] == 'o') tempdsa[0] = LCD_o;
else tempdsa[0] = LCD_SPACE;
LCD_PrintDigital(i, tempdsa[0]);
LCD_WriteData(0x40,MAX_LCD_BUF_NUM);
}
else if(tempdsa[1] == 0x01){
if(!tempdsa[0]){
ClearIdleTimer1();
}
}
else if(tempdsa[1] == 0x02){
if(!tempdsa[0]){
SetIdleTimer1(SYS_1min);
}
}
#endif
/*-----------------------------------------------------*/
dsa_receive_flag = 0;
}
if(bDispRefresh&&gbSysState.Main==STATE_VCD)
{
#ifndef SUPPORT_MULTIDISC
if(LOADER){
LCD_Reset(0);
LCD_ShowString("OPEN",0);
bDispRefresh=0;
continue;
}
#endif
#ifdef SUPPORT_MULTIDISC
gwLCDBlinkFlag &= LCD_BLINK_DISC;
#else
gwLCDBlinkFlag = 0;
#endif
#ifdef SUPPORT_IR
gbNumber = 0;
#endif
#ifdef SUPPORT_CLOCK
ClockSetRefresh();
#endif
write_data_to_dsabuf(0xab00);
#if (LCD_DEVICE == LCD_PD16311)
#if defined(MODE_VCD1000) || defined(MODE_V3)
if(bClear){
#if 0
LCD_ShowString(mbTmpBuf, 0);
LCD_ShowString(&gbLCDMsg[1],0);
bClear=0;
gbMsgPtr = 0;
bShiftEnd = 1;
if(gbSysState.Main == STATE_VCD)
write_data_to_dsabuf(0xc0f0);
#endif
bClear=0;
gbMsgPtr = 0;
bShiftEnd = 1;
if(gbSysState.Main == STATE_VCD)
write_data_to_dsabuf(0xc0f0);
}
if((bMuteOff)&&(!gbDispTimer)){
}
#endif
#else
#if defined(MODE_VCD367)
LCD_ShowSeg(bCol, LCD_SEG_COL);
for(i = 0; i < 8; i++) LCD_PrintDigital(i, mbTmpBuf[i]);
for(i = 0; i < MAX_LCD_BUF_NUM; i++) LCD_WriteData(i,gpbLCDBuf[i]);
#endif
#endif
bDispRefresh = 0;
}
}
}
#ifdef SUPPORT_LOADER_CONTROL
BYTE idata gbLoadState = 15;
BIT bOpenClose = 1;
BIT bOpenOK = 0;
BIT bCloseOK = 0;
void Polling_Loader(void)
{
switch(gbLoadState)
{
case 10: // open
LOAD_OPEN = 1;
#if defined(MODE_DVDH045)
LOAD_CLOSE = 1;
#else
LOAD_CLOSE = 0;
#endif
bOpenOK = 0;
bCloseOK = 0;
gbLoadState++;
break;
case 11:
#if defined(MODE_DVDH045)
LOAD_CLOSE = 0;
#endif
#if defined(MODE_V3)
if(!OPEN_LIMIT)
#endif
{
LOAD_OPEN = 0;
gbLoadState = 0;
bOpenOK = 1;
#if !defined(MODE_DVDH045) && !defined(MODE_V3)
if(gbSysState.Main == STATE_VCD)
write_data_to_dsabuf(0xd100);
#endif
}
break;
case 15: // close
#if defined(MODE_DVDH045)
LOAD_OPEN = 1;
#else
LOAD_OPEN = 0;
#endif
LOAD_CLOSE = 1;
bOpenOK = 0;
bCloseOK = 0;
gbLoadState++;
break;
case 16:
#if defined(MODE_DVDH045)
LOAD_OPEN = 0;
#endif
#if defined(MODE_V3)
if(!CLOSE_LIMIT)
#endif
{
LOAD_CLOSE = 0;
gbLoadState = 0;
bCloseOK = 1;
#if !defined(MODE_DVDH045) && !defined(MODE_V3)
if(gbSysState.Main == STATE_VCD)
write_data_to_dsabuf(0xd100 + (((BYTE)bOpenClose) << 4));
#endif
#if defined(MODE_V3)
if(CloseWaiting)
{
if(CloseWaiting == 1)
{
SetSysMainState(STATE_STANDBY);
}
else if (CloseWaiting == 2)
{
GetSysState(STATE_TUNER);
}
else if (CloseWaiting == 3)
{
GetSysState(STATE_AUX);
}
CloseWaiting = 0;
}
#endif
}
break;
default:
LOAD_OPEN = 0;
LOAD_CLOSE = 0;
gbLoadState = 0;
break;
}
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -