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

📄 mmi_common.c

📁 嵌入式展讯mmi层kernel的c 源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
    uint8 ascCode;
    uint8 i;

    /*memset(pBcd,0xFF,(strLen&1) ? (strLen+1)/2 : strLen/2+1);*/

    for(i=0;i < strLen;i++)
    {
        ascCode = pStr[i];
        /*bcdCode = 0xFF;*/

        if(!((ascCode >= '0' && ascCode <= '9')||ascCode == '*'||
              ascCode == '#'||(ascCode == 'P'||ascCode == 'p')||
              ascCode == 'W'||ascCode == 'w'))
            break;
        /*
        bcdCode = ( ascCode == '*' ) ? DIALBCD_STAR:
                  ( ascCode == '#' ) ? DIALBCD_HASH:
                  ( ascCode == 'P'||ascCode == 'p') ? DIALBCD_PAUSE:
                  ( ascCode == 'W' ) ? DIALBCD_WILD:(ascCode - '0');
        */
        switch( ascCode )
        {
            case '*':
                bcdCode = DIALBCD_STAR;
                break;
            case '#':
                bcdCode = DIALBCD_HASH;
                break;
            case 'P':
            case 'p':
                bcdCode = DIALBCD_PAUSE;
                break;
            case 'W':
            case 'w':
                bcdCode = DIALBCD_WILD;
                break;
            default:
                bcdCode = ascCode - '0';
                break;
        }
        pBcd[i/2] = ((i & 1) ? pBcd[i/2] : 0) +
                    (bcdCode << ((i & 1) ? 4 : 0));
    }
    if(i&1)
    {
       pBcd[(i-1)/2] |= 0xf0;
    }

}   /* End Of MMI_StrToBcdLf() */

/*****************************************************************************/
// 	Description : convert the string to the bcd code(PACKED_MSB_FIRST)
//	Global resource dependence : 
//  Author: Great.Tian
//	Note:
/*****************************************************************************/
void MMI_StrToBcdMf(
					char *pStr,   // String的头指针
					uint8 strLen, // String的长度
					uint8 *pBcd   // 转换后BCD码的头指针
				   )
{
    uint8 bcdCode;
    uint8 ascCode;
    uint8 i;

  /*memset(pBcd,0xFF,(strLen&1) ? (strLen+1)/2 : strLen/2+1); */

    for(i=0;i < strLen;i++)
    {
        ascCode = pStr[i];
        /*bcdCode = 0xFF;*/

        if(!((ascCode >= '0' && ascCode <= '9')||ascCode == '*'||
              ascCode == '#'||(ascCode == 'P'||ascCode == 'p')||
              ascCode == 'W'||ascCode == 'w'))
            break;
        /*
        bcdCode = ( ascCode == '*' ) ? DIALBCD_STAR:
                  ( ascCode == '#' ) ? DIALBCD_HASH:
                  ( ascCode == 'P'||ascCode == 'p') ? DIALBCD_PAUSE:
                  ( ascCode == 'W' ) ? DIALBCD_WILD:(ascCode - '0');
        */
        switch( ascCode )
        {
            case '*':
                bcdCode = DIALBCD_STAR;
                break;
            case '#':
                bcdCode = DIALBCD_HASH;
                break;
            case 'P':
            case 'p':
                bcdCode = DIALBCD_PAUSE;
                break;
            case 'W':
            case 'w':
                bcdCode = DIALBCD_WILD;
                break;
            default:
                bcdCode = ascCode - '0';
                break;
        }
        pBcd[i/2] = ((i & 1) ? pBcd[i/2] : 0) +
                    (bcdCode << ((i+1 & 1) ? 4 : 0));
    }
    if(i&1)
    {
       pBcd[(i-1)/2] |= 0x0f;
    }

}   /* End Of MMI_StrToBcdMf() */

/*****************************************************************************/
// 	Description : convert the string to the bcd code(UNPACKED)
//	Global resource dependence : 
//  Author: Great.Tian
//	Note:
/*****************************************************************************/
void MMI_StrToBcdUp(
					char *pStr,   // String的头指针
					uint8 strLen, // String的长度
					uint8 *pBcd   // 转换后BCD码的头指针
				   )
{
    uint8 bcdCode;
    uint8 ascCode;
    uint8 i;

    /*memset(pBcd,0xFF,strLen+1);*/

    for(i=0;i < strLen;i++)
    {
        ascCode = pStr[i];

        if(!((ascCode >= '0' && ascCode <= '9')||ascCode == '*'||
              ascCode == '#'||(ascCode == 'P'||ascCode == 'p')||
              ascCode == 'W'||ascCode == 'w'))
            break;
        /*
        bcdCode = ( ascCode == '*' ) ? DIALBCD_STAR:
                  ( ascCode == '#' ) ? DIALBCD_HASH:
                  ( ascCode == 'P'||ascCode == 'p') ? DIALBCD_PAUSE:
                  ( ascCode == '+' ) ? DIALBCD_WILD:(ascCode - '0');
        */

        switch( ascCode )
        {
            case '*':
                bcdCode = DIALBCD_STAR;
                break;
            case '#':
                bcdCode = DIALBCD_HASH;
                break;
            case 'P':
            case 'p':
                bcdCode = DIALBCD_PAUSE;
                break;
            case 'W':
            case 'w':
                bcdCode = DIALBCD_WILD;
                break;
            default:
                bcdCode = ascCode - '0';
                break;
        }
        pBcd[i] = bcdCode;
    }
}   /* End Of MMI_StrToBcdUp() */


/*****************************************************************************/
// 	Description : for telenumber to translate the string to bcd
//	Global resource dependence : none
//  Author:louis.wei
//	Note:
/*****************************************************************************/
BOOLEAN MMI_GenPartyNumber(
							 uint8				*tele_num_ptr,
							 int16				tele_len,
							 MMI_PARTY_NUMBER_T *party_num
							 )
{    
    uint8   offset   = 0;
    uint8*  tele_num = PNULL;

	//check the param
	SCI_ASSERT( NULL != tele_num_ptr );
	SCI_ASSERT( NULL != party_num );

    if (0 == tele_len)
    {
        // An empty string is given. The length of the BCD number is set to 0
        party_num->num_len = 0;
        SCI_TRACE_LOW("MMI_GenPartyNumber  length = 0\n");
        return FALSE;
    }
    
    // @Great.Tian, CR12051, begin
    tele_num = (uint8*)SCI_ALLOC(tele_len + 1);
    SCI_MEMSET(tele_num, 0, (tele_len + 1));
    // SCI_MEMCPY(tele_num, tele_num_ptr, tele_len);
    MMI_MEMCPY(
        tele_num, 
        tele_len + 1,
        tele_num_ptr,
        tele_len,
        tele_len);
    // @Great.Tian, CR12051, end
    
    if('+' == tele_num[0])
    {
        party_num->number_type = MN_NUM_TYPE_INTERNATIONAL;
        offset++;
    }
    else
    {
        party_num->number_type = MN_NUM_TYPE_UNKNOW;
    }
    
    party_num->num_len = ( tele_len - offset + 1 ) /2;
//	SCI_ASSERT( party_num->num_len <=  MN_MAX_ADDR_BCD_LEN);
	if( (MN_MAX_ADDR_BCD_LEN/2) < party_num->num_len)
	{
		party_num->num_len = MN_MAX_ADDR_BCD_LEN/2;
	}
    MMI_StrToBcd( PACKED_LSB_FIRST,
    			(char*)( tele_num + offset), 
    			(uint8 *)&(party_num->bcd_num) );

    // @Great.Tian, CR12051, begin
    SCI_FREE(tele_num);
    // @Great.Tian, CR12051, end

    return TRUE;

}

/*****************************************************************************/
// 	Description : Generate to the string number
//	Global resource dependence : none
//  Author:louis.wei
//	Note:
/*****************************************************************************/
uint8 MMI_GenDispNumber(
                         MN_NUMBER_TYPE_E  number_type,
                         uint8             party_len,
                         uint8             *party_num,
						 uint8				*tele_num,
						 uint8				max_tele_len//!!!!!!!!!可显示的号码的最大长度 + 2(/0 字符串结束符号)
						 )
{
//    int8 *tele_num_ptr = NULL;
    uint8   offset = 0;
	uint8	len = 0;

	//check the param
    SCI_PASSERT(NULL != tele_num, ("MMI_GenDispNumber() tele_num == NULL"));
	SCI_PASSERT(NULL != party_num, ("MMI_GenDispNumber() party_num == NULL"));
	SCI_ASSERT( max_tele_len > 2 );

    if(MN_NUM_TYPE_ALPHANUMERIC == number_type)
    {
        MMI_MEMCPY(tele_num, max_tele_len, party_num, party_len, party_len);
        return MIN(max_tele_len, party_len);
    }

    //check the tele_num is internation tele
    if( MN_NUM_TYPE_INTERNATIONAL == number_type )
    {
        offset = 1;
        tele_num[0] = '+';
    }

    if( 0 == party_len )
    {
        SCI_TRACE_LOW("MMI_GenDispNumber: called_num->num_len = 0");
        return (offset);
    }
	
	len = party_len << 1;
//	SCI_ASSERT( len <= (max_tele_len - offset - 1));
	if( MN_MAX_ADDR_BCD_LEN < len)
	{
		len = MN_MAX_ADDR_BCD_LEN;
	}
    MMI_BcdToStr(PACKED_LSB_FIRST ,party_num, len, (char*)( tele_num + offset ) );
    
    return (uint8)strlen((char*)tele_num);
}


/*****************************************************************************/
// 	Description : translate the string to number
//	Global resource dependence : 
//  Author:louis.wei
//	Note:
/*****************************************************************************/
BOOLEAN   MMI_StrToNum(
                         uint8* str,
                         uint8   len,
                         uint16*  num                              
                         )
{
    uint8       i = 0;
    BOOLEAN     result = FALSE;
    
    SCI_ASSERT( PNULL != str );
    SCI_ASSERT( PNULL != num );
    
    for( i = 0; i < len; i++ ) 
    {
        result = TRUE;
        if( ( '0' <= str[i] ) && ( '9' >= str[i] ) ) 
        {
            *num = ( *num ) * 10 + ( str[i] - '0');
        }
        else
        {
            result = FALSE;
            break;
        }
    }
    
    return result;
}

/*****************************************************************************/
// 	Description : Is it leap year?
//	Global resource dependence : none
//  Author:Louis wei
//	Note:
/*****************************************************************************/
BOOLEAN MMI_IsLeapYear(uint32 year)
{
    if(year % 400 == 0) return TRUE;
    if(year % 100 ==  0) return FALSE;
    if(year % 4 == 0) return TRUE;
    return FALSE;
}

/*****************************************************************************/
// 	Description : to translate the time to second
//	Global resource dependence : none
//  Author:Louis wei
//	Note:
/*****************************************************************************/
uint32  MMI_Tm2Second( 
                      uint32 tm_sec, 
                      uint32 tm_min, 
                      uint32 tm_hour,
                      uint32 tm_mday,
                      uint32 tm_mon, 
                      uint32 tm_year                      

⌨️ 快捷键说明

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