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"
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
8695typedef 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
139149enum {
@@ -342,6 +352,10 @@ DECLARE_LOG_MODULE(host, LOG_CB_TYPE_HOST, SPI_OUT_HOST_BUF_SIZE, 0, 1)
342352DECLARE_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
346360static 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
967991timer_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 )();
971999hci_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
0 commit comments