aboutsummaryrefslogtreecommitdiffstats
path: root/Demos/Host/Incomplete/BluetoothHost/Lib
diff options
context:
space:
mode:
authorDean Camera <dean@fourwalledcubicle.com>2010-06-03 08:33:01 +0000
committerDean Camera <dean@fourwalledcubicle.com>2010-06-03 08:33:01 +0000
commita405a9bdf8338d947159317fba373fccd01fa0f3 (patch)
tree8cfc8ad00399d8ae3bfa2c3cb1cac5e679da231c /Demos/Host/Incomplete/BluetoothHost/Lib
parent480da5aab642eb7e5b87e604a55a91bf872b3607 (diff)
downloadlufa-a405a9bdf8338d947159317fba373fccd01fa0f3.tar.gz
lufa-a405a9bdf8338d947159317fba373fccd01fa0f3.tar.bz2
lufa-a405a9bdf8338d947159317fba373fccd01fa0f3.zip
Extra protocol value in the RFCOMM protocol is the channel number, not the PSM - update typedef name and size.
Add delay to the Connection Request signal processing routine - without this, the host will not create the RFCOMM channel correctly. Need to investigate why this delay is needed.
Diffstat (limited to 'Demos/Host/Incomplete/BluetoothHost/Lib')
-rw-r--r--Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothACLPackets.c5
-rw-r--r--Demos/Host/Incomplete/BluetoothHost/Lib/SDPServices.c14
-rw-r--r--Demos/Host/Incomplete/BluetoothHost/Lib/SDPServices.h13
3 files changed, 18 insertions, 14 deletions
diff --git a/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothACLPackets.c b/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothACLPackets.c
index ba5170127..818caac75 100644
--- a/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothACLPackets.c
+++ b/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothACLPackets.c
@@ -32,6 +32,7 @@
TODO: Make SendPacket respect receiver's MTU
TODO: Make ReceivePacket stitch together MTU fragments (?)
TODO: Add channel opened/closed callbacks
+ TODO: Figure out why delay is needed in connection for services
*/
#define INCLUDE_FROM_BLUETOOTH_ACLPACKETS_C
@@ -363,10 +364,12 @@ static inline void Bluetooth_Signal_ConnectionReq(const BT_Signal_Header_t* cons
Pipe_ClearIN();
Pipe_Freeze();
-
+
BT_ACL_DEBUG(1, "<< L2CAP Connection Request");
BT_ACL_DEBUG(2, "-- PSM: 0x%04X", ConnectionRequest.PSM);
BT_ACL_DEBUG(2, "-- Source Channel: 0x%04X", ConnectionRequest.SourceChannel);
+
+ _delay_ms(15); // TODO - Determine why this is needed
/* Try to retrieve the existing channel's information structure if it exists */
Bluetooth_Channel_t* ChannelData = Bluetooth_GetChannelData(ConnectionRequest.SourceChannel, CHANNEL_SEARCH_REMOTENUMBER);
diff --git a/Demos/Host/Incomplete/BluetoothHost/Lib/SDPServices.c b/Demos/Host/Incomplete/BluetoothHost/Lib/SDPServices.c
index cf3267325..a06ebfede 100644
--- a/Demos/Host/Incomplete/BluetoothHost/Lib/SDPServices.c
+++ b/Demos/Host/Incomplete/BluetoothHost/Lib/SDPServices.c
@@ -56,15 +56,15 @@ const struct
const struct
{
- uint8_t Header;
- uint8_t Size;
+ uint8_t Header;
+ uint8_t Size;
- ItemProtocol_t L2CAP;
- ItemProtocolPSM_t RFCOMM;
+ ItemProtocol_t L2CAP;
+ ItemProtocolChannel_t RFCOMM;
} PROGMEM SerialPort_Attribute_ProtocolDescriptor =
{
(SDP_DATATYPE_Sequence | SDP_DATASIZE_Variable8Bit),
- (sizeof(ItemProtocol_t) + sizeof(ItemProtocolPSM_t)),
+ (sizeof(ItemProtocol_t) + sizeof(ItemProtocolChannel_t)),
{
(SDP_DATATYPE_Sequence | SDP_DATASIZE_Variable8Bit),
sizeof(ItemUUID_t),
@@ -74,10 +74,10 @@ const struct
},
{
(SDP_DATATYPE_Sequence | SDP_DATASIZE_Variable8Bit),
- (sizeof(ItemUUID_t) + sizeof(Item16Bit_t)),
+ (sizeof(ItemUUID_t) + sizeof(Item8Bit_t)),
{
{(SDP_DATATYPE_UUID | SDP_DATASIZE_128Bit), RFCOMM_UUID},
- {(SDP_DATATYPE_UnsignedInt | SDP_DATASIZE_16Bit), SWAPENDIAN_16(CHANNEL_PSM_RFCOMM)},
+ {(SDP_DATATYPE_UnsignedInt | SDP_DATASIZE_8Bit), 0x03},
},
},
};
diff --git a/Demos/Host/Incomplete/BluetoothHost/Lib/SDPServices.h b/Demos/Host/Incomplete/BluetoothHost/Lib/SDPServices.h
index 1cfc2b2c0..7e33638db 100644
--- a/Demos/Host/Incomplete/BluetoothHost/Lib/SDPServices.h
+++ b/Demos/Host/Incomplete/BluetoothHost/Lib/SDPServices.h
@@ -145,20 +145,20 @@
} Protocol;
} ItemProtocol_t;
- /** Structure for a list of Data Elements Sequences containing UUID Data Elements and 16-bit PSM values, for service
+ /** Structure for a list of Data Elements Sequences containing UUID Data Elements and 8-bit channel values, for service
* attributes requiring extended protocol lists.
*/
typedef struct
{
- uint8_t Header; /**< Data Element header, should be (SDP_DATATYPE_Sequence | SDP_DATASIZE_Variable8Bit) */
- uint8_t Size; /**< Size of the inner Data Element sequence */
+ uint8_t Header; /**< Data Element header, should be (SDP_DATATYPE_Sequence | SDP_DATASIZE_Variable8Bit) */
+ uint8_t Size; /**< Size of the inner Data Element sequence */
struct
{
- ItemUUID_t UUID; /**< UUID to store in the protocol list Data Element sequence */
- Item16Bit_t PSM; /**< PSM that is to be used to access the service on created channels */
+ ItemUUID_t UUID; /**< UUID to store in the protocol list Data Element sequence */
+ Item8Bit_t Channel; /**< Channel that is to be used to access the service */
} Protocol;
- } ItemProtocolPSM_t;
+ } ItemProtocolChannel_t;
/** Structure for a list of Data Elements containing language encodings, including the language ID, Encoding ID and
* Attribute base offset.
@@ -172,5 +172,6 @@
/* External Variables: */
extern const ServiceAttributeTable_t SerialPort_Attribute_Table[];
+ extern const ServiceAttributeTable_t PnP_Attribute_Table[];
#endif