From 8ae72d1cf1c1c77f79e874eec75145c78af38a10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Leroy?= <frederic.leroy@b-com.com> Date: Tue, 16 Aug 2016 14:19:21 +0200 Subject: [PATCH] refactor(conf2uedata): put display out of build --- openair3/NAS/TOOLS/conf2uedata.c | 76 +++++++++++++++++++++++--------- openair3/NAS/TOOLS/conf2uedata.h | 14 ++++-- 2 files changed, 65 insertions(+), 25 deletions(-) diff --git a/openair3/NAS/TOOLS/conf2uedata.c b/openair3/NAS/TOOLS/conf2uedata.c index 3d4c416eccd..e6d9554b0c7 100644 --- a/openair3/NAS/TOOLS/conf2uedata.c +++ b/openair3/NAS/TOOLS/conf2uedata.c @@ -69,6 +69,8 @@ int main(int argc, char**argv) { exit(EXIT_FAILURE); } + display_data_from_directory(output_dir); + exit(EXIT_SUCCESS); } @@ -116,7 +118,6 @@ int parse_config_file(const char *filename) { printf("Problem in USER section for UE%d. EXITING...\n", i); return EXIT_FAILURE; } - _display_ue_data(i); rc = parse_ue_sim_param(ue_setting, i); if (rc != EXIT_SUCCESS) { @@ -129,10 +130,7 @@ int parse_config_file(const char *filename) { return EXIT_FAILURE; } gen_emm_data(i); - _display_emm_data(i); - gen_usim_data(i); - _display_usim_data(i); } config_destroy(&cfg); return(EXIT_SUCCESS); @@ -854,17 +852,12 @@ int _luhn(const char* cc) { return 10 - (sum % 10); } -void _display_usim_data(int user_id) { +void display_usim_data(const char *filename) { int rc; usim_data_t data = { }; - /* - * Read USIM application data - */ - memset(&data, 0, sizeof(usim_data_t)); - char *path = make_filename(output_dir, USIM_API_NVRAM_FILENAME, user_id); - rc = usim_api_read(path, &data); - free(path); + + rc = usim_api_read(filename, &data); if (rc != RETURNok) { perror("ERROR\t: usim_api_read() failed"); @@ -1046,16 +1039,14 @@ void _display_usim_data(int user_id) { } -void _display_ue_data(int user_id) { +void display_ue_data(const char *filename) { user_nvdata_t data; int rc; - char* path = make_filename(output_dir, USER_NVRAM_FILENAME, user_id); /* * Read UE's non-volatile data */ memset(&data, 0, sizeof(user_nvdata_t)); - rc = memory_read(path, &data, sizeof(user_nvdata_t)); - free(path); + rc = memory_read(filename, &data, sizeof(user_nvdata_t)); if (rc != RETURNok) { perror("ERROR\t: memory_read() failed"); @@ -1075,18 +1066,16 @@ void _display_ue_data(int user_id) { /* * Displays UE's non-volatile EMM data */ -void _display_emm_data(int user_id) { +void display_emm_data(const char *filename) { int rc; emm_nvdata_t data; - char* path = make_filename(output_dir, EMM_NVRAM_FILENAME, user_id); /* * Read EMM non-volatile data */ memset(&data, 0, sizeof(emm_nvdata_t)); - rc = memory_read(path, &data, sizeof(emm_nvdata_t)); - free(path); + rc = memory_read(filename, &data, sizeof(emm_nvdata_t)); if (rc != RETURNok) { perror("ERROR\t: memory_read() failed "); exit(EXIT_FAILURE); @@ -1166,8 +1155,53 @@ void _display_usage(void) { fprintf(stderr, "\t[-h]\tDisplay this usage\n"); } +void display_data_from_directory(const char *directory) { + int user_id = 0; + char *filename; + + filename = get_ue_filename(directory, user_id); + while ( file_exist_and_is_readable(filename) ) { + + display_ue_data(filename); + free(filename); + + filename = get_emm_filename(directory, user_id); + display_emm_data(filename); + free(filename); + + filename = get_usim_filename(directory, user_id); + display_usim_data(filename); + free(filename); + + + user_id += 1; + filename = get_ue_filename(directory, user_id); + } + free(filename); +} + +bool file_exist_and_is_readable(const char *filename) { + FILE *file ; + file = fopen(filename, "r"); + if ( file == NULL ) + return false; + fclose(file); + return true; +} + +char *get_ue_filename(const char *output_dir, int user_id) { + return make_filename(output_dir, USER_NVRAM_FILENAME, user_id); +} + +char *get_emm_filename(const char *output_dir, int user_id) { + return make_filename(output_dir, EMM_NVRAM_FILENAME, user_id); +} + +char *get_usim_filename(const char *output_dir, int user_id) { + return make_filename(output_dir, USIM_API_NVRAM_FILENAME, user_id); +} -char * make_filename(const char *output_dir, const char *filename, int ueid) { +char *make_filename(const char *output_dir, const char *filename, int ueid) { size_t size; char *str_ueid, *str; diff --git a/openair3/NAS/TOOLS/conf2uedata.h b/openair3/NAS/TOOLS/conf2uedata.h index c2571860c0f..0fba9aa9600 100644 --- a/openair3/NAS/TOOLS/conf2uedata.h +++ b/openair3/NAS/TOOLS/conf2uedata.h @@ -119,11 +119,9 @@ extern int ehplmn_nb; extern plmn_conf_param_t* user_plmn_list; extern network_record_t* user_network_record_list; -char *make_filename(const char *output_dir, const char *filename, int ueid); int get_config_from_file(const char *filename, config_t *config); int parse_config_file(const char *filename); -void _display_usim_data(int user_id); void _display_usage(void); void gen_emm_data(int user_id) ; @@ -132,9 +130,17 @@ void fill_network_record_list(void); int _luhn(const char* cc); -void _display_ue_data(int user_id); +void display_data_from_directory(const char *directory); +void display_ue_data(const char *filename); +void display_emm_data(const char *filename); +void display_usim_data(const char *filename); + +bool file_exist_and_is_readable(const char *filename); +char *get_ue_filename(const char *output_dir, int user_id); +char *get_emm_filename(const char *output_dir, int user_id); +char *get_usim_filename(const char *output_dir, int user_id); +char *make_filename(const char *output_dir, const char *filename, int ueid); -void _display_emm_data(int user_id); int parse_ue_user_param(config_setting_t *ue_setting, int user_id); int parse_ue_sim_param(config_setting_t *ue_setting, int user_id); int parse_plmn_param(config_setting_t *plmn_setting, int index); -- GitLab