SmartSnippets DA1459x SDK
ble_service.h
Go to the documentation of this file.
1 
43 #ifndef BLE_SERVICE_H_
44 #define BLE_SERVICE_H_
45 
46 #include <stdbool.h>
47 #include "ble_gap.h"
48 #include "ble_gatts.h"
49 
50 typedef struct ble_service ble_service_t;
51 
61 typedef void (* connected_evt_t) (ble_service_t *svc, const ble_evt_gap_connected_t *evt);
62 
72 typedef void (* disconnected_evt_t) (ble_service_t *svc, const ble_evt_gap_disconnected_t *evt);
73 
83 typedef void (* read_req_t) (ble_service_t *svc, const ble_evt_gatts_read_req_t *evt);
84 
94 typedef void (* write_req_t) (ble_service_t *svc, const ble_evt_gatts_write_req_t *evt);
95 
105 typedef void (* prepare_write_req_t) (ble_service_t *svc,
107 
117 typedef void (* event_sent_t) (ble_service_t *svc, const ble_evt_gatts_event_sent_t *evt);
118 
126 typedef void (* cleanup_t) (ble_service_t *svc);
127 
132 typedef struct ble_service {
133  uint16_t start_h;
134  uint16_t end_h;
144 } ble_service_t;
145 
150 typedef struct {
154  uint8_t num_includes;
157 
167 void ble_service_add(ble_service_t *svc);
168 
180 void ble_service_remove(const ble_service_t *svc);
181 
193 
200 void ble_services_cleanup(void);
201 
212 bool ble_service_handle_event(const ble_evt_hdr_t *evt);
213 
226 
239 __STATIC_INLINE uint8_t ble_service_get_num_attr(const ble_service_config_t *config, uint16_t chars,
240  uint16_t descs)
241 {
242  return ble_gatts_get_num_attr(config ? config->num_includes : 0, chars, descs);
243 }
244 
254 
255 #endif /* BLE_SERVICE_H_ */
256 
ble_service_config_t::includes
ble_service_t ** includes
Definition: ble_service.h:155
ble_service::write_req
write_req_t write_req
Definition: ble_service.h:139
ble_service_cleanup
void ble_service_cleanup(ble_service_t *svc)
Cleanup service.
read_req_t
void(* read_req_t)(ble_service_t *svc, const ble_evt_gatts_read_req_t *evt)
Read request callback.
Definition: ble_service.h:83
disconnected_evt_t
void(* disconnected_evt_t)(ble_service_t *svc, const ble_evt_gap_disconnected_t *evt)
Dis event callback.
Definition: ble_service.h:72
ble_gatts.h
BLE GATT Server API.
ble_evt_gatts_write_req_t
Definition: ble_gatts.h:73
ble_service::cleanup
cleanup_t cleanup
Definition: ble_service.h:142
ble_service::start_h
uint16_t start_h
Definition: ble_service.h:133
ble_service::end_h
uint16_t end_h
Definition: ble_service.h:134
gatt_service_t
gatt_service_t
Definition: ble_gatt.h:43
ble_service::disconnected_evt
disconnected_evt_t disconnected_evt
Definition: ble_service.h:137
ble_evt_gap_disconnected_t
Definition: ble_gap.h:597
cleanup_t
void(* cleanup_t)(ble_service_t *svc)
Cleanup callback.
Definition: ble_service.h:126
ble_service_t
struct ble_service ble_service_t
Definition: ble_service.h:50
ble_service::prepare_write_req
prepare_write_req_t prepare_write_req
Definition: ble_service.h:140
ble_service::read_req
read_req_t read_req
Definition: ble_service.h:138
ble_evt_gatts_prepare_write_req_t
Definition: ble_gatts.h:83
ble_evt_gatts_event_sent_t
Definition: ble_gatts.h:90
att_perm_t
att_perm_t
Definition: ble_att.h:48
ble_service_config_elevate_perm
att_perm_t ble_service_config_elevate_perm(att_perm_t perm, const ble_service_config_t *config)
Elevate permissions.
ble_service_handle_event
bool ble_service_handle_event(const ble_evt_hdr_t *evt)
Handle BLE event.
ble_service::connected_evt
connected_evt_t connected_evt
Definition: ble_service.h:136
ble_service_config_t::service_type
gatt_service_t service_type
Definition: ble_service.h:151
ble_evt_gap_connected_t
Definition: ble_gap.h:588
ble_service_config_t::num_includes
uint8_t num_includes
Definition: ble_service.h:154
ble_evt_hdr_t
Definition: ble_common.h:156
ble_service_config_t::sec_level
gap_sec_level_t sec_level
Definition: ble_service.h:152
event_sent_t
void(* event_sent_t)(ble_service_t *svc, const ble_evt_gatts_event_sent_t *evt)
Event sent callback.
Definition: ble_service.h:117
connected_evt_t
void(* connected_evt_t)(ble_service_t *svc, const ble_evt_gap_connected_t *evt)
Connected event callback.
Definition: ble_service.h:61
ble_service_get_num_attr
__STATIC_INLINE uint8_t ble_service_get_num_attr(const ble_service_config_t *config, uint16_t chars, uint16_t descs)
Get number of attributes.
Definition: ble_service.h:239
ble_evt_gatts_read_req_t
Definition: ble_gatts.h:65
ble_service::event_sent
event_sent_t event_sent
Definition: ble_service.h:141
ble_services_cleanup
void ble_services_cleanup(void)
Cleanup all services.
write_req_t
void(* write_req_t)(ble_service_t *svc, const ble_evt_gatts_write_req_t *evt)
Write request callback.
Definition: ble_service.h:94
gap_sec_level_t
gap_sec_level_t
Definition: ble_gap.h:531
ble_gap.h
BLE GAP API.
ble_service_config_t
Definition: ble_service.h:150
ble_service_remove
void ble_service_remove(const ble_service_t *svc)
Remove service.
ble_gatts_get_num_attr
__STATIC_INLINE uint16_t ble_gatts_get_num_attr(uint16_t include, uint16_t characteristic, uint16_t descriptor)
Calculate number of attributes required for service.
Definition: ble_gatts.h:413
ble_service_config_add_includes
void ble_service_config_add_includes(const ble_service_config_t *config)
Add included services.
ble_service
Definition: ble_service.h:132
prepare_write_req_t
void(* prepare_write_req_t)(ble_service_t *svc, const ble_evt_gatts_prepare_write_req_t *evt)
Prepare write request callback.
Definition: ble_service.h:105
ble_service_add
void ble_service_add(ble_service_t *svc)
Add service.