Add TW_USE_MODEL_HADWARE_ID_FOR_DEVICE_ID parameter for correct model identification

Change-Id: Ic6440c624b5cfbdb0f24681461748a0da16bf95e
diff --git a/Android.mk b/Android.mk
index 7582bb1..1ad1e0d 100644
--- a/Android.mk
+++ b/Android.mk
@@ -222,9 +222,11 @@
     LOCAL_SRC_FILES += crypto/jb/cryptfs.c
     LOCAL_C_INCLUDES += system/extras/ext4_utils external/openssl/include
 endif
-
+ifeq ($(TW_USE_MODEL_HARDWARE_ID_FOR_DEVICE_ID), true)
+    LOCAL_CFLAGS += -DTW_USE_MODEL_HARDWARE_ID_FOR_DEVICE_ID
+endif
 ifeq ($(TARGET_BOARD_PLATFORM),rk30xx)
-LOCAL_CFLAGS += -DRK3066
+    LOCAL_CFLAGS += -DRK3066
 endif
 
 include $(BUILD_EXECUTABLE)
diff --git a/data.cpp b/data.cpp
index 56df350..9e9120c 100644
--- a/data.cpp
+++ b/data.cpp
@@ -41,6 +41,10 @@
 #include "partitions.hpp"
 #include "twrp-functions.hpp"
 
+#ifdef TW_USE_MODEL_HARDWARE_ID_FOR_DEVICE_ID
+    #include "cutils/properties.h"
+#endif
+
 extern "C"
 {
     #include "common.h"
@@ -90,6 +94,30 @@
 
     // Assign a blank device_id to start with
     device_id[0] = 0;
+
+#ifdef TW_USE_MODEL_HARDWARE_ID_FOR_DEVICE_ID
+	// Now we'll use product_model_hardwareid as device id
+	char model_id[PROPERTY_VALUE_MAX];
+	property_get("ro.product.model", model_id, "error");
+	if (strcmp(model_id,"error") != 0) {
+		LOGI("=> product model: '%s'\n", model_id);
+		// Replace spaces with underscores
+		for(int i = 0; i < strlen(model_id); i++) {
+			if(model_id[i] == ' ')
+			model_id[i] = '_';
+		}
+		strcpy(device_id, model_id);
+		if (hardware_id[0] != 0) {
+			strcat(device_id, "_");
+			strcat(device_id, hardware_id);
+		}
+		sanitize_device_id((char *)device_id);
+		mConstValues.insert(make_pair("device_id", device_id));
+		LOGI("=> using device id: '%s'\n", device_id);
+		return;
+	}
+#endif
+
 #ifndef TW_FORCE_CPUINFO_FOR_DEVICE_ID
     // First, try the cmdline to see if the serial number was supplied
 	fp = fopen("/proc/cmdline", "rt");