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

📄 psconfig.cpp

📁 关于S3C2442平台蓝牙模块驱动
💻 CPP
📖 第 1 页 / 共 3 页
字号:
				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 + -