/* 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_MAX_OPEN_CHANNELS 6\r
\r
- #define CHANNEL_PSM_SERVICEDISCOVERY 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
+ #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