\r
#include "SDPServices.h"\r
\r
-/* ------------------------------ SDP SERVICE ATTRIBUTES ------------------------------ */\r
-\r
-const struct\r
-{\r
- uint8_t Header;\r
- uint32_t Data;\r
-} PROGMEM SDP_Attribute_ServiceHandle =\r
- {\r
- (SDP_DATATYPE_UnsignedInt | SDP_DATASIZE_32Bit),\r
- SWAPENDIAN_32(0x00010000),\r
- };\r
-\r
-const struct\r
-{\r
- uint8_t Header;\r
- uint16_t Size;\r
- ItemUUID_t UUIDList[];\r
-} PROGMEM SDP_Attribute_ServiceClassIDs =\r
- {\r
- (SDP_DATATYPE_Sequence | SDP_DATASIZE_Variable16Bit),\r
- SWAPENDIAN_16(sizeof(ItemUUID_t) * 1),\r
- {\r
- {(SDP_DATATYPE_UUID | SDP_DATASIZE_128Bit), SDP_CLASS_UUID}\r
- }\r
- };\r
-\r
-const struct\r
-{\r
- uint8_t Header;\r
- uint8_t Size;\r
- Item16Bit_t VersionList[];\r
-} PROGMEM SDP_Attribute_Version =\r
- {\r
- (SDP_DATATYPE_Sequence | SDP_DATASIZE_Variable8Bit),\r
- (sizeof(Item16Bit_t) * 1),\r
- {\r
- {(SDP_DATATYPE_UnsignedInt | SDP_DATASIZE_16Bit), SWAPENDIAN_16(0x0100)}\r
- }\r
- };\r
-\r
-const struct\r
-{\r
- uint8_t Header;\r
- uint8_t Size;\r
- char Text[];\r
-} PROGMEM SDP_Attribute_ServiceName =\r
- {\r
- (SDP_DATATYPE_String | SDP_DATASIZE_Variable8Bit),\r
- (sizeof("SDP") - 1),\r
- "SDP",\r
- };\r
-\r
-const struct\r
-{\r
- uint8_t Header;\r
- uint8_t Size;\r
- char Text[];\r
-} PROGMEM SDP_Attribute_ServiceDescription =\r
- {\r
- (SDP_DATATYPE_String | SDP_DATASIZE_Variable8Bit),\r
- (sizeof("Service Discovery Protocol Server") - 1),\r
- "Service Discovery Protocol Server",\r
- };\r
-\r
-/** Service Discovery Protocol attribute table, listing all supported attributes of the service. */\r
-const ServiceAttributeTable_t SDP_Attribute_Table[] PROGMEM =\r
- {\r
- {.AttributeID = SDP_ATTRIBUTE_ID_SERVICERECORDHANDLE, .Data = &SDP_Attribute_ServiceHandle },\r
- {.AttributeID = SDP_ATTRIBUTE_ID_SERVICECLASSIDS, .Data = &SDP_Attribute_ServiceClassIDs },\r
- {.AttributeID = SDP_ATTRIBUTE_ID_VERSION, .Data = &SDP_Attribute_Version },\r
- {.AttributeID = SDP_ATTRIBUTE_ID_SERVICENAME, .Data = &SDP_Attribute_ServiceName },\r
- {.AttributeID = SDP_ATTRIBUTE_ID_SERVICEDESCRIPTION, .Data = &SDP_Attribute_ServiceDescription },\r
-\r
- SERVICE_ATTRIBUTE_TABLE_TERMINATOR\r
- };\r
-\r
-\r
-/* ------------------------------ RFCOMM SERVICE ATTRIBUTES ------------------------------ */\r
-\r
-\r
const struct\r
{\r
uint8_t Header;\r
{\r
{\r
(SDP_DATATYPE_Sequence | SDP_DATASIZE_Variable8Bit),\r
- sizeof(UUID_t),\r
+ sizeof(ItemUUID_t),\r
{\r
{(SDP_DATATYPE_UUID | SDP_DATASIZE_128Bit), L2CAP_UUID},\r
}\r
},\r
{\r
(SDP_DATATYPE_Sequence | SDP_DATASIZE_Variable8Bit),\r
- sizeof(UUID_t),\r
+ sizeof(ItemUUID_t),\r
{\r
{(SDP_DATATYPE_UUID | SDP_DATASIZE_128Bit), RFCOMM_UUID},\r
}\r
- }\r
+ },\r
}\r
};\r
\r
const struct\r
{\r
- uint8_t Header;\r
- uint8_t Size;\r
- char Text[];\r
-} PROGMEM RFCOMM_Attribute_ServiceName =\r
- {\r
- (SDP_DATATYPE_String | SDP_DATASIZE_Variable8Bit),\r
- sizeof("Serial Port") - 1,\r
- "Serial Port",\r
- };\r
-\r
-const struct\r
-{\r
- uint8_t Header;\r
- uint8_t Size;\r
- char Text[];\r
-} PROGMEM RFCOMM_Attribute_ServiceDescription =\r
- {\r
- (SDP_DATATYPE_String | SDP_DATASIZE_Variable8Bit),\r
- sizeof("Wireless Serial Port Service") - 1,\r
- "Wireless Serial Port Service",\r
- };\r
-\r
-const ServiceAttributeTable_t RFCOMM_Attribute_Table[] PROGMEM =\r
- {\r
- {.AttributeID = SDP_ATTRIBUTE_ID_SERVICERECORDHANDLE, .Data = &RFCOMM_Attribute_ServiceHandle },\r
- {.AttributeID = SDP_ATTRIBUTE_ID_SERVICECLASSIDS, .Data = &RFCOMM_Attribute_ServiceClassIDs },\r
- {.AttributeID = SDP_ATTRIBUTE_ID_PROTOCOLDESCRIPTORLIST, .Data = &RFCOMM_Attribute_ProtocolDescriptor },\r
- {.AttributeID = SDP_ATTRIBUTE_ID_SERVICENAME, .Data = &RFCOMM_Attribute_ServiceName },\r
- {.AttributeID = SDP_ATTRIBUTE_ID_SERVICEDESCRIPTION, .Data = &RFCOMM_Attribute_ServiceDescription },\r
-\r
- SERVICE_ATTRIBUTE_TABLE_TERMINATOR\r
- };\r
-\r
-\r
-/* ------------------------------ L2CAP SERVICE ATTRIBUTES ------------------------------ */\r
-\r
-\r
-const struct\r
-{\r
- uint8_t Header;\r
- uint32_t Data;\r
-} PROGMEM L2CAP_Attribute_ServiceHandle =\r
- {\r
- (SDP_DATATYPE_UnsignedInt | SDP_DATASIZE_32Bit),\r
- SWAPENDIAN_32(0x00010002),\r
- };\r
-\r
-const struct\r
-{\r
uint8_t Header;\r
uint16_t Size;\r
ItemUUID_t UUIDList[];\r
-} PROGMEM L2CAP_Attribute_ServiceClassIDs =\r
+} PROGMEM RFCOMM_Attribute_BrowseGroupList =\r
{\r
(SDP_DATATYPE_Sequence | SDP_DATASIZE_Variable16Bit),\r
- SWAPENDIAN_16(sizeof(ItemUUID_t) * 2),\r
+ SWAPENDIAN_16(sizeof(ItemUUID_t) * 1),\r
{\r
- {(SDP_DATATYPE_UUID | SDP_DATASIZE_128Bit), SDP_CLASS_UUID },\r
- {(SDP_DATATYPE_UUID | SDP_DATASIZE_128Bit), SP_CLASS_UUID },\r
+ {(SDP_DATATYPE_UUID | SDP_DATASIZE_128Bit), PUBLICBROWSEGROUP_CLASS_UUID}\r
}\r
};\r
-\r
+ \r
const struct\r
{\r
- uint8_t Header;\r
- uint16_t Size;\r
-\r
- ItemProtocol_t ProtocolList[];\r
-} PROGMEM L2CAP_Attribute_ProtocolDescriptor =\r
- {\r
- (SDP_DATATYPE_Sequence | SDP_DATASIZE_Variable16Bit),\r
- SWAPENDIAN_16(sizeof(ItemProtocol_t) * 2),\r
- {\r
+ uint8_t Header;\r
+ uint8_t Size;\r
+ ItemLangID_t OffsetList[];\r
+} PROGMEM RFCOMM_Attribute_LanguageBaseIDOffset =\r
+ {\r
+ .Header = (SDP_DATATYPE_Sequence | SDP_DATASIZE_Variable8Bit),\r
+ .Size = (sizeof(ItemLangID_t) * 1),\r
+ .OffsetList =\r
{\r
- (SDP_DATATYPE_Sequence | SDP_DATASIZE_Variable8Bit),\r
- sizeof(UUID_t),\r
{\r
- {(SDP_DATATYPE_UUID | SDP_DATASIZE_128Bit), L2CAP_UUID},\r
- }\r
- },\r
- {\r
- (SDP_DATATYPE_Sequence | SDP_DATASIZE_Variable8Bit),\r
- sizeof(UUID_t),\r
- {\r
- {(SDP_DATATYPE_UUID | SDP_DATASIZE_128Bit), RFCOMM_UUID},\r
+ {(SDP_DATATYPE_UnsignedInt | SDP_DATASIZE_16Bit), SWAPENDIAN_16(0x454E)},\r
+ {(SDP_DATATYPE_UnsignedInt | SDP_DATASIZE_16Bit), SWAPENDIAN_16(0x006A)},\r
+ {(SDP_DATATYPE_UnsignedInt | SDP_DATASIZE_16Bit), SWAPENDIAN_16(0x0100)},\r
}\r
}\r
- }\r
- };\r
+ }; \r
\r
const struct\r
{\r
uint8_t Header;\r
uint8_t Size;\r
char Text[];\r
-} PROGMEM L2CAP_Attribute_ServiceName =\r
+} PROGMEM RFCOMM_Attribute_ServiceName =\r
{\r
(SDP_DATATYPE_String | SDP_DATASIZE_Variable8Bit),\r
- sizeof("L2CAP") - 1,\r
- "L2CAP",\r
+ sizeof("Serial Port") - 1,\r
+ "Serial Port",\r
};\r
\r
const struct\r
uint8_t Header;\r
uint8_t Size;\r
char Text[];\r
-} PROGMEM L2CAP_Attribute_ServiceDescription =\r
+} PROGMEM RFCOMM_Attribute_ServiceDescription =\r
{\r
(SDP_DATATYPE_String | SDP_DATASIZE_Variable8Bit),\r
- sizeof("Logical Link Layer") - 1,\r
- "Logical Link Layer",\r
+ sizeof("Wireless Serial Port Service") - 1,\r
+ "Wireless Serial Port Service",\r
};\r
\r
-const ServiceAttributeTable_t L2CAP_Attribute_Table[] PROGMEM =\r
+const ServiceAttributeTable_t PROGMEM RFCOMM_Attribute_Table[] =\r
{\r
- {.AttributeID = SDP_ATTRIBUTE_ID_SERVICERECORDHANDLE, .Data = &L2CAP_Attribute_ServiceHandle },\r
- {.AttributeID = SDP_ATTRIBUTE_ID_SERVICECLASSIDS, .Data = &L2CAP_Attribute_ServiceClassIDs },\r
- {.AttributeID = SDP_ATTRIBUTE_ID_PROTOCOLDESCRIPTORLIST, .Data = &L2CAP_Attribute_ProtocolDescriptor },\r
- {.AttributeID = SDP_ATTRIBUTE_ID_SERVICENAME, .Data = &L2CAP_Attribute_ServiceName },\r
- {.AttributeID = SDP_ATTRIBUTE_ID_SERVICEDESCRIPTION, .Data = &L2CAP_Attribute_ServiceDescription },\r
- \r
+ {.AttributeID = SDP_ATTRIBUTE_ID_SERVICERECORDHANDLE, .Data = &RFCOMM_Attribute_ServiceHandle },\r
+ {.AttributeID = SDP_ATTRIBUTE_ID_SERVICECLASSIDS, .Data = &RFCOMM_Attribute_ServiceClassIDs },\r
+ {.AttributeID = SDP_ATTRIBUTE_ID_PROTOCOLDESCRIPTORLIST, .Data = &RFCOMM_Attribute_ProtocolDescriptor },\r
+ {.AttributeID = SDP_ATTRIBUTE_ID_BROWSEGROUPLIST, .Data = &RFCOMM_Attribute_BrowseGroupList },\r
+ {.AttributeID = SDP_ATTRIBUTE_ID_LANGUAGEBASEATTROFFSET, .Data = &RFCOMM_Attribute_LanguageBaseIDOffset},\r
+ {.AttributeID = SDP_ATTRIBUTE_ID_SERVICENAME, .Data = &RFCOMM_Attribute_ServiceName },\r
+ {.AttributeID = SDP_ATTRIBUTE_ID_SERVICEDESCRIPTION, .Data = &RFCOMM_Attribute_ServiceDescription },\r
+\r
SERVICE_ATTRIBUTE_TABLE_TERMINATOR\r
};\r