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

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

?? hcievent.cpp

?? 藍牙協議HCI層指令發送,主要用于測試HCI以下的代碼及RF部分測試.
?? CPP
字號:

//--------------------------------------------------------------- %FILH_BEG% --
//
//  Project:		$$ProjectName
//
//  File name:		HCIEvent.h
//  Author:			
//  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\HCIEventProc.h"
#include "..\Inc\HCIEventPacket.h"
#include "..\Inc\HCIEventTable.h"

//------------------------------------------------------------------------------
//
//  Code
//
//------------------------------------------------------------------------------
CHCIEventProcessor::CHCIEventProcessor(void)

{
  if(!ValidateHCIEventTable())
  {
    printf("Function DB or Table is corrupted");
    abort();
  }
}
bool CHCIEventProcessor::ValidateHCIEventTable(void)
{
#ifdef BT_DEBUG
  int i;
  uint8 PrevOpCode;

  assert(s_NoOfEvents > 0);

  PrevOpCode = m_HCIEventTable[0].OpCode;
  for (i = 1; i < (int)s_NoOfEvents; i++)
  {
    assert(m_HCIEventTable[i].OpCode > PrevOpCode);
    assert(m_HCIEventTable[i].EventFunction != NULL);
    assert(m_HCIEventTable[i].SpecSection != NULL);
    assert(m_HCIEventTable[i].Name != NULL);

    PrevOpCode = m_HCIEventTable[i].OpCode;
  }


#endif BT_DEBUG
  return true;
}

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

void CHCIEventProcessor::PrintHCIEventTable()
{

  int i;

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

  for (i = 0; i < (int)s_NoOfEvents; i++)
  {
    printf("Entry[%0i] -----------\n");
    printf("----------------------\n");
    printf("OpCode:               %x\n", m_HCIEventTable[i].OpCode);
    printf("ParameterTotalLength: %x\n", m_HCIEventTable[i].ParameterTotalLength);
    printf("EventFunction:      %x\n", m_HCIEventTable[i].EventFunction);
    printf("SpecSection:          %s\n", m_HCIEventTable[i].SpecSection);
    printf("Name:                 %s\n", m_HCIEventTable[i].Name);
  }
  printf("----------------------\n\n");
}

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

int CHCIEventProcessor::FindHCIEventType(uint8 OpCode)
{
  int Lower,Upper,Current;
  int FindIdx = -1;
  Lower = 0;
  Upper = s_NoOfEvents - 1;
  int MaxIdx = Upper;

  // DebugInformation Event Doesn't Follow the Table Index
  if(OpCode != 0xEF && (OpCode>Upper || OpCode<= Lower))	// OpCode = 0xEF For DebugInformation
  {
	  FindIdx = -1;
	  TRACE("E001/ FindHCIEventType(): Wrong code in Event packet");
	  //MessageBox(NULL,"Wrong code in Event packet","Error",MB_OK|MB_ICONWARNING);
  }
  else
  {

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

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

      if (Upper == Lower)
      {
        if(OpCode == m_HCIEventTable[MaxIdx].OpCode)
        {
          FindIdx = MaxIdx;
        }
        else
        {
		  TRACE("E002/FindHCIEventType(): Wrong code in Event packet");
          //MessageBox(NULL,"Wrong code in Event packet","Error",MB_OK|MB_ICONWARNING);
        }
        break; // not found
      }
    }
  }
  return FindIdx;
}

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

CHCIEventProcessor::tEventParseStatus CHCIEventProcessor::ParseHCIEvent(CHCI_EventPacket& HCI_EventPacket)
{
 
  int Index;
  
  if ( (Index = FindHCIEventType(HCI_EventPacket.GetOpCode()) )!= -1 )
  {
    tHCIEventTableItem* pEvTableItem = &m_HCIEventTable[Index];
    // Does function require a specific parameter length

    if ((pEvTableItem->ParameterTotalLength != NO_PAR) &&
        (pEvTableItem->ParameterTotalLength !=  
         HCI_EventPacket.GetParmLen()))
    {
      // Wrong parameter total length, send error meesage
      if ((pEvTableItem->ParameterTotalLength <  
           HCI_EventPacket.GetParmLen()))
      {
        FOR_LOOP(i,0,s_NoOfOCFWithVariableParams)
        {
          if(m_ListOfOCFWithVariableParams[i] == pEvTableItem->OpCode)
          {
            pEvTableItem->EventFunction(HCI_EventPacket);
            return ePARSING_OK;
          }
        }
      }
	  TRACE("E001/ParseHCIEvent(): Wrong parameter size in Event packet");
      //MessageBox(NULL,"Wrong parameter size in Event packet","Error",MB_OK|MB_ICONWARNING);
      return ePARAMETER_SIZE_MISMATCH;
    }
    else
    {
        // aCTIVATE  HCI Event Function

        pEvTableItem->EventFunction(HCI_EventPacket);
        return ePARSING_OK;
    }
  }
  // Event not found in database, send unknown Event
  TRACE("E002/ParseHCIEvent(): Unknown Event");
  //MessageBox(NULL,"unknown Event","Error",MB_OK|MB_ICONWARNING);
  return eUNKNOWN_EVENT;
}



//------------------------------------------------------------------------------
//  End of  HCIEvent.cpp

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产剧情一区二区三区| 国产精品一区免费视频| 国产精品福利一区二区| 久久免费电影网| 精品国产自在久精品国产| 精品国产欧美一区二区| 精品国内片67194| 国产农村妇女精品| 中文字幕电影一区| 亚洲日本丝袜连裤袜办公室| 亚洲精品少妇30p| 亚洲一二三级电影| 日韩电影在线免费| 久久99热国产| 成人性生交大片免费看视频在线| 99re66热这里只有精品3直播 | 亚洲一区成人在线| 亚洲大尺度视频在线观看| 日韩国产欧美一区二区三区| 国产美女娇喘av呻吟久久| 成人性视频免费网站| 欧美视频一区在线观看| 欧美变态口味重另类| 综合av第一页| 开心九九激情九九欧美日韩精美视频电影 | 26uuu精品一区二区在线观看| 337p粉嫩大胆噜噜噜噜噜91av| 国产无遮挡一区二区三区毛片日本| 国产日韩精品一区二区浪潮av | 精品一区二区久久| 北岛玲一区二区三区四区| 欧美亚洲国产一区在线观看网站| 欧美一区二区私人影院日本| 欧美激情一区二区三区不卡| 午夜伦理一区二区| 不卡av在线网| 精品精品欲导航| 亚洲精选一二三| 国产不卡在线一区| 欧美日韩情趣电影| 国产亚洲精品7777| 日韩成人精品在线| 不卡大黄网站免费看| 日韩精品一区二区三区视频| ●精品国产综合乱码久久久久| 久久99久久久欧美国产| 欧美偷拍一区二区| 中文字幕一区二区三区色视频 | 久久久久久97三级| 午夜电影久久久| 色婷婷av一区二区三区gif| 久久久久国产精品麻豆ai换脸| 午夜日韩在线观看| 欧美怡红院视频| 国产精品精品国产色婷婷| 久久国内精品自在自线400部| 欧美在线观看视频一区二区三区| 亚洲国产精品国自产拍av| 狠狠色综合播放一区二区| 欧美精品日韩一本| 一区二区三区成人| 色综合久久99| 亚洲欧美韩国综合色| 99re免费视频精品全部| 国产精品成人在线观看| 国产aⅴ精品一区二区三区色成熟| 欧美一区二区在线不卡| 亚洲成人av福利| 日韩午夜激情av| 免费看日韩精品| 欧美一区二区播放| 蜜桃久久av一区| 欧美变态tickling挠脚心| 毛片不卡一区二区| 日韩免费电影网站| 九一久久久久久| 久久免费国产精品| 国产成人8x视频一区二区| 欧美国产丝袜视频| www.亚洲在线| 一区二区三区在线看| 91国在线观看| 青娱乐精品视频在线| 精品日韩欧美在线| 九九国产精品视频| 国产精品全国免费观看高清| av激情亚洲男人天堂| 樱花草国产18久久久久| 在线成人免费视频| 国产一区二区在线影院| 日本一区二区三区在线观看| 一本久久精品一区二区| 午夜国产不卡在线观看视频| 欧美zozozo| 99精品久久免费看蜜臀剧情介绍| 免费成人美女在线观看.| 欧美成人精品3d动漫h| 国产成人精品免费在线| 亚洲欧洲一区二区三区| 欧美日韩免费高清一区色橹橹 | 国产精品女上位| 欧美人狂配大交3d怪物一区| 蜜臀av性久久久久av蜜臀妖精| 久久亚洲精品国产精品紫薇| 成人av免费网站| 日本人妖一区二区| 国产精品视频线看| 欧美精品黑人性xxxx| 粉嫩蜜臀av国产精品网站| 亚洲二区在线视频| 国产亚洲一区字幕| 在线观看免费成人| 国产精品综合在线视频| 亚洲第一福利一区| 国产精品免费久久| 精品美女在线播放| 色猫猫国产区一区二在线视频| 美女在线视频一区| 亚洲一区成人在线| 综合久久给合久久狠狠狠97色| 在线观看91精品国产麻豆| 91一区一区三区| 国产精品一区二区无线| 日韩成人午夜电影| 亚洲综合色丁香婷婷六月图片| 精品少妇一区二区三区免费观看 | 91精品国产综合久久福利软件| 成人性生交大片免费看中文| 日本不卡不码高清免费观看| 亚洲线精品一区二区三区| 国产精品美女久久久久av爽李琼| 精品国产乱码久久久久久浪潮 | 国产99久久久国产精品潘金网站| 日本欧洲一区二区| 首页国产欧美久久| 亚洲第四色夜色| 伊人一区二区三区| 国产精品视频第一区| 国产亚洲美州欧州综合国| 精品福利在线导航| 精品免费日韩av| 日韩三级中文字幕| 日韩视频一区在线观看| 51精品久久久久久久蜜臀| 欧美丰满高潮xxxx喷水动漫| 91久久精品国产91性色tv| 91蜜桃婷婷狠狠久久综合9色| 粉嫩绯色av一区二区在线观看| 国产一区二区网址| 国产乱码精品1区2区3区| 激情五月播播久久久精品| 久久91精品久久久久久秒播| 久久99日本精品| 国产做a爰片久久毛片| 美女一区二区在线观看| 精品一区二区三区在线观看国产 | 极品少妇xxxx精品少妇偷拍| 蜜臀av性久久久久蜜臀aⅴ| 久久精品国产99国产精品| 国产精品一区不卡| 成人午夜av电影| 不卡av在线免费观看| 91福利在线播放| 欧美人牲a欧美精品| 欧美不卡一区二区三区四区| 国产日韩成人精品| 亚洲码国产岛国毛片在线| 丝袜美腿一区二区三区| 国模娜娜一区二区三区| 99国产精品国产精品毛片| 欧美日韩你懂的| 久久色.com| 亚洲一区二区三区激情| 麻豆精品在线看| 99久久国产综合精品女不卡| 欧美三级视频在线| 欧美精品一区二区久久久| 中文字幕第一区二区| 丝袜美腿一区二区三区| 国产999精品久久久久久| 91久久久免费一区二区| 欧美精品一区在线观看| 亚洲色图丝袜美腿| 狠狠色丁香婷婷综合| 91网站最新网址| 精品av久久707| 亚洲欧美日韩一区二区| 久久99久久久欧美国产| www.视频一区| 欧美一区二区视频观看视频| 国产精品毛片高清在线完整版| 亚洲国产成人va在线观看天堂| 激情小说欧美图片| 91看片淫黄大片一级在线观看| 日本丶国产丶欧美色综合| 日韩美一区二区三区| 亚洲一区二区五区| 国产不卡免费视频| 日韩一区二区三区观看| 一区二区三区日韩精品|