1 /**
2  * This file has no copyright assigned and is placed in the Public Domain.
3  * This file is part of the mingw-w64 runtime package.
4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5  */
6 #ifndef _INC_BTHSDPDEF
7 #define _INC_BTHSDPDEF
8 
9 #ifdef __cplusplus
10 extern "C" {
11 #endif
12 
13 typedef union SdpQueryUuidUnion {
14   GUID   uuid128;
15   ULONG  uuid32;
16   USHORT uuid16;
17 } SdpQueryUuidUnion;
18 
19 typedef struct _SdpAttributeRange {
20   USHORT minAttribute;
21   USHORT maxAttribute;
22 } SdpAttributeRange;
23 
24 typedef struct _SdpQueryUuid {
25   SdpQueryUuidUnion u;
26   USHORT            uuidType;
27 } SdpQueryUuid;
28 
29 typedef enum _SDP_TYPE {
30   SDP_TYPE_NIL = 0x00,
31   SDP_TYPE_UINT = 0x01,
32   SDP_TYPE_INT = 0x02,
33   SDP_TYPE_UUID = 0x03,
34   SDP_TYPE_STRING = 0x04,
35   SDP_TYPE_BOOLEAN = 0x05,
36   SDP_TYPE_SEQUENCE = 0x06,
37   SDP_TYPE_ALTERNATIVE = 0x07,
38   SDP_TYPE_URL = 0x08,
39   SDP_TYPE_CONTAINER = 0x20
40 } SDP_TYPE;
41 
42 typedef enum _SDP_SPECIFICTYPE {
43   SDP_ST_NONE = 0x0000,
44   SDP_ST_UINT8 = 0x0010,
45   SDP_ST_UINT16 = 0x0110,
46   SDP_ST_UINT32 = 0x0210,
47   SDP_ST_UINT64 = 0x0310,
48   SDP_ST_UINT128 = 0x0410,
49   SDP_ST_INT8 = 0x0020,
50   SDP_ST_INT16 = 0x0120,
51   SDP_ST_INT32 = 0x0220,
52   SDP_ST_INT64 = 0x0320,
53   SDP_ST_INT128 = 0x0420,
54   SDP_ST_UUID16 = 0x0130,
55   SDP_ST_UUID32 = 0x0220,
56   SDP_ST_UUID128 = 0x0430
57 } SDP_SPECIFICTYPE;
58 
59 typedef struct _SDP_LARGE_INTEGER_16 {
60   ULONGLONG LowPart;
61   LONGLONG HighPart;
62 } SDP_LARGE_INTEGER_16;
63 
64 typedef struct _SDP_ULARGE_INTEGER_16 {
65   ULONGLONG LowPart;
66   ULONGLONG HighPart;
67 } SDP_ULARGE_INTEGER_16;
68 
69 typedef struct _SPD_ELEMENT_DATA {
70   SDP_TYPE         type;
71   SDP_SPECIFICTYPE specificType;
72   __C89_NAMELESS union {
73     SDP_LARGE_INTEGER_16  int128;
74     LONGLONG              int64;
75     LONG                  int32;
76     SHORT                 int16;
77     CHAR                  int8;
78     SDP_ULARGE_INTEGER_16 uint128;
79     ULONGLONG             uint64;
80     ULONG                 uint32;
81     USHORT                uint16;
82     UCHAR                 uint8;
83     UCHAR                 booleanVal;
84     GUID                  uuid128;
85     ULONG                 uuid32;
86     USHORT                uuid16;
87     struct {
88       LPBYTE value;
89       ULONG  length;
90     } string;
91     struct {
92       LPBYTE value;
93       ULONG  length;
94     } url;
95     struct {
96       LPBYTE value;
97       ULONG  length;
98     } sequence;
99     struct {
100       LPBYTE value;
101       ULONG  length;
102     } alternative;
103   } data;
104 } SDP_ELEMENT_DATA, *PSDP_ELEMENT_DATA;
105 
106 typedef struct _SDP_STRING_TYPE_DATA {
107   USHORT encoding;
108   USHORT mibeNum;
109   USHORT attributeID;
110 } SDP_STRING_TYPE_DATA, *PSDP_STRING_TYPE_DATA;
111 
112 #ifdef __cplusplus
113 }
114 #endif
115 #endif /*_INC_BTHSDPDEF*/
116