Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Erik Strand
lufa
Commits
b98158bd
Commit
b98158bd
authored
Jun 01, 2010
by
Dean Camera
Browse files
Clean up the Service tables, add incomplete ProtocolDescriptorList attribute to the SDP service.
parent
32ab52a2
Changes
2
Hide whitespace changes
Inline
Side-by-side
Demos/Host/Incomplete/BluetoothHost/Lib/SDPServices.c
View file @
b98158bd
...
...
@@ -34,7 +34,11 @@ const struct
{
uint8_t
Header
;
uint32_t
Data
;
}
PROGMEM
SDP_Attribute_ServiceHandle
=
{(
SDP_DATATYPE_UnsignedInt
|
SDP_DATASIZE_32Bit
),
SWAPENDIAN_32
(
0x00010000
)};
}
PROGMEM
SDP_Attribute_ServiceHandle
=
{
(
SDP_DATATYPE_UnsignedInt
|
SDP_DATASIZE_32Bit
),
SWAPENDIAN_32
(
0x00010000
),
};
const
struct
{
...
...
@@ -43,12 +47,29 @@ const struct
ItemUUID_t
UUIDList
[];
}
PROGMEM
SDP_Attribute_ServiceClassIDs
=
{
.
Header
=
(
SDP_DATATYPE_Sequence
|
SDP_DATASIZE_Variable16Bit
),
.
Size
=
SWAPENDIAN_16
(
sizeof
(
ItemUUID_t
)
*
1
),
.
UUIDList
=
(
SDP_DATATYPE_Sequence
|
SDP_DATASIZE_Variable16Bit
),
SWAPENDIAN_16
(
sizeof
(
ItemUUID_t
)
*
1
),
{
{(
SDP_DATATYPE_UUID
|
SDP_DATASIZE_128Bit
),
{
BASE_80BIT_UUID
,
{
0x00
,
0x00
,
0x00
,
0x00
,
0x10
,
0x00
}}}
}
};
const
struct
{
uint8_t
Header
;
uint16_t
Size
;
ItemProtocol_t
ProtocolList
[];
}
PROGMEM
SDP_Attribute_ProtocolDescriptor
=
{
(
SDP_DATATYPE_Sequence
|
SDP_DATASIZE_Variable16Bit
),
SWAPENDIAN_16
(
sizeof
(
ItemProtocol_t
)
*
1
),
{
{
{.
Header
=
(
SDP_DATATYPE_UUID
|
SDP_DATASIZE_128Bit
),
.
UUID
=
{
BASE_80BIT_UUID
,
{
0x00
,
0x00
,
0x00
,
0x00
,
0x10
,
0x00
}},}
(
SDP_DATATYPE_Sequence
|
SDP_DATASIZE_Variable8Bit
),
sizeof
(
UUID_t
),
{(
SDP_DATATYPE_UUID
|
SDP_DATASIZE_128Bit
),
{
BASE_80BIT_UUID
,
{
0x00
,
0x00
,
0x00
,
0x00
,
0x01
,
0x00
}}},
}
}
};
const
struct
...
...
@@ -58,12 +79,11 @@ const struct
Item16Bit_t
VersionList
[];
}
PROGMEM
SDP_Attribute_Version
=
{
.
Header
=
(
SDP_DATATYPE_Sequence
|
SDP_DATASIZE_Variable8Bit
),
.
Size
=
(
sizeof
(
Item16Bit_t
)
*
1
),
.
VersionList
=
{
{.
Header
=
(
SDP_DATATYPE_UnsignedInt
|
SDP_DATASIZE_16Bit
),
.
Value
=
SWAPENDIAN_16
(
0x0100
)}
}
(
SDP_DATATYPE_Sequence
|
SDP_DATASIZE_Variable8Bit
),
(
sizeof
(
Item16Bit_t
)
*
1
),
{
{(
SDP_DATATYPE_UnsignedInt
|
SDP_DATASIZE_16Bit
),
SWAPENDIAN_16
(
0x0100
)}
}
};
const
struct
...
...
@@ -73,9 +93,9 @@ const struct
char
Text
[];
}
PROGMEM
SDP_Attribute_ServiceName
=
{
.
Header
=
(
SDP_DATATYPE_String
|
SDP_DATASIZE_Variable8Bit
),
.
Size
=
sizeof
(
"SDP"
)
-
1
,
.
Text
=
"SDP"
,
(
SDP_DATATYPE_String
|
SDP_DATASIZE_Variable8Bit
),
(
sizeof
(
"SDP"
)
-
1
)
,
"SDP"
,
};
const
struct
...
...
@@ -85,19 +105,20 @@ const struct
char
Text
[];
}
PROGMEM
SDP_Attribute_ServiceDescription
=
{
.
Header
=
(
SDP_DATATYPE_String
|
SDP_DATASIZE_Variable8Bit
),
.
Size
=
sizeof
(
"Service Discovery Protocol Server"
)
-
1
,
.
Text
=
"Service Discovery Protocol Server"
,
(
SDP_DATATYPE_String
|
SDP_DATASIZE_Variable8Bit
),
(
sizeof
(
"Service Discovery Protocol Server"
)
-
1
)
,
"Service Discovery Protocol Server"
,
};
/** Service Discovery Protocol attribute table, listing all supported attributes of the service. */
const
ServiceAttributeTable_t
SDP_Attribute_Table
[]
PROGMEM
=
{
{.
AttributeID
=
SDP_ATTRIBUTE_ID_SERVICERECORDHANDLE
,
.
Data
=
&
SDP_Attribute_ServiceHandle
},
{.
AttributeID
=
SDP_ATTRIBUTE_ID_SERVICECLASSIDS
,
.
Data
=
&
SDP_Attribute_ServiceClassIDs
},
{.
AttributeID
=
SDP_ATTRIBUTE_ID_VERSION
,
.
Data
=
&
SDP_Attribute_Version
},
{.
AttributeID
=
SDP_ATTRIBUTE_ID_SERVICENAME
,
.
Data
=
&
SDP_Attribute_ServiceName
},
{.
AttributeID
=
SDP_ATTRIBUTE_ID_SERVICEDESCRIPTION
,
.
Data
=
&
SDP_Attribute_ServiceDescription
},
{.
AttributeID
=
SDP_ATTRIBUTE_ID_SERVICERECORDHANDLE
,
.
Data
=
&
SDP_Attribute_ServiceHandle
},
{.
AttributeID
=
SDP_ATTRIBUTE_ID_SERVICECLASSIDS
,
.
Data
=
&
SDP_Attribute_ServiceClassIDs
},
// {.AttributeID = SDP_ATTRIBUTE_ID_PROTOCOLDESCRIPTORLIST, .Data = &SDP_Attribute_ProtocolDescriptor },
{.
AttributeID
=
SDP_ATTRIBUTE_ID_VERSION
,
.
Data
=
&
SDP_Attribute_Version
},
{.
AttributeID
=
SDP_ATTRIBUTE_ID_SERVICENAME
,
.
Data
=
&
SDP_Attribute_ServiceName
},
{.
AttributeID
=
SDP_ATTRIBUTE_ID_SERVICEDESCRIPTION
,
.
Data
=
&
SDP_Attribute_ServiceDescription
},
SERVICE_ATTRIBUTE_TABLE_TERMINATOR
};
...
...
@@ -106,7 +127,11 @@ const struct
{
uint8_t
Header
;
uint32_t
Data
;
}
PROGMEM
RFCOMM_Attribute_ServiceHandle
=
{(
SDP_DATATYPE_UnsignedInt
|
SDP_DATASIZE_32Bit
),
SWAPENDIAN_32
(
0x00010001
)};
}
PROGMEM
RFCOMM_Attribute_ServiceHandle
=
{
(
SDP_DATATYPE_UnsignedInt
|
SDP_DATASIZE_32Bit
),
SWAPENDIAN_32
(
0x00010001
),
};
const
struct
{
...
...
@@ -115,12 +140,11 @@ const struct
ItemUUID_t
UUIDList
[];
}
PROGMEM
RFCOMM_Attribute_ServiceClassIDs
=
{
.
Header
=
(
SDP_DATATYPE_Sequence
|
SDP_DATASIZE_Variable16Bit
),
.
Size
=
SWAPENDIAN_16
(
sizeof
(
ItemUUID_t
)
*
1
),
.
UUIDList
=
{
{.
Header
=
(
SDP_DATATYPE_UUID
|
SDP_DATASIZE_128Bit
),
.
UUID
=
{
BASE_80BIT_UUID
,
{
0x00
,
0x00
,
0x00
,
0x00
,
0x11
,
0x01
}},}
}
(
SDP_DATATYPE_Sequence
|
SDP_DATASIZE_Variable16Bit
),
SWAPENDIAN_16
(
sizeof
(
ItemUUID_t
)
*
1
),
{
{(
SDP_DATATYPE_UUID
|
SDP_DATASIZE_128Bit
),
{
BASE_80BIT_UUID
,
{
0x00
,
0x00
,
0x00
,
0x00
,
0x11
,
0x01
}}}
}
};
const
struct
...
...
@@ -130,12 +154,11 @@ const struct
Item16Bit_t
OffsetList
[];
}
PROGMEM
RFCOMM_Attribute_LangOffset
=
{
.
Header
=
(
SDP_DATATYPE_Sequence
|
SDP_DATASIZE_Variable8Bit
),
.
Size
=
(
sizeof
(
Item16Bit_t
)
*
1
),
.
OffsetList
=
{
{.
Header
=
(
SDP_DATATYPE_UnsignedInt
|
SDP_DATASIZE_16Bit
),
.
Value
=
SWAPENDIAN_16
(
0x0100
)}
}
(
SDP_DATATYPE_Sequence
|
SDP_DATASIZE_Variable8Bit
),
(
sizeof
(
Item16Bit_t
)
*
1
),
{
{(
SDP_DATATYPE_UnsignedInt
|
SDP_DATASIZE_16Bit
),
SWAPENDIAN_16
(
0x0100
)}
}
};
const
struct
...
...
@@ -145,9 +168,9 @@ const struct
char
Text
[];
}
PROGMEM
RFCOMM_Attribute_ServiceName
=
{
.
Header
=
(
SDP_DATATYPE_String
|
SDP_DATASIZE_Variable8Bit
),
.
Size
=
sizeof
(
"Serial Port"
)
-
1
,
.
Text
=
"Serial Port"
,
(
SDP_DATATYPE_String
|
SDP_DATASIZE_Variable8Bit
),
sizeof
(
"Serial Port"
)
-
1
,
"Serial Port"
,
};
const
struct
...
...
@@ -157,17 +180,17 @@ const struct
char
Text
[];
}
PROGMEM
RFCOMM_Attribute_ServiceDescription
=
{
.
Header
=
(
SDP_DATATYPE_String
|
SDP_DATASIZE_Variable8Bit
),
.
Size
=
sizeof
(
"Wireless Serial Port Service"
)
-
1
,
.
Text
=
"Wireless Serial Port Service"
,
(
SDP_DATATYPE_String
|
SDP_DATASIZE_Variable8Bit
),
sizeof
(
"Wireless Serial Port Service"
)
-
1
,
"Wireless Serial Port Service"
,
};
const
ServiceAttributeTable_t
RFCOMM_Attribute_Table
[]
PROGMEM
=
{
{.
AttributeID
=
SDP_ATTRIBUTE_ID_SERVICERECORDHANDLE
,
.
Data
=
&
RFCOMM_Attribute_ServiceHandle
},
{.
AttributeID
=
SDP_ATTRIBUTE_ID_SERVICECLASSIDS
,
.
Data
=
&
RFCOMM_Attribute_ServiceClassIDs
},
{.
AttributeID
=
SDP_ATTRIBUTE_ID_SERVICENAME
,
.
Data
=
&
RFCOMM_Attribute_ServiceName
},
{.
AttributeID
=
SDP_ATTRIBUTE_ID_SERVICEDESCRIPTION
,
.
Data
=
&
RFCOMM_Attribute_ServiceDescription
},
{.
AttributeID
=
SDP_ATTRIBUTE_ID_SERVICERECORDHANDLE
,
.
Data
=
&
RFCOMM_Attribute_ServiceHandle
},
{.
AttributeID
=
SDP_ATTRIBUTE_ID_SERVICECLASSIDS
,
.
Data
=
&
RFCOMM_Attribute_ServiceClassIDs
},
{.
AttributeID
=
SDP_ATTRIBUTE_ID_SERVICENAME
,
.
Data
=
&
RFCOMM_Attribute_ServiceName
},
{.
AttributeID
=
SDP_ATTRIBUTE_ID_SERVICEDESCRIPTION
,
.
Data
=
&
RFCOMM_Attribute_ServiceDescription
},
SERVICE_ATTRIBUTE_TABLE_TERMINATOR
};
Demos/Host/Incomplete/BluetoothHost/Lib/SDPServices.h
View file @
b98158bd
...
...
@@ -48,6 +48,7 @@
#define SDP_ATTRIBUTE_ID_SERVICERECORDHANDLE 0x0000
#define SDP_ATTRIBUTE_ID_SERVICECLASSIDS 0x0001
#define SDP_ATTRIBUTE_ID_PROTOCOLDESCRIPTORLIST 0x0004
#define SDP_ATTRIBUTE_ID_VERSION 0x0200
#define SDP_ATTRIBUTE_ID_SERVICENAME 0x0100
#define SDP_ATTRIBUTE_ID_SERVICEDESCRIPTION 0x0101
...
...
@@ -87,13 +88,6 @@
const
void
*
AttributeTable
;
/**< Pointer to the UUID's attribute table, located in PROGMEM memory space */
}
ServiceTable_t
;
/** Structure for a list of Data Elements containing UUIDs, for service attributes requiring UUID lists. */
typedef
struct
{
uint8_t
Header
;
/**< Data Element header, should be (SDP_DATATYPE_UUID | SDP_DATASIZE_128Bit) */
UUID_t
UUID
;
/**< UUID to store in the list Data Element */
}
ItemUUID_t
;
/** Structure for a list of Data Elements containing 8-bit integers, for service attributes requiring such lists. */
typedef
struct
{
...
...
@@ -115,6 +109,24 @@
uint32_t
Value
;
/**< Value to store in the list Data Element */
}
Item32Bit_t
;
/** Structure for a list of Data Elements containing UUIDs, for service attributes requiring UUID lists. */
typedef
struct
{
uint8_t
Header
;
/**< Data Element header, should be (SDP_DATATYPE_UUID | SDP_DATASIZE_128Bit) */
UUID_t
UUID
;
/**< UUID to store in the list Data Element */
}
ItemUUID_t
;
/** Structure for a list of Data Elements Sequences containing UUID Data Elements, for service attributes requiring
* 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 */
ItemUUID_t
UUID
;
/**< UUID to store in the protocol list Data Element sequence */
}
ItemProtocol_t
;
/* External Variables: */
extern
const
ServiceAttributeTable_t
SDP_Attribute_Table
[];
extern
const
ServiceAttributeTable_t
RFCOMM_Attribute_Table
[];
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment