Update UC3 platform driver support to use the bitmasks defined in the header files...
[pub/USBasp.git] / Demos / Host / Incomplete / BluetoothHost / Lib / BluetoothStack.h
index 060f4ff..8e515a5 100644 (file)
@@ -1,21 +1,21 @@
 /*
              LUFA Library
-     Copyright (C) Dean Camera, 2010.
-              
+     Copyright (C) Dean Camera, 2011.
+
   dean [at] fourwalledcubicle [dot] com
-      www.fourwalledcubicle.com
+           www.lufa-lib.org
 */
 
 /*
-  Copyright 2010  Dean Camera (dean [at] fourwalledcubicle [dot] com)
+  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)
 
-  Permission to use, copy, modify, distribute, and sell this 
+  Permission to use, copy, modify, distribute, and sell this
   software and its documentation for any purpose is hereby granted
-  without fee, provided that the above copyright notice appear in 
+  without fee, provided that the above copyright notice appear in
   all copies and that both that the copyright notice and this
-  permission notice and warranty disclaimer appear in supporting 
-  documentation, and that the name of the author not be used in 
-  advertising or publicity pertaining to distribution of the 
+  permission notice and warranty disclaimer appear in supporting
+  documentation, and that the name of the author not be used in
+  advertising or publicity pertaining to distribution of the
   software without specific, written prior permission.
 
   The author disclaim all warranties with regard to this
 
        /* Includes: */
                #include <LUFA/Drivers/USB/USB.h>
-               
-       /* Macros: */
-               #define BLUETOOTH_DATA_IN_PIPE         1
-               #define BLUETOOTH_DATA_OUT_PIPE        2
-               #define BLUETOOTH_EVENTS_PIPE          3
 
+               #include "../ConfigDescriptor.h"
+
+       /* Macros: */
                #define BLUETOOTH_MAX_OPEN_CHANNELS    6
-               
+
                #define CHANNEL_PSM_SDP                0x0001
                #define CHANNEL_PSM_UDP                0x0002
                #define CHANNEL_PSM_RFCOMM             0x0003
                #define CHANNEL_PSM_HTTP               0x000C
                #define CHANNEL_PSM_UPNP               0x0010
                #define CHANNEL_PSM_HIDP               0x0011
-               
+
                #define CHANNEL_SEARCH_LOCALNUMBER     0
                #define CHANNEL_SEARCH_REMOTENUMBER    1
                #define CHANNEL_SEARCH_PSM             2
-               
+
                #define MAXIMUM_CHANNEL_MTU            255
-               
+
        /* Enums: */
                /** Enum for the possible states for a Bluetooth ACL channel. */
                enum BT_ChannelStates_t
                {
-                       Channel_Closed                = 0, /**< Channel is closed and inactive. No data may be sent or received. */
-                       Channel_WaitConnect           = 1, /**< A connection request has been received, but a response has not been sent. */
-                       Channel_WaitConnectRsp        = 2, /**< A connection request has been sent, but a response has not been received. */
-                       Channel_Config_WaitConfig     = 3, /**< Channel has been connected, but not yet configured on either end. */
-                       Channel_Config_WaitSendConfig = 4, /**< Channel configuration has been received and accepted, but not yet sent. */
-                       Channel_Config_WaitReqResp    = 5, /**< Channel configuration has been sent but not responded to, and a configuration
-                                                               request from the remote end has not yet been received. */
-                       Channel_Config_WaitResp       = 6, /**< Channel configuration has been sent but not accepted, but a configuration request
-                                                               from the remote end has been accepted. */
-                       Channel_Config_WaitReq        = 7, /**< Channel configuration has been sent and accepted, but a configuration request
-                                                               from the remote end has not yet been accepted. */
-                       Channel_Open                  = 8, /**< Channel is open and ready to send or receive data */
-                       Channel_WaitDisconnect        = 9, /**< A disconnection request has been sent, but not yet acknowledged. */
+                       BT_Channel_Closed                = 0, /**< Channel is closed and inactive. No data may be sent or received. */
+                       BT_Channel_WaitConnect           = 1, /**< A connection request has been received, but a response has not been sent. */
+                       BT_Channel_WaitConnectRsp        = 2, /**< A connection request has been sent, but a response has not been received. */
+                       BT_Channel_Config_WaitConfig     = 3, /**< Channel has been connected, but not yet configured on either end. */
+                       BT_Channel_Config_WaitSendConfig = 4, /**< Channel configuration has been received and accepted, but not yet sent. */
+                       BT_Channel_Config_WaitReqResp    = 5, /**< Channel configuration has been sent but not responded to, and a configuration
+                                                              *   request from the remote end has not yet been received.
+                                                              */
+                       BT_Channel_Config_WaitResp       = 6, /**< Channel configuration has been sent but not accepted, but a configuration request
+                                                              *   from the remote end has been accepted.
+                                                              */
+                       BT_Channel_Config_WaitReq        = 7, /**< Channel configuration has been sent and accepted, but a configuration request
+                                                              *   from the remote end has not yet been accepted.
+                                                              */
+                       BT_Channel_Open                  = 8, /**< Channel is open and ready to send or receive data */
+                       BT_Channel_WaitDisconnect        = 9, /**< A disconnection request has been sent, but not yet acknowledged. */
                };
 
                /** Enum for the possible error codes returned by the \ref Bluetooth_SendPacket() function. */
                enum BT_SendPacket_ErrorCodes_t
                {
-                       BT_SENDPACKET_NoError            = 0, /**< The packet was sent sucessfully. */
+                       BT_SENDPACKET_NoError            = 0, /**< The packet was sent successfully. */
                        BT_SENDPACKET_NotConnected       = 1, /**< The Bluetooth stack is not currently connected to a remote device. */
                        BT_SENDPACKET_ChannelNotOpen     = 2, /**< The given channel is not currently in the Open state. */
                };
 
        /* Type Defines: */
-               /** Type define for a Bluetooth ACL channel information structure. This structure contains all the relevent
+               /** Type define for a Bluetooth ACL channel information structure. This structure contains all the relevant
                 *  information on an ACL channel for data transmission and reception by the stack.
                 */
                typedef struct
                        uint16_t            ConnectionHandle; /**< Connection handle to the remote device, used internally in the stack. */
                        uint8_t             RemoteAddress[6]; /**< Bluetooth device address of the attached remote device. */
                        Bluetooth_Channel_t Channels[BLUETOOTH_MAX_OPEN_CHANNELS]; /**< Channel information structures for the connection. */
-                       uint8_t             SignallingIdentifier; /**< Next Signalling Channel unique command sequence identifier. */
+                       uint8_t             SignalingIdentifier; /**< Next Signaling Channel unique command sequence identifier. */
                } Bluetooth_Connection_t;
-               
+
                /** Local Bluetooth device information structure, for the defining of local device characteristics for the Bluetooth stack. */
                typedef struct
                {
                        char     PINCode[16]; /**< Pin code required to send or receive in order to authenticate with a remote device. */
                        char     Name[]; /**< Name of the local Bluetooth device, up to 248 characters. */
                } Bluetooth_Device_t;
-               
+
                /** Bluetooth stack state information structure, for the containment of the Bluetooth stack state. The values in
                 *  this structure are set by the Bluetooth stack internally, and should all be treated as read only by the user
                 *  application.
                                                */
                        uint8_t LocalBDADDR[6]; /**< Local Bluetooth adapter's BDADDR, valid when the stack is fully initialized. */
                } Bluetooth_Stack_State_t;
-       
+
        /* Includes: */
                #include "BluetoothHCICommands.h"
-               #include "BluetoothACLPackets.h"                
-               
-       /* Function Prototypes: */              
+               #include "BluetoothACLPackets.h"
+
+       /* Function Prototypes: */
                void Bluetooth_Stack_Init(void);
                void Bluetooth_Stack_USBTask(void);
 
                void                 Bluetooth_ConnectionComplete(void);
                void                 Bluetooth_DisconnectionComplete(void);
                bool                 Bluetooth_ChannelConnectionRequest(const uint16_t PSM);
-               void                 Bluetooth_PacketReceived(void* Data, uint16_t DataLen, Bluetooth_Channel_t* const Channel);
-               Bluetooth_Channel_t* Bluetooth_GetChannelData(const uint16_t SearchValue, const uint8_t SearchKey);
+               void                 Bluetooth_PacketReceived(void* Data, uint16_t DataLen,
+                                                             Bluetooth_Channel_t* const ACLChannel);
+               void                 Bluetooth_ChannelOpened(Bluetooth_Channel_t* const ACLChannel);
+
+               Bluetooth_Channel_t* Bluetooth_GetChannelData(const uint16_t SearchValue,
+                                                             const uint8_t SearchKey);
                Bluetooth_Channel_t* Bluetooth_OpenChannel(const uint16_t PSM);
-               void                 Bluetooth_CloseChannel(Bluetooth_Channel_t* const Channel);
-               uint8_t              Bluetooth_SendPacket(void* Data, uint16_t DataLen, Bluetooth_Channel_t* const Channel);
+               void                 Bluetooth_CloseChannel(Bluetooth_Channel_t* const ACLChannel);
+               uint8_t              Bluetooth_SendPacket(void* Data,
+                                                         uint16_t DataLen,
+                                                         Bluetooth_Channel_t* const ACLChannel);
 
        /* External Variables: */
                extern Bluetooth_Device_t      Bluetooth_DeviceConfiguration;
                extern Bluetooth_Stack_State_t Bluetooth_State;
 
 #endif
+