亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? num_proc.c

?? mtk1389L latest sourcecode enjoy
?? C
字號(hào):
/***************     MTK CONFIDENTIAL & COPYRIGHTED    ****************/
/***************                                       ****************/
/***************  $Modtime:: 07/04/09 11:49a   $       ****************/
/***************  $Revision:: 2                $       ****************/
/***************                                       ****************/
/*************** Description : common routines for     ****************/
/***************               number key processing   ****************/
/***************                                       ****************/
/***************     Company : MediaTek Inc.           ****************/
/***************  Programmer :                         ****************/
/**********************************************************************/

#define _NUM_PROC_C_

#pragma NOAREGS
#include "general.h"

/************************************************************************
     Function : WORD wWRDToBCD(WORD wVal)
  Description : convert HEX WORD to 2 BCD
    Parameter : wVal - HEX number
    Return    : BCD number 0 and 1
************************************************************************/
WORD wWRDToBCD(WORD wVal) large
{
  WORD wBcd = 0;

  if (wVal > 9999)
  {
    wVal = 9999;
  }

  while (wVal >= 100)
  {
    wBcd++;
    wVal -= 100;
  }

  /* note this method is only valid for little endian */
  wVal = (WORD)bHEXToBCD((BYTE)wVal);
  wBcd = 256 * (WORD)bHEXToBCD((BYTE)wBcd) + wVal;

  return (wBcd);
}

// *********************************************************************
// Convert Digit to real number
// *********************************************************************
static code const WORD pwDig2Hex[5] = { 1, 10, 100, 1000, 10000 };

WORD wDigToNum(BYTE bCnt, BYTE *pbDig) large
{
  BYTE bIdx;
  WORD wNum = 0;
  
  for (bIdx = 0; bIdx < bCnt; bIdx++)
  {
    wNum += pbDig[bIdx] * pwDig2Hex[bCnt - bIdx - 1];
  }

  return (wNum);
}

// *********************************************************************
// General number input process function
// *********************************************************************
void vNumInInitState(BYTE bType, BYTE bCnt) large
{
  _rNumInStateCtx.rState.bInputType = bType;
  _rNumInStateCtx.rState.bTotalDigNum = bCnt;

  for (bCnt = 0; bCnt < 5; bCnt++)
  {
    _rNumInStateCtx.bDig[bCnt] = 0;
  }

  _rNumInStateCtx.wNum = 0;
  _rNumInStateCtx.rState.bDigNum = 0;
  _rNumInStateCtx.rState.fgComplete = FALSE;
  _rNumInStateCtx.rState.fgCancel = FALSE;
}

// *********************************************************************
// 
// *********************************************************************
BOOL fgNumInState1(void) large
{
  _rNumInStateCtx.rState.fgComplete = FALSE;

  if (_bIRKey == IR_CLEAR)
  {
    _rNumInStateCtx.rState.bDigNum = 0;
    _rNumInStateCtx.wNum = 0;
  }
  else if (_bIRKey > IR_ADD10 && _bIRKey != IR_ADD5)  // megaa ADD5
  {
    return (FALSE);
  }
  else if (_bIRKey == IR_ADD10)
  {
    if (_rNumInStateCtx.rState.bInputType == NUM_IN_TYPE_4)
    {
      if ((_rNumInStateCtx.wNum + 10) <= 999)
      {
        _rNumInStateCtx.wNum += 10;
      }
    }
    else
    {
      if ((_rNumInStateCtx.wNum + 10) <= 99)
      {
        _rNumInStateCtx.wNum += 10;
      }
    }

    if (_rNumInStateCtx.rState.bDigNum == 0)
    {
      _rNumInStateCtx.rState.bDigNum = 1;
    }
  }
  // megaa ADD5 begin
  else if (_bIRKey == IR_ADD5)
  {
    if (_rNumInStateCtx.rState.bInputType == NUM_IN_TYPE_4)
    {
      if ((_rNumInStateCtx.wNum + 5) <= 999)
      {
        _rNumInStateCtx.wNum += 5;
      }
    }
    else
    {
      if ((_rNumInStateCtx.wNum + 5) <= 99)
      {
        _rNumInStateCtx.wNum += 5;
      }
    }

    if (_rNumInStateCtx.rState.bDigNum == 0/* && _rNumInStateCtx.wNum >= 10*/)  // Is this right???!!!
    {
      _rNumInStateCtx.rState.bDigNum = 1;
    }
  }
  // megaa ADD5 end
  else /* if (_bIRKey >= IR_NUM0) */
  {
#ifdef USE_NUM0_AS_NUM10
    if ((_rNumInStateCtx.wNum == 0) && (_bIRKey == IR_NUM0))
    {
      _rNumInStateCtx.wNum = 10;
    }
    else
#endif
    {
      _rNumInStateCtx.wNum += _bIRKey;
    }

    if (_rNumInStateCtx.wNum > 0)
    {
      _rNumInStateCtx.rState.bDigNum = 2;
      _rNumInStateCtx.rState.fgComplete = TRUE;
    }
  }

  return (TRUE);
}

// *********************************************************************
// 
// *********************************************************************
BOOL fgNumInState2(void) large
{
  BYTE bDigNum = _rNumInStateCtx.rState.bDigNum;

  if (_bIRKey <= IR_ADD10)
  {
    if (_bIRKey == IR_ADD10)
    {
      return (TRUE); /* don't care +10 key */
    }

    _rNumInStateCtx.bDig[bDigNum] = _bIRKey;

    _rNumInStateCtx.rState.bDigNum++;

    if (_rNumInStateCtx.rState.bDigNum == _rNumInStateCtx.rState.bTotalDigNum)
    {
      _rNumInStateCtx.rState.fgComplete = TRUE;
    }
    else
    {
      _rNumInStateCtx.rState.fgComplete = FALSE;
    }
  }
  // megaa ADD5 begin
  else if (_bIRKey == IR_ADD5)
  {
    return (TRUE); /* don't care +5 key ????!!! */
  }
  // megaa ADD5 end
  else if ((_bIRKey == IR_CLEAR) && (bDigNum > 0))
  {
    _rNumInStateCtx.bDig[bDigNum - 1] = 0;
    _rNumInStateCtx.rState.bDigNum--;
    _rNumInStateCtx.rState.fgComplete = FALSE;
  }
  else
  {
    return(FALSE);
  }

  return(TRUE);
}

// *********************************************************************
// for DVD PTT search and VCD/CDDA track search, only input 1 number
// *********************************************************************
BOOL fgNumInState3(void) large
{
  if (_bIRKey == IR_CLEAR)
  {
    _rNumInStateCtx.wNum = 0;
    _rNumInStateCtx.rState.bDigNum = 0;
    _rNumInStateCtx.rState.fgComplete = FALSE;
    _rNumInStateCtx.rState.fgCancel = FALSE;
  }
#ifdef PTT_TRK_SEARCH_CONFIRM
  else if (fgIsPlayEnterKey(_bIRKey))
  {
    if (_rNumInStateCtx.rState.bDigNum > 0)
    {
      _rNumInStateCtx.rState.bDigNum = 1;
      _rNumInStateCtx.rState.fgComplete = TRUE;
    }
  }
#endif
  else if (_bIRKey > IR_ADD10 && _bIRKey != IR_ADD5)  // megaa ADD5
  {
    return (FALSE);
  }
  else if (_bIRKey == IR_ADD10)
  {
    if ((_rNumInStateCtx.wNum + 10) <= 99)
    {
      _rNumInStateCtx.wNum += 10;
    }
  }
  // megaa ADD5 begin
  else if (_bIRKey == IR_ADD5)
  {
    if ((_rNumInStateCtx.wNum + 5) <= 99)
    {
      _rNumInStateCtx.wNum += 5;
    }
  }
  // megaa ADD5 end
  else /* if (_bIRKey >= IR_NUM0) */
  {
    if (_rNumInStateCtx.rState.bDigNum > 0)
    {
      /* if press number key again, clean current number buffer */
      _rNumInStateCtx.wNum = 0;
    }
    
#ifdef USE_NUM0_AS_NUM10
    if ((_rNumInStateCtx.wNum == 0) && (_bIRKey == IR_NUM0))
    {
      _rNumInStateCtx.wNum = 10;
    }
    else
#endif
    {
      _rNumInStateCtx.wNum += _bIRKey;
    }

    if (_rNumInStateCtx.wNum > 0)
    {
      _rNumInStateCtx.rState.bDigNum = 1;
#ifndef PTT_TRK_SEARCH_CONFIRM
     _rNumInStateCtx.rState.fgComplete = TRUE; 
#endif
    }
  }

  return (TRUE);
}

// *********************************************************************
// for VCD/CDDA time search
// *********************************************************************
BOOL fgVCDTimeSearchNumInState(void) large
{
  BYTE bDigNum = _rNumInStateCtx.rState.bDigNum;

  if (_bIRKey < IR_ADD10)
  {
    if (bDigNum == 2) /* check ten second field */
    {
      if (_bIRKey >= IR_NUM6)
      {
        return (TRUE);
      }
    }

    _rNumInStateCtx.bDig[bDigNum] = _bIRKey;

    _rNumInStateCtx.rState.bDigNum++;
  
    if (_rNumInStateCtx.rState.bDigNum == _rNumInStateCtx.rState.bTotalDigNum)
    {
      _rNumInStateCtx.rState.fgComplete = TRUE;
    }
  }
  else if ((_bIRKey == IR_CLEAR) && (bDigNum > 0))
  {
    _rNumInStateCtx.bDig[bDigNum - 1] = 0;
    _rNumInStateCtx.rState.bDigNum = bDigNum - 1;
    _rNumInStateCtx.rState.fgComplete = FALSE;
  }
  else
  {
    return (FALSE);
  }

  return (TRUE);
}

// *********************************************************************
// for DVD time search
// *********************************************************************
BOOL fgDVDTimeSearchNumInState(void) large
{
  BYTE bDigNum = _rNumInStateCtx.rState.bDigNum;

  if (_bIRKey < IR_ADD10)
  {
    if ((bDigNum == 1) || (bDigNum == 3))
    {
      if (_bIRKey >= IR_NUM6)
      {
        return(TRUE);
      }
    }

    _rNumInStateCtx.bDig[bDigNum] = _bIRKey;

    _rNumInStateCtx.rState.bDigNum++;

    if (_rNumInStateCtx.rState.bDigNum == _rNumInStateCtx.rState.bTotalDigNum)
    {
      _rNumInStateCtx.rState.fgComplete = TRUE;
    }
  }
  else if ((_bIRKey == IR_CLEAR) && (bDigNum > 0))
  {
    _rNumInStateCtx.bDig[bDigNum - 1] = 0;
    _rNumInStateCtx.rState.bDigNum = bDigNum - 1;
    _rNumInStateCtx.rState.fgComplete = FALSE;
  }
  else
  {
    return(FALSE);
  }

  return(TRUE);
}

// *********************************************************************
// For number key sequence input, no time limit
// *********************************************************************
BOOL fgKeySeqWaitNumInState(void) large
{
  if (_bIRKey <= IR_ADD10)
  {
    if (_bIRKey == IR_ADD10)
    {
      return (TRUE); /* don't care +10 key */
    }

    _rNumInStateCtx.bDig[_rNumInStateCtx.rState.bDigNum] = _bIRKey;
    _rNumInStateCtx.rState.bDigNum++;
    _rNumInStateCtx.wNum = wDigToNum(_rNumInStateCtx.rState.bDigNum, _rNumInStateCtx.bDig);

    if (_rNumInStateCtx.rState.bDigNum == _rNumInStateCtx.rState.bTotalDigNum)
    {
      _rNumInStateCtx.rState.fgComplete = TRUE;
    }
  }
  // megaa ADD5 begin
  else if (_bIRKey == IR_ADD5)
  {
    return (TRUE);  // don't care +5 key 
  }
  // megaa ADD5 end
  else if ((_bIRKey == IR_CLEAR) && (_rNumInStateCtx.rState.bDigNum > 0))
  {
    _rNumInStateCtx.rState.bDigNum--;
    _rNumInStateCtx.bDig[_rNumInStateCtx.rState.bDigNum] = 0;
    _rNumInStateCtx.wNum = wDigToNum(_rNumInStateCtx.rState.bDigNum, _rNumInStateCtx.bDig);
    _rNumInStateCtx.rState.fgComplete = FALSE;
  }
  else /* other keys */
  {
    return (FALSE);
  }

  return (TRUE);
}

// *********************************************************************
// For number key sequence input, time limited
// *********************************************************************
BOOL fgKeySeqLimitNumInState(void) large
{
  BYTE bIdx, bTmp;
  
  if (_bIRKey <= IR_ADD10)
  {
    if (_bIRKey == IR_ADD10)
    {
      return (TRUE); /* don't care +10 key */
    }

    _rNumInStateCtx.bDig[_rNumInStateCtx.rState.bDigNum] = _bIRKey;
    _rNumInStateCtx.rState.bDigNum++;
    _rNumInStateCtx.wNum = wDigToNum(_rNumInStateCtx.rState.bDigNum, _rNumInStateCtx.bDig);

    if (_rNumInStateCtx.rState.bDigNum == _rNumInStateCtx.rState.bTotalDigNum)
    {
      _rNumInStateCtx.rState.fgComplete = TRUE;
    }
  }
  // megaa ADD5 begin
  else if (_bIRKey == IR_ADD5)
  {
    return (TRUE);  // don't care +5 key
  }
  // megaa ADD5 end
  else if ((_bIRKey == IR_CLEAR) && (_rNumInStateCtx.rState.bDigNum > 0))
  {
    _rNumInStateCtx.rState.bDigNum--;
    _rNumInStateCtx.bDig[_rNumInStateCtx.rState.bDigNum] = 0;
    _rNumInStateCtx.wNum = wDigToNum(_rNumInStateCtx.rState.bDigNum, _rNumInStateCtx.bDig);
    _rNumInStateCtx.rState.fgComplete = FALSE;
  }
  else if (((_bIRKey == IR_TIME_OUT) || (fgIsPlayEnterKey(_bIRKey))) &&
           (_rNumInStateCtx.rState.bDigNum > 0))
  {
    bTmp = _rNumInStateCtx.rState.bTotalDigNum - _rNumInStateCtx.rState.bDigNum;

    if (bTmp > 0)
    {
      for (bIdx = (_rNumInStateCtx.rState.bTotalDigNum - 1); bIdx > 0; bIdx--)
      {
        _rNumInStateCtx.bDig[bIdx] = _rNumInStateCtx.bDig[bIdx - bTmp];
      }
           
      for (bIdx = 0; bIdx < bTmp; bIdx++)
      {
        _rNumInStateCtx.bDig[bIdx] = 0;
      }

      _rNumInStateCtx.rState.bDigNum = _rNumInStateCtx.rState.bTotalDigNum;

      _rNumInStateCtx.wNum = wDigToNum(_rNumInStateCtx.rState.bDigNum, _rNumInStateCtx.bDig);
    }
    
    _rNumInStateCtx.rState.fgComplete = TRUE;
  }
  else /* other keys */
  {
    return (FALSE);
  }

  return (TRUE);
}

// *********************************************************************
// Number input state
// *********************************************************************
BOOL fgNumInState(void) large
{
  BOOL fgRet = TRUE;
  
  switch (_rNumInStateCtx.rState.bInputType)
  {
    case NUM_IN_TYPE_1:
    case NUM_IN_TYPE_4:
      fgRet = fgNumInState1();
      break;

    case NUM_IN_TYPE_2:
      fgRet = fgNumInState2();
      break;

    case NUM_IN_TYPE_3:
      fgRet = fgNumInState3();
      break;

    case NUM_IN_VCD_TIME:
      fgRet = fgVCDTimeSearchNumInState();
      break;

    case NUM_IN_DVD_TIME:
      fgRet = fgDVDTimeSearchNumInState();
      break;

    case NUM_IN_SEQ_WAIT:
      fgRet = fgKeySeqWaitNumInState();
      break;

    case NUM_IN_SEQ_LIMIT:
      fgRet = fgKeySeqLimitNumInState();
      break;

    case NUM_IN_NONE:
    default:
      break;
  } /* switch () */

  return (fgRet);
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩成人午夜电影| 国内精品不卡在线| 久久久美女艺术照精彩视频福利播放| 成人毛片视频在线观看| 香蕉成人伊视频在线观看| 欧美国产禁国产网站cc| 欧美精品高清视频| 97国产精品videossex| 激情久久五月天| 亚洲一卡二卡三卡四卡| 国产精品久久久久久久岛一牛影视 | 欧美高清hd18日本| 波多野结衣欧美| 国内精品视频666| 午夜激情久久久| 亚洲私人影院在线观看| 久久久另类综合| 91精品国产免费| 欧美亚洲另类激情小说| 99久久精品国产一区| 国产精品小仙女| 国模无码大尺度一区二区三区| 性欧美疯狂xxxxbbbb| 一区二区三区自拍| 17c精品麻豆一区二区免费| 久久精品亚洲精品国产欧美kt∨| 制服视频三区第一页精品| 日本乱人伦aⅴ精品| a级高清视频欧美日韩| 国产成人精品免费| 国模冰冰炮一区二区| 美女一区二区在线观看| 天堂午夜影视日韩欧美一区二区| 亚洲黄色小说网站| 一区二区三区四区高清精品免费观看 | 韩日精品视频一区| 美腿丝袜一区二区三区| 日本vs亚洲vs韩国一区三区| 日韩精品1区2区3区| 午夜成人免费电影| 日本视频免费一区| 蜜桃视频免费观看一区| 久久 天天综合| 精品一区二区日韩| 精品一区二区日韩| 国产精品18久久久久久久久久久久| 韩国精品久久久| 黄色精品一二区| 国产一区二区久久| 国产成人免费高清| 成人精品国产一区二区4080| 91美女精品福利| 一本大道综合伊人精品热热| 91久久精品一区二区三区| 欧美三级中文字幕在线观看| 91精品在线一区二区| 欧美xxx久久| 久久精品人人做人人爽人人| 国产精品区一区二区三| 亚洲日本韩国一区| 视频一区二区三区在线| 经典三级在线一区| 成人亚洲一区二区一| 91在线视频播放地址| 欧美日韩一级视频| 日韩视频在线观看一区二区| 久久精品日产第一区二区三区高清版| 欧美国产欧美综合| 亚洲午夜电影在线| 久久国产精品99久久久久久老狼| 国产很黄免费观看久久| 色综合久久中文综合久久牛| 欧美老肥妇做.爰bbww| 欧美mv日韩mv国产网站app| 国产精品欧美一区二区三区| 一区二区三区四区激情| 麻豆精品久久久| av福利精品导航| 91麻豆精品国产91久久久使用方法 | 中文字幕乱码亚洲精品一区| 一区二区三区欧美| 免费成人在线播放| 成人精品在线视频观看| 欧美日韩一级片网站| 久久精品一区二区三区不卡牛牛 | 久久久噜噜噜久久中文字幕色伊伊| 国产精品久久久久四虎| 日韩电影在线免费观看| 成人综合婷婷国产精品久久 | 国产成人精品免费在线| 欧美亚洲国产一区二区三区| 亚洲精品一区二区三区在线观看| 日韩毛片高清在线播放| 九九精品视频在线看| 在线观看日韩精品| 国产午夜精品久久久久久久| 亚洲成精国产精品女| 福利电影一区二区三区| 欧美精品高清视频| 亚洲免费av高清| 国产精品香蕉一区二区三区| 欧美日本一区二区三区| 中文字幕亚洲视频| 久久成人精品无人区| 欧美午夜精品一区二区蜜桃| 国产欧美精品一区二区色综合| 亚洲第一成人在线| 99精品国产一区二区三区不卡| 精品日本一线二线三线不卡| 悠悠色在线精品| www.日韩av| 国产调教视频一区| 免费一级片91| 欧美日韩在线播放一区| 亚洲女女做受ⅹxx高潮| 成人免费视频一区二区| 精品久久久久久最新网址| 日韩激情一区二区| 欧美性xxxxxx少妇| 国产精品福利一区二区三区| 国产精品白丝jk黑袜喷水| 日韩精品一区二区三区在线播放| 性做久久久久久久免费看| 91天堂素人约啪| 国产精品乱子久久久久| 国产真实乱偷精品视频免| 日韩精品中文字幕一区| 日本不卡一二三| 欧美美女一区二区在线观看| 一片黄亚洲嫩模| 一本色道久久综合亚洲精品按摩| 亚洲欧美综合在线精品| aaa欧美日韩| 中文字幕亚洲电影| 99re在线精品| 亚洲桃色在线一区| 色婷婷av一区二区三区大白胸| **欧美大码日韩| 色综合视频一区二区三区高清| 一区二区三区在线视频观看| 色吊一区二区三区| 亚洲婷婷在线视频| 色猫猫国产区一区二在线视频| 亚洲卡通欧美制服中文| 欧美在线你懂得| 亚洲国产日韩在线一区模特| 欧美日韩中文另类| 丝袜亚洲另类欧美| 日韩亚洲国产中文字幕欧美| 麻豆精品国产91久久久久久| 精品99一区二区| 国产成a人亚洲| 国产精品二三区| 一本大道久久精品懂色aⅴ| 亚洲福利视频三区| 欧美一区二区久久| 国产一区二区三区av电影| 中文字幕中文字幕在线一区| 一本一本久久a久久精品综合麻豆| 亚洲图片欧美视频| 日韩小视频在线观看专区| 国产高清精品网站| 亚洲欧美另类久久久精品2019| 在线免费视频一区二区| 日韩精品成人一区二区三区| 国产午夜久久久久| 一本色道久久综合精品竹菊| 日韩成人精品在线观看| 久久久精品一品道一区| 99精品一区二区三区| 午夜欧美2019年伦理| 2024国产精品| 色综合中文字幕| 美女在线观看视频一区二区| 国产精品久久久久久久蜜臀| 欧美剧情电影在线观看完整版免费励志电影 | 91黄视频在线| 美女视频黄免费的久久| 国产精品久久久久久久久快鸭 | 国产精品毛片高清在线完整版| 色www精品视频在线观看| 日本vs亚洲vs韩国一区三区| 亚洲国产精品国自产拍av| 欧美日韩第一区日日骚| 国产福利一区二区| 亚洲国产精品久久久久秋霞影院| 久久影院视频免费| 欧美性感一区二区三区| 国产精品一区二区在线播放 | 一区二区日韩av| 精品国产凹凸成av人网站| 91黄色免费观看| 国内精品久久久久影院色 | 看片的网站亚洲| 亚洲色大成网站www久久九九| 欧美变态口味重另类| 欧美日韩黄色一区二区| 成人污视频在线观看| 久久成人久久鬼色| 亚洲无线码一区二区三区|