blob: 8b3ebd3fb4c4253bae04cc6b2a62c8f02078330b [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
#ifndef H_BLE_HS_STOP_
#define H_BLE_HS_STOP_
/**
* @brief Bluetooth Host Stop API
* @defgroup bt_hs_stop Bluetooth Host Stop
* @ingroup bt_host
* @{
*/
/** @typedef ble_hs_stop_fn
* @brief Callback function; reports the result of a host stop procedure.
*
* @param status The result of the host stop procedure. One of
* the HAL_RESET_[...] codes or an
* implementation-defined value.
* @param arg Optional argument specified when the stop
* procedure was initiated.
*
*/
typedef void ble_hs_stop_fn(int status, void *arg);
/**
* @brief Used to report the result of a stop procedure.
*
* This should be used as an opaque structure and not modified manually.
*/
struct ble_hs_stop_listener {
/** The callback function to be called when the stop procedure completes. */
ble_hs_stop_fn *fn;
/** An optional argument to be passed to the callback function. */
void *arg;
/** Singly-linked list entry. */
SLIST_ENTRY(ble_hs_stop_listener) link;
};
/**
* @brief Stops the BLE host.
*
* Aborts all active GAP procedures and terminates all open connections.
* Connection termination is performed asynchronously, so this function's
* result is reported via the provided listener.
*
* @param listener A listener to populate. This object's initial
* value doesn't matter, but its lifetime must
* extend until the stop procedure completes.
* @param fn The callback to execute when the stop procedure
* completes.
* @param arg Optional argument to pass to the callback.
*
* @return 0: Stop procedure successfully initiated.
* BLE_HS_EBUSY: Stop procedure already in
* progress; the provided callback gets called
* when the procedure completes.
* BLE_HS_EALREADY: Host already stopped; the
* provided callback does *not* get called.
*/
int ble_hs_stop(struct ble_hs_stop_listener *listener,
ble_hs_stop_fn *fn, void *arg);
/**
* @}
*/
#endif