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 HCI_DEF_STATUS_PARAMS_CMD_H
17 #define HCI_DEF_STATUS_PARAMS_CMD_H
18 
19 #include <stdint.h>
20 
21 #include "hci_def_cmd_common.h"
22 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26 
27 #pragma pack(1)
28 
29 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
30 // 7.5 STATUS PARAMETERS
31 #define HCI_COMMAND_OGF_STATUS_PARAMETERS 0x05
32 
33 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
34 // 7.5.1 Read Failed Contact Counter Command
35 #define HCI_READ_FAILED_CONTACT_COUNTER MAKE_OPCODE(0x0001, HCI_COMMAND_OGF_STATUS_PARAMETERS)
36 
37 typedef struct {
38     uint16_t handle;
39 } HciReadFailedContactCounterParam;
40 
41 typedef struct {
42     uint8_t status;
43     uint16_t handle;
44     uint16_t failedContactCounter;
45 } HciReadFailedContactCounterReturnParam;
46 
47 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
48 // 7.5.2 Reset Failed Contact Counter Command
49 #define HCI_RESET_FAILED_CONTACT_COUNTER MAKE_OPCODE(0x0002, HCI_COMMAND_OGF_STATUS_PARAMETERS)
50 
51 typedef struct {
52     uint16_t handle;
53 } HciResetFailedContactCounterParam;
54 
55 typedef struct {
56     uint8_t status;
57     uint16_t handle;
58 } HciResetFailedContactCounterReturnParam;
59 
60 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
61 // 7.5.3 Read Link Quality Command
62 #define HCI_READ_LINK_QUALITY MAKE_OPCODE(0x0003, HCI_COMMAND_OGF_STATUS_PARAMETERS)
63 
64 typedef struct {
65     uint16_t handle;
66 } HciReadLinkQualityParam;
67 
68 typedef struct {
69     uint8_t status;
70     uint16_t handle;
71     uint8_t linkQuality;
72 } HciReadLinkQualityReturnParam;
73 
74 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
75 // 7.5.4 Read RSSI Command
76 #define HCI_READ_RSSI MAKE_OPCODE(0x0005, HCI_COMMAND_OGF_STATUS_PARAMETERS)
77 
78 typedef struct {
79     uint16_t handle;
80 } HciReadRssiParam;
81 
82 typedef struct {
83     uint8_t status;
84     uint16_t handle;
85     int8_t rssi;
86 } HciReadRssiReturnParam;
87 
88 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
89 // 7.5.5 Read AFH Channel Map Command
90 #define HCI_READ_AFH_CHANNEL_MAP MAKE_OPCODE(0x0006, HCI_COMMAND_OGF_STATUS_PARAMETERS)
91 
92 typedef struct {
93     uint16_t connectionHandle;
94 } HciReadAfhChannelMapParam;
95 
96 typedef struct {
97     uint8_t status;
98     uint16_t connectionHandle;
99     uint8_t afhMode;
100     uint8_t afhChannelMap[10];
101 } HciReadAfhChannelMapReturnParam;
102 
103 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
104 // 7.5.6 Read Clock Command
105 #define HCI_READ_CLOCK MAKE_OPCODE(0x0007, HCI_COMMAND_OGF_STATUS_PARAMETERS)
106 
107 typedef struct {
108     uint16_t connectionHandle;
109     uint8_t whichClock;
110 } HciReadClockParam;
111 
112 typedef struct {
113     uint8_t status;
114     uint16_t connectionHandle;
115     uint32_t clock;
116     uint16_t accuracy;
117 } HciReadClockReturnParam;
118 
119 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
120 // 7.5.7 Read Encryption Key Size Command
121 #define HCI_READ_ENCRYPTION_KEY_SIZE MAKE_OPCODE(0x0008, HCI_COMMAND_OGF_STATUS_PARAMETERS)
122 
123 typedef struct {
124     uint16_t connectionHandle;
125 } HciReadEncryptionKeySizeParam;
126 
127 typedef struct {
128     uint8_t status;
129     uint16_t connectionHandle;
130     uint8_t keySize;
131 } HciReadEncryptionKeySizeReturnParam;
132 
133 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
134 // 7.5.8 Read Local AMP Info Command
135 #define HCI_READ_LOCAL_AMP_INFO MAKE_OPCODE(0x0009, HCI_COMMAND_OGF_STATUS_PARAMETERS)
136 
137 typedef struct {
138     uint8_t status;
139     uint8_t ampStatus;
140     uint32_t totalBandwidth;
141     uint32_t maxGuaranteedBandwidth;
142     uint32_t minLatency;
143     uint16_t maxPduSize;
144     uint8_t controllerType;
145     uint16_t palCapabilities;
146     uint16_t maxAmpAssocLength;
147     uint32_t maxFlushTimeout;
148     uint32_t bestEffortFlushTimeout;
149 } HciReadLocalAMPInfoReturnParam;
150 
151 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
152 // 7.5.9 Read Local AMP ASSOC Command
153 #define HCI_READ_LOCAL_AMP_ASSOC MAKE_OPCODE(0x000A, HCI_COMMAND_OGF_STATUS_PARAMETERS)
154 
155 typedef struct {
156     uint8_t physicalLinkHandle;
157     uint16_t lengthSoFar;
158     uint16_t ampAssocLength;
159 } HciReadLocalAmpAssocParam;
160 
161 typedef struct {
162     uint8_t status;
163     uint8_t physicalLinkHandle;
164     uint16_t ampAssocLength;
165 } HciReadLocalAmpAssocReturnParam;
166 
167 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
168 // 7.5.10 Write Remote AMP ASSOC Command
169 #define HCI_WRITE_REMOTE_AMP_ASSOC MAKE_OPCODE(0x000B, HCI_COMMAND_OGF_STATUS_PARAMETERS)
170 
171 typedef struct {
172     uint8_t physicalLinkHandle;
173     uint16_t lengthSoFar;
174     uint16_t ampAssocLength;
175     uint8_t ampAssocfragment[248];
176 } HciWriteRemoteAmpAssocParam;
177 
178 typedef struct {
179     uint8_t status;
180     uint8_t physicalLinkHandle;
181     uint16_t ampAssocLength;
182 } HciWriteRemoteAmpAssocReturnParam;
183 
184 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
185 // 7.5.11 Get MWS Transport Layer Configuration Command
186 #define HCI_GET_MWS_TRANSPORT_LAYER_CONFIGURATION MAKE_OPCODE(0x000C, HCI_COMMAND_OGF_STATUS_PARAMETERS)
187 
188 typedef struct {
189     uint8_t status;
190     uint8_t numTransports;
191     uint8_t transportLayer;
192     uint8_t numBaudRates;
193     uint8_t *toMwsBaudRate;
194     uint8_t *fromMwsBaudRate;
195 } HciGetMwsTransportLayerConfigurationReturnParam;
196 
197 // BLUETOOTH SPECIFICATION Version 5.0 | Vol 2, Part E
198 // 7.5.12 Set Triggered Clock Capture Command
199 #define HCI_SET_TRIGGERED_CLOCK_CAPTURE MAKE_OPCODE(0x000D, HCI_COMMAND_OGF_STATUS_PARAMETERS)
200 
201 typedef struct {
202     uint16_t connectionHandle;
203     uint8_t enable;
204     uint8_t whichClock;
205     uint8_t lpoAllowed;
206     uint8_t numClockCapturesToFilter;
207 } HciSetTriggeredClockCaptureParam;
208 
209 typedef HciStatusParam HciSetTriggeredClockCaptureReturnParam;
210 
211 #pragma pack(0)
212 
213 #ifdef __cplusplus
214 }
215 #endif
216 
217 #endif