Add basic change for v1453

Change-Id: I9497a61bbc3717f66413794a4e7dee0347c0bc33
diff --git a/mbtk/mbtk_at/asr/mbtk_device_info.c b/mbtk/mbtk_at/asr/mbtk_device_info.c
new file mode 100755
index 0000000..1158301
--- /dev/null
+++ b/mbtk/mbtk_at/asr/mbtk_device_info.c
@@ -0,0 +1,110 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <dlfcn.h>
+
+#include "mbtk/mbtk_type.h"
+#include "mbtk/mbtk_device.h"
+#include "utlAtParser.h"
+#include "utlTrace.h"
+
+
+#include "mbtk_device_info.h"
+
+#define MBTK_LIB_PATH "/lib/libmbtk_lib.so"
+
+typedef int (*mbtk_dev_info_read_func)(mbtk_device_info_item_enum, void *, int);
+
+//extern TelAtParserID mbtkCurAtHandle;
+/*
+ATI
+Manufacturer:"LYNQ"
+Model:"LYNQ_L501"
+Revision:L501C_USBv02.04b07.01
+IMEI: 868070040313763
+
+OK
+*/
+extern mbtk_dev_info *dev_infos_ptr;
+
+static bool dev_info_inited = FALSE;
+static char revision_out[48] = {0};
+static char revision_in[64] = {0};
+static mbtk_dev_info_read_func dev_info_read = NULL;
+
+static int dev_info_get()
+{
+    if(dev_info_inited) {
+        return 0;
+    }
+    void *handle = dlopen(MBTK_LIB_PATH , RTLD_LAZY);
+    if(handle == NULL)
+    {
+        DBGMSG(MBTK_AT, "dlopen() %s fail : %d", MBTK_LIB_PATH, errno);
+        return -1;
+    }
+
+    dev_info_read = (mbtk_dev_info_read_func)dlsym(handle, "mbtk_dev_info_read");
+    if(dev_info_read == NULL)
+    {
+        DBGMSG(MBTK_AT, "dlsym(mbtk_dev_info_read) fail : %d", errno);
+        return -1;
+    }
+
+    mbtk_device_info_basic_t info_basic;
+    memset(&info_basic, 0, sizeof(mbtk_device_info_basic_t));
+
+    // mbtk_dev_info_read()
+    int result = dev_info_read(MBTK_DEVICE_INFO_ITEM_BASIC, &info_basic, sizeof(mbtk_device_info_basic_t));
+    if(result) {
+        DBGMSG(MBTK_AT, "mbtk_dev_info_read(BASIC) fail.");
+        return -1;
+    }
+
+    if(strlen(info_basic.revision_out) > 0) {
+        memcpy(revision_out, info_basic.revision_out, strlen(info_basic.revision_out));
+    }
+    if(strlen(info_basic.revision_in) > 0) {
+        memcpy(revision_in, info_basic.revision_in, strlen(info_basic.revision_in));
+    }
+    dev_info_inited = TRUE;
+    return 0;
+}
+
+void mbtk_ati_str_get(char *ati_str, int len_max)
+{
+    //char *imei = "868070040313763";
+
+	if(dev_infos_ptr) {
+    	DBGMSG(MBTK_AT, "IMEI : %s[len - %d]", dev_infos_ptr->imei, strlen(dev_infos_ptr->imei));
+	} else {
+		DBGMSG(MBTK_AT, "IMEI error.");
+    }
+
+    char *revision_ptr = NULL;
+    if (InProduction_Mode() && !dev_info_get() && strlen(revision_out) > 0) {
+        revision_ptr = revision_out;
+    } else {
+        revision_ptr = MBTK_DEVICES_REVISION;
+    }
+
+    if(dev_infos_ptr && strlen(dev_infos_ptr->imei) > 0) {
+        snprintf(ati_str, len_max,
+            "Manufacturer:\"%s\"\r\n"
+            "Model:\"%s\"\r\n"
+            "Revision:%s\r\n"
+            "IMEI:%s\r\n",
+            MBTK_DEVICES_MANUFACTURER, MBTK_DEVICES_MODEL,
+            revision_ptr,
+            dev_infos_ptr->imei);
+    } else {
+        snprintf(ati_str, len_max,
+            "Manufacturer:\"%s\"\r\n"
+            "Model:\"%s\"\r\n"
+            "Revision:%s\r\n"
+            "IMEI:\r\n",
+            MBTK_DEVICES_MANUFACTURER, MBTK_DEVICES_MODEL,
+            revision_ptr);
+    }
+}
+