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

📄 mmi_atc.c

📁 嵌入式展讯mmi层kernel的c 源代码
💻 C
📖 第 1 页 / 共 4 页
字号:
        }
    }
    else if(0 == strcmp((char *)dir_str, PICTURE_DIRECTORY))
    {
        //the file is in multim
        if(MMIMULTIM_syncAddPicture(file_name))
        {
            //return "ok\r\n" to sync tool;
            ReturnResponse((uint8 *)MMI_TO_SYNC_OK_SYMBOL, strlen((char*)MMI_TO_SYNC_OK_SYMBOL));
        }
        else
        {
            ReturnResponse((uint8 *)MMI_TO_SYNC_ERROR_SYMBOL, strlen((char*)MMI_TO_SYNC_ERROR_SYMBOL));
        }
    }
    else
    {
        return FALSE;
    }
    
    return TRUE;
}

/*****************************************************************************/
// 	Description : This function handle the picture delete command
//	Global resource dependence : none
//  Author:      lin.lin
//	Note:
/*****************************************************************************/
LOCAL BOOLEAN HandlePicDelete(	
                                uint8 *cmd,  // Point to the command infomation buffer
					            uint32 len   // The length of command infomation buffer
                                )
{
    uint8 file_name[MMI_SYNC_FULLFILENAME_MAX_LEN + 1] = {0};
    uint8 dir_str[MMI_SYNC_DIR_MAX_LEN+1] = {0};

    SCI_TRACE_LOW("mmi_atc.c: HandlePicDelete(), cmd = %s, len = %d", cmd, len);

    if(!GetString(file_name, MMI_SYNC_FULLFILENAME_MAX_LEN, cmd, len, MMI_SYNC_FILENAME_SYMBOL))
    {
        return FALSE;
    }

    if(!GetString(dir_str, MMI_SYNC_DIR_MAX_LEN, cmd, len, DIRECTORY_SYMBOL))
    {
        return FALSE;
    }
    
    SCI_TRACE_LOW("mmi_atc.c: HandlePicDelete(), file_name = %s, dir = %d", file_name, dir_str);

    if(0 == strcmp((char *)dir_str, PHOTO_DIRECTORY))
    {
        if(MMIDC_SyncDelete(file_name))
        {
            //return "ok\r\n" to sync tool;
            ReturnResponse((uint8 *)MMI_TO_SYNC_OK_SYMBOL, strlen((char*)MMI_TO_SYNC_OK_SYMBOL));
        }
        else
        {
            ReturnResponse((uint8 *)MMI_TO_SYNC_ERROR_SYMBOL, strlen((char*)MMI_TO_SYNC_ERROR_SYMBOL));
        }
    }
    else if(0 == strcmp((char *)dir_str, PICTURE_DIRECTORY))
    {
        //the file is in multim        
        if(MMIMULTIM_SyncDeletePicture(file_name))
        {
            //return "ok\r\n" to sync tool;
            ReturnResponse((uint8 *)MMI_TO_SYNC_OK_SYMBOL, strlen((char*)MMI_TO_SYNC_OK_SYMBOL));
        }
        else
        {
            ReturnResponse((uint8 *)MMI_TO_SYNC_ERROR_SYMBOL, strlen((char*)MMI_TO_SYNC_ERROR_SYMBOL));
        }
    }
    else
    {
        return FALSE;
    }
    
    return TRUE;    
}

/*****************************************************************************/
// 	Description : This function handle the picture modify command
//	Global resource dependence : none
//  Author:      lin.lin
//	Note:
/*****************************************************************************/
LOCAL BOOLEAN HandlePicModify(	
                                uint8 *cmd,  // Point to the command infomation buffer
					            uint32 len   // The length of command infomation buffer
                                )
{
    uint8 old_file_name[MMI_SYNC_FULLFILENAME_MAX_LEN + 1] = {0};
    uint8 new_file_name[MMI_SYNC_FULLFILENAME_MAX_LEN + 1] = {0};
    uint8 dir_str[MMI_SYNC_DIR_MAX_LEN+1] = {0};
	uint32 i = 0;

    if(!GetString(old_file_name, MMI_SYNC_FULLFILENAME_MAX_LEN, cmd, len, MMI_SYNC_FILENAME_SYMBOL))
    {
        SCI_TRACE_LOW("mmi_atc.c: HandlePicModify, get old file name failed");
        return FALSE;
    }

    if(!GetString(dir_str, MMI_SYNC_DIR_MAX_LEN, cmd, len, DIRECTORY_SYMBOL))
    {
        SCI_TRACE_LOW("mmi_atc.c: HandlePicModify, get dir string failed");
        return FALSE;
    }
    
    cmd += strlen((char *)old_file_name) +1;
    len -= strlen((char *)old_file_name) +1;

    if(!GetString(new_file_name, MMI_SYNC_FULLFILENAME_MAX_LEN, cmd, len, MMI_SYNC_FILENAME_SYMBOL))
    {
        SCI_TRACE_LOW("mmi_atc.c: HandlePicModify, get new file name failed");
        return FALSE;
    }

    SCI_TRACE_LOW("mmi_atc.c: HandlePicModify(), old file name = %s, new file name = %s", old_file_name, new_file_name);    

    if(0 == strcmp((char *)dir_str, PHOTO_DIRECTORY))
    {
        if(MMIDC_SyncRename(old_file_name, new_file_name))
        {
            //return "ok\r\n" to sync tool;
            ReturnResponse((uint8 *)MMI_TO_SYNC_OK_SYMBOL, strlen((char*)MMI_TO_SYNC_OK_SYMBOL));
        }
        else
        {
            ReturnResponse((uint8 *)MMI_TO_SYNC_ERROR_SYMBOL, strlen((char*)MMI_TO_SYNC_ERROR_SYMBOL));
        }
    }
    else if(0 == strcmp((char *)dir_str, PICTURE_DIRECTORY))
    {
        //the file is in multim
        if(MMIMULTIM_SyncRenamePicture(old_file_name, new_file_name))
        {
            //return "ok\r\n" to sync tool;
            ReturnResponse((uint8 *)MMI_TO_SYNC_OK_SYMBOL, strlen((char*)MMI_TO_SYNC_OK_SYMBOL));
        }
        else
        {
            ReturnResponse((uint8 *)MMI_TO_SYNC_ERROR_SYMBOL, strlen((char*)MMI_TO_SYNC_ERROR_SYMBOL));
        }
    }
    else
    {
        return FALSE;
    }
    
    return TRUE;
}

/*****************************************************************************/
// 	Description : This function handle the alarm sync command
//	Global resource dependence : none
//  Author:      lin.lin
//	Note:
/*****************************************************************************/
LOCAL BOOLEAN HandleAlarmSync(	
                                uint8 *cmd,  // Point to the command infomation buffer
					            uint32 len   // The length of command infomation buffer
                                )
{
    //SCI_ASSERT(PNULL != cmd);

    SCI_TRACE_LOW("mmi_atc.c: HandleAlarmSync()");

    MMIALM_FindLatestEventToSet(TRUE);
    SCI_TRACE_LOW("ReturnResponse  pointer is %x len is %x \n",(uint8 *)MMI_TO_SYNC_OK_SYMBOL,strlen((char*)MMI_TO_SYNC_OK_SYMBOL));

    SCI_TRACE_LOW("ReturnResponse  pointer is %x len is %x \n",(uint8 *)MMI_TO_SYNC_OK_SYMBOL,strlen((char*)MMI_TO_SYNC_OK_SYMBOL));
    ReturnResponse((uint8 *)MMI_TO_SYNC_OK_SYMBOL, strlen((char*)MMI_TO_SYNC_OK_SYMBOL));
//    ReturnResponse((uint8 *)MMI_TO_SYNC_OK_SYMBOL, strlen((char*)MMI_TO_SYNC_OK_SYMBOL));
//    ReturnResponse((uint8 *)MMI_TO_SYNC_OK_SYMBOL, strlen((char*)MMI_TO_SYNC_OK_SYMBOL));
//    ReturnResponse((uint8 *)MMI_TO_SYNC_OK_SYMBOL, strlen((char*)MMI_TO_SYNC_OK_SYMBOL));
    return TRUE;

}


/*****************************************************************************/
// 	Description : This function get string finished by finish_char
//	Global resource dependence : none
//  Author:      lin.lin
//	Note:
/*****************************************************************************/
LOCAL BOOLEAN GetString(
                        uint8* dest_str_ptr, 
                        uint32 max_len, 
                        uint8* src_str_ptr, 
                        uint32 src_str_len,
                        uint8 finish_char
                        )
{
    uint8* ptr = src_str_ptr;
    uint32 i=0;

    for(i=0; i<src_str_len; i++)
    {
        if(*(ptr++) == finish_char)
        {
            break;
        }
    }

    if((ptr-1 - src_str_ptr > 0) && (ptr-1 - src_str_ptr <= max_len))
    {
//        strncpy((char *)dest_str_ptr, (char *)src_str_ptr, ptr-1 - src_str_ptr);
        MMI_MEMCPY(dest_str_ptr, max_len, src_str_ptr, src_str_len, ptr-1 - src_str_ptr);
    }
    else
    {
        return FALSE;
    }    

    return TRUE;
}


/*****************************************************************************/
// 	Description : This function return response to at
//	Global resource dependence : none
//  Author:      lin.lin
//	Note:
/*****************************************************************************/
LOCAL void ReturnResponse(
                            uint8* res_ptr,
                            uint16 len
                            )
{
    SIO_ATC_WriteCmdRes(res_ptr, len);
}


/*****************************************************************************/
// 	Description : This function judge pb paramter
//	Global resource dependence : none
//  Author:      lin.lin
//	Note:
/*****************************************************************************/
LOCAL BOOLEAN JudgePbInSim(
                     BOOLEAN *is_in_sim, 
                     uint8 cmd_char
                     )
{
    if(cmd_char == PB_SYNC_IN_SIM)
    {
        *is_in_sim = TRUE;
    }
    else if(cmd_char == PB_SYNC_NOT_IN_SIM)
    {
        *is_in_sim = FALSE;
    }    
    else
    {
        SCI_TRACE_LOW("mmi_atc.c: JudgePbInSim(), return FALSE, cmd_char = %X", cmd_char);
        return FALSE;
    }
    return TRUE;
}

/*****************************************************************************/
// 	Description : This function get pb entry id from cmd string
//	Global resource dependence : none
//  Author:      lin.lin
//	Note:
/*****************************************************************************/
LOCAL uint16 GetPbEntryId(uint8* cmd, uint16 len)
{
    uint8 id_str[PB_ENTRY_ID_MAX_LEN +1] = {0};
    
    SCI_ASSERT(len >= PB_ENTRY_ID_MAX_LEN);

    strncpy((char *)id_str,(char*)cmd, PB_ENTRY_ID_MAX_LEN);
    return atoi((char*)id_str);
}

/*****************************************************************************/
// 	Description : This functions switch binary and hex char, copied from Anli.Wwei
//	Global resource dependence : none
//  Author:      lin.lin
//	Note:
/*****************************************************************************/
void BinaryToHexChar(uint8* src_ptr, uint16 src_len, uint8* dest_ptr, uint16* dest_len)
{
    uint8 szValue[ 4 ] = { 0 };
    uint16 i = 0;    

    SCI_ASSERT(src_ptr != NULL && src_len > 0);
    SCI_ASSERT(dest_ptr != NULL && (*dest_len > src_len * 2));
    
    for(i = 0; i < src_len; ++i)
    {
        sprintf((char*)szValue, "%02x", *src_ptr);
        *dest_ptr = szValue[0];
        dest_ptr++;
        *dest_ptr = szValue[1];
        dest_ptr++;
        src_ptr++;
    }

    *dest_ptr = '\0';
    *dest_len = src_len * 2;
}

 
void HexCharToBinary(uint8* src_ptr, int src_len, uint8* dest_ptr, uint16* dest_len)
{
    uint8 btValue;
    uint16 nDesIdx = 0;
    uint16 i = 0;

    SCI_ASSERT(src_ptr != NULL && src_len > 0);
    SCI_ASSERT( *dest_len >= src_len / 2 );
  
    for( i = 0; i < src_len; ++i, ++nDesIdx)
    {
        btValue = HexCharToByte( *(src_ptr + i) );
        *(dest_ptr + nDesIdx) = btValue << 4;
        ++i;
        *(dest_ptr + nDesIdx) |= HexCharToByte( *(src_ptr + i) );          
    }
    *dest_len = src_len / 2;
}

 

uint8 HexCharToByte(uint8 cValue)
{
    uint8 btValue = 0;
    if( cValue >= '0' && cValue <= '9' )
    {
        btValue = cValue - '0';
    }
    else if( cValue >= 'a' && cValue <= 'z' )
    {
        btValue = cValue - 'a' + 10;
    }
    else if( cValue >= 'A' && cValue <= 'Z' )
    {
        btValue = cValue - 'A' + 10;
    }
    else
    {
        SCI_ASSERT( FALSE );
    }
    return btValue;
}

⌨️ 快捷键说明

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