Line data Source code
1 0 : /*
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 0 : 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 1 : 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 1 : 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 1 : 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 1 : 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 1 : 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 1 : #define BT_IAS_CB_DEFINE(_name) \
74 : static const STRUCT_SECTION_ITERABLE(bt_ias_cb, _CONCAT(bt_ias_cb_, _name))
75 :
76 0 : 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 1 : 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 1 : 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 1 : 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 1 : 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_ */
|