#include <avr/io.h>\r
#include <string.h>\r
#include <stdbool.h>\r
+ #include <stdio.h>\r
\r
#include <LUFA/Drivers/USB/USB.h>\r
+ #include <LUFA/Drivers/Peripheral/SerialStream.h>\r
\r
#include "BluetoothStack.h"\r
\r
/* Macros: */\r
- #define BLUETOOTH_CHANNEL_SIGNALING 0x0001\r
- #define BLUETOOTH_CHANNEL_CONNECTIONLESS 0x0002\r
+ #define BT_ACL_DEBUG(l, s, ...) do { if (ACL_DEBUG_LEVEL >= l) printf_P(PSTR("(ACL) " s "\r\n"), ##__VA_ARGS__); } while (0)\r
+ #define ACL_DEBUG_LEVEL 0\r
+\r
+ #define BT_CHANNELNUMBER_BASEOFFSET 0x0040\r
+\r
+ #define BT_CHANNEL_SIGNALING 0x0001\r
+ #define BT_CHANNEL_CONNECTIONLESS 0x0002\r
\r
- #define BLUETOOTH_SIGNAL_CONNECTION_REQUEST 0x02\r
- #define BLUETOOTH_SIGNAL_CONNECTION_RESPONSE 0x03\r
- #define BLUETOOTH_SIGNAL_CONFIGURATION_REQUEST 0x04\r
- #define BLUETOOTH_SIGNAL_CONFIGURATION_RESPONSE 0x05\r
- #define BLUETOOTH_SIGNAL_INFORMATION_REQUEST 0x0A\r
+ #define BT_SIGNAL_COMMAND_REJECT 0x01\r
+ #define BT_SIGNAL_CONNECTION_REQUEST 0x02\r
+ #define BT_SIGNAL_CONNECTION_RESPONSE 0x03\r
+ #define BT_SIGNAL_CONFIGURATION_REQUEST 0x04\r
+ #define BT_SIGNAL_CONFIGURATION_RESPONSE 0x05\r
+ #define BT_SIGNAL_DISCONNECTION_REQUEST 0x06\r
+ #define BT_SIGNAL_DISCONNECTION_RESPONSE 0x07\r
+ #define BT_SIGNAL_ECHO_REQUEST 0x08\r
+ #define BT_SIGNAL_ECHO_RESPONSE 0x09\r
+ #define BT_SIGNAL_INFORMATION_REQUEST 0x0A\r
+ #define BT_SIGNAL_INFORMATION_RESPONSE 0x0B\r
\r
- #define BLUETOOTH_CONNECTION_SUCCESSFUL 0x0000\r
- #define BLUETOOTH_CONNECTION_REFUSED_RESOURCES 0x0004\r
+ #define BT_INFOREQ_MTU 0x0001\r
+ #define BT_INFOREQ_EXTENDEDFEATURES 0x0002\r
\r
- #define BLUETOOTH_CONFIGURATION_SUCCESSFUL 0x0000\r
- #define BLUETOOTH_CONFIGURATION_REJECTED 0x0002\r
- #define BLUETOOTH_CONFIGURATION_UNKNOWNOPTIONS 0x0003\r
-\r
+ #define BT_INFORMATION_SUCCESSFUL 0x0000\r
+ #define BT_INFORMATION_NOTSUPPORTED 0x0001\r
+ \r
+ #define BT_CONNECTION_SUCCESSFUL 0x0000\r
+ #define BT_CONNECTION_REFUSED_PSM 0x0002\r
+ #define BT_CONNECTION_REFUSED_RESOURCES 0x0004\r
+ \r
+ #define BT_CONFIGURATION_SUCCESSFUL 0x0000\r
+ #define BT_CONFIGURATION_REJECTED 0x0002\r
+ #define BT_CONFIGURATION_UNKNOWNOPTIONS 0x0003\r
+ \r
+ #define BT_CONFIG_OPTION_MTU 1\r
+ \r
+ #define BT_ACL_FIRST_AUTOFLUSH (1 << 13)\r
\r
/* Type Defines: */\r
typedef struct\r
{\r
uint16_t ConnectionHandle;\r
uint16_t DataLength;\r
- } Bluetooth_ACL_Header_t;\r
+ } BT_ACL_Header_t;\r
\r
typedef struct\r
{\r
uint16_t PayloadLength;\r
uint16_t DestinationChannel;\r
- } Bluetooth_DataPacket_Header_t;\r
+ } BT_DataPacket_Header_t;\r
\r
typedef struct\r
{\r
uint8_t Code;\r
uint8_t Identifier;\r
uint16_t Length;\r
- } Bluetooth_SignalCommand_Header_t;\r
+ } BT_Signal_Header_t;\r
\r
typedef struct\r
{\r
uint16_t PSM;\r
uint16_t SourceChannel;\r
- } Bluetooth_SignalCommand_ConnectionRequest_t;\r
+ } BT_Signal_ConnectionReq_t;\r
\r
typedef struct\r
{\r
uint16_t SourceChannel;\r
uint16_t Result;\r
uint16_t Status;\r
- } Bluetooth_SignalCommand_ConnectionResponse_t;\r
+ } BT_Signal_ConnectionResp_t;\r
+\r
+ typedef struct\r
+ {\r
+ uint16_t DestinationChannel;\r
+ uint16_t SourceChannel;\r
+ } BT_Signal_DisconnectionReq_t;\r
\r
typedef struct\r
{\r
uint16_t DestinationChannel;\r
+ uint16_t SourceChannel;\r
+ } BT_Signal_DisconnectionResp_t; \r
+\r
+ typedef struct\r
+ {\r
+ uint16_t DestinationChannel;\r
uint16_t Flags;\r
- uint8_t Options[];\r
- } Bluetooth_SignalCommand_ConfigurationRequest_t;\r
+ } BT_Signal_ConfigurationReq_t;\r
\r
typedef struct\r
{\r
uint16_t SourceChannel;\r
uint16_t Flags;\r
uint16_t Result;\r
- uint8_t Config;\r
- } Bluetooth_SignalCommand_ConfigurationResponse_t;\r
+ } BT_Signal_ConfigurationResp_t;\r
+\r
+ typedef struct\r
+ {\r
+ uint16_t InfoType;\r
+ } BT_Signal_InformationReq_t;\r
\r
- /* Function Prototypes: */\r
- void Bluetooth_ProcessACLPackets(void);\r
+ typedef struct\r
+ {\r
+ uint16_t InfoType;\r
+ uint16_t Result;\r
+ } BT_Signal_InformationResp_t;\r
+ \r
+ typedef struct\r
+ {\r
+ uint8_t Type;\r
+ uint8_t Length;\r
+ } BT_Config_Option_Header_t;\r
\r
+ /* Function Prototypes: */\r
+ void Bluetooth_ACLTask(void);\r
+ \r
#if defined(INCLUDE_FROM_BLUETOOTH_ACLPACKETS_C)\r
- static inline void Bluetooth_ProcessSignalPacket_ConnectionRequest(Bluetooth_ACL_Header_t* ACLPacketHeader,\r
- Bluetooth_DataPacket_Header_t* DataHeader,\r
- Bluetooth_SignalCommand_Header_t* SignalCommandHeader);\r
- static inline void Bluetooth_ProcessSignalPacket_ConfigurationRequest(Bluetooth_ACL_Header_t* ACLPacketHeader,\r
- Bluetooth_DataPacket_Header_t* DataHeader,\r
- Bluetooth_SignalCommand_Header_t* SignalCommandHeader);\r
+ static void Bluetooth_ProcessIncommingACLPackets(void);\r
+\r
+ static inline void Bluetooth_Signal_ConnectionReq(const BT_Signal_Header_t* const SignalCommandHeader);\r
+ static inline void Bluetooth_Signal_ConnectionResp(const BT_Signal_Header_t* const SignalCommandHeader);\r
+ static inline void Bluetooth_Signal_ConfigurationReq(const BT_Signal_Header_t* const SignalCommandHeader);\r
+ static inline void Bluetooth_Signal_ConfigurationResp(const BT_Signal_Header_t* const SignalCommandHeader);\r
+ static inline void Bluetooth_Signal_DisconnectionReq(const BT_Signal_Header_t* const SignalCommandHeader);\r
+ static inline void Bluetooth_Signal_DisconnectionResp(const BT_Signal_Header_t* const SignalCommandHeader);\r
+ static inline void Bluetooth_Signal_EchoReq(const BT_Signal_Header_t* const SignalCommandHeader);\r
+ static inline void Bluetooth_Signal_InformationReq(const BT_Signal_Header_t* const SignalCommandHeader);\r
#endif\r
\r
#endif\r