📄 psconfig.cpp
字号:
if(iDelay)
{
// If we need to delay, sleep for minimum period
Sleep(1);
}
HCI_TXQueue.commandnumber = POLL_STATE;
}
break;
//jack debug start
case EXIT_STATE:
{
// Exit module
ExitMod_A();
return 0;
}
break;
//jack debug end
}
}
RETAILMSG(PS_DBG,(TEXT("PSConfig_TESTMode end\r\n")));
return 0;
}
void DecodeReceiveState(struct ubcsp_packet *rx_packet, unsigned char *rx_buffer)
{
static int i;
/* We've received a packet */
RETAILMSG(PS_DBG,(TEXT("nRECEIVED PACKET\r\n")));
// Only print out HCI information
if(rx_packet->channel == HCI_COMMAND)
{
RETAILMSG(PS_DBG,(TEXT("nHCI COMMAND RECEIVED:\r\n")));
switch((rx_buffer[0] & 0xFF))
{
case 0x01:
{
RETAILMSG(PS_DBG,(TEXT("INQUIRY COMPLETE:\r\n")));
PrintData_A(rx_buffer, rx_packet->length);
/*
if((HCI_TXQueue.HCIOpcode[0] == HCICommand_Inquiry[0]) && (HCI_TXQueue.HCIOpcode[1] == HCICommand_Inquiry[1]))
{
DM_Printf("INQUIRY COMPLETE: ");
PrintData(rx_buffer, rx_packet->length);
// Allow New Menu Selection for TX
HCI_TXQueue.commandnumber = SENT_STATE;
//Remove from Queue
HCI_TXQueue.NoOfOpcodes = 0;
DM_Printf("\nBluetooth Address To Be Used On Create Connection: ");
DM_Printf("0x");
for (i = 5; i >= 0; i--)
{
if(InquiryBDAddr[0].BDAddr[i] < 0x10)
{
DM_Printf("0");
}
DM_Printf("%x", InquiryBDAddr[0].BDAddr[i]);
}
DM_Printf ("\n");
}
*/
}
break;
case 0x02:
{
RETAILMSG(PS_DBG,(TEXT("INQUIRY RESULT:\r\n")));
PrintData_A(rx_buffer, rx_packet->length);
/*
DM_Printf("\nBluetooth Address: ");
DM_Printf("0x");
for (i = 8; i > 2; i--)
{
if(rx_buffer[i] < 0x10)
{
DM_Printf("0");
}
DM_Printf("%x", rx_buffer[i]);
}
DM_Printf ("\n");
*/
/* Store First Inquiry Result Away for Use with Create Connection */
/*
if(FirstInquiry)
{
InquiryBDAddr[0].NumberOfResponses = rx_buffer[2];
InquiryBDAddr[0].BDAddr[0] = rx_buffer[3];
InquiryBDAddr[0].BDAddr[1] = rx_buffer[4];
InquiryBDAddr[0].BDAddr[2] = rx_buffer[5];
InquiryBDAddr[0].BDAddr[3] = rx_buffer[6];
InquiryBDAddr[0].BDAddr[4] = rx_buffer[7];
InquiryBDAddr[0].BDAddr[5] = rx_buffer[8];
InquiryBDAddr[0].DataType[0] = 0x18;
InquiryBDAddr[0].DataType[1] = 0xCC;
InquiryBDAddr[0].PSRM = rx_buffer[9];
InquiryBDAddr[0].PSPM = rx_buffer[10];
InquiryBDAddr[0].PSM = rx_buffer[11];
InquiryBDAddr[0].ClassOfDevice[0] = rx_buffer[12];
InquiryBDAddr[0].ClassOfDevice[1] = rx_buffer[13];
InquiryBDAddr[0].ClassOfDevice[2] = rx_buffer[14];
InquiryBDAddr[0].ClockOffset[0] = rx_buffer[15];
InquiryBDAddr[0].ClockOffset[1] = rx_buffer[16];
InquiryBDAddr[0].MasterSlave = 0x00;
FirstInquiry = FALSE;
}*/
}
break;
case 0x03:
{
RETAILMSG(PS_DBG,(TEXT("CONNECTION COMPLETE:\r\n")));
/*
if((HCI_TXQueue.HCIOpcode[0] == HCICommand_Create_Connection[0]) && (HCI_TXQueue.HCIOpcode[1] == HCICommand_Create_Connection[1]))
{
DM_Printf("ACL CONNECTION: ");
// Store Connection Handle
ConnectionHandle[0] = rx_buffer[3];
ConnectionHandle[1] = rx_buffer[4];
// Allow New Menu Selection for TX
HCI_TXQueue.commandnumber = SENT_STATE;
//Remove from Queue
HCI_TXQueue.NoOfOpcodes = 0;
}else
{
if((HCI_TXQueue.HCIOpcode[0] == HCICommand_Add_SCO_Connection[0]) && (HCI_TXQueue.HCIOpcode[1] == HCICommand_Add_SCO_Connection[1]))
{
SCO_Flag++;
DM_Printf("SCO CONNECTION: ");
if(SCO_Flag == 2)
{
SCO_Flag = 0x00;
// Allow New Menu Selection for TX
HCI_TXQueue.commandnumber = SENT_STATE;
//Remove from Queue
HCI_TXQueue.NoOfOpcodes = 0;
}
}else
{
DM_Printf("UNKNOWN CONNECTION: ");
}
}*/
}
break;
case 0x05:
{
RETAILMSG(PS_DBG,(TEXT("DISCONNECTION COMPLETE:\r\n")));
PrintData_A(rx_buffer, rx_packet->length);
}
break;
case 0x0e:
{
RETAILMSG(PS_DBG,(TEXT("COMMAND COMPLETE:\r\n")));
// Check to see if Command Complete is the one on TX Queue
// Remove it from the Queue if it is and allow next HCI Message
if((((rx_buffer[3] & 0xFF) == HCI_TXQueue.HCIOpcode[0]) && ((rx_buffer[4] & 0xFF) == HCI_TXQueue.HCIOpcode[1])))
{
//RETAILMSG(1,(TEXT("COMMAND MATCHES QUEUE:\r\n")));
// Allow New Menu Selection for TX
//HCI_TXQueue.commandnumber = SENT_STATE;
//Remove from Queue
HCI_TXQueue.NoOfOpcodes = 0;
// Is the Command Enable Device Under TestMode
if(
(HCI_TXQueue.HCIOpcode[0] == Enable_Device_Under_Test_Mode[0]) && (HCI_TXQueue.HCIOpcode[1] == Enable_Device_Under_Test_Mode[1]) //&&
//((HCI_TXQueue.HCIOpcode[0] == HCICommand_Write_Scan_Enable[0]) && (HCI_TXQueue.HCIOpcode[1] == HCICommand_Write_Scan_Enable[1])) &&
//((HCI_TXQueue.HCIOpcode[0] == Set_Event_Filter[0]) && (HCI_TXQueue.HCIOpcode[1] == Set_Event_Filter[1]))
)
{
HCI_TXQueue.commandnumber = SENT_STATEA;
RETAILMSG(PS_DBG,(TEXT("Enable TestMode\r\n")));
}else
if(
(HCI_TXQueue.HCIOpcode[0] == HCICommand_Write_Scan_Enable[0]) && (HCI_TXQueue.HCIOpcode[1] == HCICommand_Write_Scan_Enable[1])
)
{
HCI_TXQueue.commandnumber = SENT_STATEB;
RETAILMSG(PS_DBG,(TEXT("Enable Write Scan\r\n")));
}else
if(
(HCI_TXQueue.HCIOpcode[0] == Set_Event_Filter[0]) && (HCI_TXQueue.HCIOpcode[1] == Set_Event_Filter[1])
)
{
HCI_TXQueue.commandnumber = EXIT_STATE;
RETAILMSG(PS_DBG,(TEXT("Set Event Filter\r\n")));
RETAILMSG(PS_DBG,(TEXT("Please link up to me\r\n")));
}
}else
{
RETAILMSG(PS_DBG,(TEXT("COMMAND DOES NOT MATCH QUEUE:\r\n")));
}
}
break;
case 0x0f:
{
RETAILMSG(PS_DBG,(TEXT("COMMAND STATUS:\r\n")));
PrintData_A(rx_buffer, rx_packet->length);
}
break;
case 0x10:
{
RETAILMSG(PS_DBG,(TEXT("HARDWARE ERROR:\r\n")));
PrintData_A(rx_buffer, rx_packet->length);
}
break;
case 0x1b:
{
RETAILMSG(PS_DBG,(TEXT("MAX SLOT CHANGE:\r\n")));
PrintData_A(rx_buffer, rx_packet->length);
}
break;
default:
{
RETAILMSG(PS_DBG,(TEXT("UNKNOWN COMMAND:\r\n")));
PrintData_A(rx_buffer, rx_packet->length);
}
}
}else
{
RETAILMSG(PS_DBG,(TEXT("nPacket Received, Channel = %02x\r\n"), rx_packet->channel));
PrintData_A(rx_buffer, rx_packet->length);
}
/* Allow another packet to be received up to 512 bytes long */
rx_packet->length = 512;
/* Setup the receive again */
ubcsp_receive_packet(rx_packet);
}
void DecodeSentState(struct ubcsp_packet *sd_packet)
{
static uint8 i;
//RETAILMSG(1,(TEXT("DecodeSentState Start\r\n")));
//Enable_Device_Under_Test_Mode
sd_packet->payload = Enable_Device_Under_Test_Mode;
sd_packet->channel = HCI_COMMAND;
sd_packet->length = sizeof(Enable_Device_Under_Test_Mode);
sd_packet->reliable = RELIABLE;
sd_packet->use_crc = TRUE;
HCI_TXQueue.NoOfRetries = 0;
HCI_TXQueue.HCIOpcode[0] = Enable_Device_Under_Test_Mode[0];
HCI_TXQueue.HCIOpcode[1] = Enable_Device_Under_Test_Mode[1];
HCI_TXQueue.commandnumber = RECEIVED_STATE;
HCI_TXQueue.NoOfOpcodes = 1;
RETAILMSG(1,(TEXT("DecodeSentState : Enable_Device_Under_Test_Mode\r\n")));
//HCICommand_Write_Scan_Enable
///sd_packet->payload = HCICommand_Write_Scan_Enable;
///sd_packet->channel = HCI_COMMAND;
///sd_packet->length = sizeof(HCICommand_Write_Scan_Enable);
///sd_packet->reliable = RELIABLE;
///sd_packet->use_crc = TRUE;
///HCI_TXQueue.NoOfRetries = 0;
///HCI_TXQueue.HCIOpcode[0] = HCICommand_Write_Scan_Enable[0];
///HCI_TXQueue.HCIOpcode[1] = HCICommand_Write_Scan_Enable[1];
///HCI_TXQueue.commandnumber = RECEIVED_STATE;
///HCI_TXQueue.NoOfOpcodes = 1;
///RETAILMSG(1,(TEXT("DecodeSentState : HCICommand_Write_Scan_Enable\r\n")));
//Set_Event_Filter
///sd_packet->payload = Set_Event_Filter;
///sd_packet->channel = HCI_COMMAND;
///sd_packet->length = sizeof(Set_Event_Filter);
///sd_packet->reliable = RELIABLE;
///sd_packet->use_crc = TRUE;
///HCI_TXQueue.NoOfRetries = 0;
///HCI_TXQueue.HCIOpcode[0] = Set_Event_Filter[0];
///HCI_TXQueue.HCIOpcode[1] = Set_Event_Filter[1];
///HCI_TXQueue.commandnumber = RECEIVED_STATE;
///HCI_TXQueue.NoOfOpcodes = 1;
///RETAILMSG(1,(TEXT("DecodeSentState : Set_Event_Filter\r\n")));
if(HCI_TXQueue.commandnumber == RECEIVED_STATE)
{
/* Send the Transmit Packet */
RETAILMSG(PS_DBG,(TEXT("nHCI COMMAND SENT =\r\n")));
ubcsp_send_packet(sd_packet);
// Some Debug Information
for (i = 0; i < sd_packet->length; i++)
{
RETAILMSG(PS_DBG,(TEXT("%02x\r\n"), sd_packet->payload[i]));
}
}else
{
/* Else Menu selection invalid there load Menu selection again */
HCI_TXQueue.commandnumber = SENT_STATE;
}
//RETAILMSG(1,(TEXT("DecodeSentState end\r\n")));
}
void DecodeSentState_A(struct ubcsp_packet *sd_packet)
{
static uint8 i;
//RETAILMSG(1,(TEXT("DecodeSentState_A Start\r\n")));
//Enable_Device_Under_Test_Mode
///sd_packet->payload = Enable_Device_Under_Test_Mode;
///sd_packet->channel = HCI_COMMAND;
///sd_packet->length = sizeof(Enable_Device_Under_Test_Mode);
///sd_packet->reliable = RELIABLE;
///sd_packet->use_crc = TRUE;
///HCI_TXQueue.NoOfRetries = 0;
///HCI_TXQueue.HCIOpcode[0] = Enable_Device_Under_Test_Mode[0];
///HCI_TXQueue.HCIOpcode[1] = Enable_Device_Under_Test_Mode[1];
///HCI_TXQueue.commandnumber = RECEIVED_STATE;
///HCI_TXQueue.NoOfOpcodes = 1;
///RETAILMSG(1,(TEXT("DecodeSentState : Enable_Device_Under_Test_Mode\r\n")));
//HCICommand_Write_Scan_Enable
sd_packet->payload = HCICommand_Write_Scan_Enable;
sd_packet->channel = HCI_COMMAND;
sd_packet->length = sizeof(HCICommand_Write_Scan_Enable);
sd_packet->reliable = RELIABLE;
sd_packet->use_crc = TRUE;
HCI_TXQueue.NoOfRetries = 0;
HCI_TXQueue.HCIOpcode[0] = HCICommand_Write_Scan_Enable[0];
HCI_TXQueue.HCIOpcode[1] = HCICommand_Write_Scan_Enable[1];
HCI_TXQueue.commandnumber = RECEIVED_STATE;
HCI_TXQueue.NoOfOpcodes = 1;
RETAILMSG(PS_DBG,(TEXT("DecodeSentState : HCICommand_Write_Scan_Enable\r\n")));
//Set_Event_Filter
///sd_packet->payload = Set_Event_Filter;
///sd_packet->channel = HCI_COMMAND;
///sd_packet->length = sizeof(Set_Event_Filter);
///sd_packet->reliable = RELIABLE;
///sd_packet->use_crc = TRUE;
///HCI_TXQueue.NoOfRetries = 0;
///HCI_TXQueue.HCIOpcode[0] = Set_Event_Filter[0];
///HCI_TXQueue.HCIOpcode[1] = Set_Event_Filter[1];
///HCI_TXQueue.commandnumber = RECEIVED_STATE;
///HCI_TXQueue.NoOfOpcodes = 1;
///RETAILMSG(1,(TEXT("DecodeSentState : Set_Event_Filter\r\n")));
if(HCI_TXQueue.commandnumber == RECEIVED_STATE)
{
/* Send the Transmit Packet */
RETAILMSG(PS_DBG,(TEXT("nHCI COMMAND SENT =\r\n")));
ubcsp_send_packet(sd_packet);
// Some Debug Information
for (i = 0; i < sd_packet->length; i++)
{
RETAILMSG(PS_DBG,(TEXT("%02x\r\n"), sd_packet->payload[i]));
}
}else
{
/* Else Menu selection invalid there load Menu selection again */
HCI_TXQueue.commandnumber = SENT_STATE;
}
//RETAILMSG(1,(TEXT("DecodeSentState_A end\r\n")));
}
void DecodeSentState_B(struct ubcsp_packet *sd_packet)
{
static uint8 i;
//RETAILMSG(1,(TEXT("DecodeSentState_B Start\r\n")));
//Enable_Device_Under_Test_Mode
///sd_packet->payload = Enable_Device_Under_Test_Mode;
///sd_packet->channel = HCI_COMMAND;
///sd_packet->length = sizeof(Enable_Device_Under_Test_Mode);
///sd_packet->reliable = RELIABLE;
///sd_packet->use_crc = TRUE;
///HCI_TXQueue.NoOfRetries = 0;
///HCI_TXQueue.HCIOpcode[0] = Enable_Device_Under_Test_Mode[0];
///HCI_TXQueue.HCIOpcode[1] = Enable_Device_Under_Test_Mode[1];
///HCI_TXQueue.commandnumber = RECEIVED_STATE;
///HCI_TXQueue.NoOfOpcodes = 1;
///RETAILMSG(1,(TEXT("DecodeSentState : Enable_Device_Under_Test_Mode\r\n")));
//HCICommand_Write_Scan_Enable
///sd_packet->payload = HCICommand_Write_Scan_Enable;
///sd_packet->channel = HCI_COMMAND;
///sd_packet->length = sizeof(HCICommand_Write_Scan_Enable);
///sd_packet->reliable = RELIABLE;
///sd_packet->use_crc = TRUE;
///HCI_TXQueue.NoOfRetries = 0;
///HCI_TXQueue.HCIOpcode[0] = HCICommand_Write_Scan_Enable[0];
///HCI_TXQueue.HCIOpcode[1] = HCICommand_Write_Scan_Enable[1];
///HCI_TXQueue.commandnumber = RECEIVED_STATE;
///HCI_TXQueue.NoOfOpcodes = 1;
///RETAILMSG(1,(TEXT("DecodeSentState : HCICommand_Write_Scan_Enable\r\n")));
//Set_Event_Filter
sd_packet->payload = Set_Event_Filter;
sd_packet->channel = HCI_COMMAND;
sd_packet->length = sizeof(Set_Event_Filter);
sd_packet->reliable = RELIABLE;
sd_packet->use_crc = TRUE;
HCI_TXQueue.NoOfRetries = 0;
HCI_TXQueue.HCIOpcode[0] = Set_Event_Filter[0];
HCI_TXQueue.HCIOpcode[1] = Set_Event_Filter[1];
HCI_TXQueue.commandnumber = RECEIVED_STATE;
HCI_TXQueue.NoOfOpcodes = 1;
RETAILMSG(PS_DBG,(TEXT("DecodeSentState : Set_Event_Filter\r\n")));
if(HCI_TXQueue.commandnumber == RECEIVED_STATE)
{
/* Send the Transmit Packet */
RETAILMSG(PS_DBG,(TEXT("nHCI COMMAND SENT =\r\n")));
ubcsp_send_packet(sd_packet);
// Some Debug Information
for (i = 0; i < sd_packet->length; i++)
{
RETAILMSG(PS_DBG,(TEXT("%02x\r\n"), sd_packet->payload[i]));
}
}else
{
/* Else Menu selection invalid there load Menu selection again */
HCI_TXQueue.commandnumber = SENT_STATE;
}
//RETAILMSG(1,(TEXT("DecodeSentState_B end\r\n")));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -