@ -73,8 +73,13 @@ void RFCOMM_Initialize(void)
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						  RFCOMM_Channels [ i ] . State  =  RFCOMM_Channel_Closed ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					} 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					void  RFCOMM_ServiceChannels ( Bluetooth_Channel_t *  const  Bluetooth Channel) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					void  RFCOMM_ServiceChannels ( Bluetooth_Channel_t *  const  ACL Channel) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					{ 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						/* Abort if the RFCOMM ACL channel is not currently open */ 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						if  ( ( ACLChannel  = =  NULL )  | |  ( ACLChannel - > State  ! =  BT_Channel_Open ) ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						  return ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						/* Loop through each of the RFCOMM channels, send any required RFCOMM control commands */ 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						for  ( uint8_t  i  =  0 ;  i  <  RFCOMM_MAX_OPEN_CHANNELS ;  i + + ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						{ 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							RFCOMM_Channel_t *  RFCOMMChannel  =  & RFCOMM_Channels [ i ] ; 
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -86,7 +91,7 @@ void RFCOMM_ServiceChannels(Bluetooth_Channel_t* const BluetoothChannel)
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								{ 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
									/* Indicate that the local signals have been sent, transmit them to the remote device */ 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
									RFCOMMChannel - > ConfigFlags  | =  RFCOMM_CONFIG_LOCALSIGNALSSENT ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
									RFCOMM_SendChannelSignals ( RFCOMMChannel ,  Bluetooth Channel) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
									RFCOMM_SendChannelSignals ( RFCOMMChannel ,  ACL Channel) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								} 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								/* If signals have been configured in both directions, progress to the open state */ 
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -100,7 +105,7 @@ void RFCOMM_ServiceChannels(Bluetooth_Channel_t* const BluetoothChannel)
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						} 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					} 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					void  RFCOMM_ProcessPacket ( void *  Data ,  Bluetooth_Channel_t *  const   Channel) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					void  RFCOMM_ProcessPacket ( void *  Data ,  Bluetooth_Channel_t *  const  ACL Channel) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					{ 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						const  RFCOMM_Header_t *  FrameHeader   =  ( const  RFCOMM_Header_t * ) Data ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						const  uint8_t *          FrameData     =  ( const  uint8_t * ) Data  +  sizeof ( RFCOMM_Header_t ) ; 
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -110,19 +115,19 @@ void RFCOMM_ProcessPacket(void* Data, Bluetooth_Channel_t* const Channel)
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						switch  ( FrameHeader - > Control  &  ~ FRAME_POLL_FINAL ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						{ 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							case  RFCOMM_Frame_DM : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								RFCOMM_ProcessDM ( & FrameHeader - > Address ,   Channel) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								RFCOMM_ProcessDM ( & FrameHeader - > Address ,  ACL Channel) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								break ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							case  RFCOMM_Frame_DISC : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								RFCOMM_ProcessDISC ( & FrameHeader - > Address ,   Channel) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								RFCOMM_ProcessDISC ( & FrameHeader - > Address ,  ACL Channel) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								break ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							case  RFCOMM_Frame_SABM : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								RFCOMM_ProcessSABM ( & FrameHeader - > Address ,   Channel) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								RFCOMM_ProcessSABM ( & FrameHeader - > Address ,  ACL Channel) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								break ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							case  RFCOMM_Frame_UA : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								RFCOMM_ProcessUA ( & FrameHeader - > Address ,   Channel) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								RFCOMM_ProcessUA ( & FrameHeader - > Address ,  ACL Channel) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								break ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							case  RFCOMM_Frame_UIH : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								RFCOMM_ProcessUIH ( & FrameHeader - > Address ,  FrameDataLen ,  FrameData ,   Channel) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								RFCOMM_ProcessUIH ( & FrameHeader - > Address ,  FrameDataLen ,  FrameData ,  ACL Channel) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								break ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							default : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								BT_RFCOMM_DEBUG ( 1 ,  " << Unknown Frame Received " ) ; 
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -130,7 +135,7 @@ void RFCOMM_ProcessPacket(void* Data, Bluetooth_Channel_t* const Channel)
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						} 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					} 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					void  RFCOMM_SendChannelSignals ( const  RFCOMM_Channel_t *  const  RFCOMMChannel ,  Bluetooth_Channel_t *  const  Bluetooth Channel) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					void  RFCOMM_SendChannelSignals ( const  RFCOMM_Channel_t *  const  RFCOMMChannel ,  Bluetooth_Channel_t *  const  ACL Channel) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					{ 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_RFCOMM_DEBUG ( 1 ,  " >> MSC Command " ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_RFCOMM_DEBUG ( 2 ,  " -- DLCI 0x%02X " ,  RFCOMMChannel - > DLCI ) ; 
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -149,11 +154,11 @@ void RFCOMM_SendChannelSignals(const RFCOMM_Channel_t* const RFCOMMChannel, Blue
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						MSCommand . Params . BreakSignal  =  RFCOMMChannel - > Local . BreakSignal ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						/* Send the MSC command to the remote device */ 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						RFCOMM_SendFrame ( RFCOMM_CONTROL_DLCI ,  true ,  RFCOMM_Frame_UIH ,  sizeof ( MSCommand ) ,  & MSCommand ,  Bluetooth Channel) ; 	
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						RFCOMM_SendFrame ( RFCOMM_CONTROL_DLCI ,  true ,  RFCOMM_Frame_UIH ,  sizeof ( MSCommand ) ,  & MSCommand ,  ACL Channel) ; 	
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					} 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					void  RFCOMM_SendData ( const  uint16_t  DataLen ,  const  uint8_t *  Data ,  const  RFCOMM_Channel_t *  const  RFCOMMChannel , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                     Bluetooth_Channel_t *  const  Bluetooth Channel) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                     Bluetooth_Channel_t *  const  ACL Channel) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					{ 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						if  ( RFCOMMChannel - > State  ! =  RFCOMM_Channel_Open ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						  return ; 
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -162,7 +167,7 @@ void RFCOMM_SendData(const uint16_t DataLen, const uint8_t* Data, const RFCOMM_C
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_RFCOMM_DEBUG ( 2 ,  " -- DLCI 0x%02X " ,  RFCOMMChannel - > DLCI ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						/* Send the MSC command to the remote device */ 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						RFCOMM_SendFrame ( RFCOMMChannel - > DLCI ,  false ,  RFCOMM_Frame_UIH ,  DataLen ,  Data ,  Bluetooth Channel) ; 		
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						RFCOMM_SendFrame ( RFCOMMChannel - > DLCI ,  false ,  RFCOMM_Frame_UIH ,  DataLen ,  Data ,  ACL Channel) ; 		
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					} 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					RFCOMM_Channel_t *  RFCOMM_GetFreeChannelEntry ( const  uint8_t  DLCI ) 
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -232,7 +237,7 @@ uint16_t RFCOMM_GetVariableFieldValue(const uint8_t** BufferPos)
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					} 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					void  RFCOMM_SendFrame ( const  uint8_t  DLCI ,  const  bool  CommandResponse ,  const  uint8_t  Control ,  const  uint16_t  DataLen , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                      const  void *  Data ,  Bluetooth_Channel_t *  const   Channel) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                      const  void *  Data ,  Bluetooth_Channel_t *  const  ACL Channel) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					{ 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						struct 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						{ 
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -269,7 +274,7 @@ void RFCOMM_SendFrame(const uint8_t DLCI, const bool CommandResponse, const uint
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ResponsePacket . FCS  =  RFCOMM_GetFCSValue ( & ResponsePacket ,  CRCLength ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						/* Send the completed response packet to the sender */ 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Bluetooth_SendPacket ( & ResponsePacket ,  sizeof ( ResponsePacket ) ,   Channel) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						Bluetooth_SendPacket ( & ResponsePacket ,  sizeof ( ResponsePacket ) ,  ACL Channel) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					} 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					static  uint8_t  RFCOMM_GetFCSValue ( const  void *  FrameStart ,  uint8_t  Length ) 
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -278,18 +283,18 @@ static uint8_t RFCOMM_GetFCSValue(const void* FrameStart, uint8_t Length)
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						/* Calculate new Frame CRC value via the given data bytes and the CRC table */ 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						for  ( uint8_t  i  =  0 ;  i  <  Length ;  i + + ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						  FCS  =  pgm_read_byte ( & CRC8_Table [ FCS  ^  ( ( uint8_t * ) FrameStart ) [ i ] ] ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						  FCS  =  pgm_read_byte ( & CRC8_Table [ FCS  ^  ( ( const  uint8_t * ) FrameStart ) [ i ] ] ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						return  ~ FCS ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					} 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					static  void  RFCOMM_ProcessDM ( const  RFCOMM_Address_t *  const  FrameAddress ,  Bluetooth_Channel_t *  const   Channel) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					static  void  RFCOMM_ProcessDM ( const  RFCOMM_Address_t *  const  FrameAddress ,  Bluetooth_Channel_t *  const  ACL Channel) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					{ 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_RFCOMM_DEBUG ( 1 ,  " << DM Received " ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_RFCOMM_DEBUG ( 2 ,  " -- DLCI 0x%02X " ,  FrameAddress - > DLCI ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					} 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					static  void  RFCOMM_ProcessDISC ( const  RFCOMM_Address_t *  const  FrameAddress ,  Bluetooth_Channel_t *  const   Channel) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					static  void  RFCOMM_ProcessDISC ( const  RFCOMM_Address_t *  const  FrameAddress ,  Bluetooth_Channel_t *  const  ACL Channel) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					{ 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_RFCOMM_DEBUG ( 1 ,  " << DISC Received " ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_RFCOMM_DEBUG ( 2 ,  " -- DLCI 0x%02X " ,  FrameAddress - > DLCI ) ; 
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -301,10 +306,10 @@ static void RFCOMM_ProcessDISC(const RFCOMM_Address_t* const FrameAddress, Bluet
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						  RFCOMMChannel - > State  =  RFCOMM_Channel_Closed ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_RFCOMM_DEBUG ( 1 ,  " >> UA Sent " ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						RFCOMM_SendFrame ( FrameAddress - > DLCI ,  true ,  ( RFCOMM_Frame_UA  |  FRAME_POLL_FINAL ) ,  0 ,  NULL ,   Channel) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						RFCOMM_SendFrame ( FrameAddress - > DLCI ,  true ,  ( RFCOMM_Frame_UA  |  FRAME_POLL_FINAL ) ,  0 ,  NULL ,  ACL Channel) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					} 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					static  void  RFCOMM_ProcessSABM ( const  RFCOMM_Address_t *  const  FrameAddress ,  Bluetooth_Channel_t *  const   Channel) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					static  void  RFCOMM_ProcessSABM ( const  RFCOMM_Address_t *  const  FrameAddress ,  Bluetooth_Channel_t *  const  ACL Channel) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					{ 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_RFCOMM_DEBUG ( 1 ,  " << SABM Received " ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_RFCOMM_DEBUG ( 2 ,  " -- DLCI 0x%02X " ,  FrameAddress - > DLCI ) ; 
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -314,7 +319,7 @@ static void RFCOMM_ProcessSABM(const RFCOMM_Address_t* const FrameAddress, Bluet
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							BT_RFCOMM_DEBUG ( 1 ,  " >> UA Sent " ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							/* Free channel found, or request was to the control channel - accept SABM by sending a UA frame */ 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							RFCOMM_SendFrame ( FrameAddress - > DLCI ,  true ,  ( RFCOMM_Frame_UA  |  FRAME_POLL_FINAL ) ,  0 ,  NULL ,   Channel) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							RFCOMM_SendFrame ( FrameAddress - > DLCI ,  true ,  ( RFCOMM_Frame_UA  |  FRAME_POLL_FINAL ) ,  0 ,  NULL ,  ACL Channel) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							return ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						} 
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -332,29 +337,29 @@ static void RFCOMM_ProcessSABM(const RFCOMM_Address_t* const FrameAddress, Bluet
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							BT_RFCOMM_DEBUG ( 1 ,  " >> UA Sent " ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							/* Free channel found, or request was to the control channel - accept SABM by sending a UA frame */ 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							RFCOMM_SendFrame ( FrameAddress - > DLCI ,  true ,  ( RFCOMM_Frame_UA  |  FRAME_POLL_FINAL ) ,  0 ,  NULL ,   Channel) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							RFCOMM_SendFrame ( FrameAddress - > DLCI ,  true ,  ( RFCOMM_Frame_UA  |  FRAME_POLL_FINAL ) ,  0 ,  NULL ,  ACL Channel) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						} 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						else 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						{ 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							BT_RFCOMM_DEBUG ( 1 ,  " >> DM Sent " ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							/* No free channel in the multiplexer - decline the SABM by sending a DM frame */ 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							RFCOMM_SendFrame ( FrameAddress - > DLCI ,  true ,  ( RFCOMM_Frame_DM  |  FRAME_POLL_FINAL ) ,  0 ,  NULL ,   Channel) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							RFCOMM_SendFrame ( FrameAddress - > DLCI ,  true ,  ( RFCOMM_Frame_DM  |  FRAME_POLL_FINAL ) ,  0 ,  NULL ,  ACL Channel) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						} 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					} 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					static  void  RFCOMM_ProcessUA ( const  RFCOMM_Address_t *  const  FrameAddress ,  Bluetooth_Channel_t *  const   Channel) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					static  void  RFCOMM_ProcessUA ( const  RFCOMM_Address_t *  const  FrameAddress ,  Bluetooth_Channel_t *  const  ACL Channel) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					{ 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_RFCOMM_DEBUG ( 1 ,  " << UA Received " ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						BT_RFCOMM_DEBUG ( 2 ,  " -- DLCI 0x%02X " ,  FrameAddress - > DLCI ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					} 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					static  void  RFCOMM_ProcessUIH ( const  RFCOMM_Address_t *  const  FrameAddress ,  const  uint16_t  FrameLength ,  
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                              const  uint8_t *  FrameData ,  Bluetooth_Channel_t *  const   Channel) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                              const  uint8_t *  FrameData ,  Bluetooth_Channel_t *  const  ACL Channel) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					{ 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						if  ( FrameAddress - > DLCI  = =  RFCOMM_CONTROL_DLCI ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						{ 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							RFCOMM_ProcessControlCommand ( FrameData ,   Channel) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							RFCOMM_ProcessControlCommand ( FrameData ,  ACL Channel) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							return ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						}