📄 mmiutil.c
字号:
str[i] = ascCode;
}
str[i] = 0;
} /*-- End of mmi_BcdUpToStr( ) --*/
/****************************************************************************/
/* Function : mmi_StrToBcd( ) */
/*--------------------------------------------------------------------------*/
/* Scope : Convert ascii code to bcd code. */
/* Return : none */
/* Interface : */
/*--------------------------------------------------------------------------*/
/* Variable Name |IN |OUT|GLB| Use */
/*--------------------+---+---+---+-----------------------------------------*/
/* bcdFmt | * | | | bcd code format. */
/*--------------------+---+---+---+-----------------------------------------*/
/* pBcd | | * | | the pointer of bcd code. */
/*--------------------+---+---+---+-----------------------------------------*/
/* pStr | * | | | the pointer of string. */
/*--------------------+---+---+---+-----------------------------------------*/
/****************************************************************************/
void
mmi_StrToBcd(uint8 bcdFmt,char *pStr,uint8 *pBcd)
{
uint8 strLen;
strLen = strlen(pStr);
switch(bcdFmt)
{
case PACKED_LSB_FIRST:
mmi_StrToBcdLf(pStr,strLen,pBcd);
break;
case PACKED_MSB_FIRST:
mmi_StrToBcdMf(pStr,strLen,pBcd);
break;
case UNPACKED :
mmi_StrToBcdUp(pStr,strLen,pBcd);
break;
default:
DevFail("Wrong bcd format");
break;
}
} /* End Of mmi_StrToBcd() */
/****************************************************************************/
/* Function : mmi_StrToBcdLf() */
/*--------------------------------------------------------------------------*/
/* Scope : Convert ascii code to LSB format bcd code. */
/* Return : none */
/* Interface : */
/*--------------------------------------------------------------------------*/
/* Variable Name |IN |OUT|GLB| Use */
/*--------------------+---+---+---+-----------------------------------------*/
/* bcdFmt | * | | | bcd code format. */
/*--------------------+---+---+---+-----------------------------------------*/
/* pBcd | | * | | the pointer of bcd code. */
/*--------------------+---+---+---+-----------------------------------------*/
/* pStr | * | | | the pointer of string. */
/*--------------------+---+---+---+-----------------------------------------*/
/****************************************************************************/
void
mmi_StrToBcdMf(char *pStr,uint8 strLen,uint8 *pBcd)
{
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_StrToBcdLf() */
/****************************************************************************/
/* Function : mmi_StrToBcdMf() */
/*--------------------------------------------------------------------------*/
/* Scope : Convert ascii code to MSB format bcd code. */
/* Return : none */
/* Interface : */
/*--------------------------------------------------------------------------*/
/* Variable Name |IN |OUT|GLB| Use */
/*--------------------+---+---+---+-----------------------------------------*/
/* bcdFmt | * | | | bcd code format. */
/*--------------------+---+---+---+-----------------------------------------*/
/* pBcd | | * | | the pointer of bcd code. */
/*--------------------+---+---+---+-----------------------------------------*/
/* pStr | * | | | the pointer of string. */
/*--------------------+---+---+---+-----------------------------------------*/
/****************************************************************************/
void
mmi_StrToBcdLf(char *pStr,uint8 strLen,uint8 *pBcd)
{
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) ? 4 : 0));
}
if(i&1)
{
pBcd[(i-1)/2] |= 0xf0;
}
} /* End Of mmi_StrToBcdLf() */
/****************************************************************************/
/* Function : mmi_StrToBcdUp() */
/*--------------------------------------------------------------------------*/
/* Scope : Convert ascii code to unpacked format bcd code. */
/* Return : none */
/* Interface : */
/*--------------------------------------------------------------------------*/
/* Variable Name |IN |OUT|GLB| Use */
/*--------------------+---+---+---+-----------------------------------------*/
/* bcdFmt | * | | | bcd code format. */
/*--------------------+---+---+---+-----------------------------------------*/
/* pBcd | | * | | the pointer of bcd code. */
/*--------------------+---+---+---+-----------------------------------------*/
/* pStr | * | | | the pointer of string. */
/*--------------------+---+---+---+-----------------------------------------*/
/****************************************************************************/
void
mmi_StrToBcdUp(char *pStr,uint8 strLen,uint8 *pBcd)
{
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() */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -