From f03e2dbc0e4256ce2c98e97359ab1880245442f0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Leroy?= <frederic.leroy@b-com.com>
Date: Wed, 17 Aug 2016 09:01:11 +0200
Subject: [PATCH] refactor(conf2uedata): move user_data function in
 conf_user_data[c|h]

---
 cmake_targets/nas_sim_tools/CMakeLists.txt |  1 +
 openair3/NAS/TOOLS/conf2uedata.c           | 83 ++-------------------
 openair3/NAS/TOOLS/conf2uedata.h           |  7 --
 openair3/NAS/TOOLS/conf_user_data.c        | 84 ++++++++++++++++++++++
 openair3/NAS/TOOLS/conf_user_data.h        | 26 +++++++
 5 files changed, 115 insertions(+), 86 deletions(-)
 create mode 100644 openair3/NAS/TOOLS/conf_user_data.c
 create mode 100644 openair3/NAS/TOOLS/conf_user_data.h

diff --git a/cmake_targets/nas_sim_tools/CMakeLists.txt b/cmake_targets/nas_sim_tools/CMakeLists.txt
index 9e48fd5eb39..f450715a294 100644
--- a/cmake_targets/nas_sim_tools/CMakeLists.txt
+++ b/cmake_targets/nas_sim_tools/CMakeLists.txt
@@ -18,6 +18,7 @@ set(OPENAIR3_DIR    $ENV{OPENAIR_DIR}/openair3)
 set(conf2uedata_SRC
     ${OPENAIR_DIR}/openair3/NAS/TOOLS/conf2uedata.c
     ${OPENAIR_DIR}/openair3/NAS/TOOLS/conf_emm.c
+    ${OPENAIR_DIR}/openair3/NAS/TOOLS/conf_user_data.c
     ${OPENAIR_DIR}/openair3/NAS/TOOLS/fs.c
     ${OPENAIR_DIR}/openair3/NAS/TOOLS/display.c
     ${OPENAIR_DIR}/openair3/NAS/UE/API/USIM/usim_api.c
diff --git a/openair3/NAS/TOOLS/conf2uedata.c b/openair3/NAS/TOOLS/conf2uedata.c
index c14232d00d6..3b31776a029 100644
--- a/openair3/NAS/TOOLS/conf2uedata.c
+++ b/openair3/NAS/TOOLS/conf2uedata.c
@@ -11,6 +11,7 @@
 #include "display.h"
 #include "fs.h"
 #include "conf_emm.h"
+#include "conf_user_data.h"
 
 const char *msin = NULL;
 const char *usim_api_k = NULL;
@@ -113,6 +114,7 @@ int parse_config_file(const char *output_dir, const char *conf_filename) {
 	    emm_nvdata_t emm_data;
 	    user_nvdata_t user_data;
 	    usim_data_t usim_data;
+	    user_data_conf_t user_data_conf;
 
         sprintf(user, "%s%d", UE, i);
 
@@ -122,11 +124,12 @@ int parse_config_file(const char *output_dir, const char *conf_filename) {
             return EXIT_FAILURE;
         }
 
-        rc = parse_ue_user_param(ue_setting, i, &user_data);
+        rc = parse_ue_user_data(ue_setting, i, &user_data_conf);
         if (rc != EXIT_SUCCESS) {
             printf("Problem in USER section for UE%d. EXITING...\n", i);
             return EXIT_FAILURE;
         }
+        gen_user_data(&user_data_conf, &user_data);
         write_user_data(output_dir, i, &user_data);
 
         rc = parse_ue_sim_param(ue_setting, i);
@@ -582,69 +585,6 @@ int parse_ue_sim_param(config_setting_t *ue_setting, int user_id) {
 	return EXIT_SUCCESS;
 }
 
-int parse_ue_user_param(config_setting_t *ue_setting, int user_id, user_nvdata_t *user_data) {
-	config_setting_t *ue_param_setting = NULL;
-	const char* imei = NULL;
-	const char* manufacturer = NULL;
-	const char* model = NULL;
-	const char* pin = NULL;
-
-	int rc = EXIT_SUCCESS;
-	ue_param_setting = config_setting_get_member(ue_setting, USER);
-	if (ue_param_setting == NULL) {
-		printf("Check USER section of UE%d. EXITING...\n", user_id);
-		return EXIT_FAILURE;
-	}
-	rc = config_setting_lookup_string(ue_param_setting, UE_IMEI, &imei);
-	if (rc != 1) {
-		printf("Check USER IMEI section for UE%d. Exiting\n", user_id);
-		return EXIT_FAILURE;
-	}
-	rc = config_setting_lookup_string(ue_param_setting, MANUFACTURER,
-			&manufacturer);
-	if (rc != 1) {
-		printf("Check USER MANUFACTURER for UE%d FULLNAME. Exiting\n", user_id);
-		return EXIT_FAILURE;
-	}
-	rc = config_setting_lookup_string(ue_param_setting, MODEL, &model);
-	if (rc != 1) {
-		printf("Check USER MODEL for UE%d FULLNAME. Exiting\n", user_id);
-		return EXIT_FAILURE;
-	}
-	rc = config_setting_lookup_string(ue_param_setting, PINCODE, &pin);
-	if (rc != 1) {
-		printf("Check USER PIN for UE%d FULLNAME. Exiting\n", user_id);
-		return EXIT_FAILURE;
-	}
-
-	memset(user_data, 0, sizeof(user_nvdata_t));
-	snprintf(user_data->IMEI, USER_IMEI_SIZE + 1, "%s%d", imei, _luhn(imei));
-	/*
-	 * Manufacturer identifier
-	 */
-	strncpy(user_data->manufacturer, manufacturer, USER_MANUFACTURER_SIZE);
-	/*
-	 * Model identifier
-	 */
-	strncpy(user_data->model, model, USER_MODEL_SIZE);
-	/*
-	 * SIM Personal Identification Number
-	 */
-	strncpy(user_data->PIN, pin, USER_PIN_SIZE);
-
-	return EXIT_SUCCESS;
-}
-
-void write_user_data(const char *directory, int user_id, user_nvdata_t *data) {
-    int rc;
-	char* filename = make_filename(directory, USER_NVRAM_FILENAME, user_id);
-	rc = memory_write(filename, data, sizeof(user_nvdata_t));
-    free(filename);
-	if (rc != RETURNok) {
-		perror("ERROR\t: memory_write() failed");
-		exit(EXIT_FAILURE);
-	}
-}
 
 int fill_ucplmn(config_setting_t* setting, int user_id) {
 	int rc;
@@ -788,21 +728,6 @@ void fill_network_record_list() {
 	}
 }
 
-/*
- * Computes the check digit using Luhn algorithm
- */
-int _luhn(const char* cc) {
-	const int m[] = { 0, 2, 4, 6, 8, 1, 3, 5, 7, 9 };
-	int odd = 1, sum = 0;
-
-	for (int i = strlen(cc); i--; odd = !odd) {
-		int digit = cc[i] - '0';
-		sum += odd ? m[digit] : digit;
-	}
-
-	return 10 - (sum % 10);
-}
-
 /*
  * Displays command line usage
  */
diff --git a/openair3/NAS/TOOLS/conf2uedata.h b/openair3/NAS/TOOLS/conf2uedata.h
index e58f5877e39..cb2b31a4ff5 100644
--- a/openair3/NAS/TOOLS/conf2uedata.h
+++ b/openair3/NAS/TOOLS/conf2uedata.h
@@ -4,9 +4,7 @@
 #include <libconfig.h>
 
 #include "usim_api.h"
-#include "userDef.h"
 
-#define USER "USER"
 #define UE "UE"
 #define SIM "SIM"
 #define PLMN "PLMN"
@@ -101,14 +99,9 @@ int parse_config_file(const char *output_dir, const char *filename);
 void _display_usage(void);
 void fill_network_record_list(void);
 
-int parse_ue_user_param(config_setting_t *ue_setting, int user_id, user_nvdata_t *user_data);
-void write_user_data(const char *directory, int user_id, user_nvdata_t *data);
 int write_usim_data(const char *directory, int user_id, usim_data_t *usim_data);
 void gen_usim_data(usim_data_t *usim_data);
 
-
-int _luhn(const char* cc);
-
 int parse_ue_sim_param(config_setting_t *ue_setting, int user_id);
 int parse_plmn_param(config_setting_t *plmn_setting, int index);
 int parse_plmns(config_setting_t *all_plmn_setting);
diff --git a/openair3/NAS/TOOLS/conf_user_data.c b/openair3/NAS/TOOLS/conf_user_data.c
new file mode 100644
index 00000000000..4dcfc3cf783
--- /dev/null
+++ b/openair3/NAS/TOOLS/conf_user_data.c
@@ -0,0 +1,84 @@
+#include <string.h>
+#include <stdlib.h>
+
+#include "memory.h"
+#include "fs.h"
+#include "conf_user_data.h"
+
+int parse_ue_user_data(config_setting_t *ue_setting, int user_id, user_data_conf_t *u) {
+	config_setting_t *ue_param_setting = NULL;
+
+	int rc = EXIT_SUCCESS;
+	ue_param_setting = config_setting_get_member(ue_setting, USER);
+	if (ue_param_setting == NULL) {
+		printf("Check USER section of UE%d. EXITING...\n", user_id);
+		return EXIT_FAILURE;
+	}
+	rc = config_setting_lookup_string(ue_param_setting, UE_IMEI, &u->imei);
+	if (rc != 1) {
+		printf("Check USER IMEI section for UE%d. Exiting\n", user_id);
+		return EXIT_FAILURE;
+	}
+	rc = config_setting_lookup_string(ue_param_setting, MANUFACTURER,
+			&u->manufacturer);
+	if (rc != 1) {
+		printf("Check USER MANUFACTURER for UE%d FULLNAME. Exiting\n", user_id);
+		return EXIT_FAILURE;
+	}
+	rc = config_setting_lookup_string(ue_param_setting, MODEL, &u->model);
+	if (rc != 1) {
+		printf("Check USER MODEL for UE%d FULLNAME. Exiting\n", user_id);
+		return EXIT_FAILURE;
+	}
+	rc = config_setting_lookup_string(ue_param_setting, PINCODE, &u->pin);
+	if (rc != 1) {
+		printf("Check USER PIN for UE%d FULLNAME. Exiting\n", user_id);
+		return EXIT_FAILURE;
+	}
+	return EXIT_SUCCESS;
+}
+
+void gen_user_data(user_data_conf_t *u, user_nvdata_t *user_data) {
+	memset(user_data, 0, sizeof(user_nvdata_t));
+	snprintf(user_data->IMEI, USER_IMEI_SIZE + 1, "%s%d", u->imei, _luhn(u->imei));
+	/*
+	 * Manufacturer identifier
+	 */
+	strncpy(user_data->manufacturer, u->manufacturer, USER_MANUFACTURER_SIZE);
+	/*
+	 * Model identifier
+	 */
+	strncpy(user_data->model, u->model, USER_MODEL_SIZE);
+	/*
+	 * SIM Personal Identification Number
+	 */
+	strncpy(user_data->PIN, u->pin, USER_PIN_SIZE);
+}
+
+void write_user_data(const char *directory, int user_id, user_nvdata_t *data) {
+    int rc;
+	char* filename = make_filename(directory, USER_NVRAM_FILENAME, user_id);
+	rc = memory_write(filename, data, sizeof(user_nvdata_t));
+    free(filename);
+	if (rc != EXIT_SUCCESS) {
+		perror("ERROR\t: memory_write() failed");
+		exit(EXIT_FAILURE);
+	}
+}
+
+/*
+ * Computes the check digit using Luhn algorithm
+ */
+int _luhn(const char* cc) {
+	const int m[] = { 0, 2, 4, 6, 8, 1, 3, 5, 7, 9 };
+	int odd = 1, sum = 0;
+
+	for (int i = strlen(cc); i--; odd = !odd) {
+		int digit = cc[i] - '0';
+		sum += odd ? m[digit] : digit;
+	}
+
+	return 10 - (sum % 10);
+}
+
+
diff --git a/openair3/NAS/TOOLS/conf_user_data.h b/openair3/NAS/TOOLS/conf_user_data.h
new file mode 100644
index 00000000000..ac168e3c72b
--- /dev/null
+++ b/openair3/NAS/TOOLS/conf_user_data.h
@@ -0,0 +1,26 @@
+#ifndef _CONF_USER_DATA_H
+#define _CONF_USER_DATA_H
+
+#include <libconfig.h>
+#include "userDef.h"
+
+#define USER "USER"
+#define MANUFACTURER "MANUFACTURER"
+#define MODEL "MODEL"
+#define UE_IMEI "IMEI"
+#define PINCODE "PIN"
+
+typedef struct {
+	const char* imei;
+	const char* manufacturer;
+	const char* model;
+	const char* pin;
+} user_data_conf_t;
+
+void gen_user_data(user_data_conf_t *u, user_nvdata_t *user_data);
+void write_user_data(const char *directory, int user_id, user_nvdata_t *data);
+int parse_ue_user_data(config_setting_t *ue_setting, int user_id, user_data_conf_t *u);
+
+int _luhn(const char* cc);
+
+#endif
-- 
GitLab