1 /*
2  * Copyright (C) 2021 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef SDP_SERVER_H
17 #define SDP_SERVER_H
18 
19 #include "sdp.h"
20 
21 #include <stdint.h>
22 
23 #include "btstack.h"
24 #include "packet.h"
25 #include "securec.h"
26 
27 #ifdef __cplusplus
28 extern "C" {
29 #endif
30 
31 // Initialize sdp server
32 void SdpInitializeServer();
33 // Finalize sdp server
34 void SdpFinalizeServer();
35 void SdpParseClientRequest(uint16_t lcid, const Packet *data);
36 uint32_t SdpCreateServiceRecord();
37 int SdpDestroyServiceRecord(uint32_t handle);
38 int SdpRegisterServiceRecord(uint32_t handle);
39 int SdpDeregisterServiceRecord(uint32_t handle);
40 int SdpAddServiceClassIdList(uint32_t handle, const BtUuid *classid, uint16_t classidNumber);
41 int SdpAddServiceRecordState(uint32_t handle, uint32_t state);
42 int SdpAddServiceId(uint32_t handle, const BtUuid *serviceid);
43 int SdpAddProtocolDescriptorList(uint32_t handle, const SdpProtocolDescriptor *descriptor, uint16_t descriptorNumber);
44 int SdpAddAdditionalProtocolDescriptorList(
45     uint32_t handle, const SdpAdditionalProtocolDescriptor *descriptorList, uint16_t descriptorListNumber);
46 int SdpAddBrowseGroupList(uint32_t handle, const BtUuid *browseUuid, uint16_t browseUuidNumber);
47 int SdpAddLanguageBaseAttributeIdList(
48     uint32_t handle, const SdpLanguageBaseAttributeId *baseAttributeId, uint16_t baseAttributeIdNum);
49 int SdpAddServiceInfoTimeToLive(uint32_t handle, uint32_t value);
50 int SdpAddServiceAvailability(uint32_t handle, uint8_t value);
51 int SdpAddBluetoothProfileDescriptorList(
52     uint32_t handle, const SdpProfileDescriptor *profileDescriptor, uint16_t profileDescriptorNum);
53 int SdpAddDocumentationUrl(uint32_t handle, const uint8_t *url, uint16_t urlLen);
54 int SdpAddClientExecutableUrl(uint32_t handle, const uint8_t *url, uint16_t urlLen);
55 int SdpAddIconUrl(uint32_t handle, const uint8_t *url, uint16_t urlLen);
56 int SdpAddServiceName(uint32_t handle, uint16_t baseAttributeId, const char *name, uint16_t nameLen);
57 int SdpAddServiceDescription(
58     uint32_t handle, uint16_t baseAttributeId, const char *description, uint16_t descriptionLen);
59 int SdpAddProviderName(uint32_t handle, uint16_t baseAttributeId, const char *name, uint16_t nameLen);
60 int SdpAddAttribute(
61     uint32_t handle, uint16_t attributeId, SdpDataType type, void *attributeValue, uint16_t attributeValueLength);
62 int SdpAddSequenceAttribute(
63     uint32_t handle, uint16_t attributeId, const uint8_t *attributeValue, uint16_t attributeValueLength);
64 
65 #ifdef __cplusplus
66 }
67 #endif
68 
69 #endif  // SDP_SERVER_H