Clean up the Service tables, add incomplete ProtocolDescriptorList attribute to the...
authorDean Camera <dean@fourwalledcubicle.com>
Tue, 1 Jun 2010 14:05:47 +0000 (14:05 +0000)
committerDean Camera <dean@fourwalledcubicle.com>
Tue, 1 Jun 2010 14:05:47 +0000 (14:05 +0000)
Demos/Host/Incomplete/BluetoothHost/Lib/SDPServices.c
Demos/Host/Incomplete/BluetoothHost/Lib/SDPServices.h

index 0ad8c01..28b9d77 100644 (file)
@@ -34,7 +34,11 @@ const struct
 {\r
        uint8_t  Header;\r
        uint32_t Data;\r
-} PROGMEM SDP_Attribute_ServiceHandle = {(SDP_DATATYPE_UnsignedInt | SDP_DATASIZE_32Bit), SWAPENDIAN_32(0x00010000)};\r
+} PROGMEM SDP_Attribute_ServiceHandle =\r
+       {\r
+               (SDP_DATATYPE_UnsignedInt | SDP_DATASIZE_32Bit),\r
+               SWAPENDIAN_32(0x00010000),\r
+       };\r
 \r
 const struct\r
 {\r
@@ -43,12 +47,29 @@ const struct
        ItemUUID_t UUIDList[];\r
 } PROGMEM SDP_Attribute_ServiceClassIDs =\r
        {\r
-               .Header = (SDP_DATATYPE_Sequence | SDP_DATASIZE_Variable16Bit),\r
-               .Size   = SWAPENDIAN_16(sizeof(ItemUUID_t) * 1),\r
-               .UUIDList =\r
+               (SDP_DATATYPE_Sequence | SDP_DATASIZE_Variable16Bit),\r
+               SWAPENDIAN_16(sizeof(ItemUUID_t) * 1),\r
+               {\r
+                       {(SDP_DATATYPE_UUID | SDP_DATASIZE_128Bit), {BASE_80BIT_UUID, {0x00, 0x00, 0x00, 0x00, 0x10, 0x00}}}\r
+               }\r
+       };\r
+\r
+const struct\r
+{\r
+       uint8_t        Header;\r
+       uint16_t       Size;\r
+       ItemProtocol_t ProtocolList[];\r
+} PROGMEM SDP_Attribute_ProtocolDescriptor =\r
+       {\r
+               (SDP_DATATYPE_Sequence | SDP_DATASIZE_Variable16Bit),\r
+               SWAPENDIAN_16(sizeof(ItemProtocol_t) * 1),\r
+               {\r
                        {\r
-                               {.Header = (SDP_DATATYPE_UUID | SDP_DATASIZE_128Bit), .UUID = {BASE_80BIT_UUID, {0x00, 0x00, 0x00, 0x00, 0x10, 0x00}},}\r
+                               (SDP_DATATYPE_Sequence | SDP_DATASIZE_Variable8Bit),\r
+                               sizeof(UUID_t),\r
+                               {(SDP_DATATYPE_UUID | SDP_DATASIZE_128Bit), {BASE_80BIT_UUID, {0x00, 0x00, 0x00, 0x00, 0x01, 0x00}}},\r
                        }\r
+               }\r
        };\r
 \r
 const struct\r
@@ -58,12 +79,11 @@ const struct
        Item16Bit_t VersionList[];\r
 } PROGMEM SDP_Attribute_Version =\r
        {\r
-               .Header = (SDP_DATATYPE_Sequence | SDP_DATASIZE_Variable8Bit),\r
-               .Size   = (sizeof(Item16Bit_t) * 1),\r
-               .VersionList =\r
-                       {\r
-                               {.Header = (SDP_DATATYPE_UnsignedInt | SDP_DATASIZE_16Bit), .Value = SWAPENDIAN_16(0x0100)}\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
@@ -73,9 +93,9 @@ const struct
        char    Text[];\r
 } PROGMEM SDP_Attribute_ServiceName =\r
        {\r
-               .Header = (SDP_DATATYPE_String | SDP_DATASIZE_Variable8Bit),\r
-               .Size   = sizeof("SDP") - 1,\r
-               .Text   = "SDP",\r
+               (SDP_DATATYPE_String | SDP_DATASIZE_Variable8Bit),\r
+               (sizeof("SDP") - 1),\r
+               "SDP",\r
        };\r
 \r
 const struct\r
@@ -85,19 +105,20 @@ const struct
        char    Text[];\r
 } PROGMEM SDP_Attribute_ServiceDescription =\r
        {\r
-               .Header = (SDP_DATATYPE_String | SDP_DATASIZE_Variable8Bit),\r
-               .Size   = sizeof("Service Discovery Protocol Server") - 1,\r
-               .Text   = "Service Discovery Protocol Server",\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
+               {.AttributeID = SDP_ATTRIBUTE_ID_SERVICERECORDHANDLE,    .Data = &SDP_Attribute_ServiceHandle      },\r
+               {.AttributeID = SDP_ATTRIBUTE_ID_SERVICECLASSIDS,        .Data = &SDP_Attribute_ServiceClassIDs    },\r
+//             {.AttributeID = SDP_ATTRIBUTE_ID_PROTOCOLDESCRIPTORLIST, .Data = &SDP_Attribute_ProtocolDescriptor },\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
@@ -106,7 +127,11 @@ const struct
 {\r
        uint8_t  Header;\r
        uint32_t Data;\r
-} PROGMEM RFCOMM_Attribute_ServiceHandle = {(SDP_DATATYPE_UnsignedInt | SDP_DATASIZE_32Bit), SWAPENDIAN_32(0x00010001)};\r
+} PROGMEM RFCOMM_Attribute_ServiceHandle =\r
+       {\r
+               (SDP_DATATYPE_UnsignedInt | SDP_DATASIZE_32Bit),\r
+               SWAPENDIAN_32(0x00010001),\r
+       };\r
 \r
 const struct\r
 {\r
@@ -115,12 +140,11 @@ const struct
        ItemUUID_t UUIDList[];\r
 } PROGMEM RFCOMM_Attribute_ServiceClassIDs =\r
        {\r
-               .Header = (SDP_DATATYPE_Sequence | SDP_DATASIZE_Variable16Bit),\r
-               .Size   = SWAPENDIAN_16(sizeof(ItemUUID_t) * 1),\r
-               .UUIDList =\r
-                       {\r
-                               {.Header = (SDP_DATATYPE_UUID | SDP_DATASIZE_128Bit), .UUID = {BASE_80BIT_UUID, {0x00, 0x00, 0x00, 0x00, 0x11, 0x01}},}\r
-                       }\r
+               (SDP_DATATYPE_Sequence | SDP_DATASIZE_Variable16Bit),\r
+               SWAPENDIAN_16(sizeof(ItemUUID_t) * 1),\r
+               {\r
+                       {(SDP_DATATYPE_UUID | SDP_DATASIZE_128Bit), {BASE_80BIT_UUID, {0x00, 0x00, 0x00, 0x00, 0x11, 0x01}}}\r
+               }\r
        };\r
 \r
 const struct\r
@@ -130,12 +154,11 @@ const struct
        Item16Bit_t OffsetList[];\r
 } PROGMEM RFCOMM_Attribute_LangOffset =\r
        {\r
-               .Header = (SDP_DATATYPE_Sequence | SDP_DATASIZE_Variable8Bit),\r
-               .Size   = (sizeof(Item16Bit_t) * 1),\r
-               .OffsetList =\r
-                       {\r
-                               {.Header = (SDP_DATATYPE_UnsignedInt | SDP_DATASIZE_16Bit), .Value = SWAPENDIAN_16(0x0100)}\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
@@ -145,9 +168,9 @@ const struct
        char    Text[];\r
 } PROGMEM RFCOMM_Attribute_ServiceName =\r
        {\r
-               .Header = (SDP_DATATYPE_String | SDP_DATASIZE_Variable8Bit),\r
-               .Size   = sizeof("Serial Port") - 1,\r
-               .Text   = "Serial Port",\r
+               (SDP_DATATYPE_String | SDP_DATASIZE_Variable8Bit),\r
+               sizeof("Serial Port") - 1,\r
+               "Serial Port",\r
        };\r
 \r
 const struct\r
@@ -157,17 +180,17 @@ const struct
        char    Text[];\r
 } PROGMEM RFCOMM_Attribute_ServiceDescription =\r
        {\r
-               .Header = (SDP_DATATYPE_String | SDP_DATASIZE_Variable8Bit),\r
-               .Size   = sizeof("Wireless Serial Port Service") - 1,\r
-               .Text   = "Wireless Serial Port Service",\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_SERVICENAME,         .Data = &RFCOMM_Attribute_ServiceName        },\r
-               {.AttributeID = SDP_ATTRIBUTE_ID_SERVICEDESCRIPTION,  .Data = &RFCOMM_Attribute_ServiceDescription },\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_SERVICENAME,            .Data = &RFCOMM_Attribute_ServiceName        },\r
+               {.AttributeID = SDP_ATTRIBUTE_ID_SERVICEDESCRIPTION,     .Data = &RFCOMM_Attribute_ServiceDescription },\r
 \r
                SERVICE_ATTRIBUTE_TABLE_TERMINATOR\r
        };\r
index 5ca010c..61fd593 100644 (file)
@@ -48,6 +48,7 @@
                \r
                #define SDP_ATTRIBUTE_ID_SERVICERECORDHANDLE    0x0000\r
                #define SDP_ATTRIBUTE_ID_SERVICECLASSIDS        0x0001\r
+               #define SDP_ATTRIBUTE_ID_PROTOCOLDESCRIPTORLIST 0x0004\r
                #define SDP_ATTRIBUTE_ID_VERSION                0x0200\r
                #define SDP_ATTRIBUTE_ID_SERVICENAME            0x0100\r
                #define SDP_ATTRIBUTE_ID_SERVICEDESCRIPTION     0x0101\r
                        const void* AttributeTable; /**< Pointer to the UUID's attribute table, located in PROGMEM memory space */\r
                } ServiceTable_t;\r
 \r
-               /** Structure for a list of Data Elements containing UUIDs, for service attributes requiring UUID lists. */\r
-               typedef struct\r
-               {\r
-                       uint8_t Header; /**< Data Element header, should be (SDP_DATATYPE_UUID | SDP_DATASIZE_128Bit) */\r
-                       UUID_t  UUID; /**< UUID to store in the list Data Element */\r
-               } ItemUUID_t;\r
-\r
                /** Structure for a list of Data Elements containing 8-bit integers, for service attributes requiring such lists. */\r
                typedef struct\r
                {\r
                        uint32_t Value; /**< Value to store in the list Data Element */\r
                } Item32Bit_t;\r
 \r
+               /** Structure for a list of Data Elements containing UUIDs, for service attributes requiring UUID lists. */\r
+               typedef struct\r
+               {\r
+                       uint8_t Header; /**< Data Element header, should be (SDP_DATATYPE_UUID | SDP_DATASIZE_128Bit) */\r
+                       UUID_t  UUID; /**< UUID to store in the list Data Element */\r
+               } ItemUUID_t;\r
+               \r
+               /** Structure for a list of Data Elements Sequences containing UUID Data Elements, for service attributes requiring\r
+                *  protocol lists.\r
+                */\r
+               typedef struct\r
+               {\r
+                       uint8_t     Header; /**< Data Element header, should be (SDP_DATATYPE_Sequence | SDP_DATASIZE_Variable8Bit) */\r
+                       uint8_t     Size; /**< Size of the inner Data Element sequence */\r
+                       \r
+                       ItemUUID_t  UUID; /**< UUID to store in the protocol list Data Element sequence */\r
+               } ItemProtocol_t;\r
+               \r
        /* External Variables: */\r
                extern const ServiceAttributeTable_t SDP_Attribute_Table[];\r
                extern const ServiceAttributeTable_t RFCOMM_Attribute_Table[];\r