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

📄 dt_validator.c

📁 最新MTK手机软件源码
💻 C
📖 第 1 页 / 共 2 页
字号:
/* under construction !*/
#endif	      
         	default :
         	{
            		/* unrecognized format of AT command line */
            		break;
         	}
    	}/* end of the switch */

    dt_final_rsp_generator(source_string_ptr->src_id, ret_val, NULL, 0);
}



void dt_download_hdlr(dt_string_struct *source_string_ptr, kal_uint16 action)
{
    kal_bool         ret_val = KAL_FALSE;
    kal_uint8 		op,type =0;
    kal_uint8	   	*img_file_name = NULL;//using for get ascii code frm PC
    kal_uint8		*file_name= NULL;/* save ucs2 format for UEM*/

    //kal_uint8	   tempdata[DT_UPLOAD_SIZE*2+1];
    //kal_uint8 	   img_data[DT_UPLOAD_SIZE];
    kal_uint8    *tempdata = NULL;
    kal_uint8	   *img_data= NULL;
    
    kal_uint8 const  *rsp_str = NULL; /*response string and initialization */
    kal_uint16 string_length=0; /* string length variable */
    kal_uint8 result;
    kal_uint16 data_len = 0;
    kal_uint8 eof_flag;
    kal_uint8 error_cause;
    
	switch (source_string_ptr->cmd_mode)
    	{
//    	#ifdef __test_mode__
		/* checking the command mode */
	      case DT_TEST_MODE :/* at+eimg=? or at+emdy=? */
	      {
	      		if (action == DT_EIMG)
			        rsp_str=(kal_uint8 const *)"+EIMG: (0-7)"; /*prepare the response string */
	      		else
			        rsp_str=(kal_uint8 const *)"+EMDY: (0-7)"; /*prepare the response string */
	        	string_length = strlen ((char *)rsp_str); /* type casting */
	        	ret_val = KAL_TRUE;
	        	break;
	      }
//	#endif /*__test_mode__*/
	      case DT_SET_OR_EXECUTE_MODE : /* at+eimg = */
      	  	{
			DT_PTR->cmee_err = DT_ERR_SYNTEX_ERROR; //default error cause
			
               	/* Get <op> */
		       op = (kal_uint8)dt_int_validator(
		                        source_string_ptr,
		                        (kal_uint8)DT_COMMA
		                       );
	              if(op >7)
	              	break;

			  /* parse following syntax field */
       	       switch(op)
              	{
				case 0://open file
				case 3: //read file
				case 4: //delete file
				case 5: //play file
				case 6: //stop playing file
			   	{
				    	img_file_name = get_ctrl_buffer(DT_MAX_IMAGE_FILE_NAME * 2);
				    	file_name = get_ctrl_buffer(DT_MAX_IMAGE_FILE_NAME);
				    	kal_mem_set(file_name, 0 , DT_MAX_IMAGE_FILE_NAME);
					result = dt_string_validator_ext(
											&error_cause,
			       		                			source_string_ptr,
			                     		   			(kal_uint8)DT_COMMA,
											DT_MAX_IMAGE_FILE_NAME*2, 
											(kal_uint8 *)img_file_name);
					
					if(result != DT_VALIDATOR_ERROR)
					{
						dt_check_hex_value(img_file_name, (kal_uint8 *)file_name);
						free_ctrl_buffer(img_file_name);
						img_file_name = NULL;
					}
					else
					{
						free_ctrl_buffer(img_file_name);
						img_file_name = NULL;
						break;
					}

					type = (kal_uint8)dt_int_validator_ext(
												&error_cause,
				                        					source_string_ptr,
				       					              (kal_uint8)DT_PTR->s_reg.s3);				                       					
								
					if(type==DT_VALIDATOR_ERROR)
					{
							break;
					}				
				    	else
				    	{
	      					if (action == DT_EIMG)
	      					{
							if(type !=0) break;
	      					}
						else
						{
							if(type > 1) break; //+EMDY has 2 type: mid and imy
						}
				    	}
					    	
					ret_val=KAL_TRUE;
					break;
				}
				case 2: //write(download)
			     	{
    					//kal_mem_set(img_data, 0 , DT_UPLOAD_SIZE);
		        		data_len = (kal_uint16)dt_int_validator(
						                        source_string_ptr,
						                        (kal_uint8)DT_COMMA
						                       );
		        		if(data_len>DT_UPLOAD_SIZE) break;

		        		eof_flag = (kal_uint8)dt_int_validator(
						                        source_string_ptr,
						                        (kal_uint8)DT_COMMA
						                       );
	      				if(eof_flag>1) break;

					ASSERT((kal_uint16)(DT_UPLOAD_SIZE*2+1)<2048);

					tempdata = get_ctrl_buffer(DT_UPLOAD_SIZE*2+1);
					img_data = get_ctrl_buffer(DT_UPLOAD_SIZE); 			
					kal_mem_set(img_data, 0 , DT_UPLOAD_SIZE);

					result = dt_string_validator(
					                        			source_string_ptr,
					                        			(kal_uint8)DT_PTR->s_reg.s3,  /* separator */
											(kal_uint16)(data_len*2+1), 
											(kal_uint8 *)tempdata);
					if(result == DT_VALIDATOR_ERROR)
					{

						if(tempdata!=NULL)	
							free_ctrl_buffer(tempdata);
						if(img_data!=NULL)	
							free_ctrl_buffer(img_data); 
 
						break;
					}
					dt_check_hex_value(tempdata, (kal_uint8 *)img_data);
								
					ret_val=KAL_TRUE;
		                	break;
				}
				case 7: //list files in specified folder
				{
					type = (kal_uint8)dt_int_validator_ext(
											&error_cause,
                       								 source_string_ptr,
							                        (kal_uint8)DT_PTR->s_reg.s3
                       								);								
					if(type==DT_VALIDATOR_ERROR)
					{
							break;
					}				
				    	else
				    	{
	      					if (action == DT_EIMG)
	      					{
							if(type !=0) break;
	      					}
						else
						{
							if(type > 1) break;
						}
				    	}

					ret_val=KAL_TRUE;
				    	break;
				}
				default:
					ret_val= KAL_TRUE;
              	}

			if(ret_val==KAL_TRUE) //no parse Error
			{
	      			if ((action == DT_EIMG) && (type == 0))
					type = DT_IMAGE;
	      			//if action == DT_EMDY , type : 0 and 1
                		switch(op)
                		{
							case 0://open middy filey
							{
						
//#ifdef FMT_NOT_PRESENT 								
//								ret_val = l4c_eq_fs_access_req(source_string_ptr->src_id, 
//												RMMI_FS_OPEN, type,(kal_wchar *)file_name,NULL,0);
//#else
								ret_val = dt_eq_general_fs_access_req(DT_FS_OPEN, (dt_app_type_enum)type,(kal_wchar *)file_name,NULL,0);
//#endif
								break;
							}
							case 1://close middy
							{
//#ifdef FMT_NOT_PRESENT 								
//								ret_val = l4c_eq_fs_access_req(source_string_ptr->src_id, RMMI_FS_CLOSE, type , NULL, NULL, 0);
//#else
								ret_val = dt_eq_general_fs_access_req(DT_FS_CLOSE, (dt_app_type_enum)type , NULL, NULL, 0);
//#endif
								if(ret_val == KAL_TRUE)
								{
									dt_send_l4c_upload_cnf(DT_NO_ERR);	
									dt_reset_state();
									return;
								}
								else
								{
									dt_send_l4c_upload_cnf(DT_PTR->cmee_err);						
									dt_reset_state();
									return;
								}
//								if (ret_val ==KAL_TRUE) return;
//									else break;
							}
						       case 2://download / write
						   	{
//#ifdef FMT_NOT_PRESENT 								
//						    		ret_val = l4c_eq_fs_access_req(source_string_ptr->src_id, 
//						    						RMMI_FS_WRITE,type,NULL,(kal_uint8 *)img_data,data_len);
//#else
						    		ret_val = dt_eq_general_fs_access_req(DT_FS_WRITE,(dt_app_type_enum)type,NULL,(kal_uint8 *)img_data,data_len);
//#endif

								if(tempdata!=NULL)	
									free_ctrl_buffer(tempdata);
								if(img_data!=NULL)	
									free_ctrl_buffer(img_data); 


								if(ret_val == KAL_FALSE)
								{
									dt_send_l4c_upload_cnf(DT_PTR->cmee_err);						
									dt_reset_state();
									return;
								}
								
								break;
						   	}
						   	case 3://retrive			
						   	{

//#ifdef FMT_NOT_PRESENT 								
//						    		ret_val = l4c_eq_fs_access_req(source_string_ptr->src_id, RMMI_FS_READ, type, (kal_wchar *)file_name, NULL,0);
//#else
						    		ret_val = dt_eq_general_fs_access_req(DT_FS_READ, (dt_app_type_enum)type, (kal_wchar *)file_name, NULL,0);
//#endif
								if (file_name!= NULL)
									free_ctrl_buffer(file_name);
								return; 
						   	}
						   	case 4://delete
						   	{
//#ifdef FMT_NOT_PRESENT 							
//						    		ret_val = l4c_eq_fs_access_req(source_string_ptr->src_id, RMMI_FS_DELETE, type ,(kal_wchar *)file_name, NULL,0);
//#else
						    		ret_val = dt_eq_general_fs_access_req(DT_FS_DELETE, (dt_app_type_enum)type ,(kal_wchar *)file_name, NULL,0);
//#endif
								if (ret_val ==KAL_TRUE)
								{
									if (file_name!= NULL)
										free_ctrl_buffer(file_name);
									return;
								}
								else break;
						   	}
							case 5://show
							{
//#ifdef FMT_NOT_PRESENT 
//NO File manager -> inform MMI DOWNLOAD folder to play
//								if (action == DT_EIMG)
//					 				//mmi_ind_ft[FS_FILE_EXECUTE_IND][LMMI_SRC](L4C_IMAGE_STD, (kal_uint8*)file_name, L4C_FILE_EXECUTE_PLAY);
//					 				l4c_eq_data_dl_execute_req_lind(L4C_IMAGE_STD, (kal_uint8*)file_name, L4C_FILE_EXECUTE_PLAY);        	
//				   				else if(type==0)
//					 				//mmi_ind_ft[FS_FILE_EXECUTE_IND][LMMI_SRC](L4C_AUDIO_IMELODY, (kal_uint8*)file_name, L4C_FILE_EXECUTE_PLAY);    
//					 				l4c_eq_data_dl_execute_req_lind(L4C_AUDIO_IMELODY, (kal_uint8*)file_name, L4C_FILE_EXECUTE_PLAY);        	
//		   						else
//				 					//mmi_ind_ft[FS_FILE_EXECUTE_IND][LMMI_SRC](L4C_AUDIO_OTHER, (kal_uint8*)file_name, L4C_FILE_EXECUTE_PLAY);
//				 					l4c_eq_data_dl_execute_req_lind(L4C_AUDIO_OTHER, (kal_uint8*)file_name, L4C_FILE_EXECUTE_PLAY);      	
//
//								if (file_name!= NULL)
//									free_ctrl_buffer(file_name);
//								return;
//#else			
								ret_val = KAL_FALSE;
								DT_PTR->cmee_err = DT_ERR_OPERATION_NOT_SUPPORTED;
								break;
//#endif		
							}
							case 6://stop showing
							{
//#ifdef FMT_NOT_PRESENT 
//NO File manager -> inform MMI DOWNLOAD folder to stop
//								if (action == DT_EIMG)
//				 					//mmi_ind_ft[FS_FILE_EXECUTE_IND][LMMI_SRC](L4C_IMAGE_STD, (kal_uint8*)file_name, L4C_FILE_EXECUTE_STOP);        	
//				 					l4c_eq_data_dl_execute_req_lind(L4C_IMAGE_STD, (kal_uint8*)file_name, L4C_FILE_EXECUTE_STOP);
//				   				if(type==0)
//						 			//mmi_ind_ft[FS_FILE_EXECUTE_IND][LMMI_SRC](L4C_AUDIO_IMELODY, (kal_uint8*)file_name, L4C_FILE_EXECUTE_STOP);        	
//						 			l4c_eq_data_dl_execute_req_lind(L4C_AUDIO_IMELODY, (kal_uint8*)file_name, L4C_FILE_EXECUTE_STOP);
//				   				else
//						 			//mmi_ind_ft[FS_FILE_EXECUTE_IND][LMMI_SRC](L4C_AUDIO_OTHER, (kal_uint8*)file_name, L4C_FILE_EXECUTE_STOP);        	
//						 			l4c_eq_data_dl_execute_req_lind(L4C_AUDIO_OTHER, (kal_uint8*)file_name, L4C_FILE_EXECUTE_STOP);
//
//								if (file_name!= NULL)
//									free_ctrl_buffer(file_name);
//								return;
//#else			
								ret_val = KAL_FALSE;
								DT_PTR->cmee_err = DT_ERR_OPERATION_NOT_SUPPORTED;
								break;
//#endif								
							}
					case 7://dir
							{
//#ifdef FMT_NOT_PRESENT 
//						    		ret_val = l4c_eq_fs_access_req(source_string_ptr->src_id, RMMI_FS_DIR, type ,NULL, NULL, 0);
//#else
						    		ret_val = dt_eq_general_fs_access_req(DT_FS_DIR, (dt_app_type_enum)type ,NULL, NULL, 0);
								if(ret_val == KAL_FALSE)
									break;
//#endif
								return;
							}
                			}
				 }
             			break;
	      	}
          	default : //unrcognized command mode
          	{
	            	/* unrecognized format of AT command line */
	        	break;
          	}
    }/* end of the switch */

    if (file_name!= NULL)
	free_ctrl_buffer(file_name);

    dt_final_rsp_generator(source_string_ptr->src_id, ret_val, (kal_uint8 *)rsp_str, string_length);
    return;

}


/*****************************************************************************
* FUNCTION
*  dt_emdy_hdlr
*
* DESCRIPTION
*   This is rmmi function handler for PC tool to download melody data to and 
*   from file system.
*   mtk00468 add on 09/09
*
* PARAMETERS
*  source_string_ptr		IN		at cmd string
*
* RETURNS
*  none.
*
* GLOBALS AFFECTED
*  none.
*****************************************************************************/
void dt_emdy_hdlr (dt_string_struct *source_string_ptr)
{
	dt_download_hdlr(source_string_ptr, DT_EMDY);
    	return;
}

/*****************************************************************************
* FUNCTION
*  dt_eimg_hdlr
*
* DESCRIPTION
*   This is rmmi function handler for PC tool to download image data to and 
*   from file system.
*   mtk00468 add on 09/09
*
* PARAMETERS
*  source_string_ptr		IN		at cmd string
*
* RETURNS
*  none.
*
* GLOBALS AFFECTED
*  none.
*****************************************************************************/
void dt_eimg_hdlr (dt_string_struct *source_string_ptr)
{
	dt_download_hdlr(source_string_ptr, DT_EIMG);
    	return;
}

#endif /*DATA_DOWNLOAD*/

⌨️ 快捷键说明

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