📄 cd.c
字号:
}
switch(System.FWorkMode.Last)
{
case WORKMODE_DISC:
case WORKMODE_USB:
case WORKMODE_SD:
//if(CD.PlayMode!= CD_PLAY_STOP&&!(CD.PlayMode== CD_PLAY_ACCESS&&CD.PlayMode_PAR2==CD_PLAY_ACCESS_STOP))//cis0.8
if(CD.PlayMode!= CD_PLAY_STOP)//cis0.9
CDSendCommand(CD_CMD_STOP);
break;
}
switch(CD.WorkMode)
{
case CD_WORKMODE_IDLE:
if(System.FWorkMode.Current==WORKMODE_SD&&CD.NoSD)
{
CD.WorkMode=CD_WORKMODE_AUTOCHANGE;
CD.DispMode=CD_DISP_NOSD;
CD.F_DispReq=1;
CD.WorkTimer1s=3;
}
else if(System.FWorkMode.Current==WORKMODE_USB&&CD.NoUSB)
{
CD.WorkMode=CD_WORKMODE_AUTOCHANGE;
CD.DispMode=CD_DISP_NOUSB;
CD.F_DispReq=1;
CD.WorkTimer1s=3;
}
break;
case CD_WORKMODE_POWER_ON_REQ:
if(CD.PowerMode==CD_POWER_OFF)
CDPower(OFF_TO_NORMAL);
else
CDPower(STANDBY_TO_NORMAL);
CD.WorkMode=CD_WORKMODE_POWER_ON_WAIT_NORMAL;
break;
case CD_WORKMODE_POWER_ON_WAIT_NORMAL:
if(CD.PowerMode==CD_POWER_NORMAL)
{
CD.WorkMode=CD_WORKMODE_IDLE;
}
break;
case CD_WORKMODE_POWER_OFF_REQ:
//if(CD.PlayMode!=CD_PLAY_STOP&&!(CD.PlayMode== CD_PLAY_ACCESS&&CD.PlayMode_PAR2==CD_PLAY_ACCESS_STOP))
if(CD.PlayMode!=CD_PLAY_STOP)
CDSendCommand(CD_CMD_STOP);
CD.WorkMode=CD_WORKMODE_POWER_OFF_WAIT;
break;
case CD_WORKMODE_POWER_OFF_WAIT:
if(CD.PowerMode==CD_POWER_NORMAL)
CDPower(NORMAL_TO_OFF);
else
CDPower(STANDBY_TO_OFF);
CD.WorkMode=CD_WORKMODE_IDLE;
break;
/*
case CD_WORKMODE_POWER_ON_REQ:
if(CD.PowerMode==CD_POWER_OFF)
CDPower(OFF_TO_NORMAL);
else
CDPower(STANDBY_TO_NORMAL);
CD.DispMode=CD_DISP_READING;
CD.F_DispReq=1;
CD.WorkMode=CD_WORKMODE_POWER_ON_WAIT_NORMAL;
break;
case CD_WORKMODE_POWER_ON_WAIT_NORMAL:
if(CD.PowerMode==CD_POWER_NORMAL)
CD.WorkMode=CD_WORKMODE_POWER_ON_WAIT_LOADER;
break;
case CD_WORKMODE_POWER_ON_WAIT_LOADER:
if(CD.F_NewLoaderMode)
{
CD.F_NewLoaderMode=0;
if(CD.LoaderMode==CD_LODER_NODISC)
{
CD.DispMode=CD_DISP_NODISC;
CD.F_DispReq=1;
CD.WorkMode=CD_WORKMODE_POWER_WAIT_TO_RETURN;
CD.PowerTimer10ms=250;
}
else if((CD.LoaderMode==CD_LODER_STOP_POS || CD.LoaderMode==CD_LODER_INSERTING)
&&CD.WorkReq==POWERON_LOAD_EJECT)
{
CD.WorkReq=0;
CDSendCommand(CD_CMD_EJECTDISC);
CD.WorkMode=CD_WORKMODE_POWER_WAIT_EJECTPOS;
CD.PowerTimer10ms=250;
}
else if((CD.LoaderMode==CD_LODER_EJECT_POS ||CD.LoaderMode==CD_LODER_EJECTING)
&&CD.WorkReq==POWERON_LOAD_EJECT)
{
CD.WorkReq=0;
CDSendCommand(CD_CMD_LOADDISC);
CD.WorkMode=CD_WORKMODE_POWER_WAIT_STOPPOS;
CD.PowerTimer10ms=250;
}
else
{
CD.WorkMode=CD_WORKMODE_POWER_ON_WAIT_PLAYER;
CDSendCommand(CD_CMD_SOURCE_TO_DISC);
CD.DispMode=CD_DISP_DISC_READ;
CD.F_DispReq=1;
}
}
else
{
if(F_HalfSecondOut)
CDSendCommand(CD_CMD_REQ_STATE);
}
break;
case CD_WORKMODE_POWER_WAIT_EJECTPOS:
if(CD.LoaderMode==CD_LODER_EJECT_POS)
{
CD.WorkMode=CD_WORKMODE_POWER_OFF_REQ;
}
break;
case CD_WORKMODE_POWER_WAIT_STOPPOS:
if(CD.LoaderMode==CD_LODER_STOP_POS)
{
CD.WorkMode=CD_WORKMODE_POWER_OFF_REQ;
}
break;
case CD_WORKMODE_POWER_OFF_REQ:
//CDSendCommand(CD_CMD_POWEROFF);
//CDSendCommand(CD_CMD_STOP);
CD.WorkMode=CD_WORKMODE_POWER_OFF_WAIT;
break;
case CD_WORKMODE_POWER_OFF_WAIT:
if(F_HalfSecondOut)
{
if(CD.PlayMode!=CD_PLAY_STOP)
CDSendCommand(CD_CMD_STOP);
else
CD.WorkMode=CD_WORKMODE_POWER_OFF_WAIT2;
}
break;
case CD_WORKMODE_POWER_OFF_WAIT2:
if(CD.PowerMode==CD_POWER_NORMAL)
CDPower(NORMAL_TO_OFF);
else
CDPower(STANDBY_TO_OFF);
CD.WorkMode=CD_WORKMODE_IDLE;
break;
case CD_WORKMODE_POWER_OFF_REQ:
CDSendCommand(CD_CMD_STOP);
CD.WorkMode=CD_WORKMODE_IDLE;
case CD_WORKMODE_POWER_WAIT_TO_RETURN:
if(CD.PowerTimer10ms>0)break;
ChangeFWorkmode(WORKMODE_RADIO);
CD.WorkMode=CD_WORKMODE_IDLE;
break;
case CD_WORKMODE_ERROR:
break;
*/
case CD_WORKMODE_AUTOCHANGE:
if(CD.WorkTimer1s>0)break;
/*switch (System.FWorkMode.Current)
{
case WORKMODE_DISC:
ChangeFWorkmode(WORKMODE_USB);
break;
case WORKMODE_USB:
ChangeFWorkmode(WORKMODE_SD);
break;
case WORKMODE_SD:
ChangeFWorkmode(WORKMODE_AUX);
break;
}*/
ChangeFWorkmode(WORKMODE_RADIO);
CD.WorkMode=CD_WORKMODE_IDLE;
break;
case CD_WORKMODE_DISC:
if(CD.F_NewLoaderMode)
{
CD.F_NewLoaderMode=0;
if(CD.DISC_Ready)
{
CD.WorkMode=CD_WORKMODE_POWER_ON_WAIT_PLAYER;
CDSendCommand(CD_CMD_REQ_START_TOC);
CD.WorkTimer1s=50;//wait toc
}
else if(CD.NoDISC)
{
CD.WorkMode=CD_WORKMODE_AUTOCHANGE;
CD.DispMode=CD_DISP_NODISC;
CD.F_DispReq=1;
CD.WorkTimer1s=3;
}
else if(CD.DISC_EJect)
{
CDSendCommand(CD_CMD_LOADDISC);
}
else if(CD.DISC_Block)
{
CD.WorkMode=CD_WORKMODE_AUTOCHANGE;
CD.DispMode=CD_DISP_DISC_ERROR;
CD.F_DispReq=1;
CD.WorkTimer1s=3;
}
else if(CD.DISC_Insert)
{
CD.WorkTimer1s=3;
}
}
else
{
if(CD.WorkTimer1s>0)
{
if(F_HalfSecondOut)
CDSendCommand(CD_CMD_REQ_LOADERSTATE);
}
else
{
CD.WorkMode=CD_WORKMODE_AUTOCHANGE;
CD.DispMode=CD_DISP_NODISC;
CD.F_DispReq=1;
CD.WorkTimer1s=3;
}
}
break;
case CD_WORKMODE_USB:
if(CD.USB_Ready)
{
CD.WorkMode=CD_WORKMODE_POWER_ON_WAIT_PLAYER;
CD.WorkTimer1s=3;
}
else if(CD.NoUSB)
{
CD.WorkMode=CD_WORKMODE_AUTOCHANGE;
CD.DispMode=CD_DISP_NOUSB;
CD.F_DispReq=1;
CD.WorkTimer1s=3;
}
else if(CD.USB_Error||CD.USB_Unknown)
{
CD.WorkMode=CD_WORKMODE_AUTOCHANGE;
CD.DispMode=CD_DISP_USB_ERROR;
CD.F_DispReq=1;
CD.WorkTimer1s=3;
}
else
{
if(CD.WorkTimer1s==0)
{
CD.WorkMode=CD_WORKMODE_AUTOCHANGE;
CD.DispMode=CD_DISP_COMMUNICATION_ERROR;
CD.F_DispReq=1;
CD.WorkTimer1s=3;
}
}
break;
case CD_WORKMODE_SD:
if(CD.SD_Ready)
{
CD.WorkMode=CD_WORKMODE_POWER_ON_WAIT_PLAYER;
CD.WorkTimer1s=3;
}
else if(CD.NoSD)
{
CD.WorkMode=CD_WORKMODE_AUTOCHANGE;
CD.DispMode=CD_DISP_NOSD;
CD.F_DispReq=1;
CD.WorkTimer1s=3;
}
else if(CD.SD_Error||CD.SD_Unknown)
{
CD.WorkMode=CD_WORKMODE_AUTOCHANGE;
CD.DispMode=CD_DISP_SD_ERROR;
CD.F_DispReq=1;
CD.WorkTimer1s=3;
}
else
{
if(CD.WorkTimer1s==0)
{
CD.WorkMode=CD_WORKMODE_AUTOCHANGE;
CD.DispMode=CD_DISP_COMMUNICATION_ERROR;
CD.F_DispReq=1;
CD.WorkTimer1s=3;
}
}
break;
case CD_WORKMODE_POWER_ON_WAIT_PLAYER:
if(CD.F_NewPlayMode)
{
CD.F_NewPlayMode=0;
//if(CD.PlayMode!=CD_PLAY_PLAY)
//Yete: May-22-2007---Wait for TOC ready when in disc mode
if((CD.PlayMode==CD_PLAY_PAUSE&&System.FWorkMode.Current==WORKMODE_DISC) ||(CD.PlayMode!=CD_PLAY_PLAY&&(System.FWorkMode.Current==WORKMODE_USB||System.FWorkMode.Current==WORKMODE_SD)))
{
CDSendCommand(CD_CMD_PLAY);
CD.WorkMode=CD_WORKMODE_POWER_ON_PLAY;
CDMute(SOFTOFF);
CD.WorkTimer1s=20;
}
}
else
{
if(CD.WorkTimer1s>0)
{
if(F_HalfSecondOut)
CDSendCommand(CD_CMD_REQ_PLAYERSTATE);
}
else
{
CD.WorkMode=CD_WORKMODE_AUTOCHANGE;
CD.DispMode=CD_DISP_COMMUNICATION_ERROR;
CD.F_DispReq=1;
CD.WorkTimer1s=3;
}
}
break;
case CD_WORKMODE_POWER_ON_PLAY:
if(CD.F_NewPlayMode)
{
CD.F_NewPlayMode=0;
if((CD.PlayMode==CD_PLAY_PLAY)&&((CD.PlayMode_PAR2&0x01)==0x00))
{
if(System.FWorkMode.Current==WORKMODE_DISC)
CDSendCommand(CD_CMD_REQ_DISCTYPE);
//*----------NOT Supported the device file request now---------
else if(System.FWorkMode.Current==WORKMODE_USB)
CDSendCommand(CD_CMD_REQ_USBFILETYPE);
else if(System.FWorkMode.Current==WORKMODE_SD)
CDSendCommand(CD_CMD_REQ_SDFILETYPE);
//-------------------------------------------------------*/
CD.WorkMode=CD_WORKMODE_IDLE;
CD.DispMode=CD_DISP_NORMAL;
CD.F_DispReq=1;
}
}
else
{
if(CD.WorkTimer1s>0)
{
if(F_HalfSecondOut)
{
if((CD.PlayMode!=CD_PLAY_PLAY)&&!(CD.PlayMode== CD_PLAY_ACCESS&&CD.PlayMode_PAR2==CD_PLAY_ACCESS_PLAY))
if(CD.PlayMode!=CD_PLAY_PLAY)
CDSendCommand(CD_CMD_PLAY);
else
CDSendCommand(CD_CMD_REQ_PLAYERSTATE);
}
}
else
{
CD.WorkMode=CD_WORKMODE_AUTOCHANGE;
CD.DispMode=CD_DISP_COMMUNICATION_ERROR;
CD.F_DispReq=1;
CD.WorkTimer1s=3;
}
}
break;
case CD_WORKMODE_GETFILENAME:
CDSendCommand(CD_CMD_REQ_CURRENTFILENAME);
CD.WorkMode=CD_WORKMODE_GETTEXTINFO;
CD.WorkTimer10ms=2;
break;
case CD_WORKMODE_GETTEXTINFO:
if(CD.WorkTimer10ms>0)break;
CDSendCommand(CD_CMD_REQ_CURRENTTEXTINFO);
CD.WorkMode=CD_WORKMODE_IDLE;
//CD.WorkTimer10ms=3;
break;
}
}
void CDSendCommand(unsigned int command)
{
unsigned char i;
if(CD.SendCommandNum>4)return;
if(CD.SendCommandNum>0)
{
for(i=CD.SendCommandNum;i>0;i--)
{
CD.SendCommand[i]=CD.SendCommand[i-1];
}
}
CD.SendCommandNum++;
CD.SendCommand[0]=command;
CDSendBuffUpdate();
}
void CDSendBuffUpdate(void)
{
switch(CD.SendCommand[CD.SendCommandNum-1])//first into buffer, first handle
{
case CD_CMD_NO:
break;
case CD_CMD_LOADDISC:
CD.SendBuff[0]=3;
CD.SendBuff[1]=0x03;
CD.SendBuff[2]=0x03;
break;
case CD_CMD_EJECTDISC:
CD.SendBuff[0]=3;
CD.SendBuff[1]=0x03;
CD.SendBuff[2]=0x04;
break;
case CD_CMD_PLAY:
CD.SendBuff[0]=4;
CD.SendBuff[1]=0x03;
CD.SendBuff[2]=0x05;
CD.SendBuff[3]=0x02;
break;
case CD_CMD_PAUSE:
CD.SendBuff[0]=4;
CD.SendBuff[1]=0x03;
CD.SendBuff[2]=0x0A;
CD.SendBuff[3]=0x02;
break;
case CD_CMD_POWEROFF:
CD.SendBuff[0]=3;
CD.SendBuff[1]=0x03;
CD.SendBuff[2]=0x01;
break;
case CD_CMD_STOP:
CD.SendBuff[0]=3;
CD.SendBuff[1]=0x03;
CD.SendBuff[2]=0x02;
break;
case CD_CMD_REQ_STATE:
CD.SendBuff[0]=4;
CD.SendBuff[1]=0x01;
CD.SendBuff[2]=0x10;
CD.SendBuff[3]=0xFF;
break;
case CD_CMD_REQ_POWERSTATE:
CD.SendBuff[0]=4;
CD.SendBuff[1]=0x01;
CD.SendBuff[2]=0x10;
CD.SendBuff[3]=0x01;
break;
case CD_CMD_REQ_PLAYERSTATE:
CD.SendBuff[0]=4;
CD.SendBuff[1]=0x01;
CD.SendBuff[2]=0x10;
CD.SendBuff[3]=0x02;
break;
case CD_CMD_REQ_LOADERSTATE:
CD.SendBuff[0]=4;
CD.SendBuff[1]=0x01;
CD.SendBuff[2]=0x10;
CD.SendBuff[3]=0x04;
break;
case CD_CMD_REQ_INSERTSTATE:
CD.SendBuff[0]=4;
CD.SendBuff[1]=0x01;
CD.SendBuff[2]=0x10;
CD.SendBuff[3]=0x10;
break;
case CD_CMD_REQ_ERRORSTATE:
CD.SendBuff[0]=4;
CD.SendBuff[1]=0x01;
CD.SendBuff[2]=0x10;
CD.SendBuff[3]=0x20;
break;
case CD_CMD_NEXT_FILE:
CD.SendBuff[0]=4;
CD.SendBuff[1]=0x03;
CD.SendBuff[2]=0x17;
CD.SendBuff[3]=0x01;
break;
case CD_CMD_PREVIOUS_FILE:
CD.SendBuff[0]=4;
CD.SendBuff[1]=0x03;
CD.SendBuff[2]=0x18;
CD.SendBuff[3]=0x01;
break;
case CD_CMD_NEXT_DIR:
CD.SendBuff[0]=4;
CD.SendBuff[1]=0x03;
CD.SendBuff[2]=0x17;
CD.SendBuff[3]=0x02;
break;
case CD_CMD_PREVIOUS_DIR:
CD.SendBuff[0]=4;
CD.SendBuff[1]=0x03;
CD.SendBuff[2]=0x18;
CD.SendBuff[3]=0x02;
break;
case CD_CMD_INT_ON:
CD.SendBuff[0]=7;
CD.SendBuff[1]=0x02;
CD.SendBuff[2]=0x01;
//CD.SendBuff[3]=0x10;//cis0.08
CD.SendBuff[3]=0x12;//cis0.09
CD.SendBuff[4]=0x02;
CD.SendBuff[5]=0x0A;
CD.SendBuff[6]=0x0;
break;
case CD_CMD_SHF_ON:
CD.SendBuff[0]=7;
CD.SendBuff[1]=0x02;
CD.SendBuff[2]=0x01;
//CD.SendBuff[3]=0x10;//cis0.08
CD.SendBuff[3]=0x12;//cis0.09
CD.SendBuff[4]=0x02;
CD.SendBuff[5]=0x0;
CD.SendBuff[6]=0x1;
break;
case CD_CMD_RPT_ON:
CD.SendBuff[0]=7;
CD.SendBuff[1]=0x02;
CD.SendBuff[2]=0x01;
//CD.SendBuff[3]=0x10;//cis0.08
CD.SendBuff[3]=0x12;//cis0.09
CD.SendBuff[4]=0x02;
CD.SendBuff[5]=0x0;
CD.SendBuff[6]=0x2;
break;
case CD_CMD_INTSHFRPT_OFF:
CD.SendBuff[0]=7;
CD.SendBuff[1]=0x02;
CD.SendBuff[2]=0x01;
//CD.SendBuff[3]=0x10;//cis0.08
CD.SendBuff[3]=0x12;//cis0.09
CD.SendBuff[4]=0x02;
CD.SendBuff[5]=0x0;
CD.SendBuff[6]=0x0;
break;
case CD_CMD_FAST_FF:
CD.SendBuff[0]=4;
CD.SendBuff[1]=0x03;
CD.SendBuff[2]=0x0B;
CD.SendBuff[3]=0x02;
break;
case CD_CMD_FAST_FB:
CD.SendBuff[0]=4;
CD.SendBuff[1]=0x03;
CD.SendBuff[2]=0x0C;
CD.SendBuff[3]=0x02;
break;
case CD_CMD_REQ_DISCTYPE:
CD.SendBuff[0]=3;
CD.SendBuff[1]=0x04;
CD.SendBuff[2]=0x01;
break;
case CD_CMD_REQ_USBFILETYPE:
CD.SendBuff[0]=4;
CD.SendBuff[1]=0x04;
CD.SendBuff[2]=0x23;
CD.SendBuff[3]=0x01;
break;
case CD_CMD_REQ_SDFILETYPE:
CD.SendBuff[0]=4;
CD.SendBuff[1]=0x04;
CD.SendBuff[2]=0x23;
CD.SendBuff[3]=0x02;
break;
case CD_CMD_SOURCE_TO_DISC:
CD.SendBuff[0]=4;
CD.SendBuff[1]=0x03;
CD.SendBuff[2]=0x26;
CD.SendBuff[3]=0x1;
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -