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

📄 mp3_atj2180.c

📁 完全采用C编写的完整MP3解决方案源代码!
💻 C
📖 第 1 页 / 共 5 页
字号:
//record command
static struct 					  	
{
       UCHAR    CMD_RECORD_SET_DATE;
	UCHAR    CMD_RECORD_INITIAL;	
	UCHAR    CMD_RECORD_BASIC_INF;
	UCHAR    CMD_RECORD_PLAY;
	
       UCHAR    CMD_RECORD_PLAY_PAUSE;
	UCHAR    CMD_RECORD_SAVE;
	UCHAR    CMD_RECORD_CANCEL;
	
}const ATJ2180_set_RECORD  =
{
	0x51,
	0x52,
	0x53,
	0x54,
	0x55,
	0x56,
	0x57
};
ATj2180_GPIO GPIO_set;


#define ATJ2180_LENGTH_DTYPE		0x01
#define ATJ2180_LENGTH_CMD		0x01
//#define ATJ2180_LENGTH_DATA		0x05
#define ATJ2180_LENGTH_LEN			0x01
#define ATJ2180_LENGTH_CHECK		0x01

/****************************************************************************************/
/*   Module handler <->	 Module interruption handler interface                          */
/****************************************************************************************/


/*======================================================================================*/
/* Global  VARIABLES																	*/
/*======================================================================================*/
ATj2180_STATE_STRUCT atj2180_current_state;

ATj2180_Current_volume_STRUCT atj2180_current_volume;

ATj2180_Current_loopmode_STRUCT atj2180_current_loopmode;

ATj2180_music_init_STRUCT atj2180_music_init_Inf;

ATj2180_music_Inf_basic_STRUCT  atj2180_music_basic_Inf[5];

ATj2180_music_ID3_STRUCT  atj2180_music_Inf_ID3;

ATj2180_Current_EQ_STRUCT atj2180_current_eq;

ATj2180_Ring_init_inf_STRUCT atj2180_ring_init_inf;

ATj2180_music_Inf_basic_STRUCT  atj2180_ring_Inf[5];

ATj2180_music_init_STRUCT atj2180_voice_init_inf;

ATj2180_Voice_Inf_basic_STRUCT atj2180_voice_basic_Inf[5];

ATj2180_record_Inf_STRUCT atj2180_record_Inf;

ATj2180_record_save_STRUCT  atj2180_record_save;

MP3_ATJ2180_STATE mpi_data_type=0;


static unsigned char atj2180_frame_cmd_old;


static FRAME_DOWNLINK Fr_downlink;
static physical_layer_down_struct databuffer;
static UCHAR acknowledge=0;


/****************************************************************************************/
/*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 deal_state_inf(FRAME_UPLINK  *uplinkdatas2)
{
	memset(&atj2180_current_state, 0, sizeof(atj2180_current_state));

	atj2180_current_state.USB_Cable_status 		=uplinkdatas2->FRAME_DATAS[0];
	atj2180_current_state.Current_state	   		=uplinkdatas2->FRAME_DATAS[1];
	atj2180_current_state.PLAY_Inf_current_ID 		=uplinkdatas2->FRAME_DATAS[2];
	atj2180_current_state.PLAY_Inf_play_time[0] 	=uplinkdatas2->FRAME_DATAS[3];
	atj2180_current_state.PLAY_Inf_play_time[1] 	=uplinkdatas2->FRAME_DATAS[4];
	atj2180_current_state.PLAY_Inf_play_time[2] 	=uplinkdatas2->FRAME_DATAS[5];

}

/****************************************************************************************/
/*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 deal_volume_inf(FRAME_UPLINK  *uplinkdatas2)
{
	memset(&atj2180_current_volume, 0, sizeof(atj2180_current_volume));
	  atj2180_current_volume.Current_volume = uplinkdatas2->FRAME_DATAS[0];
}


/****************************************************************************************/
/*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 deal_circle_mode_inf(FRAME_UPLINK  *uplinkdatas2)
{
	memset(&atj2180_current_loopmode, 0, sizeof(atj2180_current_loopmode));
	  atj2180_current_loopmode.Current_loopmode = uplinkdatas2->FRAME_DATAS[0];
}

/****************************************************************************************/
/*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 deal_music_init_inf(FRAME_UPLINK  *uplinkdatas2)
{
	memset(&atj2180_music_init_Inf, 0, sizeof(atj2180_music_init_Inf));
	atj2180_music_init_Inf.Total_files		=uplinkdatas2->FRAME_DATAS[0];
	atj2180_music_init_Inf.Current_ID		=uplinkdatas2->FRAME_DATAS[1];
	atj2180_music_init_Inf.Breaktime[0]	=uplinkdatas2->FRAME_DATAS[2];
	atj2180_music_init_Inf.Breaktime[1]	=uplinkdatas2->FRAME_DATAS[3];
	atj2180_music_init_Inf.Breaktime[2]	=uplinkdatas2->FRAME_DATAS[4];
}
/****************************************************************************************/
/*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 deal_music_basic_inf(FRAME_UPLINK  *uplinkdatas2)
{


	UCHAR data_len;
	UCHAR count;
	UCHAR file_num;
	UCHAR file_data_len;

	memset(&atj2180_music_basic_Inf, 0, sizeof(atj2180_music_basic_Inf));
	data_len=uplinkdatas2->FRAME_LEN-ATJ2180_LENGTH_DTYPE-ATJ2180_LENGTH_CMD;

	for(count=0, file_num=0; count<data_len && file_num<5; file_num++)
	{
		file_data_len=uplinkdatas2->FRAME_DATAS[count++];
		assert(file_data_len>=0x08);

		atj2180_music_basic_Inf[file_num].File_ID 		= uplinkdatas2->FRAME_DATAS[count++];
		atj2180_music_basic_Inf[file_num].Bit_Rate[0]	= uplinkdatas2->FRAME_DATAS[count++];
		atj2180_music_basic_Inf[file_num].Bit_Rate[1]	= uplinkdatas2->FRAME_DATAS[count++];
		atj2180_music_basic_Inf[file_num].Bit_Rate[3] 	= uplinkdatas2->FRAME_DATAS[count++];
		atj2180_music_basic_Inf[file_num].Play_Time[0] 	= uplinkdatas2->FRAME_DATAS[count++];
		atj2180_music_basic_Inf[file_num].Play_Time[1] 	= uplinkdatas2->FRAME_DATAS[count++];
		atj2180_music_basic_Inf[file_num].Play_Time[2] 	= uplinkdatas2->FRAME_DATAS[count++];
		atj2180_music_basic_Inf[file_num].File_Type 	= uplinkdatas2->FRAME_DATAS[count++];
		atj2180_music_basic_Inf[file_num].File_Name_len= file_data_len -0x08;
		memcpy(atj2180_music_basic_Inf[file_num].File_Name, &(uplinkdatas2->FRAME_DATAS[count]), file_data_len -0x08);
		count += file_data_len -0x08;
	}
	assert(count<=data_len);

}

 /****************************************************************************************/
/*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 deal_music_ID3(FRAME_UPLINK  *uplinkdatas2)
{
	UCHAR data_len;
	UCHAR count=0;

	memset(&atj2180_music_Inf_ID3, 0, sizeof(atj2180_music_Inf_ID3));
	data_len=uplinkdatas2->FRAME_LEN-ATJ2180_LENGTH_DTYPE-ATJ2180_LENGTH_CMD;

	atj2180_music_Inf_ID3.File_ID = uplinkdatas2->FRAME_DATAS[count++];

	//song's title
	atj2180_music_Inf_ID3.Til2_len = uplinkdatas2->FRAME_DATAS[count++];
	memcpy(atj2180_music_Inf_ID3.Til2, &(uplinkdatas2->FRAME_DATAS[count]), atj2180_music_Inf_ID3.Til2_len);
	count += atj2180_music_Inf_ID3.Til2_len;
	if(count>=data_len) return;

	//Song's singer
	atj2180_music_Inf_ID3.Tpe_len = uplinkdatas2->FRAME_DATAS[count];	
	memcpy(atj2180_music_Inf_ID3.Tpe, &(uplinkdatas2->FRAME_DATAS[count]), atj2180_music_Inf_ID3.Tpe_len);
	count += atj2180_music_Inf_ID3.Tpe_len;
	if(count>=data_len) return;

	//Song's sing disk name
	atj2180_music_Inf_ID3.Talb_len = uplinkdatas2->FRAME_DATAS[count];	
	memcpy(atj2180_music_Inf_ID3.Talb, &(uplinkdatas2->FRAME_DATAS[count]), atj2180_music_Inf_ID3.Talb_len);
	count += atj2180_music_Inf_ID3.Talb_len;
	assert(count<=data_len);

}
/****************************************************************************************/
/*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 deal_music_Tune(FRAME_UPLINK  *uplinkdatas2)
{
	memset(&atj2180_current_eq, 0, sizeof(atj2180_current_eq));
	atj2180_current_eq.Current_EQ  = uplinkdatas2->FRAME_DATAS[0];
}

/****************************************************************************************/
/*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 deal_ring_init_inf(FRAME_UPLINK  *uplinkdatas2)
{
	memset(&atj2180_ring_init_inf, 0, sizeof(atj2180_ring_init_inf));
	atj2180_ring_init_inf.Totalfiles   = uplinkdatas2->FRAME_DATAS[0];
	atj2180_ring_init_inf.CallingID   = uplinkdatas2->FRAME_DATAS[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 void deal_ring_basic_inf(FRAME_UPLINK  *uplinkdatas2)
{


	UCHAR data_len;
	UCHAR count;
	UCHAR file_num;
	UCHAR file_data_len;

	memset(&atj2180_ring_Inf, 0, sizeof(atj2180_ring_Inf));
	data_len=uplinkdatas2->FRAME_LEN-ATJ2180_LENGTH_DTYPE-ATJ2180_LENGTH_CMD;

	for(count=0, file_num=0; count<data_len && file_num<5; file_num++)
	{
		file_data_len=uplinkdatas2->FRAME_DATAS[count++];
		assert(file_data_len>=0x08);

		atj2180_ring_Inf[file_num].File_ID 			= uplinkdatas2->FRAME_DATAS[count++];
		atj2180_ring_Inf[file_num].Bit_Rate[0]		= uplinkdatas2->FRAME_DATAS[count++];
		atj2180_ring_Inf[file_num].Bit_Rate[1]		= uplinkdatas2->FRAME_DATAS[count++];
		atj2180_ring_Inf[file_num].Bit_Rate[3] 		= uplinkdatas2->FRAME_DATAS[count++];
		atj2180_ring_Inf[file_num].Play_Time[0] 	= uplinkdatas2->FRAME_DATAS[count++];
		atj2180_ring_Inf[file_num].Play_Time[1] 	= uplinkdatas2->FRAME_DATAS[count++];
		atj2180_ring_Inf[file_num].Play_Time[2] 	= uplinkdatas2->FRAME_DATAS[count++];
		atj2180_ring_Inf[file_num].File_Type 		= uplinkdatas2->FRAME_DATAS[count++];
		atj2180_ring_Inf[file_num].File_Name_len	= file_data_len -0x08;
		memcpy(atj2180_ring_Inf[file_num].File_Name, &(uplinkdatas2->FRAME_DATAS[count]), file_data_len -0x08);
		count += file_data_len -0x08;
	}
	assert(count<=data_len);
}

⌨️ 快捷键说明

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