Skip to content

Commit 4b5cd92

Browse files
alxelaxcfriedt
authored andcommitted
boards: bsim: fix bug with single settings file for few bsim devices
Multiple bsim devices cannot store individual settings with the existing settings backend for bsim. Signed-off-by: Aleksandr Khromykh <[email protected]>
1 parent 5a1fcb6 commit 4b5cd92

File tree

7 files changed

+39
-25
lines changed

7 files changed

+39
-25
lines changed

boards/posix/nrf52_bsim/argparse.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,5 +226,15 @@ void nrfbsim_cleanup_args(void)
226226
bs_cleanup_dynargs(&args_struct);
227227
}
228228

229+
char *get_simid(void)
230+
{
231+
return arg.s_id;
232+
}
233+
234+
unsigned int get_device_nbr(void)
235+
{
236+
return arg.global_device_nbr;
237+
}
238+
229239
NATIVE_TASK(nrfbsim_register_args, PRE_BOOT_1, 0);
230240
NATIVE_TASK(nrfbsim_cleanup_args, ON_EXIT, 10);

boards/posix/nrf52_bsim/argparse.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ struct NRF_bsim_args_t {
2626

2727
struct NRF_bsim_args_t *nrfbsim_argsparse(int argc, char *argv[]);
2828
void bs_add_extra_dynargs(bs_args_struct_t *args_struct_toadd);
29+
char *get_simid(void);
30+
unsigned int get_device_nbr(void);
2931

3032
#ifdef __cplusplus
3133
}

boards/posix/nrf52_bsim/main.c

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,6 @@ void posix_exit(int exit_code)
5757
exit(inner_main_clean_up(exit_code));
5858
}
5959

60-
uint global_device_nbr;
61-
6260
int main(int argc, char *argv[])
6361
{
6462
/*
@@ -79,7 +77,6 @@ int main(int argc, char *argv[])
7977
struct NRF_bsim_args_t *args;
8078

8179
args = nrfbsim_argsparse(argc, argv);
82-
global_device_nbr = args->global_device_nbr;
8380

8481
bs_read_function_names_from_Tsymbols(argv[0]);
8582

tests/bluetooth/bsim_bt/bsim_test_mesh/src/settings_test_backend.c

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,23 @@
66

77
#include "settings_test_backend.h"
88

9-
#include "kernel.h"
109
#include <stdio.h>
11-
12-
#include <zephyr/types.h>
1310
#include <stddef.h>
14-
#include <errno.h>
15-
#include <zephyr.h>
1611

17-
#include <bluetooth/mesh.h>
12+
#include "kernel.h"
13+
#include "zephyr/types.h"
14+
#include "errno.h"
15+
#include "zephyr.h"
16+
17+
#include "bluetooth/mesh.h"
18+
#include "argparse.h"
1819

1920
#define LOG_MODULE_NAME settings_test_backend
2021
#include <logging/log.h>
2122
LOG_MODULE_REGISTER(LOG_MODULE_NAME);
2223

23-
#define SETTINGS_FILE "settings_data.log"
24-
#define SETTINGS_FILE_TMP "~settings_data.log"
24+
#define SETTINGS_FILE setting_file
25+
#define SETTINGS_FILE_TMP setting_file_tmp
2526

2627
#define ENTRY_LEN_SIZE (4)
2728
#define ENTRY_NAME_MAX_LEN (SETTINGS_MAX_NAME_LEN + SETTINGS_EXTRA_LEN)
@@ -33,6 +34,9 @@ struct line_read_ctx {
3334
const uint8_t *val;
3435
};
3536

37+
static char setting_file[50];
38+
static char setting_file_tmp[sizeof(setting_file) + 1];
39+
3640
static int entry_check_and_copy(FILE *fin, FILE *fout, const char *name)
3741
{
3842
char line[READ_LEN_MAX + 1];
@@ -203,6 +207,9 @@ static struct settings_store settings_custom_store = {
203207

204208
int settings_backend_init(void)
205209
{
210+
snprintf(setting_file, sizeof(setting_file), "%s_%d.log", get_simid(), get_device_nbr());
211+
snprintf(setting_file_tmp, sizeof(setting_file_tmp), "~%s", setting_file);
212+
206213
LOG_INF("file path: %s", SETTINGS_FILE);
207214

208215
/* register custom backend */
@@ -213,9 +220,9 @@ int settings_backend_init(void)
213220

214221
void settings_test_backend_clear(void)
215222
{
216-
FILE *fp = fopen(SETTINGS_FILE, "w");
223+
snprintf(setting_file, sizeof(setting_file), "%s_%d.log", get_simid(), get_device_nbr());
217224

218-
if (fp) {
219-
fclose(fp);
225+
if (remove(setting_file)) {
226+
LOG_INF("error deleting file: %s", setting_file);
220227
}
221228
}

tests/bluetooth/bsim_bt/bsim_test_mesh/src/test_friendship.c

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#include "mesh/net.h"
88
#include "mesh/transport.h"
99
#include <sys/byteorder.h>
10+
#include "argparse.h"
1011

1112
#define LOG_MODULE_NAME test_friendship
1213

@@ -70,10 +71,8 @@ static void test_lpn_init(void)
7071
* devkey based on the device number, which is guaranteed to be unique
7172
* for each device in the simulation.
7273
*/
73-
extern uint global_device_nbr;
74-
75-
lpn_cfg.addr = LPN_ADDR_START + global_device_nbr;
76-
lpn_cfg.dev_key[0] = global_device_nbr;
74+
lpn_cfg.addr = LPN_ADDR_START + get_device_nbr();
75+
lpn_cfg.dev_key[0] = get_device_nbr();
7776
test_common_init(&lpn_cfg);
7877
}
7978

@@ -494,7 +493,7 @@ static void test_lpn_msg_mesh(void)
494493
test_model->pub->ttl = BT_MESH_TTL_DEFAULT;
495494

496495
net_buf_simple_reset(test_model->pub->msg);
497-
bt_mesh_model_msg_init(test_model->pub->msg, TEST_MSG_OP);
496+
bt_mesh_model_msg_init(test_model->pub->msg, TEST_MSG_OP_1);
498497
ASSERT_OK(bt_mesh_model_publish(test_model));
499498

500499
PASS();

tests/bluetooth/bsim_bt/bsim_test_mesh/src/test_provision.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
*/
66
#include "mesh_test.h"
77
#include "mesh/net.h"
8+
#include "argparse.h"
89

910
#include <sys/byteorder.h>
1011

@@ -29,7 +30,6 @@ enum test_flags {
2930
static ATOMIC_DEFINE(flags, TEST_FLAGS);
3031
extern const struct bt_mesh_comp comp;
3132
extern const uint8_t test_net_key[16];
32-
extern uint global_device_nbr;
3333

3434
/* Timeout semaphore */
3535
static struct k_sem prov_sem;
@@ -42,7 +42,7 @@ static uint8_t dev_uuid[16] = { 0x6c, 0x69, 0x6e, 0x67, 0x61, 0x6f };
4242
static void test_device_init(void)
4343
{
4444
/* Ensure that the UUID is unique: */
45-
dev_uuid[6] = '0' + global_device_nbr;
45+
dev_uuid[6] = '0' + get_device_nbr();
4646

4747
bt_mesh_test_cfg_set(NULL, WAIT_TIME);
4848
}

tests/bluetooth/bsim_bt/edtt_ble_test_app/common/edtt_driver_bsim.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#include "bs_utils.h"
2121
#include "bs_oswrap.h"
2222
#include "bs_pc_base_fifo_user.h"
23+
#include "argparse.h"
2324

2425
/* Recheck if something arrived from the EDTT every 5ms */
2526
#define EDTT_IF_RECHECK_DELTA 5 /* ms */
@@ -42,8 +43,6 @@ static int edtt_autoshutdown;
4243
static int fifo[2] = { -1, -1 };
4344
static char *fifo_path[2] = {NULL, NULL};
4445

45-
extern unsigned int global_device_nbr;
46-
4746
static void edttd_clean_up(void);
4847
static void edptd_create_fifo_if(void);
4948
static int fifo_low_level_read(uint8_t *bufptr, int size);
@@ -192,9 +191,9 @@ static void edptd_create_fifo_if(void)
192191
fifo_path[TO_BRIDGE] = (char *)bs_calloc(pb_com_path_length + 30,
193192
sizeof(char));
194193
sprintf(fifo_path[TO_DEVICE], "%s/Device%i.PTTin",
195-
pb_com_path, global_device_nbr);
194+
pb_com_path, get_device_nbr());
196195
sprintf(fifo_path[TO_BRIDGE], "%s/Device%i.PTTout",
197-
pb_com_path, global_device_nbr);
196+
pb_com_path, get_device_nbr());
198197

199198
if ((pb_create_fifo_if_not_there(fifo_path[TO_DEVICE]) != 0)
200199
|| (pb_create_fifo_if_not_there(fifo_path[TO_BRIDGE]) != 0)) {

0 commit comments

Comments
 (0)