Skip to content

Commit 066e1d3

Browse files
author
Zhou Xiao
committed
feat(ble): support ble mesh log module
1 parent dd4cbe5 commit 066e1d3

File tree

3 files changed

+88
-1
lines changed

3 files changed

+88
-1
lines changed

components/bt/common/Kconfig.in

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,3 +154,18 @@ config BT_BLE_LOG_SPI_OUT_LE_AUDIO_BUF_SIZE
154154
help
155155
SPI transaction buffer size for LE Audio logs.
156156
There will be 2 SPI DMA buffers with the same size.
157+
158+
config BT_BLE_LOG_SPI_OUT_MESH_ENABLED
159+
bool "Enable BLE mesh log output to SPI"
160+
depends on BT_BLE_LOG_SPI_OUT_ENABLED
161+
default n
162+
help
163+
Enable BLE mesh log output to SPI
164+
165+
config BT_BLE_LOG_SPI_OUT_MESH_BUF_SIZE
166+
int "SPI transaction buffer size for BLE mesh logs"
167+
depends on BT_BLE_LOG_SPI_OUT_MESH_ENABLED
168+
default 1024
169+
help
170+
SPI transaction buffer size for BLE mesh logs.
171+
There will be 2 SPI DMA buffers with the same size.

components/bt/common/ble_log/ble_log_spi_out.c

Lines changed: 71 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030
#define SPI_OUT_HOST_BUF_SIZE CONFIG_BT_BLE_LOG_SPI_OUT_HOST_BUF_SIZE
3131
#define SPI_OUT_HCI_ENABLED CONFIG_BT_BLE_LOG_SPI_OUT_HCI_ENABLED
3232
#define SPI_OUT_HCI_BUF_SIZE CONFIG_BT_BLE_LOG_SPI_OUT_HCI_BUF_SIZE
33+
#define SPI_OUT_MESH_ENABLED CONFIG_BT_BLE_LOG_SPI_OUT_MESH_ENABLED
34+
#define SPI_OUT_MESH_BUF_SIZE CONFIG_BT_BLE_LOG_SPI_OUT_MESH_BUF_SIZE
3335

3436
// Private defines
3537
#define BLE_LOG_TAG "BLE_LOG"
@@ -76,11 +78,18 @@
7678
#define SPI_OUT_HCI_QUEUE_SIZE (0)
7779
#endif // SPI_OUT_HCI_ENABLED
7880

81+
#if SPI_OUT_MESH_ENABLED
82+
#define SPI_OUT_MESH_QUEUE_SIZE (SPI_OUT_PING_PONG_BUF_CNT)
83+
#else
84+
#define SPI_OUT_MESH_QUEUE_SIZE (0)
85+
#endif // SPI_OUT_MESH_ENABLED
86+
7987
#define SPI_OUT_SPI_MASTER_QUEUE_SIZE (SPI_OUT_UL_QUEUE_SIZE +\
8088
SPI_OUT_LL_QUEUE_SIZE +\
8189
SPI_OUT_LE_AUDIO_QUEUE_SIZE +\
8290
SPI_OUT_HOST_QUEUE_SIZE +\
83-
SPI_OUT_HCI_QUEUE_SIZE)
91+
SPI_OUT_HCI_QUEUE_SIZE +\
92+
SPI_OUT_MESH_QUEUE_SIZE)
8493

8594
// Private typedefs
8695
typedef struct {
@@ -134,6 +143,7 @@ enum {
134143
LOG_CB_TYPE_LE_AUDIO,
135144
LOG_CB_TYPE_HOST,
136145
LOG_CB_TYPE_HCI,
146+
LOG_CB_TYPE_MESH,
137147
};
138148

139149
enum {
@@ -342,6 +352,10 @@ DECLARE_LOG_MODULE(host, LOG_CB_TYPE_HOST, SPI_OUT_HOST_BUF_SIZE, 0, 1)
342352
DECLARE_LOG_MODULE(hci, LOG_CB_TYPE_HCI, SPI_OUT_HCI_BUF_SIZE, 0, 0)
343353
#endif // SPI_OUT_HCI_ENABLED
344354

355+
#if SPI_OUT_MESH_ENABLED
356+
DECLARE_LOG_MODULE(mesh, LOG_CB_TYPE_MESH, SPI_OUT_MESH_BUF_SIZE, 0, 1)
357+
#endif // SPI_OUT_MESH_ENABLED
358+
345359
// Private functions
346360
static int spi_out_init_trans(spi_out_trans_cb_t **trans_cb, uint16_t buf_size)
347361
{
@@ -617,6 +631,10 @@ static void spi_out_log_flush(void)
617631
#if SPI_OUT_HCI_ENABLED
618632
LOG_MODULE_FLUSH(hci)();
619633
#endif // SPI_OUT_HCI_ENABLED
634+
635+
#if SPI_OUT_MESH_ENABLED
636+
LOG_MODULE_FLUSH(mesh)();
637+
#endif // SPI_OUT_MESH_ENABLED
620638
}
621639

622640
#if SPI_OUT_FLUSH_TIMER_ENABLED
@@ -942,6 +960,12 @@ int ble_log_spi_out_init(void)
942960
}
943961
#endif // SPI_OUT_HCI_ENABLED
944962

963+
#if SPI_OUT_MESH_ENABLED
964+
if (LOG_MODULE_INIT(mesh)() != 0) {
965+
goto mesh_init_failed;
966+
}
967+
#endif // SPI_OUT_MESH_ENABLED
968+
945969
#if SPI_OUT_FLUSH_TIMER_ENABLED
946970
esp_timer_create_args_t timer_args = {
947971
.callback = (esp_timer_cb_t)esp_timer_cb_log_flush,
@@ -966,6 +990,10 @@ int ble_log_spi_out_init(void)
966990
#if SPI_OUT_FLUSH_TIMER_ENABLED
967991
timer_init_failed:
968992
#endif // SPI_OUT_FLUSH_TIMER_ENABLED
993+
#if SPI_OUT_MESH_ENABLED
994+
LOG_MODULE_DEINIT(mesh)();
995+
mesh_init_failed:
996+
#endif // SPI_OUT_MESH_ENABLED
969997
#if SPI_OUT_HCI_ENABLED
970998
LOG_MODULE_DEINIT(hci)();
971999
hci_init_failed:
@@ -1026,6 +1054,10 @@ void ble_log_spi_out_deinit(void)
10261054
spi_out_ts_sync_deinit();
10271055
#endif // SPI_OUT_TS_SYNC_ENABLED
10281056

1057+
#if SPI_OUT_MESH_ENABLED
1058+
LOG_MODULE_DEINIT(mesh)();
1059+
#endif // SPI_OUT_MESH_ENABLED
1060+
10291061
#if SPI_OUT_HCI_ENABLED
10301062
LOG_MODULE_DEINIT(hci)();
10311063
#endif // SPI_OUT_HCI_ENABLED
@@ -1221,6 +1253,14 @@ void ble_log_spi_out_dump_all(void)
12211253
}
12221254
#endif // SPI_OUT_HCI_ENABLED
12231255

1256+
#if SPI_OUT_MESH_ENABLED
1257+
if (LOG_MODULE_INIT_FLAG(mesh)) {
1258+
esp_rom_printf("[MESH_LOG_DUMP_START:\n");
1259+
spi_out_log_cb_dump(LOG_MODULE_CB(mesh));
1260+
esp_rom_printf("\n:MESH_LOG_DUMP_END]\n\n");
1261+
}
1262+
#endif // SPI_OUT_MESH_ENABLED
1263+
12241264
portEXIT_CRITICAL_SAFE(&spinlock);
12251265
}
12261266

@@ -1316,4 +1356,34 @@ int ble_log_spi_out_hci_write(uint8_t source, const uint8_t *addr, uint16_t len)
13161356
return 0;
13171357
}
13181358
#endif // SPI_OUT_HCI_ENABLED
1359+
1360+
#if SPI_OUT_MESH_ENABLED
1361+
int ble_log_spi_out_mesh_write(const char *prefix, const char *format, ...)
1362+
{
1363+
if (!LOG_MODULE_INIT_FLAG(mesh) || !prefix || !format) {
1364+
return -1;
1365+
}
1366+
1367+
// Copy prefix to string buffer
1368+
int prefix_len = strlen(prefix);
1369+
if (prefix_len >= SPI_OUT_LOG_STR_BUF_SIZE) {
1370+
return -1;
1371+
}
1372+
memcpy(LOG_MODULE_STR_BUF(mesh), prefix, prefix_len);
1373+
1374+
// Write string buffer
1375+
va_list args;
1376+
va_start(args, format);
1377+
int total_len = spi_out_write_str(LOG_MODULE_STR_BUF(mesh), format, args, prefix_len);
1378+
va_end(args);
1379+
if (total_len == 0) {
1380+
return -1;
1381+
}
1382+
1383+
// Write log control block buffer
1384+
spi_out_write_hex(LOG_MODULE_CB(mesh), BLE_LOG_SPI_OUT_SOURCE_MESH,
1385+
LOG_MODULE_STR_BUF(mesh), (uint16_t)total_len, true);
1386+
return 0;
1387+
}
1388+
#endif // SPI_OUT_MESH_ENABLED
13191389
#endif // CONFIG_BT_BLE_LOG_SPI_OUT_ENABLED

components/bt/common/ble_log/include/ble_log/ble_log_spi_out.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ enum {
2727
BLE_LOG_SPI_OUT_SOURCE_ESP_LEGACY_ISR,
2828
BLE_LOG_SPI_OUT_SOURCE_LL_HCI,
2929
BLE_LOG_SPI_OUT_SOURCE_LE_AUDIO,
30+
BLE_LOG_SPI_OUT_SOURCE_MESH,
3031
BLE_LOG_SPI_OUT_SOURCE_USER = 0x10,
3132
BLE_LOG_SPI_OUT_SOURCE_SSC = 0xFD,
3233
BLE_LOG_SPI_OUT_SOURCE_SYNC,
@@ -59,5 +60,6 @@ void ble_log_spi_out_flush(void);
5960
void ble_log_spi_out_le_audio_write(const uint8_t *addr, uint16_t len);
6061
int ble_log_spi_out_host_write(uint8_t source, const char *prefix, const char *format, ...);
6162
int ble_log_spi_out_hci_write(uint8_t source, const uint8_t *addr, uint16_t len);
63+
int ble_log_spi_out_mesh_write(const char *prefix, const char *format, ...);
6264

6365
#endif // __BT_SPI_OUT_H__

0 commit comments

Comments
 (0)