📄 dt_validator.c
字号:
/* 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 + -