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

📄 mp3_atj2180.c

📁 完全采用C编写的完整MP3解决方案源代码!
💻 C
📖 第 1 页 / 共 5 页
字号:

	return(1);
}



/****************************************************************************************/
/*Project name  : Ginwave mp3 development                                           */
/*Process name  : Mp3 API		    	                                            	*/
/*Function name : Mp3 Stop				 			                    	        */
/*Outline	    :			*/
/*Function      : Upon completion, the mp3 stop      */
/*Returned value: nil                                                                   */
/*Argument      : nil					                                                */
/*Input-output  : nil                                                                   */
/*Version     : v00.00 2004/12/8 1st edition by Terry.yuan                               */
/*   Copyright (C) 2004 Development Division of Ginwave company Ltd.                        */
/****************************************************************************************/
static UCHAR ATj2180_analyze_link_protocol (FRAME_UPLINK  *uplinkdatas)
{
	UCHAR command_result;

	//printf("MP3 analyze %x\n",uplinkdatas->FRAME_Dtype);
	switch( uplinkdatas->FRAME_Dtype)
	{
		case ATJ2180_IDLE:
			command_result=ATj2180_analyze_idle(uplinkdatas);
			break;
		case ATJ2180_DATA:
			ATj2180_analyze_datas(uplinkdatas);
			command_result=ATJ2180_DATA;
			break;			
		case ATJ2180_ERROR:
		 	command_result = ATj2180_analyze_error(uplinkdatas);
			break;			
		case ATJ2180_BUSY:
			command_result=ATj2180_analyze_busy(uplinkdatas);
			break;			
		default:
			command_result= ATJ2180_ERR_UNKNOW;
			//assert(0);
			break;
	}

	return(command_result);
}


/****************************************************************************************/
/*Project name  : Ginwave mp3 development                                           */
/*Process name  : Mp3 API		    	                                            	*/
/*Function name : Mp3 GPIO set /read /clear				 			                    	        */
/*Outline	    : 			*/
/*Function      : Upon completion, the mp3 set /read /clear      */
/*Returned value: nil                                                                   */
/*Argument      : nil					                                                */
/*Input-output  : nil                                                                   */
/*Version     : v00.00 2004/12/8 1st edition by Terry.yuan                               */
/*   Copyright (C) 2004 Development Division of Ginwave company Ltd.                        */
/****************************************************************************************/
UCHAR Get_link_datas_Dtype(void)
{

	UCHAR Data_type;
	static UCHAR			get_upbuffer[MP3_UPDATE_DATA_LENGH];
	static FRAME_UPLINK	get_uplinkdatas;
	UCHAR success = 1;

	success = Make_upFRAME(ATJ2180_ID,get_upbuffer) ;
	if(success)
	{
		ATj2180_analyze_physical_protocol (get_upbuffer,&get_uplinkdatas);	
		mpi_data_type=ATj2180_analyze_link_protocol(&get_uplinkdatas);
	}

	return success;
}


/****************************************************************************************/
/*Project name  : Ginwave mp3 development                                           */
/*Process name  : Mp3 API		    	                                            	*/
/*Function name : Mp3 Stop				 			                    	        */
/*Outline	    : 			*/
/*Function      : Upon completion, the mp3 stop      */
/*Returned value: nil                                                                   */
/*Argument      : nil					                                                */
/*Input-output  : nil                                                                   */
/*Version     : v00.00 2004/12/8 1st edition by Terry.yuan                               */
/*   Copyright (C) 2004 Development Division of Ginwave company Ltd.                        */
/****************************************************************************************/
static UCHAR ATj2180_get_TXD_check( FRAME_DOWNLINK *atj2180_frame)
{
	UCHAR    count;
	UCHAR    check;
	UCHAR    data_len;

	data_len    = atj2180_frame->FRAME_LEN-1;

	//XOR 
	check        = atj2180_frame->FRAME_LEN;
	check        =  check^atj2180_frame->FRAME_CMD;

	for(count=0;count<data_len;count++)
	{
		check = check^atj2180_frame->FRAME_DATAS[count];
	}

	return(check);
}


/****************************************************************************************/
/*Project name  : Ginwave mp3 development                                           */
/*Process name  : Mp3 API		    	                                            	*/
/*Function name : Mp3 Stop				 			                    	        */
/*Outline	    :			*/
/*Function      : Upon completion, the mp3 stop      */
/*Returned value: nil                                                                   */
/*Argument      : nil					                                                */
/*Input-output  : nil                                                                   */
/*Version     : v00.00 2004/12/8 1st edition by Terry.yuan                               */
/*   Copyright (C) 2004 Development Division of Ginwave company Ltd.                        */
/****************************************************************************************/
static void Make_buffer_downdata(FRAME_DOWNLINK* frame_downlink,physical_layer_down_struct *sendbuffer)
{

	UCHAR   count;
	UCHAR   buffer_count=0;

	sendbuffer->physical_datas[buffer_count++] =frame_downlink->FRAME_LEN;
	sendbuffer->physical_datas[buffer_count++] =frame_downlink->FRAME_CMD;
	for(count=0;count<(frame_downlink->FRAME_LEN-1);count++)
		sendbuffer->physical_datas[buffer_count++] =frame_downlink->FRAME_DATAS[count];

	sendbuffer->physical_datas[buffer_count++] =frame_downlink->FRAME_CHECK;
	
	sendbuffer->physical_len =buffer_count;


}


/****************************************************************************************/
/*Project name  : Ginwave mp3 development                                           */
/*Process name  : Mp3 API		    	                                            	*/
/*Function name : Mp3 Stop				 			                    	        */
/*Outline	    :			*/
/*Function      : Upon completion, the mp3 stop      */
/*Returned value: nil                                                                   */
/*Argument      : nil					                                                */
/*Input-output  : nil                                                                   */
/*Version     : v00.00 2004/12/8 1st edition by Terry.yuan                               */
/*   Copyright (C) 2004 Development Division of Ginwave company Ltd.                        */
/****************************************************************************************/
static UCHAR Send_downFRAME(UCHAR Device_ID ,UCHAR data_length,UCHAR * buffer_downdata )
{
	UCHAR acknowledge;
	int i;

	acknowledge=MP3_IIC_Writeframe(Device_ID,data_length,buffer_downdata);

	printf("MP3 W %x", acknowledge);
	assert(data_length>1);
	for(i=1; i<data_length-1; i++)
		printf(" %x",*(buffer_downdata+i));
	printf("\n");
	//assert(acknowledge==1);	
	return(acknowledge == IIC_FRAMEOK);
}




/****************************************************************************************/
/*Project name  : Ginwave mp3 development                                           */
/*Process name  : Mp3 API		    	                                            	*/
/*Function name : Mp3 Stop				 			                    	        */
/*Outline	    :			*/
/*Function      : Upon completion, the mp3 stop      */
/*Returned value: nil                                                                   */
/*Argument      : nil					                                                */
/*Input-output  : nil                                                                   */
/*Version     : v00.00 2004/12/8 1st edition by Terry.yuan                               */
/*   Copyright (C) 2004 Development Division of Ginwave company Ltd.                        */
/****************************************************************************************/
UCHAR   ATj2180_Mode_enter(UCHAR mode_ID)
{
	memset(&Fr_downlink, 0, sizeof(Fr_downlink));
	memset(&databuffer, 0, sizeof(databuffer));
	acknowledge = 0;
//make link frame
	Fr_downlink.FRAME_LEN =0x02;
	Fr_downlink.FRAME_CMD =atj2180_mode[mode_ID].CMD_ENTER_MODE;
	atj2180_frame_cmd_old = Fr_downlink.FRAME_CMD;
	Fr_downlink.FRAME_DATAS[0]	=atj2180_mode[mode_ID].DATA_MODE;

	Fr_downlink.FRAME_CHECK=ATj2180_get_TXD_check(&Fr_downlink);

	//make physical frame
	Make_buffer_downdata(&Fr_downlink,&databuffer);
	//send datas to ATJ2180
	acknowledge=Send_downFRAME(ATJ2180_ID,databuffer.physical_len,databuffer.physical_datas);

	return(acknowledge);
}



/****************************************************************************************/
/*Project name  : Ginwave mp3 development                                           */
/*Process name  : Mp3 API		    	                                            	*/
/*Function name : Mp3 Stop				 			                    	        */
/*Outline	    :			*/
/*Function      : Upon completion, the mp3 stop      */
/*Returned value: nil                                                                   */
/*Argument      : nil					                                                */
/*Input-output  : nil                                                                   */
/*Version     : v00.00 2004/12/8 1st edition by Terry.yuan                               */
/*   Copyright (C) 2004 Development Division of Ginwave company Ltd.                        */
/****************************************************************************************/
UCHAR   ATj2180_Mode_quit(UCHAR mode_ID)
{
	memset(&Fr_downlink, 0, sizeof(Fr_downlink));
	memset(&databuffer, 0, sizeof(databuffer));
	acknowledge = 0;
	//make link frame
	Fr_downlink.FRAME_LEN 		=0x02;
	Fr_downlink.FRAME_CMD 		=atj2180_mode[mode_ID].CMD_QUIT_MODE;
	atj2180_frame_cmd_old = Fr_downlink.FRAME_CMD;
	Fr_downlink.FRAME_DATAS[0]	=atj2180_mode[mode_ID].DATA_MODE;

	Fr_downlink.FRAME_CHECK=ATj2180_get_TXD_check(&Fr_downlink);

	//make physical frame
	Make_buffer_downdata(&Fr_downlink,&databuffer);
	//send datas to ATJ2180
	acknowledge=Send_downFRAME(ATJ2180_ID,databuffer.physical_len,databuffer.physical_datas);

	return(acknowledge);
}

/****************************************************************************************/
/*Project name  : Ginwave mp3 development                                           */
/*Process name  : Mp3 API		    	                                            	*/
/*Function name : Mp3 Set_volume				 			                    	        */
/*Outline	    : 			*/
/*Function      : Upon completion, the mp3 Set_volume      */
/*Returned value: nil                                                                   */
/*Argument      : nil					                                                */
/*Input-output  : nil                                                                   */
/*Version     : v00.00 2004/12/8 1st edition by Terry.yuan                               */
/*   Copyright (C) 2004 Development Division of Ginwave company Ltd.                        */
/****************************************************************************************/
UCHAR ATj2180_Set_volume(UCHAR volume)
{

	memset(&Fr_downlink, 0, sizeof(Fr_downlink));
	memset(&databuffer, 0, sizeof(databuffer));
	acknowledge = 0;
	Fr_downlink.FRAME_LEN =0x02;
	Fr_downlink.FRAME_CMD =0x04;
	atj2180_frame_cmd_old = Fr_downlink.FRAME_CMD;

	if(volume>=atj2180_vol.DATA_MAX_VALUME)
	{
		Fr_downlink.FRAME_DATAS[0]=	atj2180_vol.DATA_MAX_VALUME;
	}
	else if(volume<=atj2180_vol.DATA_MIN_VALUME)
	{
		Fr_downlink.FRAME_DATAS[0]=	atj2180_vol.DATA_MIN_VALUME;
	}
	else 
	{
		Fr_downlink.FRAME_DATAS[0]=volume;
	}
			
	Fr_downlink.FRAME_CHECK=ATj2180_get_TXD_check(&Fr_downlink);

	//make physical frame
	Make_buffer_downdata(&Fr_downlink,&databuffer);

	//send datas to ATJ2180
	acknowledge=Send_downFRAME(ATJ2180_ID,databuffer.physical_len,databuffer.physical_datas);

	return(acknowledge);


}


/****************************************************************************************/
/*Project name  : Ginwave mp3 development                                           */
/*Process name  : Mp3 API		    	                                            	*/
/*Function name : Mp3 Set_Circle_mode				 			                    	        */
/*Outline	    : 			*/
/*Function      : Upon completion, the mp3 Set_Circle_mode      */
/*Returned value: nil                                                                   */
/*Argument      : nil					                                                */
/*Input-output  : nil                                                                   */
/*Version     : v00.00 2004/12/8 1st edition by Terry.yuan                               */
/*   Copyright (C) 2004 Development Division of Ginwave company Ltd.                        */
/****************************************************************************************/
UCHAR ATj2180_Set_Circle_mode(UCHAR circle_mode)
{

	memset(&Fr_downlink, 0, sizeof(Fr_downlink));
	memset(&databuffer, 0, sizeof(databuffer));
	acknowledge = 0;

	Fr_downlink.FRAME_LEN =0x02;
	Fr_downlink.FRAME_CMD =0x05;
	atj2180_frame_cmd_old = Fr_downlink.FRAME_CMD;

	if(circle_mode>=atj2180_playmode.DATA_MAX)
	{
		Fr_downlink.FRAME_DATAS[0]=	atj2180_playmode.DATA_MAX;
	}
	else if(circle_mode<=atj2180_playmode.DATA_MIN)
	{
		Fr_downlink.FRAME_DATAS[0]=	atj2180_playmode.DATA_MIN;
	}
	else 
	{

⌨️ 快捷键说明

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