xref: /nrf52832-nimble/packages/NimBLE-latest/nimble/host/include/host/ble_hs_stop.h (revision 042d53a763ad75cb1465103098bb88c245d95138)
1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one
3  * or more contributor license agreements.  See the NOTICE file
4  * distributed with this work for additional information
5  * regarding copyright ownership.  The ASF licenses this file
6  * to you under the Apache License, Version 2.0 (the
7  * "License"); you may not use this file except in compliance
8  * with the License.  You may obtain a copy of the License at
9  *
10  *  http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing,
13  * software distributed under the License is distributed on an
14  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15  * KIND, either express or implied.  See the License for the
16  * specific language governing permissions and limitations
17  * under the License.
18  */
19 
20 #ifndef H_BLE_HS_STOP_
21 #define H_BLE_HS_STOP_
22 
23 /** @typedef ble_hs_stop_fn
24  * @brief Callback function; reports the result of a host stop procedure.
25  *
26  * @param status                The result of the host stop procedure.  One of
27  *                                  the HAL_RESET_[...] codes or an
28  *                                  implementation-defined value.
29  * @param arg                   Optional argument specified when the stop
30  *                                  procedure was initiated.
31  *
32  */
33 typedef void ble_hs_stop_fn(int status, void *arg);
34 
35 /**
36  * @brief Used to report the result of a stop procedure.
37  *
38  * This should be used as an opaque structure and not modified manually.
39  */
40 struct ble_hs_stop_listener {
41     ble_hs_stop_fn *fn;
42     void *arg;
43     SLIST_ENTRY(ble_hs_stop_listener) link;
44 };
45 
46 /**
47  * @brief Stops the BLE host.
48  *
49  * Aborts all active GAP procedures and terminates all open connections.
50  * Connection termination is performed asynchronously, so this function's
51  * result is reported via the provided listener.
52  *
53  * @param listener              A listener to populate.  This object's initial
54  *                                  value doesn't matter, but its lifetime must
55  *                                  extend until the stop procedure completes.
56  * @param fn                    The callback to execute when the stop procedure
57  *                                  completes.
58  * @param arg                   Optional argument to pass to the callback.
59  *
60  * @return                      0: Stop procedure successfully initiated.
61  *                              BLE_HS_EBUSY: Stop procedure already in
62  *                                  progress; the provided callback gets called
63  *                                  when the procedure completes.
64  *                              BLE_HS_EALREADY: Host already stopped; the
65  *                                  provided callback does *not* get called.
66  */
67 int ble_hs_stop(struct ble_hs_stop_listener *listener,
68                 ble_hs_stop_fn *fn, void *arg);
69 
70 #endif
71