📄 spi_api.c
字号:
ClearVFDStb();
FpDateSize = KB_KEYSIZE;
SendByte(READ_KEY_DATA_COMMAND);
VFD_next_state = VFD_state_scan_key_1;
}
void VFD_state_scan_key_1()
{
FpKeyBuf[KB_KEYSIZE - FpDateSize] = ReceiveByte();
VFD_next_state = VFD_state_scan_key_2;
}
void VFD_state_scan_key_2()
{
if(--FpDateSize)
VFD_state_scan_key_1();
else{
SetVFDStb();
VFD_state_scan_key_3();
}
}
void VFD_state_scan_key_3()
{
static unsigned char OldIndex = 0;
unsigned char index ;
unsigned char key_function_data;
index = FPGetKeyIndex();
if(OldIndex!=index){
OldIndex = index;
#if Test_Mode
key_value=index;
#endif
if(index){
#if SPI_DEBUG_PRINT
SysPrintf("\n FpGet Index = 0x%02X",index);
#endif
key_function_data = FpKeyArray[index];
#if 0 // SEPERATE_PLAY_PAUSE
if(key_function_data == KEY_PLAY){
if(GetDiscType() == MP3_DISC){
if( !(Mp3_GetMain()!= MP3_PLAY) || (gMp3Status.trick != MP3_TRICK_OFF) )
key_function_data = KEY_PAUSE;
}else{
if((Vcd_GetMainState() == MAIN_PLAY) && ( Vcd_GetSub2State() <= SUB2_TRICK_STEP) )
key_function_data = KEY_PAUSE;
}
}
#endif
if(key_function_data!= KEY_NULL)
// IR_Send_Msg(key_function_data, 0);
(*AttachedKeySendCallback)( key_function_data, 0 );
}
}
OldIndex = index;
VFD_next_state = VFD_state_refresh_0;
}
void VFD_state_scan_key_4()
{
}
void VFD_state_refresh_0()
{
unsigned char i,j;
VFDRefreshPtr = 0;
for (i = 0; i < FP_MAX_BUF; i++)
{
if(FpBuf[i] != FpBufBak[i] )
{
FpBufBak[i] = FpBuf[i];
VFDRefreshPtr ++;
j = VFDRefreshPtr;
VFDRefreshStack[j].position = i;
VFDRefreshStack[j].data = FpBuf[i];
}
}
if(VFDRefreshPtr)
VFD_next_state = VFD_state_refresh_1;
else
VFD_next_state = VFD_state_refresh_5;
}
void VFD_state_refresh_1()
{
SendCmd(DISPLAYMODE);
VFD_next_state = VFD_state_refresh_2;
}
void VFD_state_refresh_2() //command1
{
SendCmd(CONTROLDISPLAY);
VFD_next_state = VFD_state_refresh_3;
}
void VFD_state_refresh_3() //command2
{
SendCmd(WRITE_FIXED_DISPLAY_COMMAND);
ClearVFDStb();
VFD_next_state = VFD_state_refresh_4;
}
void VFD_state_refresh_4() //address
{
for( ;VFDRefreshPtr>0; VFDRefreshPtr--)
{
ClearVFDStb();
SendByte(WRITE_VFD_ADDRESS_MASK|VFDRefreshStack[VFDRefreshPtr].position);
SendByte(VFDRefreshStack[VFDRefreshPtr].data);
SetVFDStb();
}
VFD_next_state = VFD_state_refresh_5;
}
void VFD_state_refresh_5()
{
#if Test_Mode
int i;
if(flash_lcd)
{
for (i = 0; i < FP_MAX_BUF; i++)
{
ClearVFDStb();
SendByte(WRITE_VFD_ADDRESS_MASK|i);
SendByte(0xff);
SetVFDStb();
}
}
else
{
if(!led_flag)
{
for (i = 0; i < FP_MAX_BUF; i++)
{
ClearVFDStb();
SendByte(WRITE_VFD_ADDRESS_MASK|i);
SendByte(0);
SetVFDStb();
FpBuf[i] = 0;
led_flag=TRUE;
}
}
else
vfd_dot(1,dot);
}
#else
if(VfdDiscTurnF)
{
if(OsdGetStatus() == DSP_PROG)
vfd_normal_state();
vfd_disc_turn(1);
}
#endif
VFD_next_state = VFD_state_scan_key_0;
}
/***************************************************************************
* VFD MODULE *
****************************************************************************/
#if 0
const unsigned char vfd_addr[12] = { 1, 0, 3, 2, 4, 6, 8, 11, 10, 0, 0, 0 };
void print_vfd_msg(unsigned char no, unsigned char data)
{
if(SysGetSema(&gVfd_RWSema,SYS_NO_WAIT ) == SYS_RETURN_SUCCESS )
{
switch (no)
{
case 0:
case 2:
case 7:
FpBuf[vfd_addr[no]] &= (~0x3f);
FpBuf[vfd_addr[no] - 1] &= (~0x80);
if(vfd_digit[data] & 0x01)
FpBuf[vfd_addr[no] - 1] |= (0x80);
FpBuf[vfd_addr[no]] |= (vfd_digit[data] >> 1);
break;
default:
FpBuf[vfd_addr[no]] &= (~0x7f);
FpBuf[vfd_addr[no]] |= (vfd_digit[data]);
break;
}
SysReleaseSema(&gVfd_RWSema );
}
}
void vfd_disc_turn(unsigned char mode)
{
static unsigned char i = 0;
static unsigned char jj = 0;
if(SysGetSema(&gVfd_RWSema,SYS_NO_WAIT ) == SYS_RETURN_SUCCESS )
{
if(i > 5) i = 0;
if(i % 2 ==0){
jj ++;
if(jj > 5) jj = 0;
FpBuf[7] = 0x7f;
}
if(mode)
FpBuf[7] &= ~(1 << jj);
else
FpBuf[7] = 0x7f;
i++;
switch (i)
{
case 1:
vfd_dot(VFD_DOT_ON, VFD_DOT_COLON);
break;
case 4:
vfd_dot(VFD_DOT_OFF, VFD_DOT_COLON);
break;
case 3:
case 6:
FpBuf[VFD_DOT_PLAY / 8] |= (1 << (VFD_DOT_PLAY % 8));
FpBuf[VFD_DOT_PAUSE / 8] &= (~(1 << (VFD_DOT_PAUSE % 8)));
break;
default:
break;
}
SysReleaseSema(&gVfd_RWSema );
}
void vfd_readtoc(void)
{
//FPClearFp();
print_vfd_msg(0, CHAR_R);
print_vfd_msg(1, CHAR_E);
print_vfd_msg(2, CHAR_A);
print_vfd_msg(3, CHAR_D);
print_vfd_msg(4, CHAR_D);
print_vfd_msg(5, CHAR_I);
print_vfd_msg(6, CHAR_S);
print_vfd_msg(7, CHAR_C);
}
#else // VCD-5700
const unsigned char vfd_addr[7] = { 6, 5, 4, 3, 2, 1, 0 };
void print_vfd_msg(unsigned char no, unsigned char data)
{
if(SysGetSema(&gVfd_RWSema,SYS_NO_WAIT ) == SYS_RETURN_SUCCESS )
{
switch (no)
{
case 5:
FpBuf[vfd_addr[no]] &= (~0x3f);
FpBuf[vfd_addr[no] - 1] &= (~0x80);
if(vfd_digit[data] & 0x01)
FpBuf[vfd_addr[no] - 1] |= (0x80);
FpBuf[vfd_addr[no]] |= (vfd_digit[data] >> 1);
break;
default:
FpBuf[vfd_addr[no]] &= (0x80);
FpBuf[vfd_addr[no]] |= (vfd_digit[data]);
break;
}
SysReleaseSema(&gVfd_RWSema );
}
}
void vfd_disc_turn(unsigned char mode)
{
static unsigned char i = 0;
static unsigned char jj = 0;
if(SysGetSema(&gVfd_RWSema,SYS_NO_WAIT ) == SYS_RETURN_SUCCESS )
{
if(i > 5) i = 0;
if(i % 2 ==0){
jj ++;
if(jj >=13) jj = 0;
FpBuf[8] |= 0xfc;
FpBuf[9] |= 0x7f;
}
if(mode)
{
if(jj<7)
{
FpBuf[9] &= ~(0x40 >> jj);
FpBuf[8] |= 0xfc;
}
else
{
FpBuf[8] &= ~(0x80 >> (jj-7));
FpBuf[9] |= 0x7f;
}
}
i++;
switch (i)
{
case 1:
vfd_dot(VFD_DOT_ON, VFD_DOT_COLON);
break;
case 4:
vfd_dot(VFD_DOT_OFF, VFD_DOT_COLON);
break;
case 3:
case 6:
//FpBuf[VFD_DOT_PLAY / 8] |= (1 << (VFD_DOT_PLAY % 8));
//FpBuf[VFD_DOT_PAUSE / 8] &= (~(1 << (VFD_DOT_PAUSE % 8)));
break;
default:
break;
}
SysReleaseSema(&gVfd_RWSema );
}
}
void vfd_readtoc(void)
{
FPClearFp();
print_vfd_msg(2, CHAR_C);
print_vfd_msg(3, CHAR_L);
print_vfd_msg(4, CHAR_O);
print_vfd_msg(5, CHAR_S);
print_vfd_msg(6, CHAR_E);
}
#endif
void vfd_open(void)
{
FPClearFp();
VfdDiscTurnF = 0;
print_vfd_msg(3, CHAR_O);
print_vfd_msg(4, CHAR_P);
print_vfd_msg(5, CHAR_E);
print_vfd_msg(6, CHAR_N);
}
void vfd_close(void)
{
//FPClearFp();
VfdDiscTurnF = 0;
print_vfd_msg(2, CHAR_C);
print_vfd_msg(3, CHAR_L);
print_vfd_msg(4, CHAR_O);
print_vfd_msg(5, CHAR_S);
print_vfd_msg(6, CHAR_E);
}
void vfd_nodisc(void)
{
print_vfd_msg(1, CHAR_N);
print_vfd_msg(2, CHAR_O);
print_vfd_msg(3, CHAR_D);
print_vfd_msg(4, CHAR_I);
print_vfd_msg(5, CHAR_S);
print_vfd_msg(6, CHAR_C);
}
void vfd_show_time(USHORT track , ULONG32 time)
{
static unsigned char cd_time_ss = 0xff;
unsigned char cd_disp_trk,cd_disp_hh,cd_disp_mm,cd_disp_ss;
ULONG32 CurrentTime;
CurrentTime = time;
//cd_disp_hh = (unsigned char) (CurrentTime/3600);
//cd_disp_mm = (unsigned char) ((CurrentTime%3600)/60);
//cd_disp_ss = (unsigned char) (CurrentTime%60);
cd_disp_trk = (unsigned char) track/*(gVcdTrackInfo.CurrTrack_no)*/;
// if(cd_disp_ss != cd_time_ss)
// {
// cd_time_ss = cd_disp_ss;
// {
//print_vfd_msg(0, CHAR_SPACE);
print_vfd_msg(1, cd_disp_trk/10);
print_vfd_msg(2, cd_disp_trk%10);
print_vfd_msg(3, (CurrentTime/60)/10);
print_vfd_msg(4, (CurrentTime/60)%10);
print_vfd_msg(5, (CurrentTime%60)/10);
print_vfd_msg(6, (CurrentTime%60)%10);
///print_vfd_msg(7, cd_disp_ss / 10);
//print_vfd_msg(8, cd_disp_ss % 10);
// }
//}
}
void vfd_normal_state(void)
{
ULONG32 CurrentTime;
CurrentTime = VcdGetCurSec();
vfd_show_time(gVcdTrackInfo.CurrTrack_no , CurrentTime);
vfd_dot(VFD_DOT_ON,VFD_DOT_PLAY);
vfd_dot(VFD_DOT_OFF,VFD_DOT_PAUSE);
}
void vfd_mp3(void)
{
vfd_dot(VFD_DOT_ON, VFD_DOT_MP3);
}
void vfd_repeatOne(void)
{
}
void vfd_repeatAll(void)
{
}
void vfd_repeatOff(void)
{
}
void vfd_mp3_stop(void)
{
}
unsigned char FpKeyArray[]={ /*temporarily*/
KEY_NULL, KEY_STOP, KEY_NULL, KEY_AUDIO, //00-03
KEY_AUDIO, KEY_NULL, KEY_NULL, KEY_SKIP_BACK, //04-07
KEY_SKIP_NEXT, KEY_NUM9, KEY_NULL, KEY_NUM8, //08-0B
KEY_PLAY_PAUSE, KEY_OPEN_CLOSE, KEY_PLAY_PAUSE, KEY_STOP, //0C-0F
KEY_OPEN_CLOSE, KEY_NUM3, KEY_NULL, KEY_UP, //10-13
KEY_AUDIO, KEY_NUM6, KEY_NULL, KEY_NUM5, //14-17
};
#endif
#if LED1623
/********************************************************************
LED 1623
********************************************************************/
void ShowVFD(OsdMsg_t * vfd_msg)
{
#if 0
static unsigned char dot = 0;
FPClearFp(); //test front panel
FpBuf[dot / 8] |= (1 << (dot % 8));
dot ++;
if (dot > 0x5f) dot = 0;
#else
ULONG32 CurrentTime;
CHAR temp,i;
CurrentTime = VcdGetCurSec();
vfd_audio_channel();
vfd_display_mode();
temp=vfd_msg->mode;
switch(vfd_msg->mode){
case DSP_VCD:
#if _SUPPORT_GAMECD
if(gIsGameCD){
vfd_dot(VFD_DOT_ON, VFD_DOT_PLAY);
vfd_show_time(0, 0);
VfdDiscTurnF = 1;
}else
#endif
{
#if HTS_C2
vfd_dot(VFD_DOT_ON, VFD_DOT_DVD);
vfd_dot(VFD_DOT_ON, VFD_DOT_MP4);
vfd_dot(VFD_DOT_ON, VFD_DOT_MP3);
vfd_dot(VFD_DOT_ON, VFD_DOT_DB);
vfd_dot(VFD_DOT_ON, VFD_DOT_DTS);
vfd_dot(VFD_DOT_ON, VFD_DOT_CD);
//vfd_dot(VFD_DOT_ON, VFD_DOT_VCD);
#else
vfd_dot(VFD_DOT_ON, VFD_DOT_VCD);
#endif
vfd_dot(VFD_DOT_ON, VFD_DOT_PLAY);
}
VfdDiscTurnF = 0;
break;
case DSP_CDDA:
vfd_dot(VFD_DOT_ON, VFD_DOT_CD);
vfd_dot(VFD_DOT_ON, VFD_DOT_PLAY);
//vfd_dot(VFD_DOT_ON, VFD_DOT_DB);
//vfd_dot(VFD_DOT_ON, VFD_DOT_DTS);
#if HTS_C2
vfd_dot(VFD_DOT_ON, VFD_DOT_MP3);
#endif
VfdDiscTurnF = 0;
break;
case DSP_PLAY:
vfd_play();
break;
case DSP_PAUSE:
vfd_pause();
VfdDiscTurnF = 0;
break;
case DSP_STOP:
vfd_show_stop();
VfdDiscTurnF = 0;
vfd_dot(VFD_DOT_OFF, VFD_DOT_REP);
vfd_dot(VFD_DOT_OFF, VFD_DOT_PLAY);
vfd_dot(VFD_DOT_OFF, VFD_DOT_PAUSE);
vfd_dot(VFD_DOT_ON, VFD_DOT_DOTM);
vfd_dot(VFD_DOT_ON, VFD_DOT_DOTS);
break;
case DSP_PREV:
case DSP_NEXT:
case DSP_FR:
case DSP_FF:
case DSP_SR:
case DSP_SF:
vfd_show_time(gVcdTrackInfo.CurrTrack_no,CurrentTime);
VfdDiscTurnF = 0;
break;
case DSP_REPEAT_TRK:
vfd_dot(VFD_DOT_ON, VFD_DOT_REP);
break;
case DSP_REPEAT_ALL:
vfd_dot(VFD_DOT_ON, VFD_DOT_REP);
break;
#if _SUPPORT_REPEAT_AB
case DSP_REPEAT_A:
break;
case DSP_REPEAT_AB:
break;
#endif
case DSP_REPEAT_OFF:
vfd_dot(VFD_DOT_OFF, VFD_DOT_REP);
break;
case DSP_ON:
#if 0
if( PBC_PROGRAM == Vcd_GetPBCState())
vfd_dot(VFD_DOT_ON, VFD_DOT_PGM);
else vfd_dot(VFD_DOT_OFF, VFD_DOT_PGM);
if(PBC_RANDOM == Vcd_GetPBCState())
vfd_dot(VFD_DOT_ON, VFD_DOT_RAN);
else
vfd_dot(VFD_DOT_OFF, VFD_DOT_RAN);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -