Revert "Revert "Fix device_info for v1/v2.""

This reverts commit 7514c31bc41f710de696c1b9c8ba446482eea641.

Reason for revert: okay

Change-Id: I2c8d1230db2998acc728dcd5496e71c1a9ca2eff
diff --git a/marvell/obm/Common/Misc/device_info.c b/marvell/obm/Common/Misc/device_info.c
index db751dc..b65aa04 100755
--- a/marvell/obm/Common/Misc/device_info.c
+++ b/marvell/obm/Common/Misc/device_info.c
@@ -36,8 +36,7 @@
         }
 
         mbtk_device_info_header_t *header = (mbtk_device_info_header_t*)dev_info_buff;
-        if(header->tag != MBTK_DEVICE_INFO_PARTITION_TAG || header->version != MBTK_DEVICE_INFO_CURR_VERSION
-            || header->item_count != MBTK_DEVICE_INFO_ITEM_NUM) {
+        if(header->tag != MBTK_DEVICE_INFO_PARTITION_TAG || header->item_count != MBTK_DEVICE_INFO_ITEM_NUM) {
             obm_printf("dev_info header error: tag - 0x%x, version - 0x%x, item - %d\n\r", header->tag, header->version, header->item_count);
             Retval = GeneralError;
             goto EXIT;
@@ -54,14 +53,26 @@
                     goto EXIT;
                 }
 
-                memcpy(item_ptr, dev_info_buff + header->item_header[item_type].addr, item_size);
-                mbtk_device_info_basic_t *dev_basic = (mbtk_device_info_basic_t*)item_ptr;
-                if(memcmp(dev_basic->name, MBTK_DEVICE_INFO_ITEM_STR_BASIC, 5)
-                    || dev_basic->version != MBTK_DEVICE_INFO_CURR_VERSION) {
-                    obm_printf("dev_info BASIC error: name - %s, version - 0x%x\n\r", dev_basic->name, dev_basic->version);
-                    Retval = GeneralError;
-                    goto EXIT;
+                mbtk_device_info_basic_t *basic_ptr = (mbtk_device_info_basic_t*)item_ptr;
+                basic_ptr->version = (mbtk_device_info_version_enum)header->version;
+                if(basic_ptr->version == DEV_INFO_VERSION_V1) {
+                    memcpy(&(basic_ptr->basic.v1), dev_info_buff + header->item_header[item_type].addr,
+                        sizeof(mbtk_device_info_basic_v1_t));
+                    if(memcmp(basic_ptr->basic.v1.name, MBTK_DEVICE_INFO_ITEM_STR_BASIC, 5)) {
+                        obm_printf("dev_info BASIC error: name - %s\n\r", basic_ptr->basic.v1.name);
+                        Retval = GeneralError;
+                        goto EXIT;
+                    }
+                } else {
+                    memcpy(&(basic_ptr->basic.v2), dev_info_buff + header->item_header[item_type].addr,
+                        sizeof(mbtk_device_info_basic_v2_t));
+                    if(memcmp(basic_ptr->basic.v2.name, MBTK_DEVICE_INFO_ITEM_STR_BASIC, 5)) {
+                        obm_printf("dev_info BASIC error: name - %s\n\r", basic_ptr->basic.v2.name);
+                        Retval = GeneralError;
+                        goto EXIT;
+                    }
                 }
+
                 break;
             }
             case MBTK_DEVICE_INFO_ITEM_FOTA:
@@ -72,13 +83,24 @@
                     goto EXIT;
                 }
 
-                memcpy(item_ptr, dev_info_buff + header->item_header[item_type].addr, item_size);
-                mbtk_device_info_fota_t *dev_fota = (mbtk_device_info_fota_t*)item_ptr;
-                if(memcmp(dev_fota->name, MBTK_DEVICE_INFO_ITEM_STR_FOTA, 4)
-                    || dev_fota->version != MBTK_DEVICE_INFO_CURR_VERSION) {
-                    obm_printf("dev_info FOTA error: name - %s, version - 0x%x\n\r", dev_fota->name, dev_fota->version);
-                    Retval = GeneralError;
-                    goto EXIT;
+                mbtk_device_info_fota_t *fota_ptr = (mbtk_device_info_fota_t*)item_ptr;
+                fota_ptr->version = (mbtk_device_info_version_enum)header->version;
+                if(fota_ptr->version == DEV_INFO_VERSION_V1) {
+                    memcpy(&(fota_ptr->fota.v1), dev_info_buff + header->item_header[item_type].addr,
+                        sizeof(mbtk_device_info_fota_v1_t));
+                    if(memcmp(fota_ptr->fota.v1.name, MBTK_DEVICE_INFO_ITEM_STR_FOTA, 4)) {
+                        obm_printf("dev_info FOTA error: name - %s\n\r", fota_ptr->fota.v1.name);
+                        Retval = GeneralError;
+                        goto EXIT;
+                    }
+                } else {
+                    memcpy(&(fota_ptr->fota.v2), dev_info_buff + header->item_header[item_type].addr,
+                        sizeof(mbtk_device_info_fota_v2_t));
+                    if(memcmp(fota_ptr->fota.v2.name, MBTK_DEVICE_INFO_ITEM_STR_FOTA, 4)) {
+                        obm_printf("dev_info FOTA error: name - %s\n\r", fota_ptr->fota.v2.name);
+                        Retval = GeneralError;
+                        goto EXIT;
+                    }
                 }
                 break;
             }
@@ -90,13 +112,24 @@
                     goto EXIT;
                 }
 
-                memcpy(item_ptr, dev_info_buff + header->item_header[item_type].addr, item_size);
-                mbtk_device_info_modem_t *dev_modem = (mbtk_device_info_modem_t*)item_ptr;
-                if(memcmp(dev_modem->name, MBTK_DEVICE_INFO_ITEM_STR_MODEM, 5)
-                    || dev_modem->version != MBTK_DEVICE_INFO_CURR_VERSION) {
-                    obm_printf("dev_info MODEM error: name - %s, version - 0x%x\n\r", dev_modem->name, dev_modem->version);
-                    Retval = GeneralError;
-                    goto EXIT;
+                mbtk_device_info_modem_t *modem_ptr = (mbtk_device_info_modem_t*)item_ptr;
+                modem_ptr->version = (mbtk_device_info_version_enum)header->version;
+                if(modem_ptr->version == DEV_INFO_VERSION_V1) {
+                    memcpy(&(modem_ptr->modem.v1), dev_info_buff + header->item_header[item_type].addr,
+                        sizeof(mbtk_device_info_modem_v1_t));
+                    if(memcmp(modem_ptr->modem.v1.name, MBTK_DEVICE_INFO_ITEM_STR_MODEM, 5)) {
+                        obm_printf("dev_info MODEM error: name - %s\n\r", modem_ptr->modem.v1.name);
+                        Retval = GeneralError;
+                        goto EXIT;
+                    }
+                } else {
+                    memcpy(&(modem_ptr->modem.v2), dev_info_buff + header->item_header[item_type].addr,
+                        sizeof(mbtk_device_info_modem_v2_t));
+                    if(memcmp(modem_ptr->modem.v2.name, MBTK_DEVICE_INFO_ITEM_STR_MODEM, 5)) {
+                        obm_printf("dev_info MODEM error: name - %s\n\r", modem_ptr->modem.v2.name);
+                        Retval = GeneralError;
+                        goto EXIT;
+                    }
                 }
                 break;
             }
@@ -108,14 +141,26 @@
                     goto EXIT;
                 }
 
-                memcpy(item_ptr, dev_info_buff + header->item_header[item_type].addr, item_size);
-                mbtk_device_info_log_t *dev_log = (mbtk_device_info_log_t*)item_ptr;
-                if(memcmp(dev_log->name, MBTK_DEVICE_INFO_ITEM_STR_LOG, 3)
-                    || dev_log->version != MBTK_DEVICE_INFO_CURR_VERSION) {
-                    obm_printf("dev_info LOG error: name - %s, version - 0x%x\n\r", dev_log->name, dev_log->version);
-                    Retval = GeneralError;
-                    goto EXIT;
+                mbtk_device_info_log_t *log_ptr = (mbtk_device_info_log_t*)item_ptr;
+                log_ptr->version = (mbtk_device_info_version_enum)header->version;
+                if(log_ptr->version == DEV_INFO_VERSION_V1) {
+                    memcpy(&(log_ptr->log.v1), dev_info_buff + header->item_header[item_type].addr,
+                        sizeof(mbtk_device_info_log_v1_t));
+                    if(memcmp(log_ptr->log.v1.name, MBTK_DEVICE_INFO_ITEM_STR_LOG, 3)) {
+                        obm_printf("dev_info LOG error: name - %s\n\r", log_ptr->log.v1.name);
+                        Retval = GeneralError;
+                        goto EXIT;
+                    }
+                } else {
+                    memcpy(&(log_ptr->log.v2), dev_info_buff + header->item_header[item_type].addr,
+                        sizeof(mbtk_device_info_log_v2_t));
+                    if(memcmp(log_ptr->log.v2.name, MBTK_DEVICE_INFO_ITEM_STR_LOG, 3)) {
+                        obm_printf("dev_info LOG error: name - %s\n\r", log_ptr->log.v2.name);
+                        Retval = GeneralError;
+                        goto EXIT;
+                    }
                 }
+
                 break;
             }
             default:
@@ -151,6 +196,13 @@
                 obm_printf("item_size != sizeof(mbtk_device_info_basic_t)\n\r");
                 return GeneralError;
             }
+
+            mbtk_device_info_basic_t *ptr = (mbtk_device_info_basic_t*)item_ptr;
+            if(ptr->version == DEV_INFO_VERSION_V1) {
+                memcpy(dev_info_buff + header->item_header[item_type].addr, &(ptr->basic.v1), sizeof(mbtk_device_info_basic_v1_t));
+            } else {
+                memcpy(dev_info_buff + header->item_header[item_type].addr, &(ptr->basic.v2), sizeof(mbtk_device_info_basic_v2_t));
+            }
             break;
         }
         case MBTK_DEVICE_INFO_ITEM_FOTA:
@@ -159,6 +211,13 @@
                 obm_printf("item_size != sizeof(mbtk_device_info_fota_t)\n\r");
                 return GeneralError;
             }
+
+            mbtk_device_info_fota_t *ptr = (mbtk_device_info_fota_t*)item_ptr;
+            if(ptr->version == DEV_INFO_VERSION_V1) {
+                memcpy(dev_info_buff + header->item_header[item_type].addr, &(ptr->fota.v1), sizeof(mbtk_device_info_fota_v1_t));
+            } else {
+                memcpy(dev_info_buff + header->item_header[item_type].addr, &(ptr->fota.v2), sizeof(mbtk_device_info_fota_v2_t));
+            }
             break;
         }
         case MBTK_DEVICE_INFO_ITEM_MODEM:
@@ -167,6 +226,13 @@
                 obm_printf("item_size != sizeof(mbtk_device_info_modem_t)\n\r");
                 return GeneralError;
             }
+
+            mbtk_device_info_modem_t *ptr = (mbtk_device_info_modem_t*)item_ptr;
+            if(ptr->version == DEV_INFO_VERSION_V1) {
+                memcpy(dev_info_buff + header->item_header[item_type].addr, &(ptr->modem.v1), sizeof(mbtk_device_info_modem_v1_t));
+            } else {
+                memcpy(dev_info_buff + header->item_header[item_type].addr, &(ptr->modem.v2), sizeof(mbtk_device_info_modem_v2_t));
+            }
             break;
         }
         case MBTK_DEVICE_INFO_ITEM_LOG:
@@ -175,6 +241,13 @@
                 obm_printf("item_size != sizeof(mbtk_device_info_log_t)\n\r");
                 return GeneralError;
             }
+
+            mbtk_device_info_log_t *ptr = (mbtk_device_info_log_t*)item_ptr;
+            if(ptr->version == DEV_INFO_VERSION_V1) {
+                memcpy(dev_info_buff + header->item_header[item_type].addr, &(ptr->log.v1), sizeof(mbtk_device_info_log_v1_t));
+            } else {
+                memcpy(dev_info_buff + header->item_header[item_type].addr, &(ptr->log.v2), sizeof(mbtk_device_info_log_v2_t));
+            }
             break;
         }
         default:
@@ -184,8 +257,6 @@
         }
     }
 
-    memcpy(dev_info_buff + header->item_header[item_type].addr, item_ptr, item_size);
-
 	MainRet = EraseFlash(MBTK_DEV_INFO_PARTITION_ADDR, BlockSize, BOOT_FLASH);
 	if (MainRet != NoError)
 	{
diff --git a/marvell/obm/Loader/Main/BootLoader.c b/marvell/obm/Loader/Main/BootLoader.c
index 1057792..af2d813 100755
--- a/marvell/obm/Loader/Main/BootLoader.c
+++ b/marvell/obm/Loader/Main/BootLoader.c
@@ -647,33 +647,61 @@
         memset(&basic_info, 0x0, sizeof(mbtk_device_info_basic_t));
         UINT_T Retval = Dev_Info_Get(MBTK_DEVICE_INFO_ITEM_BASIC, &basic_info, sizeof(mbtk_device_info_basic_t));
         if(Retval == NoError) {
-            obm_printf("MBTK reboot flag : %d, boot reason : %d\n\r", basic_info.reboot_flag, boot_reason);
+            if(basic_info.version == DEV_INFO_VERSION_V1) {
+                obm_printf("MBTK reboot flag : %d, boot reason : %d\n\r", basic_info.basic.v1.reboot_flag, boot_reason);
 #if MBTK_AUTO_DL
 #else
-            if(basic_info.reboot_flag == MBTK_REBOOT_FLAG_DOWNLOAD) {
-                mode = UPGRADESW;
-                time_count_enable = TRUE;
-                time_count_in_sec = 0;
-                obm_printf("MBTK reboot download\n\r");
-                basic_info.reboot_flag = MBTK_REBOOT_FLAG_NORMAL;
-                Dev_Info_Save(MBTK_DEVICE_INFO_ITEM_BASIC, &basic_info, sizeof(mbtk_device_info_basic_t));
-                return mode;
-            }
-#endif
-            if(boot_reason == SYS_BR_REBOOT) {
-                if(basic_info.reboot_flag == MBTK_REBOOT_FLAG_NORMAL) {
-                    basic_info.reboot_flag = MBTK_REBOOT_FLAG_HARDWARE;
-                } 
-            } else {
-                if(basic_info.reboot_flag == MBTK_REBOOT_FLAG_NORMAL) {
-                    basic_info.reboot_flag = MBTK_REBOOT_FLAG_POWER_OFF;
+                if(basic_info.basic.v1.reboot_flag == MBTK_REBOOT_FLAG_DOWNLOAD) {
+                    mode = UPGRADESW;
+                    time_count_enable = TRUE;
+                    time_count_in_sec = 0;
+                    obm_printf("MBTK reboot download\n\r");
+                    basic_info.basic.v1.reboot_flag = MBTK_REBOOT_FLAG_NORMAL;
+                    Dev_Info_Save(MBTK_DEVICE_INFO_ITEM_BASIC, &basic_info, sizeof(mbtk_device_info_basic_t));
+                    return mode;
                 }
+#endif
+                if(boot_reason == SYS_BR_REBOOT) {
+                    if(basic_info.basic.v1.reboot_flag == MBTK_REBOOT_FLAG_NORMAL) {
+                        basic_info.basic.v1.reboot_flag = MBTK_REBOOT_FLAG_HARDWARE;
+                    }
+                } else {
+                    if(basic_info.basic.v1.reboot_flag == MBTK_REBOOT_FLAG_NORMAL) {
+                        basic_info.basic.v1.reboot_flag = MBTK_REBOOT_FLAG_POWER_OFF;
+                    }
+                }
+
+                obm_printf("MBTK save reboot flag : %d\n\r", basic_info.basic.v1.reboot_flag);
+            } else {
+                obm_printf("MBTK reboot flag : %d, boot reason : %d\n\r", basic_info.basic.v2.reboot_flag, boot_reason);
+#if MBTK_AUTO_DL
+#else
+                if(basic_info.basic.v2.reboot_flag == MBTK_REBOOT_FLAG_DOWNLOAD) {
+                    mode = UPGRADESW;
+                    time_count_enable = TRUE;
+                    time_count_in_sec = 0;
+                    obm_printf("MBTK reboot download\n\r");
+                    basic_info.basic.v2.reboot_flag = MBTK_REBOOT_FLAG_NORMAL;
+                    Dev_Info_Save(MBTK_DEVICE_INFO_ITEM_BASIC, &basic_info, sizeof(mbtk_device_info_basic_t));
+                    return mode;
+                }
+#endif
+                if(boot_reason == SYS_BR_REBOOT) {
+                    if(basic_info.basic.v2.reboot_flag == MBTK_REBOOT_FLAG_NORMAL) {
+                        basic_info.basic.v2.reboot_flag = MBTK_REBOOT_FLAG_HARDWARE;
+                    }
+                } else {
+                    if(basic_info.basic.v2.reboot_flag == MBTK_REBOOT_FLAG_NORMAL) {
+                        basic_info.basic.v2.reboot_flag = MBTK_REBOOT_FLAG_POWER_OFF;
+                    }
+                }
+
+                obm_printf("MBTK save reboot flag : %d\n\r", basic_info.basic.v2.reboot_flag);
             }
 
-            obm_printf("MBTK save reboot flag : %d\n\r", basic_info.reboot_flag);
             Dev_Info_Save(MBTK_DEVICE_INFO_ITEM_BASIC, &basic_info, sizeof(mbtk_device_info_basic_t));
         }
-        
+
 #if MBTK_AUTO_DL
         mode = UPGRADESW;
         time_count_enable = TRUE;
diff --git a/marvell/services/ota/mbtk_ota.c b/marvell/services/ota/mbtk_ota.c
index 96bf086..939d3ab 100755
--- a/marvell/services/ota/mbtk_ota.c
+++ b/marvell/services/ota/mbtk_ota.c
@@ -207,9 +207,15 @@
 
     mbtk_device_info_header_t *info_header = (mbtk_device_info_header_t*)mtd_buff;
     mbtk_device_info_basic_t *info_basic = (mbtk_device_info_basic_t*)(mtd_buff + info_header->item_header[MBTK_DEVICE_INFO_ITEM_BASIC].addr);
-    OTA_DEBUG("Old version : %s", info_basic->revision_out);
-    memset(info_basic->revision_out, 0, sizeof(info_basic->revision_out));
-    memcpy(info_basic->revision_out, revision_out, strlen(revision_out));
+    if(info_basic->version == DEV_INFO_VERSION_V1) {
+        OTA_DEBUG("Old version : %s", info_basic->basic.v1.revision_out);
+        memset(info_basic->basic.v1.revision_out, 0, sizeof(info_basic->basic.v1.revision_out));
+        memcpy(info_basic->basic.v1.revision_out, revision_out, strlen(revision_out));
+    } else {
+        OTA_DEBUG("Old version : %s", info_basic->basic.v2.revision_out);
+        memset(info_basic->basic.v2.revision_out, 0, sizeof(info_basic->basic.v2.revision_out));
+        memcpy(info_basic->basic.v2.revision_out, revision_out, strlen(revision_out));
+    }
 
     lseek(fd, 0, SEEK_SET);
     if (write(fd, mtd_buff, info.erase_size) != info.erase_size) {
diff --git a/mbtk/device_info_generate b/mbtk/device_info_generate
index 5d7e738..e88914e 100755
--- a/mbtk/device_info_generate
+++ b/mbtk/device_info_generate
Binary files differ
diff --git a/mbtk/include/mbtk/mbtk_device.h b/mbtk/include/mbtk/mbtk_device.h
index f7e7cef..b2f1729 100755
--- a/mbtk/include/mbtk/mbtk_device.h
+++ b/mbtk/include/mbtk/mbtk_device.h
@@ -6,17 +6,15 @@
 * Author : lb
 * Date   : 2023/12/30 11:36:35
 */
-#ifndef _MBTK_DEVICE_V2_H
-#define _MBTK_DEVICE_V2_H
+#ifndef _MBTK_DEVICE_H
+#define _MBTK_DEVICE_H
 //#include "mbtk_type.h"
 
 #define MBTK_DEVICE_INFO_PARTITION_NAME "device_info"
 #define MBTK_DEVICE_INFO_PARTITION_TAG 0x87878787
-#define MBTK_DEVICE_INFO_CURR_VERSION 2
 
-#define MBTK_DEV_INFO_PARTITION_ADDR 0x02A20000
+#define MBTK_DEV_INFO_PARTITION_ADDR 0x005C0000
 
-// 78,147,482,134742231
 #define MBTK_BAND_ALL_GSM_DEFAULT 78             // GSM : ASR default.
 #define MBTK_BAND_ALL_WCDMA_DEFAULT 147          // WCDMA : ASR default.
 #define MBTK_BAND_ALL_TDLTE_DEFAULT 482          // TDD-LTE : ASR default.
@@ -27,45 +25,11 @@
 #define MBTK_BAND_ALL_NR_1_DEFAULT 256           // n41
 #define MBTK_BAND_ALL_NR_0_DEFAULT 134217877     // n1/n3/n5/n8/n28
 
-#define MBTK_BAND_CN_GSM_DEFAULT 11             // GSM : B3/B8 (PGSM 900/DCS GSM 1800/EGSM 900)
-#define MBTK_BAND_CN_WCDMA_DEFAULT 145          // WCDMA : B1/B5/B8
-#define MBTK_BAND_CN_TDLTE_DEFAULT 482          // TDD-LTE : B34/B38/B39/B40/B41
-#define MBTK_BAND_CN_FDDLTE_DEFAULT 149         // FDD-LTE : B1/B3/B5/B8
-#define MBTK_BAND_CN_EXT_LTE_DEFAULT 0          // EXT-LTE
-#define MBTK_BAND_CN_NR_3_DEFAULT 0
-#define MBTK_BAND_CN_NR_2_DEFAULT 24576         // n78/n79
-#define MBTK_BAND_CN_NR_1_DEFAULT 384           // n40/n41
-#define MBTK_BAND_CN_NR_0_DEFAULT 134217877     // n1/n3/n5/n8/n28
-
-#define MBTK_BAND_EU_GSM_DEFAULT 11             // GSM : B3/B8 (PGSM 900/DCS GSM 1800/EGSM 900)
-#define MBTK_BAND_EU_WCDMA_DEFAULT 145          // WCDMA : B1/B5/B8
-#define MBTK_BAND_EU_TDLTE_DEFAULT 416          // TDD-LTE : B38/B40/B41
-#define MBTK_BAND_EU_FDDLTE_DEFAULT 134742229   // FDD-LTE : B1/B3/B5/B7/B8/B20/B28
-#define MBTK_BAND_EU_EXT_LTE_DEFAULT 0          // EXT-LTE
-#define MBTK_BAND_EU_NR_3_DEFAULT 0
-#define MBTK_BAND_EU_NR_2_DEFAULT 12352         // n71/n77/n78
-#define MBTK_BAND_EU_NR_1_DEFAULT 416           // n38/n40/n41
-#define MBTK_BAND_EU_NR_0_DEFAULT 134742229     // n1/n3/n5/n7/n8/n20/n28
-
-#define MBTK_BAND_SA_GSM_DEFAULT 79             // GSM : B2/B3/B5/B8(GSM 850/PGSM 900/EGSM 900/DCS GSM 1800/PCS GSM 1900)
-#define MBTK_BAND_SA_WCDMA_DEFAULT 155          // WCDMA : B1/B2/B4/B5/B8
-#define MBTK_BAND_SA_TDLTE_DEFAULT 128          // TDD-LTE : B40
-#define MBTK_BAND_SA_FDDLTE_DEFAULT 134217951  // FDD-LTE : B1/B2/B3/B4/B5/B7/B8/B28
-#define MBTK_BAND_SA_EXT_LTE_DEFAULT 2          // EXT-LTE : B66
-#define MBTK_BAND_SA_NR_3_DEFAULT MBTK_BAND_ALL_NR_3_DEFAULT
-#define MBTK_BAND_SA_NR_2_DEFAULT MBTK_BAND_ALL_NR_2_DEFAULT
-#define MBTK_BAND_SA_NR_1_DEFAULT MBTK_BAND_ALL_NR_1_DEFAULT
-#define MBTK_BAND_SA_NR_0_DEFAULT MBTK_BAND_ALL_NR_0_DEFAULT
-
 #define MBTK_DEVICE_INFO_ITEM_STR_BASIC "BASIC"
 #define MBTK_DEVICE_INFO_ITEM_STR_FOTA "FOTA"
 #define MBTK_DEVICE_INFO_ITEM_STR_MODEM "MODEM"
 #define MBTK_DEVICE_INFO_ITEM_STR_LOG "LOG"
 
-#define MBTK_DEVICE_INFO_ITEM_ADDR_BASIC    0x100   // Header is 0x100
-#define MBTK_DEVICE_INFO_ITEM_ADDR_FOTA     0x500   // Basic is 1k
-#define MBTK_DEVICE_INFO_ITEM_ADDR_MODEM    0x900   // Fota is 1k
-#define MBTK_DEVICE_INFO_ITEM_ADDR_LOG      0xD00   // Modem is 1k
 
 #define MBTK_NET_SUPPORT_2G (1)
 #define MBTK_NET_SUPPORT_3G (1<<1)
@@ -94,6 +58,11 @@
 } mbtk_device_info_header_t;
 
 typedef enum {
+    DEV_INFO_VERSION_V1 = 1,
+    DEV_INFO_VERSION_V2,
+} mbtk_device_info_version_enum;
+
+typedef enum {
     MBTK_REBOOT_FLAG_NORMAL = 0,
     MBTK_REBOOT_FLAG_DOWNLOAD,
     MBTK_REBOOT_FLAG_POWER_OFF,  //Power off and restart
@@ -113,13 +82,41 @@
     uint8 revision_out[48];     // L508_X6v01.01b04.00
     uint8 revision_in[64];
     uint8 build_time[64];
-    uint8 asr_baseline[64];
+} mbtk_device_info_basic_v1_t;
+
+typedef struct {
+    uint8 name[16];
+    uint32 version;             // Default : 0x01
+    uint8 project[16];          // T108 / L508_X6
+    uint8 project_cust[16];     // T108_C1 / L508_X6_C1  (Refer to: Custom_Model in blf file.)
+    uint32 ab_support;          // 1 for ab
+    mbtk_device_info_reboot_flag_enum reboot_flag;
+    uint8 revision_out[48];     // L508_X6v01.01b04.00
+    uint8 revision_in[64];
+    uint8 build_time[64];
+    uint8 asr_baseline[128];
+} mbtk_device_info_basic_v2_t;
+
+typedef struct {
+    mbtk_device_info_version_enum version;
+    union {
+        mbtk_device_info_basic_v1_t v1;
+        mbtk_device_info_basic_v2_t v2;
+    } basic;
 } mbtk_device_info_basic_t;
 
 typedef struct {
     uint8 name[16];
     uint32 version;             // Default : 0x01
     uint32 state;               //
+} mbtk_device_info_fota_v1_t, mbtk_device_info_fota_v2_t;
+
+typedef struct {
+    mbtk_device_info_version_enum version;
+    union {
+        mbtk_device_info_fota_v1_t v1;
+        mbtk_device_info_fota_v2_t v2;
+    } fota;
 } mbtk_device_info_fota_t;
 
 typedef enum {
@@ -133,6 +130,17 @@
     uint8 name[16];
     uint32 version;             // Default : 0x01
     mbtk_modem_band_area_enum band_area;
+    uint32 band_gsm;
+    uint32 band_wcdma;
+    uint32 band_tdlte;
+    uint32 band_fddlte;
+    uint32 band_lte_ext;
+} mbtk_device_info_modem_v1_t;
+
+typedef struct {
+    uint8 name[16];
+    uint32 version;             // Default : 0x01
+    mbtk_modem_band_area_enum band_area;
     uint32 net_pref;    // Refor to : mbtk_net_pref_enum
     uint32 net_support; // 1:GSM      2:WCDMA   4:LTE   8:NR
     uint32 band_gsm;
@@ -144,25 +152,33 @@
     uint32 band_nr_2;
     uint32 band_nr_1;
     uint32 band_nr_0;
+} mbtk_device_info_modem_v2_t;
+
+typedef struct {
+    mbtk_device_info_version_enum version;
+    union {
+        mbtk_device_info_modem_v1_t v1;
+        mbtk_device_info_modem_v2_t v2;
+    } modem;
 } mbtk_device_info_modem_t;
 
 typedef struct {
     uint8 name[16];
     uint32 version;             // Default : 0x01
     uint32 state;               //
+} mbtk_device_info_log_v1_t, mbtk_device_info_log_v2_t;
+
+typedef struct {
+    mbtk_device_info_version_enum version;
+    union {
+        mbtk_device_info_log_v1_t v1;
+        mbtk_device_info_log_v2_t v2;
+    } log;
 } mbtk_device_info_log_t;
 
-
-/*
-* MBTK_DEVICE_INFO_ITEM_BASIC - mbtk_device_info_basic_t
-* MBTK_DEVICE_INFO_ITEM_FOTA - mbtk_device_info_fota_t
-* MBTK_DEVICE_INFO_ITEM_MODEM - mbtk_device_info_modem_t
-* MBTK_DEVICE_INFO_ITEM_LOG - mbtk_device_info_log_t
-*/
 int mbtk_dev_info_read(mbtk_device_info_item_enum item_type, void *item_ptr, int item_size);
 int mbtk_dev_info_write(mbtk_device_info_item_enum item_type, void *item_ptr, int item_size);
 int mbtk_dev_info_revision_get(char *revision_out, char *revision_in, char *project_cust, char *band_area,
             char* build_time);
 
-#endif /* _MBTK_DEVICE_V2_H */
-
+#endif /* _MBTK_DEVICE_H */
diff --git a/mbtk/mbtk_at/asr/mbtk_device_info.c b/mbtk/mbtk_at/asr/mbtk_device_info.c
index 1158301..e1238a6 100755
--- a/mbtk/mbtk_at/asr/mbtk_device_info.c
+++ b/mbtk/mbtk_at/asr/mbtk_device_info.c
@@ -61,11 +61,20 @@
         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));
+    if(info_basic.version == DEV_INFO_VERSION_V1) {
+        if(strlen(info_basic.basic.v1.revision_out) > 0) {
+            memcpy(revision_out, info_basic.basic.v1.revision_out, strlen(info_basic.basic.v1.revision_out));
+        }
+        if(strlen(info_basic.basic.v1.revision_in) > 0) {
+            memcpy(revision_in, info_basic.basic.v1.revision_in, strlen(info_basic.basic.v1.revision_in));
+        }
+    } else {
+        if(strlen(info_basic.basic.v2.revision_out) > 0) {
+            memcpy(revision_out, info_basic.basic.v2.revision_out, strlen(info_basic.basic.v2.revision_out));
+        }
+        if(strlen(info_basic.basic.v2.revision_in) > 0) {
+            memcpy(revision_in, info_basic.basic.v2.revision_in, strlen(info_basic.basic.v2.revision_in));
+        }
     }
     dev_info_inited = TRUE;
     return 0;
diff --git a/mbtk/mbtk_at/src/mbtk_at_basic.c b/mbtk/mbtk_at/src/mbtk_at_basic.c
index 55638ef..77be9bf 100755
--- a/mbtk/mbtk_at/src/mbtk_at_basic.c
+++ b/mbtk/mbtk_at/src/mbtk_at_basic.c
@@ -734,13 +734,23 @@
         {
             char resp_buf[MBTK_AT_RESP_LEN_MAX] = {0};
             if(!dev_info_get()) {
-                snprintf(resp_buf, MBTK_AT_RESP_LEN_MAX,
-                    "Revision:%s\r\n"
-                    "Custom_Model:%s\r\n"
-                    "Module_Type:%s\r\n",
-                    strlen(info_basic.revision_out) > 0 ? info_basic.revision_out: "Unknown",
-                    strlen(info_basic.project_cust) > 0 ? info_basic.project_cust: "Unknown",
-                    band_area_2_str(info_modem.band_area));
+                if(info_basic.version == DEV_INFO_VERSION_V1) {
+                    snprintf(resp_buf, MBTK_AT_RESP_LEN_MAX,
+                        "Revision:%s\r\n"
+                        "Custom_Model:%s\r\n"
+                        "Module_Type:%s\r\n",
+                        strlen(info_basic.basic.v1.revision_out) > 0 ? info_basic.basic.v1.revision_out: "Unknown",
+                        strlen(info_basic.basic.v1.project_cust) > 0 ? info_basic.basic.v1.project_cust: "Unknown",
+                        band_area_2_str(info_modem.modem.v1.band_area));
+                } else {
+                    snprintf(resp_buf, MBTK_AT_RESP_LEN_MAX,
+                        "Revision:%s\r\n"
+                        "Custom_Model:%s\r\n"
+                        "Module_Type:%s\r\n",
+                        strlen(info_basic.basic.v2.revision_out) > 0 ? info_basic.basic.v2.revision_out: "Unknown",
+                        strlen(info_basic.basic.v2.project_cust) > 0 ? info_basic.basic.v2.project_cust: "Unknown",
+                        band_area_2_str(info_modem.modem.v2.band_area));
+                }
             } else {
                 snprintf(resp_buf, MBTK_AT_RESP_LEN_MAX,
                     "Revision:%s\r\n"
@@ -1003,9 +1013,15 @@
         {
             char resp_buf[MBTK_AT_RESP_LEN_MAX] = {0};
             if(!dev_info_get()) {
-                snprintf(resp_buf, MBTK_AT_RESP_LEN_MAX, "Version: %s\r\nBuild time: %s\r\n",
-                     strlen(info_basic.revision_out) > 0 ? info_basic.revision_out: "Unknown",
-                     strlen(info_basic.build_time) > 0 ? info_basic.build_time: "Unknown");
+                if(info_basic.version == DEV_INFO_VERSION_V1) {
+                    snprintf(resp_buf, MBTK_AT_RESP_LEN_MAX, "Version: %s\r\nBuild time: %s\r\n",
+                         strlen(info_basic.basic.v1.revision_out) > 0 ? info_basic.basic.v1.revision_out: "Unknown",
+                         strlen(info_basic.basic.v1.build_time) > 0 ? info_basic.basic.v1.build_time: "Unknown");
+                } else {
+                    snprintf(resp_buf, MBTK_AT_RESP_LEN_MAX, "Version: %s\r\nBuild time: %s\r\n",
+                         strlen(info_basic.basic.v2.revision_out) > 0 ? info_basic.basic.v2.revision_out: "Unknown",
+                         strlen(info_basic.basic.v2.build_time) > 0 ? info_basic.basic.v2.build_time: "Unknown");
+                }
             } else {
                 snprintf(resp_buf, MBTK_AT_RESP_LEN_MAX, "Version: %s\r\nBuild time: %s\r\n",
                      "Unknown", "Unknown");