X-Git-Url: http://git.linex4red.de/pub/lufa.git/blobdiff_plain/da51c1f9749842b65608d6505a41b05981416443..c362709a1e2b0252cffbf1633f7cce41fea4d769:/Demos/Host/Incomplete/BluetoothHost/Lib/SDPServices.c?ds=inline diff --git a/Demos/Host/Incomplete/BluetoothHost/Lib/SDPServices.c b/Demos/Host/Incomplete/BluetoothHost/Lib/SDPServices.c index 96401c010..511e0b074 100644 --- a/Demos/Host/Incomplete/BluetoothHost/Lib/SDPServices.c +++ b/Demos/Host/Incomplete/BluetoothHost/Lib/SDPServices.c @@ -30,86 +30,6 @@ #include "SDPServices.h" -/* ------------------------------ SDP SERVICE ATTRIBUTES ------------------------------ */ - -const struct -{ - uint8_t Header; - uint32_t Data; -} PROGMEM SDP_Attribute_ServiceHandle = - { - (SDP_DATATYPE_UnsignedInt | SDP_DATASIZE_32Bit), - SWAPENDIAN_32(0x00010000), - }; - -const struct -{ - uint8_t Header; - uint16_t Size; - ItemUUID_t UUIDList[]; -} PROGMEM SDP_Attribute_ServiceClassIDs = - { - (SDP_DATATYPE_Sequence | SDP_DATASIZE_Variable16Bit), - SWAPENDIAN_16(sizeof(ItemUUID_t) * 1), - { - {(SDP_DATATYPE_UUID | SDP_DATASIZE_128Bit), SDP_CLASS_UUID} - } - }; - -const struct -{ - uint8_t Header; - uint8_t Size; - Item16Bit_t VersionList[]; -} PROGMEM SDP_Attribute_Version = - { - (SDP_DATATYPE_Sequence | SDP_DATASIZE_Variable8Bit), - (sizeof(Item16Bit_t) * 1), - { - {(SDP_DATATYPE_UnsignedInt | SDP_DATASIZE_16Bit), SWAPENDIAN_16(0x0100)} - } - }; - -const struct -{ - uint8_t Header; - uint8_t Size; - char Text[]; -} PROGMEM SDP_Attribute_ServiceName = - { - (SDP_DATATYPE_String | SDP_DATASIZE_Variable8Bit), - (sizeof("SDP") - 1), - "SDP", - }; - -const struct -{ - uint8_t Header; - uint8_t Size; - char Text[]; -} PROGMEM SDP_Attribute_ServiceDescription = - { - (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 }, - - SERVICE_ATTRIBUTE_TABLE_TERMINATOR - }; - - -/* ------------------------------ RFCOMM SERVICE ATTRIBUTES ------------------------------ */ - - const struct { uint8_t Header; @@ -147,123 +67,64 @@ const struct { { (SDP_DATATYPE_Sequence | SDP_DATASIZE_Variable8Bit), - sizeof(UUID_t), + sizeof(ItemUUID_t), { {(SDP_DATATYPE_UUID | SDP_DATASIZE_128Bit), L2CAP_UUID}, } }, { (SDP_DATATYPE_Sequence | SDP_DATASIZE_Variable8Bit), - sizeof(UUID_t), + sizeof(ItemUUID_t), { {(SDP_DATATYPE_UUID | SDP_DATASIZE_128Bit), RFCOMM_UUID}, } - } + }, } }; const struct { - uint8_t Header; - uint8_t Size; - char Text[]; -} PROGMEM RFCOMM_Attribute_ServiceName = - { - (SDP_DATATYPE_String | SDP_DATASIZE_Variable8Bit), - sizeof("Serial Port") - 1, - "Serial Port", - }; - -const struct -{ - uint8_t Header; - uint8_t Size; - char Text[]; -} PROGMEM RFCOMM_Attribute_ServiceDescription = - { - (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_PROTOCOLDESCRIPTORLIST, .Data = &RFCOMM_Attribute_ProtocolDescriptor }, - {.AttributeID = SDP_ATTRIBUTE_ID_SERVICENAME, .Data = &RFCOMM_Attribute_ServiceName }, - {.AttributeID = SDP_ATTRIBUTE_ID_SERVICEDESCRIPTION, .Data = &RFCOMM_Attribute_ServiceDescription }, - - SERVICE_ATTRIBUTE_TABLE_TERMINATOR - }; - - -/* ------------------------------ L2CAP SERVICE ATTRIBUTES ------------------------------ */ - - -const struct -{ - uint8_t Header; - uint32_t Data; -} PROGMEM L2CAP_Attribute_ServiceHandle = - { - (SDP_DATATYPE_UnsignedInt | SDP_DATASIZE_32Bit), - SWAPENDIAN_32(0x00010002), - }; - -const struct -{ uint8_t Header; uint16_t Size; ItemUUID_t UUIDList[]; -} PROGMEM L2CAP_Attribute_ServiceClassIDs = +} PROGMEM RFCOMM_Attribute_BrowseGroupList = { (SDP_DATATYPE_Sequence | SDP_DATASIZE_Variable16Bit), - SWAPENDIAN_16(sizeof(ItemUUID_t) * 2), + SWAPENDIAN_16(sizeof(ItemUUID_t) * 1), { - {(SDP_DATATYPE_UUID | SDP_DATASIZE_128Bit), SDP_CLASS_UUID }, - {(SDP_DATATYPE_UUID | SDP_DATASIZE_128Bit), SP_CLASS_UUID }, + {(SDP_DATATYPE_UUID | SDP_DATASIZE_128Bit), PUBLICBROWSEGROUP_CLASS_UUID} } }; - + const struct { - uint8_t Header; - uint16_t Size; - - ItemProtocol_t ProtocolList[]; -} PROGMEM L2CAP_Attribute_ProtocolDescriptor = - { - (SDP_DATATYPE_Sequence | SDP_DATASIZE_Variable16Bit), - SWAPENDIAN_16(sizeof(ItemProtocol_t) * 2), - { + uint8_t Header; + uint8_t Size; + ItemLangID_t OffsetList[]; +} PROGMEM RFCOMM_Attribute_LanguageBaseIDOffset = + { + .Header = (SDP_DATATYPE_Sequence | SDP_DATASIZE_Variable8Bit), + .Size = (sizeof(ItemLangID_t) * 1), + .OffsetList = { - (SDP_DATATYPE_Sequence | SDP_DATASIZE_Variable8Bit), - sizeof(UUID_t), { - {(SDP_DATATYPE_UUID | SDP_DATASIZE_128Bit), L2CAP_UUID}, - } - }, - { - (SDP_DATATYPE_Sequence | SDP_DATASIZE_Variable8Bit), - sizeof(UUID_t), - { - {(SDP_DATATYPE_UUID | SDP_DATASIZE_128Bit), RFCOMM_UUID}, + {(SDP_DATATYPE_UnsignedInt | SDP_DATASIZE_16Bit), SWAPENDIAN_16(0x454E)}, + {(SDP_DATATYPE_UnsignedInt | SDP_DATASIZE_16Bit), SWAPENDIAN_16(0x006A)}, + {(SDP_DATATYPE_UnsignedInt | SDP_DATASIZE_16Bit), SWAPENDIAN_16(0x0100)}, } } - } - }; + }; const struct { uint8_t Header; uint8_t Size; char Text[]; -} PROGMEM L2CAP_Attribute_ServiceName = +} PROGMEM RFCOMM_Attribute_ServiceName = { (SDP_DATATYPE_String | SDP_DATASIZE_Variable8Bit), - sizeof("L2CAP") - 1, - "L2CAP", + sizeof("Serial Port") - 1, + "Serial Port", }; const struct @@ -271,20 +132,22 @@ const struct uint8_t Header; uint8_t Size; char Text[]; -} PROGMEM L2CAP_Attribute_ServiceDescription = +} PROGMEM RFCOMM_Attribute_ServiceDescription = { (SDP_DATATYPE_String | SDP_DATASIZE_Variable8Bit), - sizeof("Logical Link Layer") - 1, - "Logical Link Layer", + sizeof("Wireless Serial Port Service") - 1, + "Wireless Serial Port Service", }; -const ServiceAttributeTable_t L2CAP_Attribute_Table[] PROGMEM = +const ServiceAttributeTable_t PROGMEM RFCOMM_Attribute_Table[] = { - {.AttributeID = SDP_ATTRIBUTE_ID_SERVICERECORDHANDLE, .Data = &L2CAP_Attribute_ServiceHandle }, - {.AttributeID = SDP_ATTRIBUTE_ID_SERVICECLASSIDS, .Data = &L2CAP_Attribute_ServiceClassIDs }, - {.AttributeID = SDP_ATTRIBUTE_ID_PROTOCOLDESCRIPTORLIST, .Data = &L2CAP_Attribute_ProtocolDescriptor }, - {.AttributeID = SDP_ATTRIBUTE_ID_SERVICENAME, .Data = &L2CAP_Attribute_ServiceName }, - {.AttributeID = SDP_ATTRIBUTE_ID_SERVICEDESCRIPTION, .Data = &L2CAP_Attribute_ServiceDescription }, - + {.AttributeID = SDP_ATTRIBUTE_ID_SERVICERECORDHANDLE, .Data = &RFCOMM_Attribute_ServiceHandle }, + {.AttributeID = SDP_ATTRIBUTE_ID_SERVICECLASSIDS, .Data = &RFCOMM_Attribute_ServiceClassIDs }, + {.AttributeID = SDP_ATTRIBUTE_ID_PROTOCOLDESCRIPTORLIST, .Data = &RFCOMM_Attribute_ProtocolDescriptor }, + {.AttributeID = SDP_ATTRIBUTE_ID_BROWSEGROUPLIST, .Data = &RFCOMM_Attribute_BrowseGroupList }, + {.AttributeID = SDP_ATTRIBUTE_ID_LANGUAGEBASEATTROFFSET, .Data = &RFCOMM_Attribute_LanguageBaseIDOffset}, + {.AttributeID = SDP_ATTRIBUTE_ID_SERVICENAME, .Data = &RFCOMM_Attribute_ServiceName }, + {.AttributeID = SDP_ATTRIBUTE_ID_SERVICEDESCRIPTION, .Data = &RFCOMM_Attribute_ServiceDescription }, + SERVICE_ATTRIBUTE_TABLE_TERMINATOR };