3      Copyright (C) Dean Camera, 2011. 
   5   dean [at] fourwalledcubicle [dot] com 
  10   Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com) 
  12   Permission to use, copy, modify, distribute, and sell this 
  13   software and its documentation for any purpose is hereby granted 
  14   without fee, provided that the above copyright notice appear in 
  15   all copies and that both that the copyright notice and this 
  16   permission notice and warranty disclaimer appear in supporting 
  17   documentation, and that the name of the author not be used in 
  18   advertising or publicity pertaining to distribution of the 
  19   software without specific, written prior permission. 
  21   The author disclaim all warranties with regard to this 
  22   software, including all implied warranties of merchantability 
  23   and fitness.  In no event shall the author be liable for any 
  24   special, indirect or consequential damages or any damages 
  25   whatsoever resulting from loss of use, data or profits, whether 
  26   in an action of contract, negligence or other tortious action, 
  27   arising out of or in connection with the use or performance of 
  33  *  Header file for RFCOMMControl.c. 
  36 #ifndef _RFCOMM_CONTROL_H_ 
  37 #define _RFCOMM_CONTROL_H_ 
  41                 #include <avr/pgmspace.h> 
  46                 #include <LUFA/Common/Common.h> 
  47                 #include <LUFA/Drivers/Peripheral/Serial.h> 
  49                 #include "BluetoothStack.h" 
  53                 #define RFCOMM_SIGNAL_FC               (1 << 1) 
  54                 #define RFCOMM_SIGNAL_RTC              (1 << 2) 
  55                 #define RFCOMM_SIGNAL_RTR              (1 << 3) 
  56                 #define RFCOMM_SIGNAL_IC               (1 << 6) 
  57                 #define RFCOMM_SIGNAL_DV               (1 << 7) 
  59                 #define RFCOMM_CONFIG_REMOTESIGNALS    (1 << 0) 
  60                 #define RFCOMM_CONFIG_LOCALSIGNALS     (1 << 1) 
  61                 #define RFCOMM_CONFIG_LOCALSIGNALSSENT (1 << 2) 
  62                 #define RFCOMM_CONFIG_ABMMODESET       (1 << 3) 
  65                 enum RFCOMM_Control_Commands_t
 
  67                         RFCOMM_Control_Test                    
= (0x20 >> 2), 
  68                         RFCOMM_Control_FlowControlEnable       
= (0xA0 >> 2), 
  69                         RFCOMM_Control_FlowControlDisable      
= (0x60 >> 2), 
  70                         RFCOMM_Control_ModemStatus             
= (0xE0 >> 2), 
  71                         RFCOMM_Control_RemotePortNegotiation   
= (0x90 >> 2), 
  72                         RFCOMM_Control_RemoteLineStatus        
= (0x50 >> 2), 
  73                         RFCOMM_Control_DLCParameterNegotiation 
= (0x80 >> 2), 
  74                         RFCOMM_Control_NonSupportedCommand     
= (0x10 >> 2), 
  82                         unsigned char DLCI 
: 6; 
  87                         RFCOMM_Address_t Address
; 
  95                         unsigned char Command 
: 6; 
 101                         unsigned char    FrameType        
: 4; 
 102                         unsigned char    ConvergenceLayer 
: 4; 
 104                         uint8_t          ACKTimerTicks
; 
 105                         uint16_t         MaximumFrameSize
; 
 106                         uint8_t          MaxRetransmissions
; 
 107                         uint8_t          RecoveryWindowSize
; 
 108                 } RFCOMM_DPN_Parameters_t
; 
 112                         RFCOMM_Address_t Channel
; 
 115                 } RFCOMM_MSC_Parameters_t
; 
 117         /* Function Prototypes: */ 
 118                 void RFCOMM_ProcessControlCommand(const uint8_t* Command
, 
 119                                                   Bluetooth_Channel_t
* const Channel
); 
 121                 #if defined(INCLUDE_FROM_RFCOMM_CONTROL_C) 
 122                         static void RFCOMM_ProcessTestCommand(const RFCOMM_Command_t
* const CommandHeader
, 
 123                                                               const uint8_t CommandDataLen
, 
 124                                                               const uint8_t* CommandData
, 
 125                                                               Bluetooth_Channel_t
* const ACLChannel
); 
 126                         static void RFCOMM_ProcessFCECommand(const RFCOMM_Command_t
* const CommandHeader
, 
 127                                                              const uint8_t* CommandData
, 
 128                                                              Bluetooth_Channel_t
* const ACLChannel
); 
 129                         static void RFCOMM_ProcessFCDCommand(const RFCOMM_Command_t
* const CommandHeader
, 
 130                                                              const uint8_t* CommandData
, 
 131                                                              Bluetooth_Channel_t
* const ACLChannel
); 
 132                         static void RFCOMM_ProcessMSCCommand(const RFCOMM_Command_t
* const CommandHeader
, 
 133                                                              const uint8_t CommandDataLen
, 
 134                                                              const uint8_t* CommandData
, 
 135                                                              Bluetooth_Channel_t
* const ACLChannel
); 
 136                         static void RFCOMM_ProcessRPNCommand(const RFCOMM_Command_t
* const CommandHeader
, 
 137                                                              const uint8_t* CommandData
, 
 138                                                              Bluetooth_Channel_t
* const ACLChannel
); 
 139                         static void RFCOMM_ProcessRLSCommand(const RFCOMM_Command_t
* const CommandHeader
, 
 140                                                              const uint8_t* CommandData
, 
 141                                                              Bluetooth_Channel_t
* const ACLChannel
); 
 142                         static void RFCOMM_ProcessDPNCommand(const RFCOMM_Command_t
* const CommandHeader
, 
 143                                                              const uint8_t* CommandData
, 
 144                                                              Bluetooth_Channel_t
* const ACLChannel
);