nRF Connect SDK Bare Metal API 2.0.99
Loading...
Searching...
No Matches
ble_mds.h
1/*
2 * Copyright (c) 2026 Nordic Semiconductor ASA
3 *
4 * SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
5 */
6
14#ifndef BLE_MDS_H__
15#define BLE_MDS_H__
16
17#include <stdbool.h>
18#include <stdint.h>
19
20#include <ble.h>
21#include <bm/bluetooth/ble_common.h>
22#include <bm/softdevice_handler/nrf_sdh_ble.h>
23
24#ifdef __cplusplus
25extern "C" {
26#endif
27
29#define BLE_MDS_UUID_BASE { 0x36, 0x84, 0xBD, 0x4E, 0x2F, 0x72, 0x71, 0xA3, \
30 0x07, 0x40, 0xA5, 0xF6, 0x00, 0x00, 0x22, 0x54 }
31
33#define BLE_UUID_MDS_SERVICE 0x0000
35#define BLE_UUID_MDS_SUPPORTED_FEATURES_CHAR 0x0001
37#define BLE_UUID_MDS_DEVICE_IDENTIFIER_CHAR 0x0002
39#define BLE_UUID_MDS_DATA_URI_CHAR 0x0003
41#define BLE_UUID_MDS_AUTHORIZATION_CHAR 0x0004
43#define BLE_UUID_MDS_DATA_EXPORT_CHAR 0x0005
44
55void ble_mds_on_ble_evt(const ble_evt_t *ble_evt, void *context);
56
63#define BLE_MDS_DEF(_name) \
64 static struct ble_mds _name; \
65 NRF_SDH_BLE_OBSERVER(_name##_obs, ble_mds_on_ble_evt, &_name, HIGH)
66
68#define BLE_MDS_CONFIG_SEC_MODE_DEFAULT \
69 { \
70 .feature_char = { \
71 .read = BLE_GAP_CONN_SEC_MODE_OPEN, \
72 }, \
73 .device_id_char = { \
74 .read = BLE_GAP_CONN_SEC_MODE_OPEN, \
75 }, \
76 .data_uri_char = { \
77 .read = BLE_GAP_CONN_SEC_MODE_OPEN, \
78 }, \
79 .auth_char = { \
80 .read = BLE_GAP_CONN_SEC_MODE_OPEN, \
81 }, \
82 .data_export_char = { \
83 .write = BLE_GAP_CONN_SEC_MODE_OPEN, \
84 .cccd_write = BLE_GAP_CONN_SEC_MODE_OPEN, \
85 }, \
86 }
87
93 struct {
95 struct {
99 ble_gap_conn_sec_mode_t read;
102 struct {
106 ble_gap_conn_sec_mode_t read;
109 struct {
111 ble_gap_conn_sec_mode_t read;
114 struct {
116 ble_gap_conn_sec_mode_t read;
119 struct {
121 ble_gap_conn_sec_mode_t write;
123 ble_gap_conn_sec_mode_t cccd_write;
126};
127
131struct ble_mds {
133 uint8_t uuid_type;
137 ble_gatts_char_handles_t supported_features_handles;
139 ble_gatts_char_handles_t device_id_handles;
141 ble_gatts_char_handles_t data_uri_handles;
143 ble_gatts_char_handles_t auth_handles;
145 ble_gatts_char_handles_t data_export_handles;
147 uint16_t conn_handle;
159 uint8_t seq_num;
165 uint8_t pending_payload[CONFIG_NRF_SDH_BLE_GATT_MAX_MTU_SIZE - ATT_OPCODE_LEN -
168 uint16_t pending_len;
169};
170
187uint32_t ble_mds_init(struct ble_mds *mds, const struct ble_mds_config *cfg);
188
198void ble_mds_process(struct ble_mds *mds);
199
208uint8_t ble_mds_service_uuid_type(const struct ble_mds *mds);
209
210#ifdef __cplusplus
211}
212#endif
213
214#endif /* BLE_MDS_H__ */
215
void ble_mds_process(struct ble_mds *mds)
Process pending Memfault data.
void ble_mds_on_ble_evt(const ble_evt_t *ble_evt, void *context)
Bluetooth LE event handler for the Memfault Diagnostic Service.
uint32_t ble_mds_init(struct ble_mds *mds, const struct ble_mds_config *cfg)
Initialize the Memfault Diagnostic Service.
uint8_t ble_mds_service_uuid_type(const struct ble_mds *mds)
Get the SoftDevice UUID type assigned to the MDS UUID base.
#define ATT_OPCODE_LEN
Length of the Attribute Opcode parameter in an Attribute PDU.
Definition ble_common.h:30
#define ATT_HANDLE_LEN
Length of the Attribute Handle parameter in an Attribute PDU.
Definition ble_common.h:35
struct ble_mds_config::@112::@113 feature_char
struct ble_mds_config::@112 sec_mode
struct ble_mds_config::@112::@117 data_export_char
ble_gap_conn_sec_mode_t read
Definition ble_mds.h:99
ble_gap_conn_sec_mode_t cccd_write
Definition ble_mds.h:123
struct ble_mds_config::@112::@114 device_id_char
struct ble_mds_config::@112::@116 auth_char
ble_gap_conn_sec_mode_t write
Definition ble_mds.h:121
struct ble_mds_config::@112::@115 data_uri_char
Memfault Diagnostic Service initialization configuration.
Definition ble_mds.h:91
uint16_t service_handle
Definition ble_mds.h:135
bool tx_blocked
Definition ble_mds.h:155
bool hvx_pending
Definition ble_mds.h:157
uint16_t pending_len
Definition ble_mds.h:168
bool initialized
Definition ble_mds.h:149
uint8_t seq_num
Definition ble_mds.h:159
uint8_t pending_payload[CONFIG_NRF_SDH_BLE_GATT_MAX_MTU_SIZE - ATT_OPCODE_LEN - ATT_HANDLE_LEN]
Definition ble_mds.h:166
uint8_t uuid_type
Definition ble_mds.h:133
ble_gatts_char_handles_t device_id_handles
Definition ble_mds.h:139
bool streaming_enabled
Definition ble_mds.h:153
ble_gatts_char_handles_t data_uri_handles
Definition ble_mds.h:141
ble_gatts_char_handles_t data_export_handles
Definition ble_mds.h:145
ble_gatts_char_handles_t supported_features_handles
Definition ble_mds.h:137
int64_t next_log_collection_ms
Definition ble_mds.h:163
uint16_t conn_handle
Definition ble_mds.h:147
int64_t next_empty_poll_ms
Definition ble_mds.h:161
ble_gatts_char_handles_t auth_handles
Definition ble_mds.h:143
bool subscriber_active
Definition ble_mds.h:151
Memfault Diagnostic Service instance.
Definition ble_mds.h:131