📄 mmi_common.c
字号:
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 + -