SmartSnippets DA1459x SDK
bls.h
Go to the documentation of this file.
1 
34 #ifndef BLS_H_
35 #define BLS_H_
36 
37 #include <stdbool.h>
38 #include "ble_service.h"
39 #include "svc_types.h"
40 
49 typedef void (* bls_measurement_indication_changed_cb_t) (ble_service_t *service, uint16_t conn_idx,
50  bool enabled);
51 
61 typedef void (* bls_measurement_indication_sent_cb_t) (ble_service_t *service, uint16_t conn_idx,
62  bool status);
63 
74  uint16_t conn_idx, bool enabled);
75 
85  uint16_t conn_idx, bool status);
86 
91 typedef struct {
101 
105 #define BLS_MEASUREMENT_STATUS(NAME, VALUE) ( NAME ## _MASK & (VALUE << NAME ## _POS) )
106 #define BLS_BODY_MOVEMENT_POS ( 0x0000 )
107 #define BLS_BODY_MOVEMENT_MASK ( 0x0001 )
108 #define BLS_CUFF_FIT_POS ( 0x0001 )
109 #define BLS_CUFF_FIT_MASK ( 0x0002 )
110 #define BLS_IRREGULAR_PULSE_DETECTION_POS ( 0x0002 )
111 #define BLS_IRREGULAR_PULSE_DETECTION_MASK ( 0x0004 )
112 #define BLS_PULSE_RATE_RANGE_POS ( 0x0003 )
113 #define BLS_PULSE_RATE_RANGE_MASK ( 0x0018 )
114 #define BLS_MEASUREREMENT_POS_DETECTION_POS ( 0x0005 )
115 #define BLS_MEASUREREMENT_POS_DETECTION_MASK ( 0x0020 )
116 
123 typedef enum {
129 
130 
131 
138 typedef enum {
144 
145 
152 typedef enum {
158 
159 
160 
167 typedef enum {
181 typedef enum {
183  BLS_MEASUREREMENT_POS_DETECTION_PROPER = BLS_MEASUREMENT_STATUS(BLS_MEASUREREMENT_POS_DETECTION, 0),
187 
194 typedef enum {
198 
203 typedef struct {
210  uint8_t user_id;
214  bool user_id_present : 1;
217 
224 typedef enum {
231 } bls_feature_t;
232 
239 typedef enum {
243 
248 typedef struct {
251 } bls_config_t;
252 
265 ble_service_t *bls_init(const ble_service_config_t *config, const bls_config_t *bls_config,
266  const bls_callbacks_t *cb);
267 
281 bool bls_indicate_pressure_measurement(ble_service_t *svc, uint16_t conn_idx,
282  const bls_measurement_t *measurement);
283 
297 bool bls_notify_intermediate_cuff_pressure(ble_service_t *svc, uint16_t conn_idx,
298  const bls_measurement_t *measurement);
299 
300 #endif /* BLS_H_ */
bls_measurement_t::pulse_rate
svc_ieee11073_float_t pulse_rate
Definition: bls.h:209
bls_config_t::feature_supp
bls_feature_t feature_supp
Definition: bls.h:249
bls_measurement_t::pressure_systolic
svc_ieee11073_float_t pressure_systolic
Definition: bls.h:205
bls_config_t
Blood Pressure Service config used during initialization of service.
Definition: bls.h:248
bls_callbacks_t::interm_cuff_pressure_notif_sent
bls_interm_cuff_pressure_notif_sent_cb_t interm_cuff_pressure_notif_sent
Definition: bls.h:99
bls_callbacks_t::interm_cuff_pressure_notif_changed
bls_interm_cuff_pressure_notif_changed_cb_t interm_cuff_pressure_notif_changed
Definition: bls.h:97
bls_body_movement_t
bls_body_movement_t
Body Movement Detection Flag.
Definition: bls.h:123
bls_measurement_t::measurement_status
uint16_t measurement_status
Definition: bls.h:211
BLS_FEATURE_CUFF_FIT_DETECTION
Definition: bls.h:226
bls_cuff_fit_t
bls_cuff_fit_t
Cuff Fit Detection Flag.
Definition: bls.h:138
BLS_FEATURE_MEASUREMENT_POS_DETECTION
Definition: bls.h:229
bls_measurement_t::pulse_rate_present
bool pulse_rate_present
Definition: bls.h:213
svc_types.h
Characteristics common types.
bls_measurement_indication_changed_cb_t
void(* bls_measurement_indication_changed_cb_t)(ble_service_t *service, uint16_t conn_idx, bool enabled)
Callback function, called when Pressure Measurement indication was changed by the client.
Definition: bls.h:49
bls_measurement_t::time_stamp
svc_date_time_t time_stamp
Definition: bls.h:208
bls_supported_char_t
bls_supported_char_t
Support optional characteristics.
Definition: bls.h:239
bls_measurement_t::user_id_present
bool user_id_present
Definition: bls.h:214
BLS_CUFF_FIT_TOO_LOOSE
Definition: bls.h:142
bls_interm_cuff_pressure_notif_sent_cb_t
void(* bls_interm_cuff_pressure_notif_sent_cb_t)(ble_service_t *service, uint16_t conn_idx, bool status)
Callback function, called when a Cuff Pressure notification has been sent to the client.
Definition: bls.h:84
BLS_PULSE_RATE_RANGE_WITHIN
Definition: bls.h:169
bls_pressure_unit_t
bls_pressure_unit_t
Blood Pressure Service Pressure Unit.
Definition: bls.h:194
bls_pulse_rate_range_t
bls_pulse_rate_range_t
Pulse Rate Range Detection Flags.
Definition: bls.h:167
bls_callbacks_t::meas_indication_sent
bls_measurement_indication_sent_cb_t meas_indication_sent
Definition: bls.h:95
bls_init
ble_service_t * bls_init(const ble_service_config_t *config, const bls_config_t *bls_config, const bls_callbacks_t *cb)
Initialize Body Pressure Service instance.
bls_interm_cuff_pressure_notif_changed_cb_t
void(* bls_interm_cuff_pressure_notif_changed_cb_t)(ble_service_t *service, uint16_t conn_idx, bool enabled)
Callback function, called when Intermediate Cuff Pressure notification was changed by the client.
Definition: bls.h:73
svc_date_time_t
Definition: svc_types.h:62
bls_measurement_t::pressure_diastolic
svc_ieee11073_float_t pressure_diastolic
Definition: bls.h:206
BLS_PRESSURE_UNIT_MMHG
Definition: bls.h:195
svc_ieee11073_float_t
Definition: svc_types.h:74
BLS_CUFF_FIT_PROPERLY
Definition: bls.h:140
ble_service.h
Services handling routines API.
BLS_BODY_MOVEMENT_DETECTED
Definition: bls.h:127
bls_irregular_pulse_t
bls_irregular_pulse_t
Irregular Pulse Detection Flag.
Definition: bls.h:152
bls_config_t::supported_char
bls_supported_char_t supported_char
Definition: bls.h:250
BLS_PULSE_RATE_RANGE_LESS
Definition: bls.h:173
bls_measurement_indication_sent_cb_t
void(* bls_measurement_indication_sent_cb_t)(ble_service_t *service, uint16_t conn_idx, bool status)
Callback function, called when confirmation to Pressure Measurement indication has been received.
Definition: bls.h:61
bls_measurement_t::user_id
uint8_t user_id
Definition: bls.h:210
bls_measurement_t::measurement_status_present
bool measurement_status_present
Definition: bls.h:215
BLS_FEATURE_IRREGULAR_PULSE_DETECTION
Definition: bls.h:227
BLS_FEATURE_MULTIPLE_BOND
Definition: bls.h:230
bls_notify_intermediate_cuff_pressure
bool bls_notify_intermediate_cuff_pressure(ble_service_t *svc, uint16_t conn_idx, const bls_measurement_t *measurement)
Notify intermediate cuff pressure measurement to client.
BLS_PULSE_RATE_RANGE_EXCEEDS
Definition: bls.h:171
bls_measurement_t::unit
bls_pressure_unit_t unit
Definition: bls.h:204
BLS_FEATURE_BODY_MOVEMENT_DETECTION
Definition: bls.h:225
BLS_IRREGULAR_PULSE_DETECTED
Definition: bls.h:156
bls_measurement_pos_detection_t
bls_measurement_pos_detection_t
Measurement Position Detection Flag.
Definition: bls.h:181
BLS_MEASUREREMENT_POS_DETECTION_PROPER
Definition: bls.h:183
BLS_MEASUREREMENT_POS_DETECTION_IMPROPER
Definition: bls.h:185
BLS_MEASUREMENT_STATUS
#define BLS_MEASUREMENT_STATUS(NAME, VALUE)
BLS Measurement Status fields.
Definition: bls.h:105
bls_feature_t
bls_feature_t
Blood Pressure Feature supported features.
Definition: bls.h:224
BLS_FEATURE_PULSE_RATE_RANGE_DETECTION
Definition: bls.h:228
BLS_SUPPORTED_CHAR_INTERM_CUFF_PRESSURE
Definition: bls.h:241
BLS_PRESSURE_UNIT_KPA
Definition: bls.h:196
bls_indicate_pressure_measurement
bool bls_indicate_pressure_measurement(ble_service_t *svc, uint16_t conn_idx, const bls_measurement_t *measurement)
Indicate blood pressure measurement to client.
ble_service_config_t
Definition: ble_service.h:150
bls_callbacks_t::meas_indication_changed
bls_measurement_indication_changed_cb_t meas_indication_changed
Definition: bls.h:93
bls_measurement_t::time_stamp_present
bool time_stamp_present
Definition: bls.h:212
BLS_BODY_MOVEMENT_NOT_DETECTED
Definition: bls.h:125
bls_callbacks_t
BLS application callbacks.
Definition: bls.h:91
bls_measurement_t::pressure_map
svc_ieee11073_float_t pressure_map
Definition: bls.h:207
ble_service
Definition: ble_service.h:132
bls_measurement_t
Blood Pressure Measurement.
Definition: bls.h:203
BLS_IRREGULAR_PULSE_NOT_DETECTED
Definition: bls.h:154