⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 panel.c

📁 9908 samsung tool soft
💻 C
📖 第 1 页 / 共 5 页
字号:
}

void ReadKeyData(unsigned char* scanData,unsigned char size)
{
	unsigned char i;
	ClearVFDStb();
	SendByte(READ_KEY_DATA_COMMAND);
	for (i = 0; i < size; i++)
	{
		scanData[i] = ReceiveByte();
	}
	SetVFDStb();
}
unsigned char FPGetKeyIndex( void )
{
	unsigned char i, j,mask;
	unsigned char temp;									
	ReadKeyData(FpKeyBuf,KB_KEYSIZE);
	for (i=0; i<KB_KEYSIZE; i++)
	{
		if(FpKeyBuf[i]){
			mask = 0x01;
			for (j=0; j<8; j++)
			{
				if (FpKeyBuf[i] & mask)
				{
					temp = ((i<<3)+j)+1;
					return temp;			
				}
				mask<<=1;
			}
		}
	}
	return 0;
}
void VFD_state_init()
{
	unsigned char i;
//command 1
	SendCmd(DISPLAYMODE);
//command 2
	SendCmd(WRITE_AUTO_DISPLAY_COMMAND);
	ClearVFDStb();
//command 3
	SendByte(WRITE_VFD_ADDRESS_MASK);
//data 0..size-1
	for (i = 0; i < FP_MAX_BUF; i++)
	{    	
		FpBuf[i] = FpBufBak[i] = 0;
		SendByte(0x00);
	}
	SetVFDStb();
//command 4
	SendCmd(CONTROLDISPLAY);
#if Test_Mode
	for (i = 0; i < FP_MAX_BUF; i++)
			{	
				ClearVFDStb();
				SendByte(WRITE_VFD_ADDRESS_MASK|i);
				FpBuf[i] = FpBufBak[i] = 0xff;
				SendByte(0xff); 
				SetVFDStb();
			}
#else
	vfd_readtoc();
#endif			
	VFD_next_state = VFD_state_scan_key_0;
}
void VFD_state_scan_key_0()
{
#ifdef DISC_TYPE_SHOW_MOMENT
	OsdMsg_t			osd_msg;
	
#endif
	ClearVFDStb();
	FpDateSize = KB_KEYSIZE;
	SendByte(READ_KEY_DATA_COMMAND);
#if KEYNUM_SAME_AS_NUM_PLUS
				if(now_is_plus)
	       {
	         	plus_timer++;
	          if(plus_timer >TIMER_MAX)	
	          {
						 	(*AttachedKeySendCallback)(KEY_NUM0, 0 );	
	     //     		plus_timer = 0;
	          		now_is_plus = 0;
	          		return;
	          }
	       }
	       
#endif
#ifdef DISC_TYPE_SHOW_MOMENT
if(type_timer!=0)
{
		if(gIsGameCD || ( GetDiscType() == VCD_DISC)  || (CD_DA== GetDiscType()))
		{
				type_timer++;
				if(type_timer > 50)
				{
							type_timer = 0;
  						is_show_momnet = FALSE;
    					osd_msg.mode = DSP_FOROSD;
							osd_msg.control = CTRL_OSDOFF_TEST;
							#if VCD_OSD_ENABLE			
												SysSendMsg(&gQ_OSD, &osd_msg, sizeof(OsdMsg_t), SYS_NO_WAIT);
							#endif             		//		CLEAR_STRING(gOsd_str_dyn[5] );
	      }
   }	
}
#endif
	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 Test_Mode
		key_value=index;
  #endif


if(OldIndex!=index)
{
		OldIndex = index;
  	if(index)
  	  {
#if SPI_DEBUG_PRINT
			SysPrintf("\n FpGet Index = 0x%02X",index);
#endif
			key_function_data = FpKeyArray[index];  
#if KEYNUM_SAME_AS_NUM_PLUS
			if(key_function_data == KEY_5PLUS_FP)
			{ 
				now_is_plus = 1;                         
			}else
			{
				now_is_plus = 0;                         
			}	
#endif
#if 0 //SEPERATE_PLAY_PAUSE
		if(key_function_data == KEY_PLAY_PAUSE /*KEY_PLAY*/)
		  {
					if(GetDiscType() == MP3_DISC)
					{
							if( !(Mp3_GetMain()!= MP3_PLAY) || (gMp3Status.trick != MP3_TRICK_OFF) )
					   							  key_function_data = KEY_PAUSE;
					   	else 
					   						   	key_function_data = KEY_PLAY;
					}else
					{
							if((Vcd_GetMainState() == MAIN_PLAY) && ( Vcd_GetSub2State() <= SUB2_TRICK_STEP) )
							    key_function_data = KEY_PAUSE;
					    else 
						      key_function_data = KEY_PLAY;
					}	     
			}
#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
		if(!led_flag)
		{
			if(dot>=1)
					vfd_dot(1,dotoff);
			vfd_dot(0,dot);
    	led_flag=TRUE;
     }
#else
		if(VfdDiscTurnF)
			{
			if(OsdGetStatus() == DSP_PROG)		
				vfd_normal_state();
			vfd_disc_turn(2);												 
			}
#endif
	VFD_next_state = VFD_state_scan_key_0;
}

/***************************************************************************
 *                         VFD MODULE                                                                                     *
 ****************************************************************************/
#if PANEL_FUTNORMAL  
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_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, cd_disp_trk/100);
        	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_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);             	
}
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);
}

#elif PANEL_FUT32  //HTS 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);    	
}

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;
				  vfd_dot(VFD_DOT_ON, VFD_DOT_COLON1);
    			CurrentTime = time;
   				cd_disp_trk = (unsigned char) track;   
    if(MP3_DISC== GetDiscType())

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -