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

📄 mmiutil.c

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

        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 + -