1 /* 2 * Copyright (c) 2022 Codecoup 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 #ifndef ZEPHYR_INCLUDE_BLUETOOTH_SERVICES_IAS_H_ 8 #define ZEPHYR_INCLUDE_BLUETOOTH_SERVICES_IAS_H_ 9 10 /** 11 * @brief Immediate Alert Service (IAS) 12 * @defgroup bt_ias Immediate Alert Service (IAS) 13 * @ingroup bluetooth 14 * @{ 15 * 16 * [Experimental] Users should note that the APIs can change 17 * as a part of ongoing development. 18 */ 19 20 #include <zephyr/bluetooth/conn.h> 21 #include <zephyr/sys/iterable_sections.h> 22 23 #ifdef __cplusplus 24 extern "C" { 25 #endif 26 27 enum bt_ias_alert_lvl { 28 /** No alerting should be done on device */ 29 BT_IAS_ALERT_LVL_NO_ALERT, 30 31 /** Device shall alert */ 32 BT_IAS_ALERT_LVL_MILD_ALERT, 33 34 /** Device should alert in strongest possible way */ 35 BT_IAS_ALERT_LVL_HIGH_ALERT, 36 }; 37 38 /** @brief Immediate Alert Service callback structure. */ 39 struct bt_ias_cb { 40 /** 41 * @brief Callback function to stop alert. 42 * 43 * This callback is called when peer commands to disable alert. 44 */ 45 void (*no_alert)(void); 46 47 /** 48 * @brief Callback function for alert level value. 49 * 50 * This callback is called when peer commands to alert. 51 */ 52 void (*mild_alert)(void); 53 54 /** 55 * @brief Callback function for alert level value. 56 * 57 * This callback is called when peer commands to alert in the strongest possible way. 58 */ 59 void (*high_alert)(void); 60 }; 61 62 /** @brief Method for stopping alert locally 63 * 64 * @return Zero in case of success and error code in case of error. 65 */ 66 int bt_ias_local_alert_stop(void); 67 68 /** 69 * @brief Register a callback structure for immediate alert events. 70 * 71 * @param _name Name of callback structure. 72 */ 73 #define BT_IAS_CB_DEFINE(_name) \ 74 static const STRUCT_SECTION_ITERABLE(bt_ias_cb, _CONCAT(bt_ias_cb_, _name)) 75 76 struct bt_ias_client_cb { 77 /** @brief Callback function for bt_ias_discover. 78 * 79 * This callback is called when discovery procedure is complete. 80 * 81 * @param conn Bluetooth connection object. 82 * @param err 0 on success, ATT error or negative errno otherwise 83 */ 84 void (*discover)(struct bt_conn *conn, int err); 85 }; 86 87 /** @brief Set alert level 88 * 89 * @param conn Bluetooth connection object 90 * @param bt_ias_alert_lvl Level of alert to write 91 * 92 * @return Zero in case of success and error code in case of error. 93 */ 94 int bt_ias_client_alert_write(struct bt_conn *conn, enum bt_ias_alert_lvl); 95 96 /** @brief Discover Immediate Alert Service 97 * 98 * @param conn Bluetooth connection object 99 * 100 * @return Zero in case of success and error code in case of error. 101 */ 102 int bt_ias_discover(struct bt_conn *conn); 103 104 /** @brief Register Immediate Alert Client callbacks 105 * 106 * @param cb The callback structure 107 * 108 * @return Zero in case of success and error code in case of error. 109 */ 110 int bt_ias_client_cb_register(const struct bt_ias_client_cb *cb); 111 112 #ifdef __cplusplus 113 } 114 #endif 115 116 /** 117 * @} 118 */ 119 120 #endif /* ZEPHYR_INCLUDE_BLUETOOTH_SERVICES_IAS_H_ */ 121