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

📄 hcieventpacketproc.cpp

📁 蓝牙协议HCI层指令发送,主要用于测试HCI以下的代码及RF部分测试.
💻 CPP
📖 第 1 页 / 共 5 页
字号:
  uint8 ParamLength= rHCI_EventPacket.GetParmLen();

  sFlushOccuredEvent* psFlush = (sFlushOccuredEvent*)rHCI_EventPacket.GetHCI_EventPacketParam();

  Temp.Format ("%.2X", EventIndex ); 
  EventCode.Format    ("\tEvent Code:                  [1]  %s\n", Temp );  
  
  Temp.Format ("%.4X", psFlush->ConnectionHandle);   
  ConHandle.Format    ("\tConHandle:                   [%d]  %s\n",sizeof(psFlush->ConnectionHandle), Temp );

  ParamStr = EventCode + ConHandle	;
  g_pChildFrame->ParamListForOutput(ParamStr);

  return true;
}

uint8    HCI_EventsInterfaceProcFunctions::RoleChangeEvent(CHCI_EventPacket& rHCI_EventPacket)
{
 
  CString Temp, Role;
  CString Status;
  CString NewRole;
  CString BD_ADDR;
  CString ParamStr;
  CString EventCode;
  char buf1[20] = {'\0'}, buf2[20] = {'\0'};  
  char ErrorDef[40] = {'\0'};
  struct sRoleChangeEvent
  {
    uint8			Status;
    sBD_ADDR        asDevAddr;
    uint8			NewRole;
  }*pRoleChangeEvent;

  pRoleChangeEvent = (sRoleChangeEvent*)rHCI_EventPacket.GetHCI_EventPacketParam();

  uint8 EventIndex = rHCI_EventPacket.GetOpCode();
  Temp.Format ("%.2X", EventIndex ); 
  EventCode.Format     ("\tEvent Code:                  [1]  %s\n", Temp );  
 
  if(pRoleChangeEvent->Status) {
    g_pChildFrame->ErrorDef((char *)(&pRoleChangeEvent->Status), ErrorDef); 
 	Temp.Format ("%.2X   - %s", pRoleChangeEvent->Status, ErrorDef);
  }else
    Temp.Format ("%.2X",pRoleChangeEvent->Status); 

  Status.Format        ("\tStatus:                      [%d]  %s\n",sizeof(pRoleChangeEvent->Status), Temp ); 
  Temp.Empty();

  BT_itoa(&pRoleChangeEvent->asDevAddr ,6, buf1);
  BT_ReverseStr(buf1, buf2);
  Temp.Format ("%s", buf2);  //n = Temp.GetLength(); 

  BD_ADDR.Format       ("\tBD_ADDR:                     [%d]  %s\n",sizeof(pRoleChangeEvent->asDevAddr), Temp );
  Temp.Empty();

  if(pRoleChangeEvent->NewRole == 0)
    Role = "00  Currently Master";
  else if(pRoleChangeEvent->NewRole == 1)
    Role = "01  Currently Slave";

  Temp.Format ("%s", Role); 
  NewRole.Format        ("\tNewRole:                     [%d]  %s\n",sizeof(pRoleChangeEvent->NewRole), Temp ); 
  Temp.Empty();


  ParamStr = EventCode + Status + BD_ADDR + NewRole; 

  // Right Order for Command Status Print
  g_pChildFrame->ParamListForOutput(ParamStr);

  return true; 
}

//uint8              NumOfHandles,
//tConnectionHandle  ConnectionHandle,
//uint16             HCNumOfCompletedPackets[],
//

uint8    HCI_EventsInterfaceProcFunctions::NumberOfCompletedPacketsEvent(CHCI_EventPacket& rHCI_EventPacket)
{
  CString Temp; int n;
  CString EventCode;
  CString NumOfHandles;
  CString ConHandle;
  CString NumOfPackets;
  CString ParamStr;
  char buf1[10] = {'\0'},buf2[10] = {'\0'},buf3[10] = {'\0'};

  int ComPortNo = g_odTheBTHostApp.GetCurComPortNo();

  uint8 EventIndex = rHCI_EventPacket.GetOpCode();
  uint8 ParamLength= rHCI_EventPacket.GetParmLen();

  sNumberOfCompletedPacketsEvent* psNumOfPackets = (sNumberOfCompletedPacketsEvent*)rHCI_EventPacket.GetHCI_EventPacketParam();

  Temp.Format ("%.2X", EventIndex ); 
  EventCode.Format    ("\tEvent Code:                  [1]  %s\n", Temp );  
  
  BT_itoa(&psNumOfPackets->NumOfHandles ,1, buf1);
  Temp.Format ("%s", buf1);   
  NumOfHandles.Format ("\tNumOfHandles:                [%d]  %s\n",sizeof(psNumOfPackets->NumOfHandles), Temp );

  Temp.Format ("%-.4X", psNumOfPackets->ConnectionHandle);  n = Temp.GetLength(); 
  ConHandle.Format    ("\tConnectionHandle:            [%d]  %s\n",sizeof(psNumOfPackets->ConnectionHandle), Temp );

  for(int i =0; i < 10; i++) buf1[i] = '\0';
  BT_itoa(&psNumOfPackets->HCNumOfCompletedPackets ,2, buf1);
  BT_ReverseStr(buf1, buf3);
  
  Temp.Format ("%s", buf3);  n = Temp.GetLength(); 
  NumOfPackets.Format ("\tHCNumOfCompletedPackets:     [%d]  %s\n",sizeof(psNumOfPackets->HCNumOfCompletedPackets), Temp );
 
  ParamStr = EventCode + NumOfHandles + ConHandle	+ NumOfPackets ;
  g_pChildFrame->ParamListForOutput(ParamStr);

  return true;
}

uint8    HCI_EventsInterfaceProcFunctions::ModeChangeEvent(CHCI_EventPacket& rHCI_EventPacket)
                           
{
  CString Temp; int n;
  
  CString Status;
  CString EventCode;
  CString ConHandle;
  CString Mode,CurMode;
  CString Interval;
  CString ParamStr;
  char ErrorDef[40] = {'\0'};
  struct sModeChangeEvent
	{
      uint8                  Status;
      tConnectionHandle      aConHandle;
      uint8                  CurrentMode;
      tINTERVAL              tInterval; 
	} *pModeChangeEvent;
  enum eCurMode {ActiveMode, HoldMode, SniffMode, ParkMode, Res};

  pModeChangeEvent = (sModeChangeEvent*)rHCI_EventPacket.GetHCI_EventPacketParam();

  uint8 EventIndex = rHCI_EventPacket.GetOpCode();
  Temp.Format ("%.2X", EventIndex );
  EventCode.Format     ("\tEvent Code:                  [1]  %s\n", Temp );  
 
  if(pModeChangeEvent->Status) {
    g_pChildFrame->ErrorDef((char *)(&pModeChangeEvent->Status), ErrorDef); 
 	Temp.Format ("%.2X   - %s", pModeChangeEvent->Status, ErrorDef);
  }else
    Temp.Format ("%.2X",pModeChangeEvent->Status); 

  Temp.Format ("%.2X", pModeChangeEvent->Status); n = Temp.GetLength(); 
  Status.Format        ("\tStatus:                      [%d]  %s\n",1, Temp ); 
  Temp.Empty();

  Temp.Format ("%-.4X", pModeChangeEvent->aConHandle); n = Temp.GetLength(); 
  ConHandle.Format     ("\tConnection Handle:           [%d]  %s\n",sizeof(tConnectionHandle), Temp ); 
  Temp.Empty(); 

  switch(pModeChangeEvent->CurrentMode)
  {
	case 0:
	  Mode = "00   Active Mode"; break;
	case 1:
	  Mode = "01   Hold Mode"; break;
    case 2:
 	  Mode = "02   Sniff Mode"; break;
    case 3:
	  Mode = "03   Park Mode"; break;
    default:
	  Mode = "res"; break;
  }
  Temp.Format ("%s",Mode); 
  CurMode.Format        ("\tCurrent Mode:                [%d]  %s\n",sizeof(uint8), Temp ); 
  Temp.Empty(); 

  Temp.Format ("%.4X", pModeChangeEvent->tInterval); n = Temp.GetLength(); 
  Interval.Format        ("\tInterval:                    [%d]  %s\n",sizeof(tINTERVAL), Temp ); 
  
  ParamStr = EventCode + Status + ConHandle + CurMode + Interval; 

  g_pChildFrame->ParamListForOutput(ParamStr);

  return true;
}

//  uint8       u8NumKeys,
//  sBD_ADDR    asDevAddr[],
//  uint8       au8LinkKey[]
//

uint8    HCI_EventsInterfaceProcFunctions::ReturnLinkKeysEvent(CHCI_EventPacket& rHCI_EventPacket)
{
  int n, i;
  CString Temp;
  CString EventCode;
  CString NumKeys;
  CString BD_ADDR[32];
  CString LinkKey[32];
  CString str;
  CString ParamStr;
  char buf1[10] = {'\0'},buf2[15] = {'\0'},buf3[35] = {'\0'};

  int ComPortNo = g_odTheBTHostApp.GetCurComPortNo();

  uint8 EventIndex = rHCI_EventPacket.GetOpCode();
  uint8 ParamLength= rHCI_EventPacket.GetParmLen();

  sReturnLinkKeysEvent* psReturnLinkKeysEvent = (sReturnLinkKeysEvent*)rHCI_EventPacket.GetHCI_EventPacketParam();

  Temp.Format ("%.2X", EventIndex ); 
  EventCode.Format    ("\tEvent Code:                  [1]  %s\n", Temp );  
  
  BT_itoa(&psReturnLinkKeysEvent->NumKeys ,1, buf1);
  Temp.Format ("%s", buf1);   
  NumKeys.Format      ("\tNum Keys:                    [%d]  %s\n",sizeof(psReturnLinkKeysEvent->NumKeys), Temp );

  for(i = 0; i < psReturnLinkKeysEvent->NumKeys ; i++)
  {
    BT_itoa( &psReturnLinkKeysEvent->sLKeys[i].asDevAddr  ,6, buf2);

    Temp.Format ("%s", buf2);  n = Temp.GetLength(); 
    BD_ADDR[i].Format      ("\tBD_ADDR[%-2d]:                 [%d]  %s\n", i + 1, sizeof(psReturnLinkKeysEvent->sLKeys[i].asDevAddr), Temp );

    BT_itoa( (&psReturnLinkKeysEvent->sLKeys[i].au8LinkKey ),16, buf3);
    Temp.Format ("%s", buf3);  n = Temp.GetLength(); 
    LinkKey[i].Format      ("\tLinkKey[%-2d]:                 [%d] %s\n", i + 1, sizeof(psReturnLinkKeysEvent->sLKeys[i].au8LinkKey), Temp );
	str += BD_ADDR[i] + LinkKey[i];
  }

  ParamStr = EventCode + NumKeys + str;
  g_pChildFrame->ParamListForOutput(ParamStr);

  return true; 
}


uint8    HCI_EventsInterfaceProcFunctions::PinCodeRequestEvent(CHCI_EventPacket& rHCI_EventPacket)/*sBD_ADDR  sDevAddr )*/
{
  int EventStatus = 0;	// Not used in this function ,just send null
  CString Temp; int n;
  CString EventCode;
  CString BD_ADDR;
  CString ParamStr;
  char buf1[15] = {'\0'}, buf2[20]={'\0'};

  int ComPortNo = g_odTheBTHostApp.GetCurComPortNo();

  uint8 EventIndex = rHCI_EventPacket.GetOpCode();
  uint8 ParamLength= rHCI_EventPacket.GetParmLen();

  sPinCodeRequestEvent* psPinCodeRequest = (sPinCodeRequestEvent*)rHCI_EventPacket.GetHCI_EventPacketParam();
  char* pBuffer =  (char *)rHCI_EventPacket.m_uPacketPtr.pHCIEventPacket;

  Temp.Format ("%.2X", EventIndex ); 
  EventCode.Format    ("\tEvent Code:                  [1]  %s\n", Temp );  
  
  BT_itoa(&psPinCodeRequest->sDevAddr ,6, buf1);
  BT_ReverseStr(buf1, buf2);

  Temp.Format ("%s", buf2);  n = Temp.GetLength(); 
  BD_ADDR.Format      ("\tBD_ADDR:                     [%d]  %s\n",sizeof(psPinCodeRequest->sDevAddr), Temp );

  ParamStr = EventCode + BD_ADDR ;
  g_pChildFrame->ParamListForOutput(ParamStr);
  DisplayRecData(ComPortNo, pBuffer,ParamLength+3, EventStatus );

  CPinCodeRequest LPDlg(buf1, EventIndex, ComPortNo);
  //LPDlg.DoModal();
  LPDlg.CallTransmit(buf1, EventIndex, ComPortNo);

//  if( ComPortNo== COMPORT1 || ComPortNo== USBDEV1)
  if( ComPortNo == iCurPort1)
  {
	g_pBTHostView1->BTHostView1_CommandToMaster = false;	// Set To Unit 1
    g_pBTHostView1->DisplayAndTransmitCmd(LPDlg.m_strCmdName);
  }
//  else if( ComPortNo== COMPORT2 || ComPortNo== USBDEV2)
  else if( ComPortNo == iCurPort2)
  {
    //Ek g_pBTHostView2->DisplayAndTransmitCmd(ReqDlg.m_strCmdName);
	g_pBTHostView1->BTHostView1_CommandToMaster = true;		// Set To Unit 2
  	g_pBTHostView1->DisplayAndTransmitCmd(LPDlg.m_strCmdName);
  }

	return true;
}

uint8    HCI_EventsInterfaceProcFunctions::LinkKeyRequestEvent(CHCI_EventPacket& rHCI_EventPacket)/*sBD_ADDR  sDevAddr )*/
{

  int EventStatus = 0;	// Not used in this function ,just send null
  CString Temp; int n;
  CString EventCode;
  CString BD_ADDR;
  CString ParamStr;
  char buf1[15] = {'\0'}, buf2[20]={'\0'};

  int ComPortNo = g_odTheBTHostApp.GetCurComPortNo();

  uint8 EventIndex = rHCI_EventPacket.GetOpCode();
  uint8 ParamLength= rHCI_EventPacket.GetParmLen();

  sLinkKeyRequestEvent* psLinkKeyRequest = (sLinkKeyRequestEvent*)rHCI_EventPacket.GetHCI_EventPacketParam();
  char* pBuffer =  (char *)rHCI_EventPacket.m_uPacketPtr.pHCIEventPacket;

  Temp.Format ("%.2X", EventIndex ); 
  EventCode.Format    ("\tEvent Code:                  [1]  %s\n", Temp );  
  
  BT_itoa(&psLinkKeyRequest->sDevAddr ,6, buf1);
  BT_ReverseStr(buf1, buf2);
  Temp.Format ("%s", buf2);  n = Temp.GetLength(); 
  BD_ADDR.Format      ("\tBD_ADDR:                     [%d]  %s\n",sizeof(psLinkKeyRequest->sDevAddr), Temp );

  ParamStr = EventCode + BD_ADDR ;
  g_pChildFrame->ParamListForOutput(ParamStr);

  // Display Current received Event data before sending any command
  DisplayRecData(ComPortNo, pBuffer,ParamLength+3 , EventStatus);

  CLinkKeyPinCodeReq LPDlg(buf1, EventIndex, ComPortNo);
  //CLinkKeyPinCodeReq LPDlg1(buf1, EventIndex, ComPortNo);

//  LPDlg.DoModal();
  LPDlg.CallTransmit(buf1, EventIndex, ComPortNo);
  /*
  if( ComPortNo== COMPORT1 || ComPortNo== USBDEV1)
    LPDlg.DoModal();
  else if( ComPortNo== COMPORT2 || ComPortNo== USBDEV2)
    LPDlg1.DoModal();
  */
  // Testing LPDlg.CallTransmit(buf1, EventIndex);

//  if( ComPortNo== COMPORT1 || ComPortNo== USBDEV1)
  if( ComPortNo == iCurPort1)
  {
	g_pBTHostView1->BTHostView1_CommandToMaster = false;	// Set To Unit 1

    g_pBTHostView1->DisplayAndTransmitCmd(LPDlg.m_strCmdName);
  }
//  else if( ComPortNo== COMPORT2 || ComPortNo== USBDEV2)
  else if( ComPortNo == iCurPort2)
  {
  //Ek g_pBTHostView2->DisplayAndTransmitCmd(ReqDlg.m_strCmdName);
	g_pBTHostView1->BTHostView1_CommandToMaster = true;		// Set To Unit 2
  	g_pBTHostView1->DisplayAndTransmitCmd(LPDlg.m_strCmdName);

//  	g_pBTHostView1->DisplayAndTransmitCmd(LPDlg.m_strCmdName);
  
  }

  
  return true;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -