Line data Source code
1 0 : /*
2 : * Copyright (c) 2016 Intel Corporation
3 : *
4 : * SPDX-License-Identifier: Apache-2.0
5 : */
6 :
7 : #ifndef ZEPHYR_INCLUDE_BLUETOOTH_SERVICES_HRS_H_
8 : #define ZEPHYR_INCLUDE_BLUETOOTH_SERVICES_HRS_H_
9 :
10 : /**
11 : * @brief Heart Rate Service (HRS)
12 : * @defgroup bt_hrs Heart Rate Service (HRS)
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 <stdint.h>
21 :
22 : #include <zephyr/sys/slist.h>
23 :
24 : #ifdef __cplusplus
25 : extern "C" {
26 : #endif
27 :
28 : /**
29 : * @brief Server shall restart the accumulation of energy expended from zero
30 : */
31 1 : #define BT_HRS_CONTROL_POINT_RESET_ENERGY_EXPANDED_REQ 0x01
32 :
33 : /** @brief Heart rate service callback structure */
34 1 : struct bt_hrs_cb {
35 : /** @brief Heart rate notifications changed
36 : *
37 : * @param enabled Flag that is true if notifications were enabled, false
38 : * if they were disabled.
39 : */
40 1 : void (*ntf_changed)(bool enabled);
41 :
42 : /**
43 : * @brief Heart rate control point write callback
44 : *
45 : * @note if Server supports the Energy Expended feature then application
46 : * shall implement and support @ref BT_HRS_CONTROL_POINT_RESET_ENERGY_EXPANDED_REQ
47 : * request code
48 : *
49 : * @param request control point request code
50 : *
51 : * @return 0 on successful handling of control point request
52 : * @return -ENOTSUP if not supported. It can be used to pass handling to other
53 : * listeners in case of multiple listeners
54 : * @return other negative error codes will result in immediate error response
55 : */
56 1 : int (*ctrl_point_write)(uint8_t request);
57 :
58 : /** Internal member to form a list of callbacks */
59 : sys_snode_t _node;
60 : };
61 :
62 : /** @brief Heart rate service callback register
63 : *
64 : * This function will register callbacks that will be called in
65 : * certain events related to Heart rate service.
66 : *
67 : * @param cb Pointer to callbacks structure. Must point to memory that remains valid
68 : * until unregistered.
69 : *
70 : * @return 0 on success
71 : * @return -EINVAL in case @p cb is NULL
72 : */
73 1 : int bt_hrs_cb_register(struct bt_hrs_cb *cb);
74 :
75 : /** @brief Heart rate service callback unregister
76 : *
77 : * This function will unregister callback from Heart rate service.
78 : *
79 : * @param cb Pointer to callbacks structure
80 : *
81 : * @return 0 on success
82 : * @return -EINVAL in case @p cb is NULL
83 : * @return -ENOENT in case the @p cb was not found in registered callbacks
84 : */
85 1 : int bt_hrs_cb_unregister(struct bt_hrs_cb *cb);
86 :
87 : /** @brief Notify heart rate measurement.
88 : *
89 : * This will send a GATT notification to all current subscribers.
90 : *
91 : * @param heartrate The heartrate measurement in beats per minute.
92 : *
93 : * @return Zero in case of success and error code in case of error.
94 : */
95 1 : int bt_hrs_notify(uint16_t heartrate);
96 :
97 : #ifdef __cplusplus
98 : }
99 : #endif
100 :
101 : /**
102 : * @}
103 : */
104 :
105 : #endif /* ZEPHYR_INCLUDE_BLUETOOTH_SERVICES_HRS_H_ */
|