#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 BT_ACL_DEBUG(s, ...) printf_P(PSTR("(ACL) " s "\r\n"), __VA_ARGS__)\r
- #define ACL_DEBUG_LEVEL 1\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 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_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 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
- uint8_t Bluetooth_SendPacket(uint8_t* Data, uint16_t DataLen, Bluetooth_Channel_t* Channel);\r
\r
#if defined(INCLUDE_FROM_BLUETOOTH_ACLPACKETS_C)\r
- static void Bluetooth_ProcessACLPackets(void);\r
-\r
- static inline void Bluetooth_Signal_ConnectionReq(BT_ACL_Header_t* ACLPacketHeader,\r
- BT_DataPacket_Header_t* DataHeader,\r
- BT_Signal_Header_t* SignalCommandHeader);\r
- static inline void Bluetooth_Signal_EchoReq(BT_ACL_Header_t* ACLPacketHeader,\r
- BT_DataPacket_Header_t* DataHeader,\r
- BT_Signal_Header_t* SignalCommandHeader);\r
- static inline void Bluetooth_Signal_ConfigurationReq(BT_ACL_Header_t* ACLPacketHeader,\r
- BT_DataPacket_Header_t* DataHeader,\r
- BT_Signal_Header_t* SignalCommandHeader);\r
- static inline void Bluetooth_Signal_DisconnectionReq(BT_ACL_Header_t* ACLPacketHeader,\r
- BT_DataPacket_Header_t* DataHeader,\r
- BT_Signal_Header_t* SignalCommandHeader);\r
- static inline void Bluetooth_Signal_InformationReq(BT_ACL_Header_t* ACLPacketHeader,\r
- BT_DataPacket_Header_t* DataHeader,\r
- BT_Signal_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