Skip to content

Commit dc59f1d

Browse files
committed
[rel][opt][ble][log] Use new coredump API to export dump log
Project: Bluetooth ext-redmine: #8340 [Description in detail] Affected branch: [master] Change-Id: I255ee5bd8ee1b3e35ccef0a0e92e3c3f7024ecba
1 parent 8a6b2c4 commit dc59f1d

File tree

1 file changed

+42
-46
lines changed

1 file changed

+42
-46
lines changed

service/ble/gatt_service/bf0_sibles_log.c

Lines changed: 42 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
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
@@ -46,6 +46,10 @@
4646
#include "ram_be.h"
4747
#endif
4848

49+
#ifdef USING_COREDUMP
50+
#include "coredump.h"
51+
#endif /* USING_COREDUMP */
52+
4953

5054
static 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-
109104
static 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

Comments
 (0)