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