From af4027660ba597fb89cb1c00615898818d8046da Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Leroy?= <frederic.leroy@b-com.com>
Date: Wed, 24 Aug 2016 11:50:53 +0200
Subject: [PATCH] feat(conf2uedata): add a selector for writing files

---
 openair3/NAS/TOOLS/conf2uedata.c |  2 +-
 openair3/NAS/TOOLS/conf_parser.c | 17 +++++++++++++----
 openair3/NAS/TOOLS/conf_parser.h |  7 ++++++-
 3 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/openair3/NAS/TOOLS/conf2uedata.c b/openair3/NAS/TOOLS/conf2uedata.c
index b162979dc2..ad15d1bb4f 100644
--- a/openair3/NAS/TOOLS/conf2uedata.c
+++ b/openair3/NAS/TOOLS/conf2uedata.c
@@ -42,7 +42,7 @@ int main(int argc, char**argv) {
 		exit(1);
 	}
 
-    if ( parse_config_file(output_dir, conf_file) == false ) {
+    if ( parse_config_file(output_dir, conf_file, OUTPUT_ALL) == false ) {
         exit(1);
     }
 
diff --git a/openair3/NAS/TOOLS/conf_parser.c b/openair3/NAS/TOOLS/conf_parser.c
index 816c5c6ec9..e7d1240fad 100644
--- a/openair3/NAS/TOOLS/conf_parser.c
+++ b/openair3/NAS/TOOLS/conf_parser.c
@@ -6,7 +6,7 @@
 #include "conf_user_data.h"
 #include "conf_user_plmn.h"
 
-bool parse_config_file(const char *output_dir, const char *conf_filename) {
+bool parse_config_file(const char *output_dir, const char *conf_filename, int output_flags) {
 	int rc = true;
     int ret;
     int ue_nb = 0;
@@ -65,7 +65,6 @@ bool parse_config_file(const char *output_dir, const char *conf_filename) {
             return false;
         }
         gen_user_data(&user_data_conf, &user_data);
-        write_user_data(output_dir, i, &user_data);
 
         rc = parse_ue_sim_param(ue_setting, i, &usim_data_conf);
         if (rc != true) {
@@ -73,11 +72,21 @@ bool parse_config_file(const char *output_dir, const char *conf_filename) {
             return false;
         }
         gen_usim_data(&usim_data_conf, &usim_data, &user_plmns, networks);
-        write_usim_data(output_dir, i, &usim_data);
 
         gen_emm_data(&emm_data, usim_data_conf.hplmn, usim_data_conf.msin,
                      user_plmns.equivalents_home.size, networks);
-        write_emm_data(output_dir, i, &emm_data);
+
+        if ( output_flags & OUTPUT_UEDATA ) {
+            write_user_data(output_dir, i, &user_data);
+        }
+
+        if ( output_flags & OUTPUT_USIM ) {
+            write_usim_data(output_dir, i, &usim_data);
+        }
+
+        if ( output_flags & OUTPUT_EMM ) {
+            write_emm_data(output_dir, i, &emm_data);
+        }
 
 		user_plmns_free(&user_plmns);
 
diff --git a/openair3/NAS/TOOLS/conf_parser.h b/openair3/NAS/TOOLS/conf_parser.h
index 4e160ab73a..49d3645faf 100644
--- a/openair3/NAS/TOOLS/conf_parser.h
+++ b/openair3/NAS/TOOLS/conf_parser.h
@@ -6,7 +6,12 @@
 
 #define UE "UE"
 
+#define OUTPUT_EMM     1
+#define OUTPUT_USIM    2
+#define OUTPUT_UEDATA  4
+#define OUTPUT_ALL     7
+
 bool get_config_from_file(const char *filename, config_t *config);
-bool parse_config_file(const char *output_dir, const char *filename);
+bool parse_config_file(const char *output_dir, const char *filename, int output_flags);
 
 #endif
-- 
2.26.2