Make bluetooth SDP code correctly unpack the search UUIDs and parameters.
[pub/USBasp.git] / Demos / Host / Incomplete / BluetoothHost / Lib / BluetoothStack.h
index 9a90cff..a97ac08 100644 (file)
        /* Includes: */\r
                #include <LUFA/Drivers/USB/USB.h>\r
                \r
-               #include "BluetoothHost.h"\r
-               \r
        /* Macros: */\r
-               #define BLUETOOTH_DATA_IN_PIPE                   1\r
-               #define BLUETOOTH_DATA_OUT_PIPE                  2\r
-               #define BLUETOOTH_EVENTS_PIPE                    3\r
+               #define BLUETOOTH_DATA_IN_PIPE         1\r
+               #define BLUETOOTH_DATA_OUT_PIPE        2\r
+               #define BLUETOOTH_EVENTS_PIPE          3\r
 \r
-               #define BLUETOOTH_MAX_OPEN_CHANNELS              2\r
-               #define BLUETOOTH_CHANNELNUMBER_BASEOFFSET       0x0040\r
+               #define BLUETOOTH_MAX_OPEN_CHANNELS    6\r
                \r
-               #define CHANNEL_PSM_SERVICEDISCOVERY             0x0001\r
-               #define CHANNEL_PSM_RFCOMM                       0x0003\r
+               #define CHANNEL_PSM_SDP                0x0001\r
+               #define CHANNEL_PSM_UDP                0x0002\r
+               #define CHANNEL_PSM_RFCOMM             0x0003\r
+               #define CHANNEL_PSM_TCP                0x0004\r
+               #define CHANNEL_PSM_IP                 0x0009\r
+               #define CHANNEL_PSM_FTP                0x000A\r
+               #define CHANNEL_PSM_HTTP               0x000C\r
+               #define CHANNEL_PSM_UPNP               0x0010\r
+               #define CHANNEL_PSM_HIDP               0x0011\r
                \r
-               #define MAXIMUM_CHANNEL_MTU                      255\r
+               #define MAXIMUM_CHANNEL_MTU            255\r
                \r
        /* Enums: */\r
+               /** Enum for the possible states for a bluetooth ACL channel. */\r
                enum BT_ChannelStates_t\r
                {\r
-                       Channel_Closed                = 0,\r
-                       Channel_WaitConnect           = 1,\r
-                       Channel_WaitConnectRsp        = 2,\r
-                       Channel_Config_WaitConfig     = 3,\r
-                       Channel_Config_WaitSendConfig = 4,\r
-                       Channel_Config_WaitReqResp    = 5,\r
-                       Channel_Config_WaitResp       = 6,\r
-                       Channel_Config_WaitReq        = 7,\r
-                       Channel_Open                  = 8,\r
-                       Channel_WaitDisconnect        = 9,\r
+                       Channel_Closed                = 0, /**< Channel is closed and inactive. No data may be sent or received. */\r
+                       Channel_WaitConnect           = 1, /**< A connection request has been received, but a response has not been sent. */\r
+                       Channel_WaitConnectRsp        = 2, /**< A connection request has been sent, but a response has not been received. */\r
+                       Channel_Config_WaitConfig     = 3, /**< Channel has been connected, but not yet configured on either end. */\r
+                       Channel_Config_WaitSendConfig = 4, /**< Channel configuration has been received and accepted, but not yet sent. */\r
+                       Channel_Config_WaitReqResp    = 5, /**< Channel configuration has been sent but not responded to, and a configuration\r
+                                                               request from the remote end has not yet been received. */\r
+                       Channel_Config_WaitResp       = 6, /**< Channel configuration has been sent but not accepted, but a configuration request\r
+                                                               from the remote end has been accepted. */\r
+                       Channel_Config_WaitReq        = 7, /**< Channel configuration has been sent and accepted, but a configuration request\r
+                                                               from the remote end has not yet been accepted. */\r
+                       Channel_Open                  = 8, /**< Channel is open and ready to send or receive data */\r
+                       Channel_WaitDisconnect        = 9, /**< A disconnection request has been sent, but not yet acknowledged. */\r
                };\r
 \r
-               enum Endpoint_ControlStream_RW_ErrorCodes_t\r
+               /** Enum for the possible error codes returned by the \ref Bluetooth_SendPacket() function. */\r
+               enum BT_SendPacket_ErrorCodes_t\r
                {\r
-                       BT_SENDPACKET_NoError            = 0,\r
-                       BT_SENDPACKET_NotConnected       = 1,\r
-                       BT_SENDPACKET_ChannelNotOpen     = 2,\r
+                       BT_SENDPACKET_NoError            = 0, /**< The packet was sent sucessfully. */\r
+                       BT_SENDPACKET_NotConnected       = 1, /**< The bluetooth stack is not currently connected to a remote device. */\r
+                       BT_SENDPACKET_ChannelNotOpen     = 2, /**< The given channel is not currently in the Open state. */\r
                };\r
 \r
        /* Type Defines: */\r
+               /** Type define for a Bluetooth ACL channel information structure. This structure contains all the relevent\r
+                *  information on an ACL channel for data transmission and reception by the stack.\r
+                */\r
                typedef struct\r
                {\r
                        uint8_t  State;\r
                        uint16_t RemoteMTU;\r
                } Bluetooth_Channel_t;\r
 \r
+               /** Type define for a Bluetooth device connection information structure. This structure contains all the\r
+                *  information needed to maintain a connection to a remote Bluetooth device via the Bluetooth stack.\r
+                */\r
                typedef struct\r
                {\r
-                       bool                IsConnected;\r
-                       uint16_t            ConnectionHandle;\r
-                       uint8_t             RemoteAddress[6];\r
-                       Bluetooth_Channel_t Channels[BLUETOOTH_MAX_OPEN_CHANNELS];\r
-                       uint8_t             SignallingIdentifier;\r
+                       bool                IsConnected; /**< Indicates if the stack is currently connected to a remote device - if this value is\r
+                                                         *   false, the remaining elements are invalid.\r
+                                                                                         */\r
+                       uint16_t            ConnectionHandle; /**< Connection handle to the remote device, used internally in the stack. */\r
+                       uint8_t             RemoteAddress[6]; /**< Bluetooth device address of the attached remote device. */\r
+                       Bluetooth_Channel_t Channels[BLUETOOTH_MAX_OPEN_CHANNELS]; /**< Channel information structures for the connection. */\r
+                       uint8_t             SignallingIdentifier; /**< Next Signalling Channel unique command sequence identifier. */\r
                } Bluetooth_Connection_t;\r
                \r
+               /** Local Bluetooth device information structure, for the defining of local device characteristics for the Bluetooth stack. */\r
                typedef struct\r
                {\r
-                       uint32_t Class;\r
-                       char     PINCode[16];\r
-                       char     Name[];\r
+                       uint32_t Class; /**< Class of the local device, a mask of DEVICE_CLASS_* masks. */\r
+                       char     PINCode[16]; /**< Pin code required to send or receive in order to authenticate with a remote device. */\r
+                       char     Name[]; /**< Name of the local bluetooth device, up to 248 characters. */\r
                } Bluetooth_Device_t;\r
        \r
        /* Includes: */\r
                void Bluetooth_Stack_Init(void);\r
                void Bluetooth_Stack_USBTask(void);\r
 \r
-               bool                 Bluetooth_ConnectionRequest(uint8_t* RemoteAddress);\r
+               bool                 Bluetooth_ConnectionRequest(const uint8_t* RemoteAddress);\r
                void                 Bluetooth_ConnectionComplete(void);\r
                void                 Bluetooth_DisconnectionComplete(void);\r
-               void                 Bluetooth_PacketReceived(uint16_t* PacketLength, Bluetooth_Channel_t* Channel);\r
-               Bluetooth_Channel_t* Bluetooth_GetChannelData(uint16_t ChannelNumber, bool SearchByRemoteChannel);\r
-               Bluetooth_Channel_t* Bluetooth_OpenChannel(uint16_t PSM);\r
-               void                 Bluetooth_CloseChannel(Bluetooth_Channel_t* Channel);\r
-               uint8_t              Bluetooth_SendPacket(void* Data, uint16_t DataLen, Bluetooth_Channel_t* Channel);\r
+               bool                 Bluetooth_ChannelConnectionRequest(const uint16_t PSM);\r
+               void                 Bluetooth_PacketReceived(void* Data, uint16_t DataLen, Bluetooth_Channel_t* const Channel);\r
+               Bluetooth_Channel_t* Bluetooth_GetChannelData(const uint16_t ChannelNumber, const bool SearchByRemoteChannel);\r
+               Bluetooth_Channel_t* Bluetooth_OpenChannel(const uint16_t PSM);\r
+               void                 Bluetooth_CloseChannel(Bluetooth_Channel_t* const Channel);\r
+               uint8_t              Bluetooth_SendPacket(void* Data, uint16_t DataLen, Bluetooth_Channel_t* const Channel);\r
 \r
        /* External Variables: */\r
                extern Bluetooth_Device_t     Bluetooth_DeviceConfiguration;\r