@ -48,11 +48,13 @@ void Bluetooth_ProcessACLPackets(void)
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Pipe_Read_Stream_LE ( & ACLPacketHeader ,  sizeof ( ACLPacketHeader ) ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Pipe_Read_Stream_LE ( & DataHeader ,  sizeof ( DataHeader ) ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# if (ACL_DEBUG_LEVEL > 1) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_ACL_DEBUG ( " Packet Received " ,  NULL ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_ACL_DEBUG ( " -- Connection Handle: 0x%04X " ,  ( ACLPacketHeader . ConnectionHandle  &  0x0FFF ) ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_ACL_DEBUG ( " -- Data Length: 0x%04X " ,  ACLPacketHeader . DataLength ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_ACL_DEBUG ( " -- Destination Channel: 0x%04X " ,  DataHeader . DestinationChannel ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_ACL_DEBUG ( " -- Payload Length: 0x%04X " ,  DataHeader . PayloadLength ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# endif 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						if  ( DataHeader . DestinationChannel  = =  BLUETOOTH_CHANNEL_SIGNALING ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						{ 
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -62,20 +64,26 @@ void Bluetooth_ProcessACLPackets(void)
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							switch  ( SignalCommandHeader . Code ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							{ 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								case  BLUETOOTH_SIGNAL_CONNECTION_REQUEST : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
									Bluetooth_ Process SignalPacket_ConnectionRequest( & ACLPacketHeader ,  & DataHeader ,  & SignalCommandHeader ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
									Bluetooth_ SignalPacket_ConnectionRequest( & ACLPacketHeader ,  & DataHeader ,  & SignalCommandHeader ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
									break ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								case  BLUETOOTH_SIGNAL_CONFIGURATION_REQUEST : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
									Bluetooth_ProcessSignalPacket_ConfigurationRequest ( & ACLPacketHeader ,  & DataHeader ,  & SignalCommandHeader ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
									Bluetooth_SignalPacket_ConfigurationRequest ( & ACLPacketHeader ,  & DataHeader ,  & SignalCommandHeader ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
									break ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								case  BLUETOOTH_SIGNAL_DISCONNECTION_REQUEST : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
									Bluetooth_SignalPacket_DisconnectionRequest ( & ACLPacketHeader ,  & DataHeader ,  & SignalCommandHeader ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
									break ; 			
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								case  BLUETOOTH_SIGNAL_ECHO_REQUEST : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
									Bluetooth_SignalPacket_EchoRequest ( & ACLPacketHeader ,  & DataHeader ,  & SignalCommandHeader ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
									break ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								case  BLUETOOTH_SIGNAL_INFORMATION_REQUEST : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
									BT_ACL_DEBUG ( " >> Information Request, Discarded " ,  NULL ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
									BT_ACL_DEBUG ( " << Information Request " ,  NULL ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
									Pipe_Discard_Stream ( ACLPacketHeader . DataLength ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
									Pipe_ClearIN ( ) ; 		
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
									Pipe_Freeze ( ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
									break ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								default : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
									BT_ACL_DEBUG ( " >>  Unknown Signaling Command 0x%02X" ,  SignalCommandHeader . Code ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
									BT_ACL_DEBUG ( " <<  Unknown Signaling Command 0x%02X" ,  SignalCommandHeader . Code ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
										
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
									Pipe_Discard_Stream ( ACLPacketHeader . DataLength ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
									Pipe_ClearIN ( ) ; 		
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -100,17 +108,19 @@ void Bluetooth_ProcessACLPackets(void)
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						} 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					} 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					static  inline  void  Bluetooth_ Process SignalPacket_ConnectionRequest( Bluetooth_ACL_Header_t *  ACLPacketHeader , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                                                    Bluetooth_DataPacket_Header_t *  DataHeader , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                                                    Bluetooth_SignalCommand_Header_t *  SignalCommandHeader ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					static  inline  void  Bluetooth_ SignalPacket_ConnectionRequest( Bluetooth_ACL_Header_t *  ACLPacketHeader , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                                            Bluetooth_DataPacket_Header_t *  DataHeader , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                                            Bluetooth_SignalCommand_Header_t *  SignalCommandHeader ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					{ 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Bluetooth_SignalCommand_ConnectionRequest_t  ConnectionRequest ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Pipe_Read_Stream_LE ( & ConnectionRequest ,  sizeof ( ConnectionRequest ) ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_ACL_DEBUG ( " >> L2CAP Connection Request " ,  NULL ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_ACL_DEBUG ( " << L2CAP Connection Request " ,  NULL ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# if (ACL_DEBUG_LEVEL > 1) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_ACL_DEBUG ( " -- PSM: 0x%04X " ,  ConnectionRequest . PSM ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_ACL_DEBUG ( " -- Source Channel: 0x%04X " ,  ConnectionRequest . SourceChannel ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# endif 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Pipe_ClearIN ( ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Pipe_Freeze ( ) ; 
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -141,26 +151,32 @@ static inline void Bluetooth_ProcessSignalPacket_ConnectionRequest(Bluetooth_ACL
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Pipe_ClearOUT ( ) ; 		
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Pipe_Freeze ( ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# if (ACL_DEBUG_LEVEL > 1) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_ACL_DEBUG ( " Packet Sent " ,  NULL ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_ACL_DEBUG ( " -- Connection Handle: 0x%04X " ,  ( ACLPacketHeader - > ConnectionHandle  &  0x0FFF ) ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_ACL_DEBUG ( " -- Data Length: 0x%04X " ,  ACLPacketHeader - > DataLength ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_ACL_DEBUG ( " -- Destination Channel: 0x%04X " ,  DataHeader - > DestinationChannel ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_ACL_DEBUG ( " -- Payload Length: 0x%04X " ,  DataHeader - > PayloadLength ) ; 			
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# endif 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_ACL_DEBUG ( " >> L2CAP Connection Response " ,  NULL ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# if (ACL_DEBUG_LEVEL > 1) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_ACL_DEBUG ( " -- Source Channel: 0x%04X " ,  ConnectionResponse . SourceChannel ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_ACL_DEBUG ( " -- Destination Channel: 0x%04X " ,  ConnectionResponse . DestinationChannel ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# endif 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					} 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					static  inline  void  Bluetooth_ Process SignalPacket_ConfigurationRequest( Bluetooth_ACL_Header_t *  ACLPacketHeader , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                                                       Bluetooth_DataPacket_Header_t *  DataHeader , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                                                       Bluetooth_SignalCommand_Header_t *  SignalCommandHeader ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					static  inline  void  Bluetooth_ SignalPacket_ConfigurationRequest( Bluetooth_ACL_Header_t *  ACLPacketHeader , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                                               Bluetooth_DataPacket_Header_t *  DataHeader , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                                               Bluetooth_SignalCommand_Header_t *  SignalCommandHeader ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					{ 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Bluetooth_SignalCommand_ConfigurationRequest_t  ConfigurationRequest ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Pipe_Read_Stream_LE ( & ConfigurationRequest ,  sizeof ( ConfigurationRequest ) ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_ACL_DEBUG ( " >> L2CAP Configuration Request " ,  NULL ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_ACL_DEBUG ( " << L2CAP Configuration Request " ,  NULL ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# if (ACL_DEBUG_LEVEL > 1) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_ACL_DEBUG ( " -- Destination Channel: 0x%04X " ,  ConfigurationRequest . DestinationChannel ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# endif 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Pipe_ClearIN ( ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Pipe_Freeze ( ) ; 
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -175,7 +191,7 @@ static inline void Bluetooth_ProcessSignalPacket_ConfigurationRequest(Bluetooth_
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						SignalCommandHeader - > Code              =  BLUETOOTH_SIGNAL_CONFIGURATION_RESPONSE ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						SignalCommandHeader - > Length            =  sizeof ( ConfigurationResponse ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Bluetooth_Channel_t *  ChannelData       =  Bluetooth_GetChannelData ( ConfigurationRequest . DestinationChannel ,  CHANNEL_LOOKUP_BY_DESTINATION ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Bluetooth_Channel_t *  ChannelData       =  Bluetooth_GetChannelData ( ConfigurationRequest . DestinationChannel ,  false ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						if  ( ChannelData  ! =  NULL ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						  ChannelData - > State  =  Channel_Open ; 
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -191,13 +207,106 @@ static inline void Bluetooth_ProcessSignalPacket_ConfigurationRequest(Bluetooth_
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Pipe_Write_Stream_LE ( SignalCommandHeader ,  sizeof ( * SignalCommandHeader ) ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Pipe_Write_Stream_LE ( & ConfigurationResponse ,  sizeof ( ConfigurationResponse ) ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Pipe_ClearOUT ( ) ; 		 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Pipe_ClearOUT ( ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Pipe_Freeze ( ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# if (ACL_DEBUG_LEVEL > 1) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_ACL_DEBUG ( " Packet Sent " ,  NULL ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_ACL_DEBUG ( " -- Connection Handle: 0x%04X " ,  ( ACLPacketHeader - > ConnectionHandle  &  0x0FFF ) ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_ACL_DEBUG ( " -- Data Length: 0x%04X " ,  ACLPacketHeader - > DataLength ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_ACL_DEBUG ( " -- Destination Channel: 0x%04X " ,  DataHeader - > DestinationChannel ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_ACL_DEBUG ( " -- Payload Length: 0x%04X " ,  DataHeader - > PayloadLength ) ; 			
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# endif 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_ACL_DEBUG ( " >> L2CAP Configuration Response " ,  NULL ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					} 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					static  inline  void  Bluetooth_SignalPacket_DisconnectionRequest ( Bluetooth_ACL_Header_t *  ACLPacketHeader , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                                               Bluetooth_DataPacket_Header_t *  DataHeader , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                                               Bluetooth_SignalCommand_Header_t *  SignalCommandHeader ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					{ 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Bluetooth_SignalCommand_DisconnectionRequest_t  DisconnectionRequest ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Pipe_Read_Stream_LE ( & DisconnectionRequest ,  sizeof ( DisconnectionRequest ) ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_ACL_DEBUG ( " << L2CAP Disconnection Request " ,  NULL ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# if (ACL_DEBUG_LEVEL > 1) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_ACL_DEBUG ( " -- Destination Channel: 0x%04X " ,  DisconnectionRequest . DestinationChannel ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_ACL_DEBUG ( " -- Source Channel: 0x%04X " ,  DisconnectionRequest . SourceChannel ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# endif 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Pipe_ClearIN ( ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Pipe_Freeze ( ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Pipe_SelectPipe ( BLUETOOTH_DATA_OUT_PIPE ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Pipe_Unfreeze ( ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Bluetooth_SignalCommand_DisconnectionResponse_t  DisconnectionResponse ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ACLPacketHeader - > DataLength            =  sizeof ( * DataHeader )  +  sizeof ( * SignalCommandHeader )  +  sizeof ( DisconnectionResponse ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						DataHeader - > PayloadLength              =  sizeof ( * SignalCommandHeader )  +  sizeof ( DisconnectionResponse ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						DataHeader - > DestinationChannel         =  BLUETOOTH_CHANNEL_SIGNALING ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						SignalCommandHeader - > Code              =  BLUETOOTH_SIGNAL_DISCONNECTION_RESPONSE ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						SignalCommandHeader - > Length            =  sizeof ( DisconnectionResponse ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Bluetooth_Channel_t *  ChannelData       =  Bluetooth_GetChannelData ( DisconnectionRequest . SourceChannel ,  true ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						if  ( ChannelData  ! =  NULL ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						  ChannelData - > State  =  Channel_Closed ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						DisconnectionResponse . DestinationChannel  =  ChannelData - > LocalNumber ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						DisconnectionResponse . SourceChannel       =  ChannelData - > RemoteNumber ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Pipe_Write_Stream_LE ( ACLPacketHeader ,  sizeof ( * ACLPacketHeader ) ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Pipe_Write_Stream_LE ( DataHeader ,  sizeof ( * DataHeader ) ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Pipe_Write_Stream_LE ( SignalCommandHeader ,  sizeof ( * SignalCommandHeader ) ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Pipe_Write_Stream_LE ( & DisconnectionResponse ,  sizeof ( DisconnectionResponse ) ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Pipe_ClearOUT ( ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Pipe_Freeze ( ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# if (ACL_DEBUG_LEVEL > 1) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_ACL_DEBUG ( " Packet Sent " ,  NULL ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_ACL_DEBUG ( " -- Connection Handle: 0x%04X " ,  ( ACLPacketHeader - > ConnectionHandle  &  0x0FFF ) ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_ACL_DEBUG ( " -- Data Length: 0x%04X " ,  ACLPacketHeader - > DataLength ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_ACL_DEBUG ( " -- Destination Channel: 0x%04X " ,  DataHeader - > DestinationChannel ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_ACL_DEBUG ( " -- Payload Length: 0x%04X " ,  DataHeader - > PayloadLength ) ; 			
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# endif 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_ACL_DEBUG ( " >> L2CAP Disconnection Response " ,  NULL ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# if (ACL_DEBUG_LEVEL > 1) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_ACL_DEBUG ( " -- Source Channel: 0x%04X " ,  DisconnectionResponse . SourceChannel ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_ACL_DEBUG ( " -- Destination Channel: 0x%04X " ,  DisconnectionResponse . DestinationChannel ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# endif 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					} 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					static  inline  void  Bluetooth_SignalPacket_EchoRequest ( Bluetooth_ACL_Header_t *  ACLPacketHeader , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                                      Bluetooth_DataPacket_Header_t *  DataHeader , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                                      Bluetooth_SignalCommand_Header_t *  SignalCommandHeader ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					{ 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_ACL_DEBUG ( " << L2CAP Echo Request " ,  NULL ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Pipe_ClearIN ( ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Pipe_Freeze ( ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Pipe_SelectPipe ( BLUETOOTH_DATA_OUT_PIPE ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Pipe_Unfreeze ( ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ACLPacketHeader - > DataLength            =  sizeof ( * DataHeader )  +  sizeof ( * SignalCommandHeader ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						DataHeader - > PayloadLength              =  sizeof ( * SignalCommandHeader ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						DataHeader - > DestinationChannel         =  BLUETOOTH_CHANNEL_SIGNALING ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						SignalCommandHeader - > Code              =  BLUETOOTH_SIGNAL_ECHO_RESPONSE ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						SignalCommandHeader - > Length            =  0 ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Pipe_Write_Stream_LE ( ACLPacketHeader ,  sizeof ( * ACLPacketHeader ) ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Pipe_Write_Stream_LE ( DataHeader ,  sizeof ( * DataHeader ) ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Pipe_Write_Stream_LE ( SignalCommandHeader ,  sizeof ( * SignalCommandHeader ) ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Pipe_ClearOUT ( ) ; 		
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Pipe_Freeze ( ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# if (ACL_DEBUG_LEVEL > 1) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_ACL_DEBUG ( " Packet Sent " ,  NULL ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_ACL_DEBUG ( " -- Connection Handle: 0x%04X " ,  ( ACLPacketHeader - > ConnectionHandle  &  0x0FFF ) ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_ACL_DEBUG ( " -- Data Length: 0x%04X " ,  ACLPacketHeader - > DataLength ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_ACL_DEBUG ( " -- Destination Channel: 0x%04X " ,  DataHeader - > DestinationChannel ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_ACL_DEBUG ( " -- Payload Length: 0x%04X " ,  DataHeader - > PayloadLength ) ; 			
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# endif 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_ACL_DEBUG ( " >> L2CAP Echo Response " ,  NULL ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}