3030
3131#ifndef BSP_USING_PC_SIMULATOR
3232//#define ULOG_BACKEND_USING_FS 1
33- #if defined (RT_USING_DFS ) && (defined(ULOG_BACKEND_USING_FS ) || defined(BSP_USING_LVGL_INPUT_AGENT ) || defined(SAVE_ASSERT_CONTEXT_IN_FLASH ) || defined(MC_BACKEND_USING_FILE ))
33+ #if defined (RT_USING_DFS ) && (defined(ULOG_BACKEND_USING_FS ) || defined(BSP_USING_LVGL_INPUT_AGENT ) || defined(USING_COREDUMP ) || defined(MC_BACKEND_USING_FILE ))
3434 #define LOG_USING_FS 1
3535 #include <dfs_posix.h>
3636#endif
4646 #include "ram_be.h"
4747#endif
4848
49+ #ifdef USING_COREDUMP
50+ #include "coredump.h"
51+ #endif /* USING_COREDUMP */
52+
4953
5054static ble_log_env_t g_ble_log ;
5155
@@ -97,15 +101,6 @@ static void ble_log_send_data_response(uint32_t size);
97101
98102#endif
99103
100- #ifdef SAVE_ASSERT_CONTEXT_IN_FLASH
101- extern int ble_assert_onoff (int flag ); //flag: 0->off 1->on 2->return on/off
102- extern int ble_assert_clear (); //delete file or erase flash
103- extern int ble_assert_type_get (); //retun: -1:no assert 0:write flash 1:use FS
104- extern int ble_assert_mem_get (uint32_t * addr , uint32_t * len ); //return: 0:err 1:ok
105- extern const char * ble_assert_file_get (); //return: NULL:err other:file full path
106- #endif
107-
108-
109104static int ble_log_data_send (uint8_t * raw_data , uint16_t size )
110105{
111106 ble_log_env_t * env = ble_log_get_env ();
@@ -326,34 +321,30 @@ uint8_t ble_log_get_transport_state()
326321 return env -> state ;
327322}
328323
329- static void ble_minidump_info_send ( void )
324+ static void ble_dump_info_send ( coredump_backend_read_t dump_reader , uint32_t size )
330325{
331- #if defined(SAVE_MINIDUMP_INFO )
332326 int iCnt = 0 ;
333327 int block_len = 2048 ;
334- uint32_t minidump_info_len = assert_minidump_get_size () ;
328+ uint32_t dump_info_len = size ;
335329 uint8_t * data = bt_mem_alloc (block_len );
336330 BT_OOM_ASSERT (data );
337331 if (data )
338332 {
339- uint32_t addr = assert_minidump_get_addr ();
340-
341- for (iCnt = 0 ; iCnt < minidump_info_len / block_len ; iCnt ++ )
333+ for (iCnt = 0 ; iCnt < dump_info_len / block_len ; iCnt ++ )
342334 {
343335 memset (data , 0 , block_len );
344- assert_minidump_read ( addr + iCnt * block_len , data , block_len );
336+ dump_reader ( iCnt * block_len , data , block_len );
345337 ble_log_send_advance (data , block_len );
346338 }
347339
348- if (minidump_info_len % block_len )
340+ if (dump_info_len % block_len )
349341 {
350342 memset (data , 0 , block_len );
351- assert_minidump_read ( addr + iCnt * block_len , data , minidump_info_len % block_len );
352- ble_log_send_advance (data , minidump_info_len % block_len );
343+ dump_reader ( iCnt * block_len , data , dump_info_len % block_len );
344+ ble_log_send_advance (data , dump_info_len % block_len );
353345 }
354346 bt_mem_free (data );
355347 }
356- #endif
357348 return ;
358349}
359350
@@ -365,6 +356,10 @@ static void ble_send_thread(void *param)
365356 uint32_t flash_addr = 0 ;
366357 uint32_t flash_len = 0 ;
367358 ble_log_env_t * env = ble_log_get_env ();
359+ #ifdef USING_COREDUMP
360+ coredump_data_t coredump_data ;
361+ coredump_err_code_t err ;
362+ #endif /* USING_COREDUMP */
368363
369364#ifdef ULOG_BACKEND_USING_FS
370365 int ble_log_status = 0 ;
@@ -397,21 +392,17 @@ static void ble_send_thread(void *param)
397392 }
398393
399394
400- #ifdef SAVE_ASSERT_CONTEXT_IN_FLASH
395+ #ifdef USING_COREDUMP
401396 if (env -> command == BLE_LOG_ASSERT_GET )
402397 {
403- mem_type = ble_assert_type_get ();
404- if (mem_type == 0 )
405- {
406- ble_assert_mem_get (& flash_addr , & flash_len );
407- }
408- else if (mem_type == 1 )
409- {
410- path_mc = ble_assert_file_get ();
411- }
412-
398+ err = coredump_get_data (& coredump_data );
399+ RT_ASSERT (err == COREDUMP_ERR_NO );
400+ mem_type = coredump_data .is_file ? 1 : 0 ;
401+ path_mc = (const char * )coredump_data .fulldump_addr ;
402+ flash_addr = coredump_data .fulldump_addr ;
403+ flash_len = coredump_data .fulldump_size ;
413404 }
414- #endif
405+ #endif /* USING_COREDUMP */
415406
416407#ifdef MC_BACKEND_USING_FILE
417408 if (env -> command == BLE_LOG_METRICS_GET )
@@ -443,13 +434,15 @@ static void ble_send_thread(void *param)
443434 int file_len = lseek (fptr , 0 , SEEK_END );
444435 lseek (fptr , 0 , SEEK_SET );
445436
446- #if defined(SAVE_MINIDUMP_INFO )
447- minidump_info_len = assert_minidump_get_size () ;
437+ #if defined(COREDUMP_MINIDUMP_ENABLED )
438+ minidump_info_len = coredump_data . minidump_size ;
448439#endif
449440 ble_log_send_data_response (file_len + minidump_info_len );
450441 env -> send_index = 0 ;
451442 LOG_I ("log file len %d minidump_info_len:%d" , file_len , minidump_info_len );
452- ble_minidump_info_send ();
443+ #if defined(COREDUMP_MINIDUMP_ENABLED )
444+ ble_dump_info_send (coredump_read_minidump , minidump_info_len );
445+ #endif
453446 uint8_t * data = bt_mem_alloc (block_len );
454447 BT_OOM_ASSERT (data );
455448 if (data )
@@ -498,19 +491,22 @@ static void ble_send_thread(void *param)
498491 else if (mem_type == 0 && flash_len > 0 ) //MEM
499492 {
500493 int minidump_info_len = 0 ;
494+ uint32_t minidump_addr = 0 ;
501495 env -> state = BLE_LOG_STATE_TRANSPORT ;
502496 ble_log_connection_update ();
503497
504- #if defined(SAVE_MINIDUMP_INFO )
505- minidump_info_len = assert_minidump_get_size () ;
498+ #if defined(COREDUMP_MINIDUMP_ENABLED )
499+ minidump_info_len = coredump_data . minidump_size ;
506500#endif
507501
508502 uint8_t * data = (uint8_t * )flash_addr ;
509503 ble_log_send_data_response (flash_len + minidump_info_len );
510504 env -> send_index = 0 ;
511505 LOG_I ("assert addr 0x%08x, len %d" , flash_addr , flash_len );
512- ble_minidump_info_send ();
513- ble_log_buf_send (data , flash_len );
506+ #if defined(COREDUMP_MINIDUMP_ENABLED )
507+ ble_dump_info_send (coredump_read_minidump , minidump_info_len );
508+ #endif
509+ ble_dump_info_send (coredump_read_dump , flash_len );
514510
515511 LOG_I ("log file len end %d" , flash_len );
516512
@@ -867,9 +863,9 @@ static void ble_log_inquiry_handler()
867863 general_log_enable = 1 ;
868864#endif
869865
870- #ifdef SAVE_ASSERT_CONTEXT_IN_FLASH
866+ #ifdef USING_COREDUMP
871867 assert_save_enable = 1 ;
872- #endif
868+ #endif /* USING_COREDUMP */
873869
874870#ifdef MC_BACKEND_USING_FILE
875871 metrics_enable = 1 ;
@@ -930,7 +926,7 @@ static void ble_log_packet_handler(ble_log_protocol_t *msg, uint16_t length)
930926 break ;
931927 }
932928
933- #ifdef SAVE_ASSERT_CONTEXT_IN_FLASH
929+ #ifdef USING_COREDUMP
934930 case BLE_LOG_ASSERT_GET :
935931 {
936932 env -> command = BLE_LOG_ASSERT_GET ;
@@ -939,18 +935,18 @@ static void ble_log_packet_handler(ble_log_protocol_t *msg, uint16_t length)
939935 }
940936 case BLE_LOG_ASSERT_CLEAR :
941937 {
942- ble_assert_clear ();
938+ coredump_clear ();
943939 ble_log_send_data_finish ();
944940 break ;
945941 }
946942 case BLE_LOG_ASSERT_ON_OFF :
947943 {
948944 uint8_t op = msg -> data [0 ];
949- ble_assert_onoff (op );
945+ coredump_set_onoff (op );
950946 ble_log_send_data_finish ();
951947 break ;
952948 }
953- #endif
949+ #endif /* USING_COREDUMP */
954950 case BLE_AUDIO_DUMP_GET :
955951 {
956952 ble_audio_dump_get_proccess ();
0 commit comments