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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? hcicommand.cpp

?? 藍牙協議HCI層指令發送,主要用于測試HCI以下的代碼及RF部分測試.
?? CPP
字號:
//--------------------------------------------------------------- %FILH_BEG% --
//-----------------------------------------------------------------------------
//
//  Project:		$$ProjectName
//
//  File name:		HCICommand.cpp
//  Author:			Ebrahim Khorasani 
//  Description:	  
//
//  Revision History:
//  $Log: $
//
//  Rev 1.00  15 July 2000 Initial release
//    
//
//  Copyright (c) TelenComm Corporation  2000   -   All rights reserved    
//--------------------------------------------------------------- %FILH_END% 

//------------------------------------------------------------------------------
//
//  Includes
//
//------------------------------------------------------------------------------
#include "..\..\..\stdafx.h"
#include "..\..\..\BTHost.h"
#include "process.h"

#include "..\Inc\HCICommandProc.h"
#include "..\Inc\HCICmdPacket.h"
#include "..\Inc\HCICmdTables.h"

//------------------------------------------------------------------------------
//
//  Code
//
//------------------------------------------------------------------------------
CHCICommandProcessor::CHCICommandProcessor(void)
                     :CHCILinkControlCmdProcessor(),
                      CHCILinkPolicyCmdProcessor(),
                      CHCIHC_BaseBandCmdProcessor(),
                      CHCIInfoParmProcessor(),
  		              CHCIStatusParmProcessor(),
					  CHCITestingCmdProcessor(),
					  CHCIVendSpecCmdProcessor()
               
{
  if(!ValidateHCICommandTables())
  {
    printf("Function DB or Table is corrupted");
    abort();
  }
}
bool CHCICommandProcessor::ValidateHCICommandTables(void)
{
  FOR_LOOP(CmdType,(sint32)eFIRST_CMD_TYPE,(sint32)eLAST_CMD_TYPE + 1)
  {
    if(!ValidateTableType((CHCIBaseCmdProcessor::eHCICmdType)CmdType))
      return false;
  }
    return true;
}
bool CHCICommandProcessor::ValidateTableType(eHCICmdType CmdType)
{
#ifdef BT_DEBUG
  tHCICommandTableItem*  HCICommandTable = CmdTypeTable[CmdType].CmdTable;
  int                   NoOfCmds        = CmdTypeTable[CmdType].NoOfCmds;
  int i;
  uint8  PrevOGF;
  uint16 PrevOCF;
  uint16 PrevOpCode;

  assert(NoOfCmds > 0);

  PrevOGF    = HCICommandTable[0].OpCodeGroupField;
  PrevOCF    = HCICommandTable[0].OpCodeCommandField;
  PrevOpCode = HCICommandTable[0].OpCode;
  PrevOpCode = MAKE_OPCODE(PrevOGF, PrevOCF);
  for (i = 1; i < NoOfCmds; i++)
  {
    if (HCICommandTable[i].OpCodeGroupField == PrevOGF)
      assert(HCICommandTable[i].OpCodeCommandField > PrevOCF);
    else
      assert(HCICommandTable[i].OpCodeGroupField > PrevOGF);

    assert(HCICommandTable[i].OpCode > PrevOpCode);

    PrevOGF    = HCICommandTable[i].OpCodeGroupField;
    PrevOCF    = HCICommandTable[i].OpCodeCommandField;;
    PrevOpCode = HCICommandTable[i].OpCode;
  }

  for (i = 0; i < NoOfCmds; i++)
  {
    assert(HCICommandTable[i].OpCode == 
           MAKE_OPCODE(HCICommandTable[i].OpCodeGroupField,
                       HCICommandTable[i].OpCodeCommandField));
    assert(HCICommandTable[i].OpCodeGroupField == 
           GET_OGF(HCICommandTable[i].OpCode));
    assert(HCICommandTable[i].OpCodeCommandField == 
           GET_OCF(HCICommandTable[i].OpCode));
    assert(HCICommandTable[i].CommandFunction != NULL);
    assert(HCICommandTable[i].SpecSection != NULL);
    assert(HCICommandTable[i].Name != NULL);
  }


#endif BT_DEBUG
  return true;
}

//------------------------------------------------------------------------------

void CHCICommandProcessor::PrintHCICommandTable(eHCICmdType CmdType)
{
  tHCICommandTableItem*  HCICommandTable = CmdTypeTable[CmdType].CmdTable;
  int                   NoOfCmds        = CmdTypeTable[CmdType].NoOfCmds;

  int i;

  printf("\n");
  printf("HCICommandTable\n");
  printf("===============\n\n");

  for (i = 0; i < NoOfCmds; i++)
  {
    printf("Entry[%0i] -----------\n");
    printf("----------------------\n");
    printf("OpCode:               %x\n", HCICommandTable[i].OpCode);
    printf("OpCodeGroupField:     %x\n", HCICommandTable[i].OpCodeGroupField);
    printf("OpCodeCommandField:   %x\n", HCICommandTable[i].OpCodeCommandField);
    printf("ParameterTotalLength: %x\n", HCICommandTable[i].ParameterTotalLength);
    printf("CommandFunction:      %x\n", HCICommandTable[i].CommandFunction);
    printf("SpecSection:          %s\n", HCICommandTable[i].SpecSection);
    printf("Name:                 %s\n", HCICommandTable[i].Name);
  }
  printf("----------------------\n\n");
}

//------------------------------------------------------------------------------

int CHCICommandProcessor::FindHCICommandType(uint16 OpCode)
{
  int Lower,Upper,Current;
  int FindIdx = -1;
  int CmdType = GET_OGF(OpCode);

  if (CmdType == 0x3F)
	  CmdType = eVEND_SPEC_CMD;		// EK Vendor Specific Command

  if(CmdType >=1 && CmdType <= 7)
  {

    tHCICommandTableItem*   HCICommandTable = CmdTypeTable[CmdType].CmdTable;
    int                     MaxIdx        = CmdTypeTable[CmdType].NoOfCmds -1;


    Lower = 0;
    Upper = MaxIdx;

    FOR_LOOP(i,0,1000) // to avoid infinite loop
    {
      Current = (Upper + Lower) / 2;

      if (HCICommandTable[Current].OpCode > OpCode)
      {
        Upper = Current;
      }
      else if (HCICommandTable[Current].OpCode < OpCode)
      {
        Lower = Current+1;
      }
      else
      {
        FindIdx = Current;
        break;
      }

      if (Upper == Lower)
      {
        if(OpCode == HCICommandTable[MaxIdx].OpCode)
          FindIdx = MaxIdx;
        break; // not found
      }
    }
  }
  return FindIdx;
}

//------------------------------------------------------------------------------

CHCICommandProcessor::tCmdParseStatus CHCICommandProcessor::ParseHCICmdType(CHCI_CmdPacket& HCI_CmdPacket)
{

  ASSERT(0);
  /* update as per ParseHCIEventType function*/
  int Index;
  int OpCode = HCI_CmdPacket.GetOpCode();
  int CmdType = GET_OGF(OpCode);

  if (CmdType == 0x3F)
	  CmdType = eVEND_SPEC_CMD;		// EK Vendor Specific Command

  if(CmdType >=1 && CmdType <= 7)
  {
    if ( (Index = FindHCICommandType(OpCode) )!= -1 )
    {
    
      tHCICommandTableItem*   HCICommandTable = CmdTypeTable[CmdType].CmdTable;
      int                     NoOfCmds        = CmdTypeTable[CmdType].NoOfCmds;
    

      if ((HCICommandTable[Index].ParameterTotalLength != NO_PAR) &&
          (HCICommandTable[Index].ParameterTotalLength != 
           HCI_CmdPacket.GetParmLen()))
      {
        MessageBox(NULL,"Wrong parameter total length in command packet","Error",MB_OK|MB_ICONWARNING);
        return CHCIBaseCmdProcessor::ePARAMETER_SIZE_MISMATCH;
      }
      else
      {
          // Dispatch to HCI Command Function

          HCICommandTable[Index].CommandFunction(HCI_CmdPacket);
          return CHCIBaseCmdProcessor::ePARSING_OK;
      }
    }
  }
  MessageBox(NULL,"Wrong command code in Command Complete Event packet","Error",MB_OK|MB_ICONWARNING);
  return CHCIBaseCmdProcessor::eUNKNOWN_CMD;

}

CHCICommandProcessor::tCmdParseStatus  CHCICommandProcessor::ParseHCICommand(CHCI_CmdPacket& HCI_CmdPacket, sint32 PacketLen)
{
  //tCmdParseStatus retsts;
  //FOR_LOOP(CmdType,(sint32)eFIRST_CMD_TYPE,(sint32)eLAST_CMD_TYPE)
  //{
    //retsts=ParseHCICmdType(HCI_CmdPacket);
    //if( retsts==ePARSING_OK)
      //break;
  //}
  //return retsts;
    return ParseHCICmdType(HCI_CmdPacket);
}


//------------------------------------------------------------------------------
//  End of  HCICommand.cpp

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人激情免费网站| 成人激情黄色小说| 亚洲国产精品成人综合色在线婷婷 | 日韩欧美在线网站| 顶级嫩模精品视频在线看| 一区二区三区加勒比av| 日韩一区二区高清| 99国内精品久久| 精品亚洲国产成人av制服丝袜 | 日本久久一区二区三区| 久久精工是国产品牌吗| 亚洲综合区在线| 国产日韩欧美精品综合| 制服丝袜av成人在线看| 91日韩在线专区| 国产精品白丝av| 免费视频最近日韩| 亚洲综合一区二区| 国产精品国产馆在线真实露脸| 日韩欧美国产综合在线一区二区三区| 色悠悠久久综合| 国产成人在线视频免费播放| 日本亚洲一区二区| 亚洲电影第三页| 亚洲乱码一区二区三区在线观看| 久久久久久久电影| 日韩精品一区二区三区中文精品| 91久久线看在观草草青青| 成人综合婷婷国产精品久久蜜臀| 精品一区二区三区蜜桃| 日韩电影一二三区| 五月婷婷久久综合| 亚洲午夜成aⅴ人片| 亚洲你懂的在线视频| 国产精品传媒在线| 日本一区二区三级电影在线观看 | 国产日产精品1区| 精品国产99国产精品| 日韩西西人体444www| 欧美日韩精品高清| 欧美午夜电影一区| 在线观看视频欧美| 欧美三级韩国三级日本三斤| 色婷婷综合久久久久中文| 色偷偷88欧美精品久久久| 日本久久电影网| 91麻豆国产福利在线观看| 91丨porny丨蝌蚪视频| 91丨国产丨九色丨pron| 91老师片黄在线观看| 97se狠狠狠综合亚洲狠狠| 91尤物视频在线观看| 日本高清无吗v一区| 在线精品视频一区二区三四| 欧美性受xxxx| 日韩欧美激情在线| 久久丝袜美腿综合| 国产欧美一区二区三区沐欲| 中文字幕乱码一区二区免费| 国产精品免费av| 亚洲免费看黄网站| 亚洲国产wwwccc36天堂| 日日摸夜夜添夜夜添亚洲女人| 美女一区二区视频| 国产麻豆成人精品| a4yy欧美一区二区三区| 91福利在线导航| 欧美一区二区三区日韩| 欧美精品一区二区三区久久久| 久久先锋影音av鲁色资源| 国产精品久久久久久久久免费相片| 亚洲天堂免费在线观看视频| 午夜久久久久久久久| 久久精品99久久久| jizzjizzjizz欧美| 欧美日韩电影一区| 久久色中文字幕| 夜夜嗨av一区二区三区网页| 三级欧美在线一区| 国产精品亚洲成人| 欧美综合在线视频| 2023国产精品视频| 一区二区不卡在线播放| 捆绑紧缚一区二区三区视频 | 色av成人天堂桃色av| 欧美电视剧免费全集观看| 国产精品婷婷午夜在线观看| 亚洲国产成人高清精品| 国产乱子轮精品视频| 91在线看国产| 日韩精品专区在线影院观看| 中文字幕一区二区三区乱码在线| 午夜久久久久久久久久一区二区| 国产成人在线看| 精品视频一区三区九区| 国产亚洲婷婷免费| 亚洲妇女屁股眼交7| 国产乱码精品一区二区三区av | 欧美色中文字幕| 国产亚洲精品免费| 亚洲va国产天堂va久久en| 国产电影精品久久禁18| 欧美日韩国产小视频| 国产精品久久久久久久久久免费看| 亚洲大片免费看| 成人精品视频.| 精品国产乱码久久久久久久久| 一区二区三区日本| 99久久精品国产一区二区三区| 欧美一区二区三区男人的天堂| 成人免费在线观看入口| 国产一区啦啦啦在线观看| 欧美日韩精品一区二区| 亚洲欧美二区三区| 成人性生交大片免费看在线播放| 91精品国产综合久久精品| 亚洲欧美激情插| 不卡的看片网站| 久久久不卡网国产精品一区| 日韩精品国产精品| 色综合天天狠狠| 国产精品成人一区二区艾草| 国产一区二区视频在线| 日韩欧美激情一区| 日本亚洲三级在线| 欧美视频一区二区在线观看| 综合激情成人伊人| 成人永久看片免费视频天堂| 欧美大片一区二区三区| 舔着乳尖日韩一区| 精品视频一区三区九区| 亚洲激情在线播放| 色婷婷激情一区二区三区| 国产精品天天看| 懂色av一区二区在线播放| 久久久久久久久久看片| 狠狠网亚洲精品| 亚洲精品一区二区三区四区高清| 蜜桃精品视频在线| 欧美v日韩v国产v| 久久99日本精品| 亚洲精品一区二区精华| 国产尤物一区二区在线| 久久婷婷成人综合色| 国产精品一区二区在线看| 久久蜜桃av一区精品变态类天堂| 精品一区二区三区香蕉蜜桃 | 欧美一区二区免费| 国内外成人在线视频| 2024国产精品视频| 国产.欧美.日韩| 亚洲欧洲三级电影| 一本高清dvd不卡在线观看| 亚洲激情网站免费观看| 欧美日韩精品电影| 久久99久久99小草精品免视看| 久久久久亚洲综合| 成人蜜臀av电影| 亚洲高清久久久| 精品久久久网站| 国产成人精品一区二| 国产精品传媒视频| 欧美老女人第四色| 国产一区二区影院| 136国产福利精品导航| 欧美日韩和欧美的一区二区| 人人爽香蕉精品| 国产午夜精品一区二区三区视频 | 欧美一区二区三区视频免费 | 5月丁香婷婷综合| 久久99国产精品尤物| 国产精品丝袜黑色高跟| 欧美视频一区二区在线观看| 美日韩一级片在线观看| 国产精品久久99| 欧美日韩免费观看一区三区| 六月丁香婷婷久久| 亚洲天堂中文字幕| 欧美不卡视频一区| 日本精品裸体写真集在线观看| 日韩成人一级片| 亚洲国产成人一区二区三区| 91福利精品视频| 久久成人综合网| 亚洲精品免费视频| 精品少妇一区二区三区在线播放| 成人av在线网| 男女男精品视频网| 一区二区三区在线播放| 日韩欧美国产精品| 色综合天天综合网国产成人综合天| 日韩av成人高清| 亚洲日本在线a| 2020日本不卡一区二区视频| 91毛片在线观看| 国精产品一区一区三区mba桃花| 亚洲欧美一区二区三区国产精品| 精品三级在线看| 欧美亚洲高清一区| www.亚洲人|