Merge tag 'LA.VENDOR.13.2.0.r1-23800-KAILUA.QSSI14.0' into staging/lineage-21.0_merge-LA.VENDOR.13.2.0.r1-23800-KAILUA.QSSI14.0

LA.VENDOR.13.2.0.r1-23800-KAILUA.QSSI14.0

# By Shailendra Singh
# Via Linux Build Service Account (1) and Shailendra Pratap Singh (1)
* tag 'LA.VENDOR.13.2.0.r1-23800-KAILUA.QSSI14.0':
  wpa_supplicant_8_lib: Fix interface name parsing in clear mcc quota
  wpa_supplicant_8_lib: Fix OOB read access in driver commands

Change-Id: I2044a7236ffca0d7c02adba2a4636c4b3de49abb
diff --git a/.gitupstream b/.gitupstream
new file mode 100644
index 0000000..fe4ecc8
--- /dev/null
+++ b/.gitupstream
@@ -0,0 +1 @@
+https://git.codelinaro.org/clo/la/platform/hardware/qcom/wlan
diff --git a/Android.bp b/Android.bp
new file mode 100644
index 0000000..9515b25
--- /dev/null
+++ b/Android.bp
@@ -0,0 +1,2 @@
+soong_namespace {
+}
diff --git a/Android.mk b/Android.mk
index 6695cef..3c542ca 100644
--- a/Android.mk
+++ b/Android.mk
@@ -1,6 +1,10 @@
+ifeq ($(call my-dir),$(call project-path-for,qcom-wlan))
+
 # TODO:  Find a better way to separate build configs for ADP vs non-ADP devices
 QCOM_WLAN_ROOT := $(call my-dir)
 
 ifneq ($(BOARD_IS_AUTOMOTIVE),true)
 include $(call all-subdir-makefiles)
 endif
+
+endif
diff --git a/cld80211-lib/Android.bp b/cld80211-lib/Android.bp
new file mode 100644
index 0000000..8879830
--- /dev/null
+++ b/cld80211-lib/Android.bp
@@ -0,0 +1,19 @@
+cc_library_headers {
+    name: "libcld80211_headers",
+    vendor: true,
+    export_include_dirs: ["."],
+}
+
+cc_library_shared {
+    name: "libcld80211",
+    vendor: true,
+
+    header_libs: ["libcld80211_headers"],
+    shared_libs: ["libcutils", "libnl", "liblog"],
+    cflags: [
+        "-Wall",
+        "-Werror",
+        "-Wno-unused-parameter",
+    ],
+    srcs: ["cld80211_lib.c"],
+}
diff --git a/cld80211-lib/Android.mk b/cld80211-lib/Android.mk
deleted file mode 100644
index 404c116..0000000
--- a/cld80211-lib/Android.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-# =================================
-# copy header
-# =================================
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libcld80211_headers
-LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)
-LOCAL_VENDOR_MODULE := true
-include $(BUILD_HEADER_LIBRARY)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := libcld80211
-LOCAL_CLANG := true
-LOCAL_MODULE_TAGS := optional
-LOCAL_C_INCLUDES += $(LOCAL_PATH) \
-	external/libnl/include
-LOCAL_SHARED_LIBRARIES := libcutils libnl liblog
-LOCAL_SRC_FILES := cld80211_lib.c
-LOCAL_CFLAGS += -Wall -Werror -Wno-unused-parameter
-LOCAL_HEADER_LIBRARIES := libcld80211_headers
-LOCAL_VENDOR_MODULE := true
-include $(BUILD_SHARED_LIBRARY)
-
diff --git a/qcwcn/wifi_hal/Android.mk b/qcwcn/wifi_hal/Android.mk
index 2e2c489..d4a7087 100644
--- a/qcwcn/wifi_hal/Android.mk
+++ b/qcwcn/wifi_hal/Android.mk
@@ -38,7 +38,7 @@
 include $(CLEAR_VARS)
 
 LOCAL_CFLAGS := -Wno-unused-parameter
-ifeq ($(TARGET_BUILD_VARIANT),userdebug)
+ifeq ($(TARGET_BUILD_VARIANT),eng)
 LOCAL_CFLAGS += "-DLOG_NDEBUG=0"
 endif
 
diff --git a/qcwcn/wifi_hal/common.cpp b/qcwcn/wifi_hal/common.cpp
index 263043b..8aea253 100644
--- a/qcwcn/wifi_hal/common.cpp
+++ b/qcwcn/wifi_hal/common.cpp
@@ -239,6 +239,7 @@
 lowi_cb_table_t *LowiWifiHalApi = NULL;
 /* LowiSupportedCapabilities read */
 u32 lowiSupportedCapabilities = 0;
+bool lowiUnsupported = false;
 
 int compareLowiVersion(u16 major, u16 minor, u16 micro)
 {
@@ -269,21 +270,27 @@
     *lowi_wifihal_api = NULL;
     *lowi_get_capa_supported = false;
 
+    if (lowiUnsupported) {
+        return WIFI_ERROR_NOT_SUPPORTED;
+    }
+
 #if __WORDSIZE == 64
     void* lowi_handle = dlopen("/vendor/lib64/liblowi_wifihal.so", RTLD_NOW);
 #else
     void* lowi_handle = dlopen("/vendor/lib/liblowi_wifihal.so", RTLD_NOW);
 #endif
     if (!lowi_handle) {
-        ALOGE("%s: NULL lowi_handle, err: %s", __FUNCTION__, dlerror());
-        return WIFI_ERROR_UNKNOWN;
+        ALOGV("%s: NULL lowi_handle, err: %s", __FUNCTION__, dlerror());
+        retVal = WIFI_ERROR_NOT_SUPPORTED;
+        goto cleanup;
     }
 
     lowiCbTable = (getCbTable_t*)dlsym(lowi_handle,
                                        "lowi_wifihal_get_cb_table");
     if (!lowiCbTable) {
         ALOGE("%s: NULL lowi callback table", __FUNCTION__);
-        return WIFI_ERROR_UNKNOWN;
+        retVal = WIFI_ERROR_NOT_SUPPORTED;
+        goto cleanup;
     }
 
     *lowi_wifihal_api = lowiCbTable();
@@ -344,6 +351,7 @@
 cleanup:
     if (retVal) {
         *lowi_wifihal_api = NULL;
+        lowiUnsupported = true;
     }
     return retVal;
 }
@@ -353,6 +361,10 @@
     int ret = WIFI_SUCCESS;
     bool lowi_get_capabilities_support = false;
 
+    if (lowiUnsupported) {
+        return NULL;
+    }
+
     if (LowiWifiHalApi == NULL) {
         ALOGV("%s: LowiWifiHalApi Null, Initialize Lowi",
               __FUNCTION__);
@@ -366,7 +378,7 @@
         /* Initialize LOWI if it isn't up already. */
         ret = LowiWifiHalApi->init();
         if (ret) {
-            ALOGE("%s: failed lowi initialization. "
+            ALOGW("%s: failed lowi initialization. "
                 "Returned error:%d. Exit.", __FUNCTION__, ret);
             goto cleanup;
         }
@@ -398,10 +410,12 @@
 
 cleanup:
     if (LowiWifiHalApi && LowiWifiHalApi->destroy) {
+        ALOGI("%s: Cleaning up Lowi due to failure. Return NULL", __FUNCTION__);
         ret = LowiWifiHalApi->destroy();
     }
     LowiWifiHalApi = NULL;
     lowiSupportedCapabilities = 0;
+    lowiUnsupported = true;
     return LowiWifiHalApi;
 }
 
diff --git a/qcwcn/wifi_hal/llstats.cpp b/qcwcn/wifi_hal/llstats.cpp
index 728fac4..86c372b 100644
--- a/qcwcn/wifi_hal/llstats.cpp
+++ b/qcwcn/wifi_hal/llstats.cpp
@@ -967,7 +967,7 @@
                 {
                     if (!tb_vendor[QCA_WLAN_VENDOR_ATTR_LL_STATS_NUM_RADIOS])
                     {
-                        ALOGE("%s: QCA_WLAN_VENDOR_ATTR_LL_STATS_NUM_RADIOS"
+                        ALOGD("%s: QCA_WLAN_VENDOR_ATTR_LL_STATS_NUM_RADIOS"
                               " not found", __FUNCTION__);
                         return WIFI_ERROR_INVALID_ARGS;
                     }
@@ -978,7 +978,7 @@
                         QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_NUM_CHANNELS
                         ])
                     {
-                        ALOGE("%s:"
+                        ALOGD("%s:"
                             "QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_NUM_CHANNELS"
                             " not found", __FUNCTION__);
                         status = WIFI_ERROR_INVALID_ARGS;
diff --git a/qcwcn/wifi_hal/tdls.cpp b/qcwcn/wifi_hal/tdls.cpp
index c794a56..54555e2 100644
--- a/qcwcn/wifi_hal/tdls.cpp
+++ b/qcwcn/wifi_hal/tdls.cpp
@@ -123,9 +123,15 @@
                             __FUNCTION__);
                     return WIFI_ERROR_INVALID_ARGS;
                 }
+                if (nla_len(tb_vendor[QCA_WLAN_VENDOR_ATTR_TDLS_MAC_ADDR]) != sizeof(mac_addr))
+                {
+                    ALOGE("%s: QCA_WLAN_VENDOR_ATTR_TDLS_MAC_ADDR Invalid mac addr lenght",
+                            __FUNCTION__);
+                    return WIFI_ERROR_INVALID_ARGS;
+                }
                 memcpy(addr,
                   (u8 *)nla_data(tb_vendor[QCA_WLAN_VENDOR_ATTR_TDLS_MAC_ADDR]),
-                  nla_len(tb_vendor[QCA_WLAN_VENDOR_ATTR_TDLS_MAC_ADDR]));
+                  sizeof(mac_addr));
 
                 ALOGV(MAC_ADDR_STR, MAC_ADDR_ARRAY(addr));
 
diff --git a/qcwcn/wifi_hal/wifi_hal.cpp b/qcwcn/wifi_hal/wifi_hal.cpp
index 940469b..50f8691 100644
--- a/qcwcn/wifi_hal/wifi_hal.cpp
+++ b/qcwcn/wifi_hal/wifi_hal.cpp
@@ -147,6 +147,7 @@
 wifi_error
     wifi_init_tcp_param_change_event_handler(wifi_interface_handle iface);
 
+wifi_error wifi_set_voip_mode(wifi_interface_handle iface, wifi_voip_mode mode);
 #ifndef TARGET_SUPPORTS_WEARABLES
 wifi_error wifi_get_supported_iface_combination(wifi_interface_handle iface_handle);
 
@@ -604,6 +605,15 @@
     struct nlattr *nl_attr_unsafe_chan = NULL;
     struct nlattr *unsafe_channels_attr = NULL;
     hal_info *info = NULL;
+    int freq_cnt = 0;
+    u32 *freq = (u32 *) malloc(sizeof(u32) * num_channels);
+    u32 *power_cap_dbm = (u32 *) malloc(sizeof(u32) * num_channels);
+
+    if (!freq || !power_cap_dbm) {
+        ALOGE("%s: Failed to allocate memory", __FUNCTION__);
+        ret = WIFI_ERROR_OUT_OF_MEMORY;
+        goto cleanup;
+    }
 
     if (!handle) {
          ALOGE("%s: Error, wifi_handle NULL", __FUNCTION__);
@@ -652,6 +662,25 @@
     }
     ALOGD("%s: num_channels:%d, restrictions:%x", __FUNCTION__, num_channels,
           restrictions);
+    for (int i = 0; i < num_channels; i++)
+    {
+        u32 frequency = get_frequency_from_channel(unsafeChannels[i].channel,
+                unsafeChannels[i].band);
+        if (frequency != 0)
+        {
+          freq[freq_cnt] = frequency;
+          power_cap_dbm[freq_cnt] = unsafeChannels[i].power_cap_dbm;
+          freq_cnt++;
+          ALOGV("%s: channel:%d, freq:%d, power_cap_dbm:%d, band:%d",
+               __FUNCTION__, unsafeChannels[i].channel, frequency,
+               unsafeChannels[i].power_cap_dbm, unsafeChannels[i].band);
+        }
+        else {
+            ALOGV("%s: Invalid channel found, channel:%d, power_cap_dbm:%d, band:%d",
+               __FUNCTION__, unsafeChannels[i].channel,
+               unsafeChannels[i].power_cap_dbm, unsafeChannels[i].band);
+        }
+    }
     if (num_channels == 0) {
          unsafe_channels_attr = cmd->attr_start(0);
          if (!unsafe_channels_attr) {
@@ -683,61 +712,59 @@
             ret = WIFI_ERROR_INVALID_ARGS;
             goto cleanup;
         }
-    }
-    for (int i = 0; i < num_channels; i++) {
-         unsafe_channels_attr = cmd->attr_start(i);
-         if (!unsafe_channels_attr) {
-              ALOGE("%s: failed attr_start for unsafe_channels_attr of"
+
+        if(freq_cnt == 0)
+        {
+            ALOGE("%s: No valid frequency, ignore channel list", __FUNCTION__);
+            ret = WIFI_ERROR_INVALID_ARGS;
+            goto cleanup;
+        }
+        for (int i = 0; i < freq_cnt; i++) {
+            unsafe_channels_attr = cmd->attr_start(i);
+            if (!unsafe_channels_attr) {
+                ALOGE("%s: failed attr_start for unsafe_channels_attr of"
                     " index:%d", __FUNCTION__, i);
-              ret = WIFI_ERROR_OUT_OF_MEMORY;
-              goto cleanup;
-         }
-         u32 freq = get_frequency_from_channel(unsafeChannels[i].channel,
-               unsafeChannels[i].band);
-         if (!freq) {
-              ALOGE("%s: Failed to get frequency of band:%d, channel:%d",
-                        __FUNCTION__, (int)unsafeChannels[i].band,
-                        unsafeChannels[i].channel);
-              ret = WIFI_ERROR_INVALID_ARGS;
-              goto cleanup;
-         }
-         ret = cmd->put_u32(
-               QCA_WLAN_VENDOR_ATTR_AVOID_FREQUENCY_START, freq);
-         if (ret != WIFI_SUCCESS) {
-              ALOGE("%s: Failed to put frequency start, ret:%d",
+                ret = WIFI_ERROR_OUT_OF_MEMORY;
+                goto cleanup;
+            }
+
+            ret = cmd->put_u32(
+                  QCA_WLAN_VENDOR_ATTR_AVOID_FREQUENCY_START, freq[i]);
+            if (ret != WIFI_SUCCESS) {
+                ALOGE("%s: Failed to put frequency start, ret:%d",
+                      __FUNCTION__, ret);
+                goto cleanup;
+            }
+            ret = cmd->put_u32(
+                QCA_WLAN_VENDOR_ATTR_AVOID_FREQUENCY_END, freq[i]);
+            if (ret != WIFI_SUCCESS) {
+                ALOGE("%s: Failed to put frequency end, ret:%d",
                     __FUNCTION__, ret);
-              goto cleanup;
-         }
-         ret = cmd->put_u32(
-               QCA_WLAN_VENDOR_ATTR_AVOID_FREQUENCY_END, freq);
-         if (ret != WIFI_SUCCESS) {
-              ALOGE("%s: Failed to put frequency end, ret:%d",
-                    __FUNCTION__, ret);
-              goto cleanup;
-         }
-         /**
-          * WIFI_COEX_NO_POWER_CAP (0x7FFFFFF) is specific to android
-          * framework, this value denotes that framework/wifihal is not
-          * providing any power cap and allow driver/firmware to operate on
-          * current power cap dbm. As driver is supposed to work on with
-          * LA/LE etc, we are skipping to send 0x7FFFFFF down to driver,
-          * hence driver will be operating as per current power cap calculated
-          * based on regulatory or other constraints.
-          */
-         if (unsafeChannels[i].power_cap_dbm != WIFI_COEX_NO_POWER_CAP) {
-             ret = cmd->put_s32(
-                   QCA_WLAN_VENDOR_ATTR_AVOID_FREQUENCY_POWER_CAP_DBM,
-                   unsafeChannels[i].power_cap_dbm);
-             if (ret != WIFI_SUCCESS) {
-                 ALOGE("%s: Failed to put power_cap_dbm, ret:%d",
-                       __FUNCTION__, ret);
-                 goto cleanup;
-             }
-         }
-         cmd->attr_end(unsafe_channels_attr);
-         ALOGD("%s: channel:%d, freq:%d, power_cap_dbm:%d, band:%d",
-               __FUNCTION__, unsafeChannels[i].channel, freq,
-               unsafeChannels[i].power_cap_dbm, unsafeChannels[i].band);
+                goto cleanup;
+            }
+            /**
+             * WIFI_COEX_NO_POWER_CAP (0x7FFFFFF) is specific to android
+             * framework, this value denotes that framework/wifihal is not
+             * providing any power cap and allow driver/firmware to operate on
+             * current power cap dbm. As driver is supposed to work on with
+             * LA/LE etc, we are skipping to send 0x7FFFFFF down to driver,
+             * hence driver will be operating as per current power cap calculated
+             * based on regulatory or other constraints.
+             */
+            if (power_cap_dbm[i] != WIFI_COEX_NO_POWER_CAP) {
+                ret = cmd->put_s32(
+                      QCA_WLAN_VENDOR_ATTR_AVOID_FREQUENCY_POWER_CAP_DBM,
+                      power_cap_dbm[i]);
+                if (ret != WIFI_SUCCESS) {
+                    ALOGE("%s: Failed to put power_cap_dbm, ret:%d",
+                          __FUNCTION__, ret);
+                    goto cleanup;
+                }
+            }
+            ALOGD("%s: freq:%d, power_cap_dbm:%d",
+                   __FUNCTION__, freq[i], power_cap_dbm[i]);
+            cmd->attr_end(unsafe_channels_attr);
+        }
     }
     cmd->attr_end(nl_attr_unsafe_chan);
     if (num_channels > 0) {
@@ -761,6 +788,10 @@
 cleanup:
     if (cmd)
         delete cmd;
+    if (freq)
+        free (freq);
+    if (power_cap_dbm)
+        free (power_cap_dbm);
     return ret;
 }
 
@@ -1096,6 +1127,7 @@
     fn->wifi_multi_sta_set_use_case = wifi_multi_sta_set_use_case;
     fn->wifi_set_coex_unsafe_channels = wifi_set_coex_unsafe_channels;
     fn->wifi_set_dtim_config = wifi_set_dtim_config;
+    fn->wifi_set_voip_mode = wifi_set_voip_mode;
     fn->wifi_get_usable_channels = wifi_get_usable_channels;
     fn->wifi_get_supported_radio_combinations_matrix =
                                 wifi_get_supported_radio_combinations_matrix;
@@ -1506,14 +1538,12 @@
     if (fd < 0) {
         ALOGE("Failed to open driver state control param at %s",
               WIFI_DRIVER_STATE_CTRL_PARAM);
-        close(fd);
         return -1;
     }
     len = strlen(state) + 1;
     if (TEMP_FAILURE_RETRY(write(fd, state, len)) != len) {
         ALOGE("Failed to write driver state control param at %s",
               WIFI_DRIVER_STATE_CTRL_PARAM);
-        close(fd);
         ret = -1;
     }
     close(fd);
@@ -3449,7 +3479,7 @@
     return buf;
 
 error:
-    ALOGE("snprintf() error res=%d, write length=%d", res, end - pos);
+    ALOGE("snprintf() error res=%d, write length=%d", res, static_cast<int>(end - pos));
     return NULL;
 }
 
diff --git a/qcwcn/wifi_hal/wificonfig.cpp b/qcwcn/wifi_hal/wificonfig.cpp
index 475dd74..9e1a6a0 100644
--- a/qcwcn/wifi_hal/wificonfig.cpp
+++ b/qcwcn/wifi_hal/wificonfig.cpp
@@ -1665,3 +1665,77 @@
     delete wifiConfigCommand;
     return (wifi_error)ret;
 }
+
+/**
+ * Invoked to set voip optimization mode for the provided STA iface
+ */
+ wifi_error wifi_set_voip_mode(wifi_interface_handle iface, wifi_voip_mode mode)
+{
+    int requestId;
+    WiFiConfigCommand *wifiConfigCommand;
+    wifi_error ret;
+
+    struct nlattr *nlData;
+    interface_info *ifaceInfo = getIfaceInfo(iface);
+
+    wifi_handle wifiHandle = getWifiHandle(iface);
+    if (!wifiHandle) {
+        ALOGE("%s: Error wifi_handle NULL", __FUNCTION__);
+        return WIFI_ERROR_UNKNOWN;
+    }
+
+    requestId = get_requestid();
+    ALOGV("%s: voip mode=%d", __FUNCTION__, mode);
+    wifiConfigCommand = new WiFiConfigCommand(
+                            wifiHandle,
+                            requestId,
+                            OUI_QCA,
+                            QCA_NL80211_VENDOR_SUBCMD_SET_WIFI_CONFIGURATION);
+
+    if (wifiConfigCommand == NULL) {
+        ALOGE("%s: Error wifiConfigCommand NULL", __FUNCTION__);
+        return WIFI_ERROR_UNKNOWN;
+    }
+
+    /* Create the NL message. */
+    ret = wifiConfigCommand->create();
+    if (ret < 0) {
+        ALOGE("%s: failed to create NL msg. Error:%d", __FUNCTION__, ret);
+        goto cleanup;
+    }
+
+    /* Set the interface Id of the message. */
+    ret = wifiConfigCommand->set_iface_id(ifaceInfo->name);
+    if (ret < 0) {
+        ALOGE("%s: failed to set iface id. Error:%d", __FUNCTION__, ret);
+        goto cleanup;
+    }
+
+    /* Add the vendor specific attributes for the NL command. */
+    nlData = wifiConfigCommand->attr_start(NL80211_ATTR_VENDOR_DATA);
+    if (!nlData) {
+        ALOGE("%s: failed attr_start for VENDOR_DATA", __FUNCTION__);
+        ret = WIFI_ERROR_UNKNOWN;
+        goto cleanup;
+    }
+
+    if (wifiConfigCommand->put_u8(QCA_WLAN_VENDOR_ATTR_CONFIG_WFC_STATE,
+        (mode==WIFI_VOIP_MODE_VOICE) ? 1 : 0)) {
+        ALOGE("%s: failed to put vendor data", __FUNCTION__);
+        ret = WIFI_ERROR_UNKNOWN;
+        goto cleanup;
+    }
+    wifiConfigCommand->attr_end(nlData);
+
+    /* Send the NL msg. */
+    wifiConfigCommand->waitForRsp(false);
+    ret = wifiConfigCommand->requestEvent();
+    if (ret != 0) {
+        ALOGE("%s: requestEvent Error:%d", __FUNCTION__, ret);
+        goto cleanup;
+    }
+
+cleanup:
+    delete wifiConfigCommand;
+    return ret;
+}
diff --git a/qcwcn/wifi_hal/wifilogger_diag.cpp b/qcwcn/wifi_hal/wifilogger_diag.cpp
index 2b2021a..96202c4 100644
--- a/qcwcn/wifi_hal/wifilogger_diag.cpp
+++ b/qcwcn/wifi_hal/wifilogger_diag.cpp
@@ -2781,7 +2781,7 @@
         if (!info->cldctx) {
             if ((wnl->nlh.nlmsg_len <= sizeof(tAniNlHdr)) ||
                 (wnl->nlh.nlmsg_len < (sizeof(tAniNlHdr) + ntohs(wnl->clh.wmsg.length)))) {
-                ALOGE("Received UMAC message with insufficent length: %d",
+                ALOGV("Received UMAC message with insufficent length: %d",
                       wnl->nlh.nlmsg_len);
                 return WIFI_ERROR_UNKNOWN;
             }
diff --git a/qcwcn/wpa_supplicant_8_lib/driver_cmd_nl80211.c b/qcwcn/wpa_supplicant_8_lib/driver_cmd_nl80211.c
index b628abb..397f0c7 100644
--- a/qcwcn/wpa_supplicant_8_lib/driver_cmd_nl80211.c
+++ b/qcwcn/wpa_supplicant_8_lib/driver_cmd_nl80211.c
@@ -2821,7 +2821,7 @@
 		   twt_setup_params->min_wake_duration);
 	wpa_printf(MSG_DEBUG, "TWT: max wake duration: %d ",
 		   twt_setup_params->max_wake_duration);
-	wpa_printf(MSG_DEBUG, "TWT: wake tsf: 0x%llx ",
+	wpa_printf(MSG_DEBUG, "TWT: wake tsf: 0x%lx ",
 		   twt_setup_params->wake_tsf);
 	wpa_printf(MSG_DEBUG, "TWT: announce timeout(in us): %u",
 		   twt_setup_params->announce_timeout_us);
@@ -5673,7 +5673,7 @@
 		return NL_SKIP;
 	}
 	ret = os_snprintf(info->reply_buf, info->reply_buf_len,
-			  "tsf_value:%llu host_time:%llu", tsf_value, host_time);
+			  "tsf_value:%lul host_time:%lul", tsf_value, host_time);
 	if (os_snprintf_error(info->reply_buf_len, ret)) {
 		wpa_printf(MSG_ERROR, "%s:Fail to print buffer", __func__);
 		return -ENOMEM;
diff --git a/wcnss-service/Android.mk b/wcnss-service/Android.mk
index ab866a3..9eab85b 100644
--- a/wcnss-service/Android.mk
+++ b/wcnss-service/Android.mk
@@ -9,18 +9,27 @@
 LOCAL_SRC_FILES := wcnss_service.c
 LOCAL_SHARED_LIBRARIES := libc libcutils libutils liblog
 ifeq ($(strip $(TARGET_USES_QCOM_WCNSS_QMI)),true)
-LOCAL_CFLAGS += -DWCNSS_QMI
+ifeq ($(TARGET_USES_WCNSS_MAC_ADDR_REV),true)
+LOCAL_CFLAGS += -DWCNSS_QMI_MAC_ADDR_REV
+endif
+ifeq ($(TARGET_PROVIDES_WCNSS_QMI),true)
+LOCAL_CFLAGS += -DWCNSS_QMI_OSS
+LOCAL_SHARED_LIBRARIES += libdl
+else
+LOCAL_CFLAGS += -DWCNSS_QMI -DMDM_DETECT
+LOCAL_HEADER_LIBRARIES += libmdmdetect_headers
 ifeq ($(filter 10% Q% q%,$(TARGET_PLATFORM_VERSION)),)
 #For Android R and above, assuming not compiling on Q and lower
 LOCAL_HEADER_LIBRARIES += libqmi_common_headers
 else
 LOCAL_C_INCLUDES += $(TARGET_OUT_HEADERS)/qmi-framework/inc
 endif
-LOCAL_SRC_FILES += wcnss_qmi_client.c
-LOCAL_SHARED_LIBRARIES += libqmiservices libqmi_cci
+LOCAL_SRC_FILES += wcnss_qmi_client.c device_management_service_v01.c
+LOCAL_SHARED_LIBRARIES += libqmi_cci libqmi_common_so
 LOCAL_HEADER_LIBRARIES += libmdmdetect_headers
 LOCAL_SHARED_LIBRARIES += libmdmdetect
 LOCAL_HEADER_LIBRARIES += libril-qc-qmi-services-headers
+endif #TARGET_PROVIDES_WCNSS_QMI
 endif #TARGET_USES_QCOM_WCNSS_QMI
 LOCAL_MODULE_TAGS := optional
 LOCAL_CFLAGS += -Wall -Werror
diff --git a/wcnss-service/device_management_service_v01.c b/wcnss-service/device_management_service_v01.c
new file mode 100644
index 0000000..cb3c392
--- /dev/null
+++ b/wcnss-service/device_management_service_v01.c
@@ -0,0 +1,1729 @@
+/*====*====*====*====*====*====*====*====*====*====*====*====*====*====*====*
+
+                        D E V I C E _ M A N A G E M E N T _ S E R V I C E _ V 0 1  . C
+
+GENERAL DESCRIPTION
+  This is the file which defines the dms service Data structures.
+
+  Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+  SPDX-License-Identifier: BSD-3-Clause-Clear
+
+  $Header$
+ *====*====*====*====*====*====*====*====*====*====*====*====*====*====*====*/
+/*====*====*====*====*====*====*====*====*====*====*====*====*====*====*====*
+ *THIS IS AN AUTO GENERATED FILE. DO NOT ALTER IN ANY WAY
+ *====*====*====*====*====*====*====*====*====*====*====*====*====*====*====*/
+
+/* This file was generated with Tool version 6.2
+   It was generated on: Fri Oct 25 2013 (Spin 0)
+   From IDL File: device_management_service_v01.idl */
+
+#include "stdint.h"
+#include "qmi_idl_lib_internal.h"
+#include "device_management_service_v01.h"
+#include "common_v01.h"
+
+
+/*Type Definitions*/
+static const uint8_t dms_battery_lvl_limits_type_data_v01[] = {
+  QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_battery_lvl_limits_type_v01, battery_lvl_lower_limit),
+
+  QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_battery_lvl_limits_type_v01, battery_lvl_upper_limit),
+
+  QMI_IDL_FLAG_END_VALUE
+};
+
+static const uint8_t dms_power_state_type_data_v01[] = {
+  QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_power_state_type_v01, power_status),
+
+  QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_power_state_type_v01, battery_lvl),
+
+  QMI_IDL_FLAG_END_VALUE
+};
+
+static const uint8_t dms_pin_status_type_data_v01[] = {
+  QMI_IDL_1_BYTE_ENUM,
+  QMI_IDL_OFFSET8(dms_pin_status_type_v01, status),
+
+  QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_pin_status_type_v01, verify_retries_left),
+
+  QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_pin_status_type_v01, unblock_retries_left),
+
+  QMI_IDL_FLAG_END_VALUE
+};
+
+static const uint8_t dms_subs_config_type_data_v01[] = {
+  QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_subs_config_type_v01, max_active),
+
+  QMI_IDL_FLAGS_IS_ARRAY | QMI_IDL_FLAGS_IS_VARIABLE_LEN |QMI_IDL_GENERIC_8_BYTE,
+  QMI_IDL_OFFSET8(dms_subs_config_type_v01, subscription_list),
+  QMI_DMS_MAX_SUBSCRIPTION_LIST_LEN_V01,
+  QMI_IDL_OFFSET8(dms_subs_config_type_v01, subscription_list) - QMI_IDL_OFFSET8(dms_subs_config_type_v01, subscription_list_len),
+
+  QMI_IDL_FLAG_END_VALUE
+};
+
+static const uint8_t dms_multisim_capability_type_data_v01[] = {
+  QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_multisim_capability_type_v01, max_subscriptions),
+
+  QMI_IDL_FLAGS_IS_ARRAY | QMI_IDL_FLAGS_IS_VARIABLE_LEN |QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_multisim_capability_type_v01, subscription_config_list),
+  QMI_DMS_MAX_CONFIG_LIST_LEN_V01,
+  QMI_IDL_OFFSET8(dms_multisim_capability_type_v01, subscription_config_list) - QMI_IDL_OFFSET8(dms_multisim_capability_type_v01, subscription_config_list_len),
+  QMI_IDL_TYPE88(0, 3),
+  QMI_IDL_FLAG_END_VALUE
+};
+
+static const uint8_t dms_device_capabilities_type_data_v01[] = {
+  QMI_IDL_GENERIC_4_BYTE,
+  QMI_IDL_OFFSET8(dms_device_capabilities_type_v01, max_tx_channel_rate),
+
+  QMI_IDL_GENERIC_4_BYTE,
+  QMI_IDL_OFFSET8(dms_device_capabilities_type_v01, max_rx_channel_rate),
+
+  QMI_IDL_1_BYTE_ENUM,
+  QMI_IDL_OFFSET8(dms_device_capabilities_type_v01, data_service_capability),
+
+  QMI_IDL_1_BYTE_ENUM,
+  QMI_IDL_OFFSET8(dms_device_capabilities_type_v01, sim_capability),
+
+  QMI_IDL_FLAGS_IS_ARRAY | QMI_IDL_FLAGS_IS_VARIABLE_LEN |QMI_IDL_1_BYTE_ENUM,
+  QMI_IDL_OFFSET8(dms_device_capabilities_type_v01, radio_if_list),
+  QMI_DMS_RADIO_IF_LIST_MAX_V01,
+  QMI_IDL_OFFSET8(dms_device_capabilities_type_v01, radio_if_list) - QMI_IDL_OFFSET8(dms_device_capabilities_type_v01, radio_if_list_len),
+
+  QMI_IDL_FLAG_END_VALUE
+};
+
+static const uint8_t dms_pin_protection_info_type_data_v01[] = {
+  QMI_IDL_1_BYTE_ENUM,
+  QMI_IDL_OFFSET8(dms_pin_protection_info_type_v01, pin_id),
+
+  QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_pin_protection_info_type_v01, protection_setting_enabled),
+
+  QMI_IDL_FLAGS_IS_ARRAY | QMI_IDL_FLAGS_IS_VARIABLE_LEN |QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_pin_protection_info_type_v01, pin_value),
+  QMI_DMS_PIN_VALUE_MAX_V01,
+  QMI_IDL_OFFSET8(dms_pin_protection_info_type_v01, pin_value) - QMI_IDL_OFFSET8(dms_pin_protection_info_type_v01, pin_value_len),
+
+  QMI_IDL_FLAG_END_VALUE
+};
+
+static const uint8_t dms_pin_retries_status_type_data_v01[] = {
+  QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_pin_retries_status_type_v01, verify_retries_left),
+
+  QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_pin_retries_status_type_v01, unblock_retries_left),
+
+  QMI_IDL_FLAG_END_VALUE
+};
+
+static const uint8_t dms_pin_info_type_data_v01[] = {
+  QMI_IDL_1_BYTE_ENUM,
+  QMI_IDL_OFFSET8(dms_pin_info_type_v01, pin_id),
+
+  QMI_IDL_FLAGS_IS_ARRAY | QMI_IDL_FLAGS_IS_VARIABLE_LEN |QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_pin_info_type_v01, pin_value),
+  QMI_DMS_PIN_VALUE_MAX_V01,
+  QMI_IDL_OFFSET8(dms_pin_info_type_v01, pin_value) - QMI_IDL_OFFSET8(dms_pin_info_type_v01, pin_value_len),
+
+  QMI_IDL_FLAG_END_VALUE
+};
+
+static const uint8_t dms_pin_unblock_info_type_data_v01[] = {
+  QMI_IDL_1_BYTE_ENUM,
+  QMI_IDL_OFFSET8(dms_pin_unblock_info_type_v01, unblock_pin_id),
+
+  QMI_IDL_FLAGS_IS_ARRAY | QMI_IDL_FLAGS_IS_VARIABLE_LEN |QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_pin_unblock_info_type_v01, puk_value),
+  QMI_DMS_PUK_VALUE_MAX_V01,
+  QMI_IDL_OFFSET8(dms_pin_unblock_info_type_v01, puk_value) - QMI_IDL_OFFSET8(dms_pin_unblock_info_type_v01, puk_value_len),
+
+  QMI_IDL_FLAGS_IS_ARRAY | QMI_IDL_FLAGS_IS_VARIABLE_LEN |QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_pin_unblock_info_type_v01, new_pin_value),
+  QMI_DMS_PUK_VALUE_MAX_V01,
+  QMI_IDL_OFFSET8(dms_pin_unblock_info_type_v01, new_pin_value) - QMI_IDL_OFFSET8(dms_pin_unblock_info_type_v01, new_pin_value_len),
+
+  QMI_IDL_FLAG_END_VALUE
+};
+
+static const uint8_t dms_pin_change_info_type_data_v01[] = {
+  QMI_IDL_1_BYTE_ENUM,
+  QMI_IDL_OFFSET8(dms_pin_change_info_type_v01, pin_id),
+
+  QMI_IDL_FLAGS_IS_ARRAY | QMI_IDL_FLAGS_IS_VARIABLE_LEN |QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_pin_change_info_type_v01, old_pin_value),
+  QMI_DMS_PIN_VALUE_MAX_V01,
+  QMI_IDL_OFFSET8(dms_pin_change_info_type_v01, old_pin_value) - QMI_IDL_OFFSET8(dms_pin_change_info_type_v01, old_pin_value_len),
+
+  QMI_IDL_FLAGS_IS_ARRAY | QMI_IDL_FLAGS_IS_VARIABLE_LEN |QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_pin_change_info_type_v01, new_pin_value),
+  QMI_DMS_PIN_VALUE_MAX_V01,
+  QMI_IDL_OFFSET8(dms_pin_change_info_type_v01, new_pin_value) - QMI_IDL_OFFSET8(dms_pin_change_info_type_v01, new_pin_value_len),
+
+  QMI_IDL_FLAG_END_VALUE
+};
+
+static const uint8_t dms_device_time_type_data_v01[] = {
+  QMI_IDL_FLAGS_IS_ARRAY |QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_device_time_type_v01, time_count),
+  6,
+
+  QMI_IDL_2_BYTE_ENUM,
+  QMI_IDL_OFFSET8(dms_device_time_type_v01, time_source),
+
+  QMI_IDL_FLAG_END_VALUE
+};
+
+static const uint8_t dms_activation_code_type_data_v01[] = {
+  QMI_IDL_FLAGS_IS_ARRAY | QMI_IDL_FLAGS_IS_VARIABLE_LEN |QMI_IDL_STRING,
+  QMI_IDL_OFFSET8(dms_activation_code_type_v01, act_code),
+  QMI_DMS_ACTIVATION_CODE_MAX_V01,
+
+  QMI_IDL_FLAG_END_VALUE
+};
+
+static const uint8_t dms_manual_act_data_type_data_v01[] = {
+  QMI_IDL_FLAGS_IS_ARRAY |QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_manual_act_data_type_v01, spc),
+  QMI_DMS_SPC_LEN_V01,
+
+  QMI_IDL_GENERIC_2_BYTE,
+  QMI_IDL_OFFSET8(dms_manual_act_data_type_v01, sid),
+
+  QMI_IDL_FLAGS_IS_ARRAY | QMI_IDL_FLAGS_IS_VARIABLE_LEN |QMI_IDL_STRING,
+  QMI_IDL_OFFSET8(dms_manual_act_data_type_v01, mdn),
+  QMI_DMS_MDN_MAX_V01,
+
+  QMI_IDL_FLAGS_IS_ARRAY | QMI_IDL_FLAGS_IS_VARIABLE_LEN |QMI_IDL_STRING,
+  QMI_IDL_OFFSET8(dms_manual_act_data_type_v01, min),
+  QMI_DMS_MIN_MAX_V01,
+
+  QMI_IDL_FLAG_END_VALUE
+};
+
+static const uint8_t dms_mn_ha_key_type_data_v01[] = {
+  QMI_IDL_FLAGS_IS_ARRAY | QMI_IDL_FLAGS_IS_VARIABLE_LEN |QMI_IDL_STRING,
+  QMI_IDL_OFFSET8(dms_mn_ha_key_type_v01, mn_ha_key),
+  QMI_DMS_HA_KEY_MAX_V01,
+
+  QMI_IDL_FLAG_END_VALUE
+};
+
+static const uint8_t dms_mn_aaa_key_type_data_v01[] = {
+  QMI_IDL_FLAGS_IS_ARRAY | QMI_IDL_FLAGS_IS_VARIABLE_LEN |QMI_IDL_STRING,
+  QMI_IDL_OFFSET8(dms_mn_aaa_key_type_v01, mn_aaa_key),
+  QMI_DMS_AAA_KEY_MAX_V01,
+
+  QMI_IDL_FLAG_END_VALUE
+};
+
+static const uint8_t dms_pref_roaming_list_type_data_v01[] = {
+  QMI_IDL_GENERIC_2_BYTE,
+  QMI_IDL_OFFSET8(dms_pref_roaming_list_type_v01, prl_total_len),
+
+  QMI_IDL_FLAGS_IS_ARRAY | QMI_IDL_FLAGS_IS_VARIABLE_LEN |QMI_IDL_FLAGS_FIRST_EXTENDED |  QMI_IDL_FLAGS_SZ_IS_16 | QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_FLAGS_ARRAY_LENGTH_ONLY,
+  QMI_IDL_OFFSET8(dms_pref_roaming_list_type_v01, prl),
+  ((QMI_DMS_PRL_DATA_MAX_V01) & 0xFF), ((QMI_DMS_PRL_DATA_MAX_V01) >> 8),
+  QMI_IDL_OFFSET8(dms_pref_roaming_list_type_v01, prl) - QMI_IDL_OFFSET8(dms_pref_roaming_list_type_v01, prl_len),
+
+  QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_pref_roaming_list_type_v01, prl_seg_num),
+
+  QMI_IDL_FLAGS_IS_ARRAY | QMI_IDL_FLAGS_IS_VARIABLE_LEN |QMI_IDL_FLAGS_FIRST_EXTENDED |  QMI_IDL_FLAGS_SZ_IS_16 | QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_FLAGS_ARRAY_DATA_ONLY,
+  QMI_IDL_OFFSET8(dms_pref_roaming_list_type_v01, prl),
+  ((QMI_DMS_PRL_DATA_MAX_V01) & 0xFF), ((QMI_DMS_PRL_DATA_MAX_V01) >> 8),
+  QMI_IDL_OFFSET8(dms_pref_roaming_list_type_v01, prl) - QMI_IDL_OFFSET8(dms_pref_roaming_list_type_v01, prl_len),
+
+  QMI_IDL_FLAG_END_VALUE
+};
+
+static const uint8_t dms_user_lock_state_info_type_data_v01[] = {
+  QMI_IDL_1_BYTE_ENUM,
+  QMI_IDL_OFFSET8(dms_user_lock_state_info_type_v01, lock_state),
+
+  QMI_IDL_FLAGS_IS_ARRAY |QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_user_lock_state_info_type_v01, lock_code),
+  QMI_DMS_LOCK_CODE_LEN_V01,
+
+  QMI_IDL_FLAG_END_VALUE
+};
+
+static const uint8_t dms_user_lock_set_info_type_data_v01[] = {
+  QMI_IDL_FLAGS_IS_ARRAY |QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_user_lock_set_info_type_v01, cur_code),
+  QMI_DMS_LOCK_CODE_LEN_V01,
+
+  QMI_IDL_FLAGS_IS_ARRAY |QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_user_lock_set_info_type_v01, new_code),
+  QMI_DMS_LOCK_CODE_LEN_V01,
+
+  QMI_IDL_FLAG_END_VALUE
+};
+
+static const uint8_t dms_user_data_type_data_v01[] = {
+  QMI_IDL_FLAGS_IS_ARRAY | QMI_IDL_FLAGS_IS_VARIABLE_LEN | QMI_IDL_FLAGS_SZ_IS_16 | QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_user_data_type_v01, data),
+  ((QMI_DMS_USER_DATA_MAX_V01) & 0xFF), ((QMI_DMS_USER_DATA_MAX_V01) >> 8),
+  QMI_IDL_OFFSET8(dms_user_data_type_v01, data) - QMI_IDL_OFFSET8(dms_user_data_type_v01, data_len),
+
+  QMI_IDL_FLAG_END_VALUE
+};
+
+static const uint8_t dms_eri_data_type_data_v01[] = {
+  QMI_IDL_FLAGS_IS_ARRAY | QMI_IDL_FLAGS_IS_VARIABLE_LEN | QMI_IDL_FLAGS_SZ_IS_16 | QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_eri_data_type_v01, eri_data),
+  ((QMI_DMS_ERI_DATA_MAX_V01) & 0xFF), ((QMI_DMS_ERI_DATA_MAX_V01) >> 8),
+  QMI_IDL_OFFSET8(dms_eri_data_type_v01, eri_data) - QMI_IDL_OFFSET8(dms_eri_data_type_v01, eri_data_len),
+
+  QMI_IDL_FLAG_END_VALUE
+};
+
+static const uint8_t dms_facility_state_info_type_data_v01[] = {
+  QMI_IDL_1_BYTE_ENUM,
+  QMI_IDL_OFFSET8(dms_facility_state_info_type_v01, facility_state),
+
+  QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_facility_state_info_type_v01, verify_reties_left),
+
+  QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_facility_state_info_type_v01, unblock_retries_left),
+
+  QMI_IDL_FLAG_END_VALUE
+};
+
+static const uint8_t dms_facility_set_ck_info_type_data_v01[] = {
+  QMI_IDL_1_BYTE_ENUM,
+  QMI_IDL_OFFSET8(dms_facility_set_ck_info_type_v01, facility),
+
+  QMI_IDL_1_BYTE_ENUM,
+  QMI_IDL_OFFSET8(dms_facility_set_ck_info_type_v01, facility_state),
+
+  QMI_IDL_FLAGS_IS_ARRAY | QMI_IDL_FLAGS_IS_VARIABLE_LEN |QMI_IDL_STRING,
+  QMI_IDL_OFFSET8(dms_facility_set_ck_info_type_v01, facility_ck),
+  QMI_DMS_FACILITY_CK_MAX_V01,
+
+  QMI_IDL_FLAG_END_VALUE
+};
+
+static const uint8_t dms_facility_unblock_info_type_data_v01[] = {
+  QMI_IDL_1_BYTE_ENUM,
+  QMI_IDL_OFFSET8(dms_facility_unblock_info_type_v01, facility),
+
+  QMI_IDL_FLAGS_IS_ARRAY | QMI_IDL_FLAGS_IS_VARIABLE_LEN |QMI_IDL_STRING,
+  QMI_IDL_OFFSET8(dms_facility_unblock_info_type_v01, facility_unblock_ck),
+  QMI_DMS_FACILITY_UNBLOCK_CK_MAX_V01,
+
+  QMI_IDL_FLAG_END_VALUE
+};
+
+/*Message Definitions*/
+/*
+ * dms_reset_req_msg is empty
+ * static const uint8_t dms_reset_req_msg_data_v01[] = {
+ * };
+ */
+
+static const uint8_t dms_reset_resp_msg_data_v01[] = {
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_reset_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0)
+};
+
+static const uint8_t dms_set_event_report_req_msg_data_v01[] = {
+  QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_set_event_report_req_msg_v01, report_power_state) - QMI_IDL_OFFSET8(dms_set_event_report_req_msg_v01, report_power_state_valid)),
+  0x10,
+   QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_set_event_report_req_msg_v01, report_power_state),
+
+  QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_set_event_report_req_msg_v01, lvl_limits) - QMI_IDL_OFFSET8(dms_set_event_report_req_msg_v01, lvl_limits_valid)),
+  0x11,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_set_event_report_req_msg_v01, lvl_limits),
+  QMI_IDL_TYPE88(0, 0),
+
+  QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_set_event_report_req_msg_v01, report_pin_state) - QMI_IDL_OFFSET8(dms_set_event_report_req_msg_v01, report_pin_state_valid)),
+  0x12,
+   QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_set_event_report_req_msg_v01, report_pin_state),
+
+  QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_set_event_report_req_msg_v01, report_activation_state) - QMI_IDL_OFFSET8(dms_set_event_report_req_msg_v01, report_activation_state_valid)),
+  0x13,
+   QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_set_event_report_req_msg_v01, report_activation_state),
+
+  QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_set_event_report_req_msg_v01, report_oprt_mode_state) - QMI_IDL_OFFSET8(dms_set_event_report_req_msg_v01, report_oprt_mode_state_valid)),
+  0x14,
+   QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_set_event_report_req_msg_v01, report_oprt_mode_state),
+
+  QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_set_event_report_req_msg_v01, report_uim_state) - QMI_IDL_OFFSET8(dms_set_event_report_req_msg_v01, report_uim_state_valid)),
+  0x15,
+   QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_set_event_report_req_msg_v01, report_uim_state),
+
+  QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_set_event_report_req_msg_v01, report_wireless_disable_state) - QMI_IDL_OFFSET8(dms_set_event_report_req_msg_v01, report_wireless_disable_state_valid)),
+  0x16,
+   QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_set_event_report_req_msg_v01, report_wireless_disable_state),
+
+  QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_set_event_report_req_msg_v01, report_prl_init) - QMI_IDL_OFFSET8(dms_set_event_report_req_msg_v01, report_prl_init_valid)),
+  0x17,
+   QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_set_event_report_req_msg_v01, report_prl_init),
+
+  QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_set_event_report_req_msg_v01, report_cdma_lock_mode) - QMI_IDL_OFFSET8(dms_set_event_report_req_msg_v01, report_cdma_lock_mode_valid)),
+  0x18,
+   QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_set_event_report_req_msg_v01, report_cdma_lock_mode),
+
+  QMI_IDL_TLV_FLAGS_LAST_TLV | QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_set_event_report_req_msg_v01, report_device_multisim_info) - QMI_IDL_OFFSET8(dms_set_event_report_req_msg_v01, report_device_multisim_info_valid)),
+  0x19,
+   QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_set_event_report_req_msg_v01, report_device_multisim_info)
+};
+
+static const uint8_t dms_set_event_report_resp_msg_data_v01[] = {
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_set_event_report_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0)
+};
+
+static const uint8_t dms_event_report_ind_msg_data_v01[] = {
+  QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_event_report_ind_msg_v01, power_state) - QMI_IDL_OFFSET8(dms_event_report_ind_msg_v01, power_state_valid)),
+  0x10,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_event_report_ind_msg_v01, power_state),
+  QMI_IDL_TYPE88(0, 1),
+
+  QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_event_report_ind_msg_v01, pin1_status) - QMI_IDL_OFFSET8(dms_event_report_ind_msg_v01, pin1_status_valid)),
+  0x11,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_event_report_ind_msg_v01, pin1_status),
+  QMI_IDL_TYPE88(0, 2),
+
+  QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_event_report_ind_msg_v01, pin2_status) - QMI_IDL_OFFSET8(dms_event_report_ind_msg_v01, pin2_status_valid)),
+  0x12,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_event_report_ind_msg_v01, pin2_status),
+  QMI_IDL_TYPE88(0, 2),
+
+  QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_event_report_ind_msg_v01, activation_state) - QMI_IDL_OFFSET8(dms_event_report_ind_msg_v01, activation_state_valid)),
+  0x13,
+   QMI_IDL_2_BYTE_ENUM,
+  QMI_IDL_OFFSET8(dms_event_report_ind_msg_v01, activation_state),
+
+  QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_event_report_ind_msg_v01, operating_mode) - QMI_IDL_OFFSET8(dms_event_report_ind_msg_v01, operating_mode_valid)),
+  0x14,
+   QMI_IDL_1_BYTE_ENUM,
+  QMI_IDL_OFFSET8(dms_event_report_ind_msg_v01, operating_mode),
+
+  QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_event_report_ind_msg_v01, uim_state) - QMI_IDL_OFFSET8(dms_event_report_ind_msg_v01, uim_state_valid)),
+  0x15,
+   QMI_IDL_1_BYTE_ENUM,
+  QMI_IDL_OFFSET8(dms_event_report_ind_msg_v01, uim_state),
+
+  QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_event_report_ind_msg_v01, wireless_disable_state) - QMI_IDL_OFFSET8(dms_event_report_ind_msg_v01, wireless_disable_state_valid)),
+  0x16,
+   QMI_IDL_1_BYTE_ENUM,
+  QMI_IDL_OFFSET8(dms_event_report_ind_msg_v01, wireless_disable_state),
+
+  QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_event_report_ind_msg_v01, prl_init) - QMI_IDL_OFFSET8(dms_event_report_ind_msg_v01, prl_init_valid)),
+  0x17,
+   QMI_IDL_1_BYTE_ENUM,
+  QMI_IDL_OFFSET8(dms_event_report_ind_msg_v01, prl_init),
+
+  QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_event_report_ind_msg_v01, cdma_lock_mode_state) - QMI_IDL_OFFSET8(dms_event_report_ind_msg_v01, cdma_lock_mode_state_valid)),
+  0x18,
+   QMI_IDL_GENERIC_4_BYTE,
+  QMI_IDL_OFFSET8(dms_event_report_ind_msg_v01, cdma_lock_mode_state),
+
+  QMI_IDL_TLV_FLAGS_LAST_TLV | QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_event_report_ind_msg_v01, multisim_capability) - QMI_IDL_OFFSET8(dms_event_report_ind_msg_v01, multisim_capability_valid)),
+  0x19,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_event_report_ind_msg_v01, multisim_capability),
+  QMI_IDL_TYPE88(0, 4)
+};
+
+/*
+ * dms_get_device_cap_req_msg is empty
+ * static const uint8_t dms_get_device_cap_req_msg_data_v01[] = {
+ * };
+ */
+
+static const uint8_t dms_get_device_cap_resp_msg_data_v01[] = {
+  0x01,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_get_device_cap_resp_msg_v01, device_capabilities),
+  QMI_IDL_TYPE88(0, 5),
+
+  0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_get_device_cap_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0),
+
+  QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_get_device_cap_resp_msg_v01, device_service_capability) - QMI_IDL_OFFSET8(dms_get_device_cap_resp_msg_v01, device_service_capability_valid)),
+  0x10,
+   QMI_IDL_GENERIC_4_BYTE,
+  QMI_IDL_OFFSET8(dms_get_device_cap_resp_msg_v01, device_service_capability),
+
+  QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_get_device_cap_resp_msg_v01, voice_support_capability) - QMI_IDL_OFFSET8(dms_get_device_cap_resp_msg_v01, voice_support_capability_valid)),
+  0x11,
+   QMI_IDL_GENERIC_8_BYTE,
+  QMI_IDL_OFFSET8(dms_get_device_cap_resp_msg_v01, voice_support_capability),
+
+  QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_get_device_cap_resp_msg_v01, simul_voice_and_data_capability) - QMI_IDL_OFFSET8(dms_get_device_cap_resp_msg_v01, simul_voice_and_data_capability_valid)),
+  0x12,
+   QMI_IDL_GENERIC_8_BYTE,
+  QMI_IDL_OFFSET8(dms_get_device_cap_resp_msg_v01, simul_voice_and_data_capability),
+
+  QMI_IDL_TLV_FLAGS_LAST_TLV | QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_get_device_cap_resp_msg_v01, multisim_capability) - QMI_IDL_OFFSET8(dms_get_device_cap_resp_msg_v01, multisim_capability_valid)),
+  0x13,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_get_device_cap_resp_msg_v01, multisim_capability),
+  QMI_IDL_TYPE88(0, 4)
+};
+
+/*
+ * dms_get_device_mfr_req_msg is empty
+ * static const uint8_t dms_get_device_mfr_req_msg_data_v01[] = {
+ * };
+ */
+
+static const uint8_t dms_get_device_mfr_resp_msg_data_v01[] = {
+  0x01,
+  QMI_IDL_FLAGS_IS_ARRAY | QMI_IDL_FLAGS_IS_VARIABLE_LEN |  QMI_IDL_STRING,
+  QMI_IDL_OFFSET8(dms_get_device_mfr_resp_msg_v01, device_manufacturer),
+  QMI_DMS_DEVICE_MANUFACTURER_MAX_V01,
+
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_get_device_mfr_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0)
+};
+
+/*
+ * dms_get_device_model_id_req_msg is empty
+ * static const uint8_t dms_get_device_model_id_req_msg_data_v01[] = {
+ * };
+ */
+
+static const uint8_t dms_get_device_model_id_resp_msg_data_v01[] = {
+  0x01,
+  QMI_IDL_FLAGS_IS_ARRAY | QMI_IDL_FLAGS_IS_VARIABLE_LEN | QMI_IDL_FLAGS_SZ_IS_16 |   QMI_IDL_STRING,
+  QMI_IDL_OFFSET8(dms_get_device_model_id_resp_msg_v01, device_model_id),
+  ((QMI_DMS_DEVICE_MODEL_ID_MAX_V01) & 0xFF), ((QMI_DMS_DEVICE_MODEL_ID_MAX_V01) >> 8),
+
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x02,
+   QMI_IDL_FLAGS_OFFSET_IS_16 | QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET16ARRAY(dms_get_device_model_id_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0)
+};
+
+/*
+ * dms_get_device_rev_id_req_msg is empty
+ * static const uint8_t dms_get_device_rev_id_req_msg_data_v01[] = {
+ * };
+ */
+
+static const uint8_t dms_get_device_rev_id_resp_msg_data_v01[] = {
+  0x01,
+  QMI_IDL_FLAGS_IS_ARRAY | QMI_IDL_FLAGS_IS_VARIABLE_LEN | QMI_IDL_FLAGS_SZ_IS_16 |   QMI_IDL_STRING,
+  QMI_IDL_OFFSET8(dms_get_device_rev_id_resp_msg_v01, device_rev_id),
+  ((QMI_DMS_DEVICE_REV_ID_MAX_V01) & 0xFF), ((QMI_DMS_DEVICE_REV_ID_MAX_V01) >> 8),
+
+  0x02,
+   QMI_IDL_FLAGS_OFFSET_IS_16 | QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET16ARRAY(dms_get_device_rev_id_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0),
+
+  QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET16RELATIVE(dms_get_device_rev_id_resp_msg_v01, boot_code_rev) - QMI_IDL_OFFSET16RELATIVE(dms_get_device_rev_id_resp_msg_v01, boot_code_rev_valid)),
+  0x10,
+  QMI_IDL_FLAGS_IS_ARRAY | QMI_IDL_FLAGS_IS_VARIABLE_LEN |  QMI_IDL_FLAGS_OFFSET_IS_16 | QMI_IDL_STRING,
+  QMI_IDL_OFFSET16ARRAY(dms_get_device_rev_id_resp_msg_v01, boot_code_rev),
+  QMI_DMS_BOOT_CODE_REV_MAX_V01,
+
+  QMI_IDL_TLV_FLAGS_LAST_TLV | QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET16RELATIVE(dms_get_device_rev_id_resp_msg_v01, pri_rev) - QMI_IDL_OFFSET16RELATIVE(dms_get_device_rev_id_resp_msg_v01, pri_rev_valid)),
+  0x11,
+  QMI_IDL_FLAGS_IS_ARRAY | QMI_IDL_FLAGS_IS_VARIABLE_LEN |  QMI_IDL_FLAGS_OFFSET_IS_16 | QMI_IDL_STRING,
+  QMI_IDL_OFFSET16ARRAY(dms_get_device_rev_id_resp_msg_v01, pri_rev),
+  QMI_DMS_PRI_REV_MAX_V01
+};
+
+/*
+ * dms_get_msisdn_req_msg is empty
+ * static const uint8_t dms_get_msisdn_req_msg_data_v01[] = {
+ * };
+ */
+
+static const uint8_t dms_get_msisdn_resp_msg_data_v01[] = {
+  0x01,
+  QMI_IDL_FLAGS_IS_ARRAY | QMI_IDL_FLAGS_IS_VARIABLE_LEN |  QMI_IDL_STRING,
+  QMI_IDL_OFFSET8(dms_get_msisdn_resp_msg_v01, voice_number),
+  QMI_DMS_VOICE_NUMBER_MAX_V01,
+
+  0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_get_msisdn_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0),
+
+  QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_get_msisdn_resp_msg_v01, mobile_id_number) - QMI_IDL_OFFSET8(dms_get_msisdn_resp_msg_v01, mobile_id_number_valid)),
+  0x10,
+  QMI_IDL_FLAGS_IS_ARRAY | QMI_IDL_FLAGS_IS_VARIABLE_LEN |  QMI_IDL_STRING,
+  QMI_IDL_OFFSET8(dms_get_msisdn_resp_msg_v01, mobile_id_number),
+  QMI_DMS_MOBILE_ID_NUMBER_MAX_V01,
+
+  QMI_IDL_TLV_FLAGS_LAST_TLV | QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_get_msisdn_resp_msg_v01, imsi) - QMI_IDL_OFFSET8(dms_get_msisdn_resp_msg_v01, imsi_valid)),
+  0x11,
+  QMI_IDL_FLAGS_IS_ARRAY | QMI_IDL_FLAGS_IS_VARIABLE_LEN |  QMI_IDL_STRING,
+  QMI_IDL_OFFSET8(dms_get_msisdn_resp_msg_v01, imsi),
+  QMI_DMS_IMSI_MAX_V01
+};
+
+/*
+ * dms_get_device_serial_numbers_req_msg is empty
+ * static const uint8_t dms_get_device_serial_numbers_req_msg_data_v01[] = {
+ * };
+ */
+
+static const uint8_t dms_get_device_serial_numbers_resp_msg_data_v01[] = {
+  0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_get_device_serial_numbers_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0),
+
+  QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_get_device_serial_numbers_resp_msg_v01, esn) - QMI_IDL_OFFSET8(dms_get_device_serial_numbers_resp_msg_v01, esn_valid)),
+  0x10,
+  QMI_IDL_FLAGS_IS_ARRAY | QMI_IDL_FLAGS_IS_VARIABLE_LEN |  QMI_IDL_STRING,
+  QMI_IDL_OFFSET8(dms_get_device_serial_numbers_resp_msg_v01, esn),
+  QMI_DMS_ESN_MAX_V01,
+
+  QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_get_device_serial_numbers_resp_msg_v01, imei) - QMI_IDL_OFFSET8(dms_get_device_serial_numbers_resp_msg_v01, imei_valid)),
+  0x11,
+  QMI_IDL_FLAGS_IS_ARRAY | QMI_IDL_FLAGS_IS_VARIABLE_LEN |  QMI_IDL_STRING,
+  QMI_IDL_OFFSET8(dms_get_device_serial_numbers_resp_msg_v01, imei),
+  QMI_DMS_IMEI_MAX_V01,
+
+  QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_get_device_serial_numbers_resp_msg_v01, meid) - QMI_IDL_OFFSET8(dms_get_device_serial_numbers_resp_msg_v01, meid_valid)),
+  0x12,
+  QMI_IDL_FLAGS_IS_ARRAY | QMI_IDL_FLAGS_IS_VARIABLE_LEN |  QMI_IDL_STRING,
+  QMI_IDL_OFFSET8(dms_get_device_serial_numbers_resp_msg_v01, meid),
+  QMI_DMS_MEID_MAX_V01,
+
+  QMI_IDL_TLV_FLAGS_LAST_TLV | QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_get_device_serial_numbers_resp_msg_v01, imeisv_svn) - QMI_IDL_OFFSET8(dms_get_device_serial_numbers_resp_msg_v01, imeisv_svn_valid)),
+  0x13,
+  QMI_IDL_FLAGS_IS_ARRAY | QMI_IDL_FLAGS_IS_VARIABLE_LEN |  QMI_IDL_STRING,
+  QMI_IDL_OFFSET8(dms_get_device_serial_numbers_resp_msg_v01, imeisv_svn),
+  QMI_DMS_IMEISV_MAX_V01
+};
+
+/*
+ * dms_get_power_state_req_msg is empty
+ * static const uint8_t dms_get_power_state_req_msg_data_v01[] = {
+ * };
+ */
+
+static const uint8_t dms_get_power_state_resp_msg_data_v01[] = {
+  0x01,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_get_power_state_resp_msg_v01, power_state),
+  QMI_IDL_TYPE88(0, 1),
+
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_get_power_state_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0)
+};
+
+static const uint8_t dms_uim_set_pin_protection_req_msg_data_v01[] = {
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x01,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_uim_set_pin_protection_req_msg_v01, pin_protection_info),
+  QMI_IDL_TYPE88(0, 6)
+};
+
+static const uint8_t dms_uim_set_pin_protection_resp_msg_data_v01[] = {
+  0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_uim_set_pin_protection_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0),
+
+  QMI_IDL_TLV_FLAGS_LAST_TLV | QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_uim_set_pin_protection_resp_msg_v01, pin_retries_status) - QMI_IDL_OFFSET8(dms_uim_set_pin_protection_resp_msg_v01, pin_retries_status_valid)),
+  0x10,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_uim_set_pin_protection_resp_msg_v01, pin_retries_status),
+  QMI_IDL_TYPE88(0, 7)
+};
+
+static const uint8_t dms_uim_verify_pin_req_msg_data_v01[] = {
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x01,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_uim_verify_pin_req_msg_v01, pin_info),
+  QMI_IDL_TYPE88(0, 8)
+};
+
+static const uint8_t dms_uim_verify_pin_resp_msg_data_v01[] = {
+  0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_uim_verify_pin_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0),
+
+  QMI_IDL_TLV_FLAGS_LAST_TLV | QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_uim_verify_pin_resp_msg_v01, pin_retries_status) - QMI_IDL_OFFSET8(dms_uim_verify_pin_resp_msg_v01, pin_retries_status_valid)),
+  0x10,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_uim_verify_pin_resp_msg_v01, pin_retries_status),
+  QMI_IDL_TYPE88(0, 7)
+};
+
+static const uint8_t dms_uim_unblock_pin_req_msg_data_v01[] = {
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x01,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_uim_unblock_pin_req_msg_v01, pin_unblock_info),
+  QMI_IDL_TYPE88(0, 9)
+};
+
+static const uint8_t dms_uim_unblock_pin_resp_msg_data_v01[] = {
+  0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_uim_unblock_pin_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0),
+
+  QMI_IDL_TLV_FLAGS_LAST_TLV | QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_uim_unblock_pin_resp_msg_v01, pin_retries_status) - QMI_IDL_OFFSET8(dms_uim_unblock_pin_resp_msg_v01, pin_retries_status_valid)),
+  0x10,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_uim_unblock_pin_resp_msg_v01, pin_retries_status),
+  QMI_IDL_TYPE88(0, 7)
+};
+
+static const uint8_t dms_uim_change_pin_req_msg_data_v01[] = {
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x01,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_uim_change_pin_req_msg_v01, pin_change_info),
+  QMI_IDL_TYPE88(0, 10)
+};
+
+static const uint8_t dms_uim_change_pin_resp_msg_data_v01[] = {
+  0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_uim_change_pin_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0),
+
+  QMI_IDL_TLV_FLAGS_LAST_TLV | QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_uim_change_pin_resp_msg_v01, pin_retries_status) - QMI_IDL_OFFSET8(dms_uim_change_pin_resp_msg_v01, pin_retries_status_valid)),
+  0x10,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_uim_change_pin_resp_msg_v01, pin_retries_status),
+  QMI_IDL_TYPE88(0, 7)
+};
+
+/*
+ * dms_uim_get_pin_status_req_msg is empty
+ * static const uint8_t dms_uim_get_pin_status_req_msg_data_v01[] = {
+ * };
+ */
+
+static const uint8_t dms_uim_get_pin_status_resp_msg_data_v01[] = {
+  0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_uim_get_pin_status_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0),
+
+  QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_uim_get_pin_status_resp_msg_v01, pin1_status) - QMI_IDL_OFFSET8(dms_uim_get_pin_status_resp_msg_v01, pin1_status_valid)),
+  0x11,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_uim_get_pin_status_resp_msg_v01, pin1_status),
+  QMI_IDL_TYPE88(0, 2),
+
+  QMI_IDL_TLV_FLAGS_LAST_TLV | QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_uim_get_pin_status_resp_msg_v01, pin2_status) - QMI_IDL_OFFSET8(dms_uim_get_pin_status_resp_msg_v01, pin2_status_valid)),
+  0x12,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_uim_get_pin_status_resp_msg_v01, pin2_status),
+  QMI_IDL_TYPE88(0, 2)
+};
+
+/*
+ * dms_get_device_hardware_rev_req_msg is empty
+ * static const uint8_t dms_get_device_hardware_rev_req_msg_data_v01[] = {
+ * };
+ */
+
+static const uint8_t dms_get_device_hardware_rev_resp_msg_data_v01[] = {
+  0x01,
+  QMI_IDL_FLAGS_IS_ARRAY | QMI_IDL_FLAGS_IS_VARIABLE_LEN | QMI_IDL_FLAGS_SZ_IS_16 |   QMI_IDL_STRING,
+  QMI_IDL_OFFSET8(dms_get_device_hardware_rev_resp_msg_v01, hardware_rev),
+  ((QMI_DMS_HARDWARE_REV_MAX_V01) & 0xFF), ((QMI_DMS_HARDWARE_REV_MAX_V01) >> 8),
+
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x02,
+   QMI_IDL_FLAGS_OFFSET_IS_16 | QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET16ARRAY(dms_get_device_hardware_rev_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0)
+};
+
+/*
+ * dms_get_operating_mode_req_msg is empty
+ * static const uint8_t dms_get_operating_mode_req_msg_data_v01[] = {
+ * };
+ */
+
+static const uint8_t dms_get_operating_mode_resp_msg_data_v01[] = {
+  0x01,
+   QMI_IDL_1_BYTE_ENUM,
+  QMI_IDL_OFFSET8(dms_get_operating_mode_resp_msg_v01, operating_mode),
+
+  0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_get_operating_mode_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0),
+
+  QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_get_operating_mode_resp_msg_v01, offline_reason) - QMI_IDL_OFFSET8(dms_get_operating_mode_resp_msg_v01, offline_reason_valid)),
+  0x10,
+   QMI_IDL_GENERIC_2_BYTE,
+  QMI_IDL_OFFSET8(dms_get_operating_mode_resp_msg_v01, offline_reason),
+
+  QMI_IDL_TLV_FLAGS_LAST_TLV | QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_get_operating_mode_resp_msg_v01, hardware_controlled_mode) - QMI_IDL_OFFSET8(dms_get_operating_mode_resp_msg_v01, hardware_controlled_mode_valid)),
+  0x11,
+   QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_get_operating_mode_resp_msg_v01, hardware_controlled_mode)
+};
+
+static const uint8_t dms_set_operating_mode_req_msg_data_v01[] = {
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x01,
+   QMI_IDL_1_BYTE_ENUM,
+  QMI_IDL_OFFSET8(dms_set_operating_mode_req_msg_v01, operating_mode)
+};
+
+static const uint8_t dms_set_operating_mode_resp_msg_data_v01[] = {
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_set_operating_mode_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0)
+};
+
+/*
+ * dms_get_time_req_msg is empty
+ * static const uint8_t dms_get_time_req_msg_data_v01[] = {
+ * };
+ */
+
+static const uint8_t dms_get_time_resp_msg_data_v01[] = {
+  0x01,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_get_time_resp_msg_v01, device_time),
+  QMI_IDL_TYPE88(0, 11),
+
+  0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_get_time_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0),
+
+  QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_get_time_resp_msg_v01, sys_time_in_ms) - QMI_IDL_OFFSET8(dms_get_time_resp_msg_v01, sys_time_in_ms_valid)),
+  0x10,
+   QMI_IDL_GENERIC_8_BYTE,
+  QMI_IDL_OFFSET8(dms_get_time_resp_msg_v01, sys_time_in_ms),
+
+  QMI_IDL_TLV_FLAGS_LAST_TLV | QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_get_time_resp_msg_v01, user_time_in_ms) - QMI_IDL_OFFSET8(dms_get_time_resp_msg_v01, user_time_in_ms_valid)),
+  0x11,
+   QMI_IDL_GENERIC_8_BYTE,
+  QMI_IDL_OFFSET8(dms_get_time_resp_msg_v01, user_time_in_ms)
+};
+
+/*
+ * dms_get_prl_ver_req_msg is empty
+ * static const uint8_t dms_get_prl_ver_req_msg_data_v01[] = {
+ * };
+ */
+
+static const uint8_t dms_get_prl_ver_resp_msg_data_v01[] = {
+  0x01,
+   QMI_IDL_GENERIC_2_BYTE,
+  QMI_IDL_OFFSET8(dms_get_prl_ver_resp_msg_v01, prl_version),
+
+  0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_get_prl_ver_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0),
+
+  QMI_IDL_TLV_FLAGS_LAST_TLV | QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_get_prl_ver_resp_msg_v01, prl_only) - QMI_IDL_OFFSET8(dms_get_prl_ver_resp_msg_v01, prl_only_valid)),
+  0x10,
+   QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_get_prl_ver_resp_msg_v01, prl_only)
+};
+
+/*
+ * dms_get_activation_state_req_msg is empty
+ * static const uint8_t dms_get_activation_state_req_msg_data_v01[] = {
+ * };
+ */
+
+static const uint8_t dms_get_activation_state_resp_msg_data_v01[] = {
+  0x01,
+   QMI_IDL_2_BYTE_ENUM,
+  QMI_IDL_OFFSET8(dms_get_activation_state_resp_msg_v01, activation_state),
+
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_get_activation_state_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0)
+};
+
+static const uint8_t dms_activate_automatic_req_msg_data_v01[] = {
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x01,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_activate_automatic_req_msg_v01, activation_code),
+  QMI_IDL_TYPE88(0, 12)
+};
+
+static const uint8_t dms_activate_automatic_resp_msg_data_v01[] = {
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_activate_automatic_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0)
+};
+
+static const uint8_t dms_activate_manual_req_msg_data_v01[] = {
+  0x01,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_activate_manual_req_msg_v01, activation_data),
+  QMI_IDL_TYPE88(0, 13),
+
+  QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_activate_manual_req_msg_v01, mn_ha_key) - QMI_IDL_OFFSET8(dms_activate_manual_req_msg_v01, mn_ha_key_valid)),
+  0x11,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_activate_manual_req_msg_v01, mn_ha_key),
+  QMI_IDL_TYPE88(0, 14),
+
+  QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_activate_manual_req_msg_v01, mn_aaa_key) - QMI_IDL_OFFSET8(dms_activate_manual_req_msg_v01, mn_aaa_key_valid)),
+  0x12,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_activate_manual_req_msg_v01, mn_aaa_key),
+  QMI_IDL_TYPE88(0, 15),
+
+  QMI_IDL_TLV_FLAGS_LAST_TLV | QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_activate_manual_req_msg_v01, pref_roaming_list) - QMI_IDL_OFFSET8(dms_activate_manual_req_msg_v01, pref_roaming_list_valid)),
+  0x13,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_activate_manual_req_msg_v01, pref_roaming_list),
+  QMI_IDL_TYPE88(0, 16)
+};
+
+static const uint8_t dms_activate_manual_resp_msg_data_v01[] = {
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_activate_manual_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0)
+};
+
+/*
+ * dms_get_user_lock_state_req_msg is empty
+ * static const uint8_t dms_get_user_lock_state_req_msg_data_v01[] = {
+ * };
+ */
+
+static const uint8_t dms_get_user_lock_state_resp_msg_data_v01[] = {
+  0x01,
+   QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_get_user_lock_state_resp_msg_v01, lock_enabled),
+
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_get_user_lock_state_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0)
+};
+
+static const uint8_t dms_set_user_lock_state_req_msg_data_v01[] = {
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x01,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_set_user_lock_state_req_msg_v01, lock_info),
+  QMI_IDL_TYPE88(0, 17)
+};
+
+static const uint8_t dms_set_user_lock_state_resp_msg_data_v01[] = {
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_set_user_lock_state_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0)
+};
+
+static const uint8_t dms_set_user_lock_code_req_msg_data_v01[] = {
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x01,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_set_user_lock_code_req_msg_v01, lock_info),
+  QMI_IDL_TYPE88(0, 18)
+};
+
+static const uint8_t dms_set_user_lock_code_resp_msg_data_v01[] = {
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_set_user_lock_code_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0)
+};
+
+/*
+ * dms_read_user_data_req_msg is empty
+ * static const uint8_t dms_read_user_data_req_msg_data_v01[] = {
+ * };
+ */
+
+static const uint8_t dms_read_user_data_resp_msg_data_v01[] = {
+  0x01,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_read_user_data_resp_msg_v01, user_data),
+  QMI_IDL_TYPE88(0, 19),
+
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x02,
+   QMI_IDL_FLAGS_OFFSET_IS_16 | QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET16ARRAY(dms_read_user_data_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0)
+};
+
+static const uint8_t dms_write_user_data_req_msg_data_v01[] = {
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x01,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_write_user_data_req_msg_v01, user_data),
+  QMI_IDL_TYPE88(0, 19)
+};
+
+static const uint8_t dms_write_user_data_resp_msg_data_v01[] = {
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_write_user_data_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0)
+};
+
+/*
+ * dms_read_eri_file_req_msg is empty
+ * static const uint8_t dms_read_eri_file_req_msg_data_v01[] = {
+ * };
+ */
+
+static const uint8_t dms_read_eri_file_resp_msg_data_v01[] = {
+  0x01,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_read_eri_file_resp_msg_v01, eri_file),
+  QMI_IDL_TYPE88(0, 20),
+
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x02,
+   QMI_IDL_FLAGS_OFFSET_IS_16 | QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET16ARRAY(dms_read_eri_file_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0)
+};
+
+static const uint8_t dms_restore_factory_defaults_req_msg_data_v01[] = {
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x01,
+  QMI_IDL_FLAGS_IS_ARRAY |  QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_restore_factory_defaults_req_msg_v01, spc),
+  QMI_DMS_SPC_LEN_V01
+};
+
+static const uint8_t dms_restore_factory_defaults_resp_msg_data_v01[] = {
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_restore_factory_defaults_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0)
+};
+
+static const uint8_t dms_validate_service_programming_code_req_msg_data_v01[] = {
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x01,
+  QMI_IDL_FLAGS_IS_ARRAY |  QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_validate_service_programming_code_req_msg_v01, spc),
+  QMI_DMS_SPC_LEN_V01
+};
+
+static const uint8_t dms_validate_service_programming_code_resp_msg_data_v01[] = {
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_validate_service_programming_code_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0)
+};
+
+/*
+ * dms_uim_get_iccid_req_msg is empty
+ * static const uint8_t dms_uim_get_iccid_req_msg_data_v01[] = {
+ * };
+ */
+
+static const uint8_t dms_uim_get_iccid_resp_msg_data_v01[] = {
+  0x01,
+  QMI_IDL_FLAGS_IS_ARRAY | QMI_IDL_FLAGS_IS_VARIABLE_LEN |  QMI_IDL_STRING,
+  QMI_IDL_OFFSET8(dms_uim_get_iccid_resp_msg_v01, uim_id),
+  QMI_DMS_UIM_ID_MAX_V01,
+
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_uim_get_iccid_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0)
+};
+
+static const uint8_t dms_uim_get_ck_status_req_msg_data_v01[] = {
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x01,
+   QMI_IDL_1_BYTE_ENUM,
+  QMI_IDL_OFFSET8(dms_uim_get_ck_status_req_msg_v01, facility)
+};
+
+static const uint8_t dms_uim_get_ck_status_resp_msg_data_v01[] = {
+  0x01,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_uim_get_ck_status_resp_msg_v01, facility_info),
+  QMI_IDL_TYPE88(0, 21),
+
+  0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_uim_get_ck_status_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0),
+
+  QMI_IDL_TLV_FLAGS_LAST_TLV | QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_uim_get_ck_status_resp_msg_v01, operation_blocking) - QMI_IDL_OFFSET8(dms_uim_get_ck_status_resp_msg_v01, operation_blocking_valid)),
+  0x10,
+   QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_uim_get_ck_status_resp_msg_v01, operation_blocking)
+};
+
+static const uint8_t dms_uim_set_ck_protection_req_msg_data_v01[] = {
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x01,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_uim_set_ck_protection_req_msg_v01, facility_set_ck_info),
+  QMI_IDL_TYPE88(0, 22)
+};
+
+static const uint8_t dms_uim_set_ck_protection_resp_msg_data_v01[] = {
+  0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_uim_set_ck_protection_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0),
+
+  QMI_IDL_TLV_FLAGS_LAST_TLV | QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_uim_set_ck_protection_resp_msg_v01, verify_retries_left) - QMI_IDL_OFFSET8(dms_uim_set_ck_protection_resp_msg_v01, verify_retries_left_valid)),
+  0x10,
+   QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_uim_set_ck_protection_resp_msg_v01, verify_retries_left)
+};
+
+static const uint8_t dms_uim_unblock_ck_req_msg_data_v01[] = {
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x01,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_uim_unblock_ck_req_msg_v01, facility_unblock_info),
+  QMI_IDL_TYPE88(0, 23)
+};
+
+static const uint8_t dms_uim_unblock_ck_resp_msg_data_v01[] = {
+  0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_uim_unblock_ck_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0),
+
+  QMI_IDL_TLV_FLAGS_LAST_TLV | QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_uim_unblock_ck_resp_msg_v01, unblock_retries_left) - QMI_IDL_OFFSET8(dms_uim_unblock_ck_resp_msg_v01, unblock_retries_left_valid)),
+  0x10,
+   QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_uim_unblock_ck_resp_msg_v01, unblock_retries_left)
+};
+
+/*
+ * dms_uim_get_imsi_req_msg is empty
+ * static const uint8_t dms_uim_get_imsi_req_msg_data_v01[] = {
+ * };
+ */
+
+static const uint8_t dms_uim_get_imsi_resp_msg_data_v01[] = {
+  0x01,
+  QMI_IDL_FLAGS_IS_ARRAY | QMI_IDL_FLAGS_IS_VARIABLE_LEN |  QMI_IDL_STRING,
+  QMI_IDL_OFFSET8(dms_uim_get_imsi_resp_msg_v01, imsi),
+  QMI_DMS_IMSI_MAX_V01,
+
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_uim_get_imsi_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0)
+};
+
+/*
+ * dms_uim_get_state_req_msg is empty
+ * static const uint8_t dms_uim_get_state_req_msg_data_v01[] = {
+ * };
+ */
+
+static const uint8_t dms_uim_get_state_resp_msg_data_v01[] = {
+  0x01,
+   QMI_IDL_1_BYTE_ENUM,
+  QMI_IDL_OFFSET8(dms_uim_get_state_resp_msg_v01, uim_state),
+
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_uim_get_state_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0)
+};
+
+/*
+ * dms_get_band_capability_req_msg is empty
+ * static const uint8_t dms_get_band_capability_req_msg_data_v01[] = {
+ * };
+ */
+
+static const uint8_t dms_get_band_capability_resp_msg_data_v01[] = {
+  0x01,
+   QMI_IDL_GENERIC_8_BYTE,
+  QMI_IDL_OFFSET8(dms_get_band_capability_resp_msg_v01, band_capability),
+
+  0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_get_band_capability_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0),
+
+  QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_get_band_capability_resp_msg_v01, lte_band_capability) - QMI_IDL_OFFSET8(dms_get_band_capability_resp_msg_v01, lte_band_capability_valid)),
+  0x10,
+   QMI_IDL_GENERIC_8_BYTE,
+  QMI_IDL_OFFSET8(dms_get_band_capability_resp_msg_v01, lte_band_capability),
+
+  QMI_IDL_TLV_FLAGS_LAST_TLV | QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_get_band_capability_resp_msg_v01, tds_band_capability) - QMI_IDL_OFFSET8(dms_get_band_capability_resp_msg_v01, tds_band_capability_valid)),
+  0x11,
+   QMI_IDL_GENERIC_8_BYTE,
+  QMI_IDL_OFFSET8(dms_get_band_capability_resp_msg_v01, tds_band_capability)
+};
+
+/*
+ * dms_get_factory_sku_req_msg is empty
+ * static const uint8_t dms_get_factory_sku_req_msg_data_v01[] = {
+ * };
+ */
+
+static const uint8_t dms_get_factory_sku_resp_msg_data_v01[] = {
+  0x01,
+  QMI_IDL_FLAGS_IS_ARRAY | QMI_IDL_FLAGS_IS_VARIABLE_LEN |  QMI_IDL_STRING,
+  QMI_IDL_OFFSET8(dms_get_factory_sku_resp_msg_v01, factory_serial_number),
+  QMI_DMS_FACTORY_SN_MAX_V01,
+
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_get_factory_sku_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0)
+};
+
+static const uint8_t dms_set_time_req_msg_data_v01[] = {
+  0x01,
+   QMI_IDL_GENERIC_8_BYTE,
+  QMI_IDL_OFFSET8(dms_set_time_req_msg_v01, time_in_ms),
+
+  QMI_IDL_TLV_FLAGS_LAST_TLV | QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_set_time_req_msg_v01, time_reference_type) - QMI_IDL_OFFSET8(dms_set_time_req_msg_v01, time_reference_type_valid)),
+  0x10,
+   QMI_IDL_GENERIC_4_BYTE,
+  QMI_IDL_OFFSET8(dms_set_time_req_msg_v01, time_reference_type)
+};
+
+static const uint8_t dms_set_time_resp_msg_data_v01[] = {
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_set_time_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0)
+};
+
+/*
+ * dms_get_alt_net_config_req_msg is empty
+ * static const uint8_t dms_get_alt_net_config_req_msg_data_v01[] = {
+ * };
+ */
+
+static const uint8_t dms_get_alt_net_config_resp_msg_data_v01[] = {
+  0x01,
+   QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_get_alt_net_config_resp_msg_v01, alt_net_config),
+
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_get_alt_net_config_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0)
+};
+
+static const uint8_t dms_set_alt_net_config_req_msg_data_v01[] = {
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x01,
+   QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_set_alt_net_config_req_msg_v01, alt_net_config)
+};
+
+static const uint8_t dms_set_alt_net_config_resp_msg_data_v01[] = {
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_set_alt_net_config_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0)
+};
+
+/*
+ * dms_get_sw_version_req_msg is empty
+ * static const uint8_t dms_get_sw_version_req_msg_data_v01[] = {
+ * };
+ */
+
+static const uint8_t dms_get_sw_version_resp_msg_data_v01[] = {
+  0x01,
+  QMI_IDL_FLAGS_IS_ARRAY | QMI_IDL_FLAGS_IS_VARIABLE_LEN |  QMI_IDL_STRING,
+  QMI_IDL_OFFSET8(dms_get_sw_version_resp_msg_v01, sw_version),
+  QMI_DMS_SW_VERSION_MAX_V01,
+
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_get_sw_version_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0)
+};
+
+static const uint8_t dms_set_spc_req_msg_data_v01[] = {
+  0x01,
+  QMI_IDL_FLAGS_IS_ARRAY |  QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_set_spc_req_msg_v01, curr_spc),
+  QMI_DMS_SPC_LEN_V01,
+
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x02,
+  QMI_IDL_FLAGS_IS_ARRAY |  QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_set_spc_req_msg_v01, new_spc),
+  QMI_DMS_SPC_LEN_V01
+};
+
+static const uint8_t dms_set_spc_resp_msg_data_v01[] = {
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_set_spc_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0)
+};
+
+/*
+ * dms_get_current_prl_info_req_msg is empty
+ * static const uint8_t dms_get_current_prl_info_req_msg_data_v01[] = {
+ * };
+ */
+
+static const uint8_t dms_get_current_prl_info_resp_msg_data_v01[] = {
+  0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_get_current_prl_info_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0),
+
+  QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_get_current_prl_info_resp_msg_v01, prl_version) - QMI_IDL_OFFSET8(dms_get_current_prl_info_resp_msg_v01, prl_version_valid)),
+  0x10,
+   QMI_IDL_GENERIC_2_BYTE,
+  QMI_IDL_OFFSET8(dms_get_current_prl_info_resp_msg_v01, prl_version),
+
+  QMI_IDL_TLV_FLAGS_LAST_TLV | QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_get_current_prl_info_resp_msg_v01, prl_only) - QMI_IDL_OFFSET8(dms_get_current_prl_info_resp_msg_v01, prl_only_valid)),
+  0x11,
+   QMI_IDL_GENERIC_1_BYTE,
+  QMI_IDL_OFFSET8(dms_get_current_prl_info_resp_msg_v01, prl_only)
+};
+
+static const uint8_t dms_bind_subscription_req_msg_data_v01[] = {
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x01,
+   QMI_IDL_GENERIC_4_BYTE,
+  QMI_IDL_OFFSET8(dms_bind_subscription_req_msg_v01, bind_subs)
+};
+
+static const uint8_t dms_bind_subscription_resp_msg_data_v01[] = {
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_bind_subscription_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0)
+};
+
+/*
+ * dms_get_bind_subscription_req_msg is empty
+ * static const uint8_t dms_get_bind_subscription_req_msg_data_v01[] = {
+ * };
+ */
+
+static const uint8_t dms_get_bind_subscription_resp_msg_data_v01[] = {
+  0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_get_bind_subscription_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0),
+
+  QMI_IDL_TLV_FLAGS_LAST_TLV | QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_get_bind_subscription_resp_msg_v01, bind_subscription) - QMI_IDL_OFFSET8(dms_get_bind_subscription_resp_msg_v01, bind_subscription_valid)),
+  0x10,
+   QMI_IDL_GENERIC_4_BYTE,
+  QMI_IDL_OFFSET8(dms_get_bind_subscription_resp_msg_v01, bind_subscription)
+};
+
+static const uint8_t dms_set_ap_sw_version_req_msg_data_v01[] = {
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x01,
+  QMI_IDL_FLAGS_IS_ARRAY | QMI_IDL_FLAGS_IS_VARIABLE_LEN |  QMI_IDL_STRING,
+  QMI_IDL_OFFSET8(dms_set_ap_sw_version_req_msg_v01, ap_sw_version),
+  QMI_DMS_SW_VERSION_MAX_V01
+};
+
+static const uint8_t dms_set_ap_sw_version_resp_msg_data_v01[] = {
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_set_ap_sw_version_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0)
+};
+
+/*
+ * dms_get_cdma_lock_mode_req_msg is empty
+ * static const uint8_t dms_get_cdma_lock_mode_req_msg_data_v01[] = {
+ * };
+ */
+
+static const uint8_t dms_get_cdma_lock_mode_resp_msg_data_v01[] = {
+  0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_get_cdma_lock_mode_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0),
+
+  QMI_IDL_TLV_FLAGS_LAST_TLV | QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_get_cdma_lock_mode_resp_msg_v01, cdma_lock_mode_status) - QMI_IDL_OFFSET8(dms_get_cdma_lock_mode_resp_msg_v01, cdma_lock_mode_status_valid)),
+  0x10,
+   QMI_IDL_GENERIC_4_BYTE,
+  QMI_IDL_OFFSET8(dms_get_cdma_lock_mode_resp_msg_v01, cdma_lock_mode_status)
+};
+
+static const uint8_t dms_set_test_config_req_msg_data_v01[] = {
+  QMI_IDL_TLV_FLAGS_LAST_TLV | QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_set_test_config_req_msg_v01, tds_config) - QMI_IDL_OFFSET8(dms_set_test_config_req_msg_v01, tds_config_valid)),
+  0x10,
+   QMI_IDL_GENERIC_4_BYTE,
+  QMI_IDL_OFFSET8(dms_set_test_config_req_msg_v01, tds_config)
+};
+
+static const uint8_t dms_set_test_config_resp_msg_data_v01[] = {
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_set_test_config_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0)
+};
+
+/*
+ * dms_get_test_config_req_msg is empty
+ * static const uint8_t dms_get_test_config_req_msg_data_v01[] = {
+ * };
+ */
+
+static const uint8_t dms_get_test_config_resp_msg_data_v01[] = {
+  0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_get_test_config_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0),
+
+  QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_get_test_config_resp_msg_v01, active_tds_config) - QMI_IDL_OFFSET8(dms_get_test_config_resp_msg_v01, active_tds_config_valid)),
+  0x10,
+   QMI_IDL_GENERIC_4_BYTE,
+  QMI_IDL_OFFSET8(dms_get_test_config_resp_msg_v01, active_tds_config),
+
+  QMI_IDL_TLV_FLAGS_LAST_TLV | QMI_IDL_TLV_FLAGS_OPTIONAL | (QMI_IDL_OFFSET8(dms_get_test_config_resp_msg_v01, desired_tds_config) - QMI_IDL_OFFSET8(dms_get_test_config_resp_msg_v01, desired_tds_config_valid)),
+  0x11,
+   QMI_IDL_GENERIC_4_BYTE,
+  QMI_IDL_OFFSET8(dms_get_test_config_resp_msg_v01, desired_tds_config)
+};
+
+/*
+ * dms_clear_test_config_req_msg is empty
+ * static const uint8_t dms_clear_test_config_req_msg_data_v01[] = {
+ * };
+ */
+
+static const uint8_t dms_clear_test_config_resp_msg_data_v01[] = {
+  QMI_IDL_TLV_FLAGS_LAST_TLV | 0x02,
+   QMI_IDL_AGGREGATE,
+  QMI_IDL_OFFSET8(dms_clear_test_config_resp_msg_v01, resp),
+  QMI_IDL_TYPE88(1, 0)
+};
+
+/* Type Table */
+static const qmi_idl_type_table_entry  dms_type_table_v01[] = {
+  {sizeof(dms_battery_lvl_limits_type_v01), dms_battery_lvl_limits_type_data_v01},
+  {sizeof(dms_power_state_type_v01), dms_power_state_type_data_v01},
+  {sizeof(dms_pin_status_type_v01), dms_pin_status_type_data_v01},
+  {sizeof(dms_subs_config_type_v01), dms_subs_config_type_data_v01},
+  {sizeof(dms_multisim_capability_type_v01), dms_multisim_capability_type_data_v01},
+  {sizeof(dms_device_capabilities_type_v01), dms_device_capabilities_type_data_v01},
+  {sizeof(dms_pin_protection_info_type_v01), dms_pin_protection_info_type_data_v01},
+  {sizeof(dms_pin_retries_status_type_v01), dms_pin_retries_status_type_data_v01},
+  {sizeof(dms_pin_info_type_v01), dms_pin_info_type_data_v01},
+  {sizeof(dms_pin_unblock_info_type_v01), dms_pin_unblock_info_type_data_v01},
+  {sizeof(dms_pin_change_info_type_v01), dms_pin_change_info_type_data_v01},
+  {sizeof(dms_device_time_type_v01), dms_device_time_type_data_v01},
+  {sizeof(dms_activation_code_type_v01), dms_activation_code_type_data_v01},
+  {sizeof(dms_manual_act_data_type_v01), dms_manual_act_data_type_data_v01},
+  {sizeof(dms_mn_ha_key_type_v01), dms_mn_ha_key_type_data_v01},
+  {sizeof(dms_mn_aaa_key_type_v01), dms_mn_aaa_key_type_data_v01},
+  {sizeof(dms_pref_roaming_list_type_v01), dms_pref_roaming_list_type_data_v01},
+  {sizeof(dms_user_lock_state_info_type_v01), dms_user_lock_state_info_type_data_v01},
+  {sizeof(dms_user_lock_set_info_type_v01), dms_user_lock_set_info_type_data_v01},
+  {sizeof(dms_user_data_type_v01), dms_user_data_type_data_v01},
+  {sizeof(dms_eri_data_type_v01), dms_eri_data_type_data_v01},
+  {sizeof(dms_facility_state_info_type_v01), dms_facility_state_info_type_data_v01},
+  {sizeof(dms_facility_set_ck_info_type_v01), dms_facility_set_ck_info_type_data_v01},
+  {sizeof(dms_facility_unblock_info_type_v01), dms_facility_unblock_info_type_data_v01}
+};
+
+/* Message Table */
+static const qmi_idl_message_table_entry dms_message_table_v01[] = {
+  {sizeof(dms_reset_req_msg_v01), 0},
+  {sizeof(dms_reset_resp_msg_v01), dms_reset_resp_msg_data_v01},
+  {sizeof(dms_set_event_report_req_msg_v01), dms_set_event_report_req_msg_data_v01},
+  {sizeof(dms_set_event_report_resp_msg_v01), dms_set_event_report_resp_msg_data_v01},
+  {sizeof(dms_event_report_ind_msg_v01), dms_event_report_ind_msg_data_v01},
+  {sizeof(dms_get_device_cap_req_msg_v01), 0},
+  {sizeof(dms_get_device_cap_resp_msg_v01), dms_get_device_cap_resp_msg_data_v01},
+  {sizeof(dms_get_device_mfr_req_msg_v01), 0},
+  {sizeof(dms_get_device_mfr_resp_msg_v01), dms_get_device_mfr_resp_msg_data_v01},
+  {sizeof(dms_get_device_model_id_req_msg_v01), 0},
+  {sizeof(dms_get_device_model_id_resp_msg_v01), dms_get_device_model_id_resp_msg_data_v01},
+  {sizeof(dms_get_device_rev_id_req_msg_v01), 0},
+  {sizeof(dms_get_device_rev_id_resp_msg_v01), dms_get_device_rev_id_resp_msg_data_v01},
+  {sizeof(dms_get_msisdn_req_msg_v01), 0},
+  {sizeof(dms_get_msisdn_resp_msg_v01), dms_get_msisdn_resp_msg_data_v01},
+  {sizeof(dms_get_device_serial_numbers_req_msg_v01), 0},
+  {sizeof(dms_get_device_serial_numbers_resp_msg_v01), dms_get_device_serial_numbers_resp_msg_data_v01},
+  {sizeof(dms_get_power_state_req_msg_v01), 0},
+  {sizeof(dms_get_power_state_resp_msg_v01), dms_get_power_state_resp_msg_data_v01},
+  {sizeof(dms_uim_set_pin_protection_req_msg_v01), dms_uim_set_pin_protection_req_msg_data_v01},
+  {sizeof(dms_uim_set_pin_protection_resp_msg_v01), dms_uim_set_pin_protection_resp_msg_data_v01},
+  {sizeof(dms_uim_verify_pin_req_msg_v01), dms_uim_verify_pin_req_msg_data_v01},
+  {sizeof(dms_uim_verify_pin_resp_msg_v01), dms_uim_verify_pin_resp_msg_data_v01},
+  {sizeof(dms_uim_unblock_pin_req_msg_v01), dms_uim_unblock_pin_req_msg_data_v01},
+  {sizeof(dms_uim_unblock_pin_resp_msg_v01), dms_uim_unblock_pin_resp_msg_data_v01},
+  {sizeof(dms_uim_change_pin_req_msg_v01), dms_uim_change_pin_req_msg_data_v01},
+  {sizeof(dms_uim_change_pin_resp_msg_v01), dms_uim_change_pin_resp_msg_data_v01},
+  {sizeof(dms_uim_get_pin_status_req_msg_v01), 0},
+  {sizeof(dms_uim_get_pin_status_resp_msg_v01), dms_uim_get_pin_status_resp_msg_data_v01},
+  {sizeof(dms_get_device_hardware_rev_req_msg_v01), 0},
+  {sizeof(dms_get_device_hardware_rev_resp_msg_v01), dms_get_device_hardware_rev_resp_msg_data_v01},
+  {sizeof(dms_get_operating_mode_req_msg_v01), 0},
+  {sizeof(dms_get_operating_mode_resp_msg_v01), dms_get_operating_mode_resp_msg_data_v01},
+  {sizeof(dms_set_operating_mode_req_msg_v01), dms_set_operating_mode_req_msg_data_v01},
+  {sizeof(dms_set_operating_mode_resp_msg_v01), dms_set_operating_mode_resp_msg_data_v01},
+  {sizeof(dms_get_time_req_msg_v01), 0},
+  {sizeof(dms_get_time_resp_msg_v01), dms_get_time_resp_msg_data_v01},
+  {sizeof(dms_get_prl_ver_req_msg_v01), 0},
+  {sizeof(dms_get_prl_ver_resp_msg_v01), dms_get_prl_ver_resp_msg_data_v01},
+  {sizeof(dms_get_activation_state_req_msg_v01), 0},
+  {sizeof(dms_get_activation_state_resp_msg_v01), dms_get_activation_state_resp_msg_data_v01},
+  {sizeof(dms_activate_automatic_req_msg_v01), dms_activate_automatic_req_msg_data_v01},
+  {sizeof(dms_activate_automatic_resp_msg_v01), dms_activate_automatic_resp_msg_data_v01},
+  {sizeof(dms_activate_manual_req_msg_v01), dms_activate_manual_req_msg_data_v01},
+  {sizeof(dms_activate_manual_resp_msg_v01), dms_activate_manual_resp_msg_data_v01},
+  {sizeof(dms_get_user_lock_state_req_msg_v01), 0},
+  {sizeof(dms_get_user_lock_state_resp_msg_v01), dms_get_user_lock_state_resp_msg_data_v01},
+  {sizeof(dms_set_user_lock_state_req_msg_v01), dms_set_user_lock_state_req_msg_data_v01},
+  {sizeof(dms_set_user_lock_state_resp_msg_v01), dms_set_user_lock_state_resp_msg_data_v01},
+  {sizeof(dms_set_user_lock_code_req_msg_v01), dms_set_user_lock_code_req_msg_data_v01},
+  {sizeof(dms_set_user_lock_code_resp_msg_v01), dms_set_user_lock_code_resp_msg_data_v01},
+  {sizeof(dms_read_user_data_req_msg_v01), 0},
+  {sizeof(dms_read_user_data_resp_msg_v01), dms_read_user_data_resp_msg_data_v01},
+  {sizeof(dms_write_user_data_req_msg_v01), dms_write_user_data_req_msg_data_v01},
+  {sizeof(dms_write_user_data_resp_msg_v01), dms_write_user_data_resp_msg_data_v01},
+  {sizeof(dms_read_eri_file_req_msg_v01), 0},
+  {sizeof(dms_read_eri_file_resp_msg_v01), dms_read_eri_file_resp_msg_data_v01},
+  {sizeof(dms_restore_factory_defaults_req_msg_v01), dms_restore_factory_defaults_req_msg_data_v01},
+  {sizeof(dms_restore_factory_defaults_resp_msg_v01), dms_restore_factory_defaults_resp_msg_data_v01},
+  {sizeof(dms_validate_service_programming_code_req_msg_v01), dms_validate_service_programming_code_req_msg_data_v01},
+  {sizeof(dms_validate_service_programming_code_resp_msg_v01), dms_validate_service_programming_code_resp_msg_data_v01},
+  {sizeof(dms_uim_get_iccid_req_msg_v01), 0},
+  {sizeof(dms_uim_get_iccid_resp_msg_v01), dms_uim_get_iccid_resp_msg_data_v01},
+  {sizeof(dms_uim_get_ck_status_req_msg_v01), dms_uim_get_ck_status_req_msg_data_v01},
+  {sizeof(dms_uim_get_ck_status_resp_msg_v01), dms_uim_get_ck_status_resp_msg_data_v01},
+  {sizeof(dms_uim_set_ck_protection_req_msg_v01), dms_uim_set_ck_protection_req_msg_data_v01},
+  {sizeof(dms_uim_set_ck_protection_resp_msg_v01), dms_uim_set_ck_protection_resp_msg_data_v01},
+  {sizeof(dms_uim_unblock_ck_req_msg_v01), dms_uim_unblock_ck_req_msg_data_v01},
+  {sizeof(dms_uim_unblock_ck_resp_msg_v01), dms_uim_unblock_ck_resp_msg_data_v01},
+  {sizeof(dms_uim_get_imsi_req_msg_v01), 0},
+  {sizeof(dms_uim_get_imsi_resp_msg_v01), dms_uim_get_imsi_resp_msg_data_v01},
+  {sizeof(dms_uim_get_state_req_msg_v01), 0},
+  {sizeof(dms_uim_get_state_resp_msg_v01), dms_uim_get_state_resp_msg_data_v01},
+  {sizeof(dms_get_band_capability_req_msg_v01), 0},
+  {sizeof(dms_get_band_capability_resp_msg_v01), dms_get_band_capability_resp_msg_data_v01},
+  {sizeof(dms_get_factory_sku_req_msg_v01), 0},
+  {sizeof(dms_get_factory_sku_resp_msg_v01), dms_get_factory_sku_resp_msg_data_v01},
+  {sizeof(dms_set_time_req_msg_v01), dms_set_time_req_msg_data_v01},
+  {sizeof(dms_set_time_resp_msg_v01), dms_set_time_resp_msg_data_v01},
+  {sizeof(dms_get_alt_net_config_req_msg_v01), 0},
+  {sizeof(dms_get_alt_net_config_resp_msg_v01), dms_get_alt_net_config_resp_msg_data_v01},
+  {sizeof(dms_set_alt_net_config_req_msg_v01), dms_set_alt_net_config_req_msg_data_v01},
+  {sizeof(dms_set_alt_net_config_resp_msg_v01), dms_set_alt_net_config_resp_msg_data_v01},
+  {sizeof(dms_get_sw_version_req_msg_v01), 0},
+  {sizeof(dms_get_sw_version_resp_msg_v01), dms_get_sw_version_resp_msg_data_v01},
+  {sizeof(dms_set_spc_req_msg_v01), dms_set_spc_req_msg_data_v01},
+  {sizeof(dms_set_spc_resp_msg_v01), dms_set_spc_resp_msg_data_v01},
+  {sizeof(dms_get_current_prl_info_req_msg_v01), 0},
+  {sizeof(dms_get_current_prl_info_resp_msg_v01), dms_get_current_prl_info_resp_msg_data_v01},
+  {sizeof(dms_bind_subscription_req_msg_v01), dms_bind_subscription_req_msg_data_v01},
+  {sizeof(dms_bind_subscription_resp_msg_v01), dms_bind_subscription_resp_msg_data_v01},
+  {sizeof(dms_get_bind_subscription_req_msg_v01), 0},
+  {sizeof(dms_get_bind_subscription_resp_msg_v01), dms_get_bind_subscription_resp_msg_data_v01},
+  {sizeof(dms_set_ap_sw_version_req_msg_v01), dms_set_ap_sw_version_req_msg_data_v01},
+  {sizeof(dms_set_ap_sw_version_resp_msg_v01), dms_set_ap_sw_version_resp_msg_data_v01},
+  {sizeof(dms_get_cdma_lock_mode_req_msg_v01), 0},
+  {sizeof(dms_get_cdma_lock_mode_resp_msg_v01), dms_get_cdma_lock_mode_resp_msg_data_v01},
+  {sizeof(dms_set_test_config_req_msg_v01), dms_set_test_config_req_msg_data_v01},
+  {sizeof(dms_set_test_config_resp_msg_v01), dms_set_test_config_resp_msg_data_v01},
+  {sizeof(dms_get_test_config_req_msg_v01), 0},
+  {sizeof(dms_get_test_config_resp_msg_v01), dms_get_test_config_resp_msg_data_v01},
+  {sizeof(dms_clear_test_config_req_msg_v01), 0},
+  {sizeof(dms_clear_test_config_resp_msg_v01), dms_clear_test_config_resp_msg_data_v01}
+};
+
+/* Range Table */
+/* No Ranges Defined in IDL */
+
+/* Predefine the Type Table Object */
+static const qmi_idl_type_table_object dms_qmi_idl_type_table_object_v01;
+
+/*Referenced Tables Array*/
+static const qmi_idl_type_table_object *dms_qmi_idl_type_table_object_referenced_tables_v01[] =
+{&dms_qmi_idl_type_table_object_v01, &common_qmi_idl_type_table_object_v01};
+
+/*Type Table Object*/
+static const qmi_idl_type_table_object dms_qmi_idl_type_table_object_v01 = {
+  sizeof(dms_type_table_v01)/sizeof(qmi_idl_type_table_entry ),
+  sizeof(dms_message_table_v01)/sizeof(qmi_idl_message_table_entry),
+  1,
+  dms_type_table_v01,
+  dms_message_table_v01,
+  dms_qmi_idl_type_table_object_referenced_tables_v01,
+  NULL
+};
+
+/*Arrays of service_message_table_entries for commands, responses and indications*/
+static const qmi_idl_service_message_table_entry dms_service_command_messages_v01[] = {
+  {QMI_DMS_RESET_REQ_V01, QMI_IDL_TYPE16(0, 0), 0},
+  {QMI_DMS_SET_EVENT_REPORT_REQ_V01, QMI_IDL_TYPE16(0, 2), 41},
+  {QMI_DMS_GET_SUPPORTED_MSGS_REQ_V01, QMI_IDL_TYPE16(1, 0), 0},
+  {QMI_DMS_GET_SUPPORTED_FIELDS_REQ_V01, QMI_IDL_TYPE16(1, 2), 5},
+  {QMI_DMS_GET_DEVICE_CAP_REQ_V01, QMI_IDL_TYPE16(0, 5), 0},
+  {QMI_DMS_GET_DEVICE_MFR_REQ_V01, QMI_IDL_TYPE16(0, 7), 0},
+  {QMI_DMS_GET_DEVICE_MODEL_ID_REQ_V01, QMI_IDL_TYPE16(0, 9), 0},
+  {QMI_DMS_GET_DEVICE_REV_ID_REQ_V01, QMI_IDL_TYPE16(0, 11), 0},
+  {QMI_DMS_GET_MSISDN_REQ_V01, QMI_IDL_TYPE16(0, 13), 0},
+  {QMI_DMS_GET_DEVICE_SERIAL_NUMBERS_REQ_V01, QMI_IDL_TYPE16(0, 15), 0},
+  {QMI_DMS_GET_POWER_STATE_REQ_V01, QMI_IDL_TYPE16(0, 17), 0},
+  {QMI_DMS_UIM_SET_PIN_PROTECTION_REQ_V01, QMI_IDL_TYPE16(0, 19), 22},
+  {QMI_DMS_UIM_VERIFY_PIN_REQ_V01, QMI_IDL_TYPE16(0, 21), 21},
+  {QMI_DMS_UIM_UNBLOCK_PIN_REQ_V01, QMI_IDL_TYPE16(0, 23), 38},
+  {QMI_DMS_UIM_CHANGE_PIN_REQ_V01, QMI_IDL_TYPE16(0, 25), 38},
+  {QMI_DMS_UIM_GET_PIN_STATUS_REQ_V01, QMI_IDL_TYPE16(0, 27), 0},
+  {QMI_DMS_GET_DEVICE_HARDWARE_REV_REQ_V01, QMI_IDL_TYPE16(0, 29), 0},
+  {QMI_DMS_GET_OPERATING_MODE_REQ_V01, QMI_IDL_TYPE16(0, 31), 0},
+  {QMI_DMS_SET_OPERATING_MODE_REQ_V01, QMI_IDL_TYPE16(0, 33), 4},
+  {QMI_DMS_GET_TIME_REQ_V01, QMI_IDL_TYPE16(0, 35), 0},
+  {QMI_DMS_GET_PRL_VER_REQ_V01, QMI_IDL_TYPE16(0, 37), 0},
+  {QMI_DMS_GET_ACTIVATION_STATE_REQ_V01, QMI_IDL_TYPE16(0, 39), 0},
+  {QMI_DMS_ACTIVATE_AUTOMATIC_REQ_V01, QMI_IDL_TYPE16(0, 41), 85},
+  {QMI_DMS_ACTIVATE_MANUAL_REQ_V01, QMI_IDL_TYPE16(0, 43), 1627},
+  {QMI_DMS_GET_USER_LOCK_STATE_REQ_V01, QMI_IDL_TYPE16(0, 45), 0},
+  {QMI_DMS_SET_USER_LOCK_STATE_REQ_V01, QMI_IDL_TYPE16(0, 47), 8},
+  {QMI_DMS_SET_USER_LOCK_CODE_REQ_V01, QMI_IDL_TYPE16(0, 49), 11},
+  {QMI_DMS_READ_USER_DATA_REQ_V01, QMI_IDL_TYPE16(0, 51), 0},
+  {QMI_DMS_WRITE_USER_DATA_REQ_V01, QMI_IDL_TYPE16(0, 53), 517},
+  {QMI_DMS_READ_ERI_FILE_REQ_V01, QMI_IDL_TYPE16(0, 55), 0},
+  {QMI_DMS_RESTORE_FACTORY_DEFAULTS_REQ_V01, QMI_IDL_TYPE16(0, 57), 9},
+  {QMI_DMS_VALIDATE_SERVICE_PROGRAMMING_CODE_REQ_V01, QMI_IDL_TYPE16(0, 59), 9},
+  {QMI_DMS_UIM_GET_ICCID_REQ_V01, QMI_IDL_TYPE16(0, 61), 0},
+  {QMI_DMS_UIM_GET_CK_STATUS_REQ_V01, QMI_IDL_TYPE16(0, 63), 4},
+  {QMI_DMS_UIM_SET_CK_PROTECTION_REQ_V01, QMI_IDL_TYPE16(0, 65), 14},
+  {QMI_DMS_UIM_UNBLOCK_CK_REQ_V01, QMI_IDL_TYPE16(0, 67), 13},
+  {QMI_DMS_UIM_GET_IMSI_REQ_V01, QMI_IDL_TYPE16(0, 69), 0},
+  {QMI_DMS_UIM_GET_STATE_REQ_V01, QMI_IDL_TYPE16(0, 71), 0},
+  {QMI_DMS_GET_BAND_CAPABILITY_REQ_V01, QMI_IDL_TYPE16(0, 73), 0},
+  {QMI_DMS_GET_FACTORY_SKU_REQ_V01, QMI_IDL_TYPE16(0, 75), 0},
+  {QMI_DMS_SET_TIME_REQ_V01, QMI_IDL_TYPE16(0, 77), 18},
+  {QMI_DMS_GET_ALT_NET_CONFIG_REQ_V01, QMI_IDL_TYPE16(0, 79), 0},
+  {QMI_DMS_SET_ALT_NET_CONFIG_REQ_V01, QMI_IDL_TYPE16(0, 81), 4},
+  {QMI_DMS_GET_SW_VERSION_REQ_V01, QMI_IDL_TYPE16(0, 83), 0},
+  {QMI_DMS_SET_SPC_REQ_V01, QMI_IDL_TYPE16(0, 85), 18},
+  {QMI_DMS_GET_CURRENT_PRL_INFO_REQ_V01, QMI_IDL_TYPE16(0, 87), 0},
+  {QMI_DMS_BIND_SUBSCRIPTION_REQ_V01, QMI_IDL_TYPE16(0, 89), 7},
+  {QMI_DMS_GET_BIND_SUBSCRIPTION_REQ_V01, QMI_IDL_TYPE16(0, 91), 0},
+  {QMI_DMS_SET_AP_SW_VERSION_REQ_V01, QMI_IDL_TYPE16(0, 93), 35},
+  {QMI_DMS_GET_CDMA_LOCK_MODE_REQ_V01, QMI_IDL_TYPE16(0, 95), 0},
+  {QMI_DMS_SET_TEST_CONFIG_REQ_V01, QMI_IDL_TYPE16(0, 97), 7},
+  {QMI_DMS_GET_TEST_CONFIG_REQ_V01, QMI_IDL_TYPE16(0, 99), 0},
+  {QMI_DMS_CLEAR_TEST_CONFIG_REQ_V01, QMI_IDL_TYPE16(0, 101), 0}
+};
+
+static const qmi_idl_service_message_table_entry dms_service_response_messages_v01[] = {
+  {QMI_DMS_RESET_RESP_V01, QMI_IDL_TYPE16(0, 1), 7},
+  {QMI_DMS_SET_EVENT_REPORT_RESP_V01, QMI_IDL_TYPE16(0, 3), 7},
+  {QMI_DMS_GET_SUPPORTED_MSGS_RESP_V01, QMI_IDL_TYPE16(1, 1), 8204},
+  {QMI_DMS_GET_SUPPORTED_FIELDS_RESP_V01, QMI_IDL_TYPE16(1, 3), 115},
+  {QMI_DMS_GET_DEVICE_CAP_RESP_V01, QMI_IDL_TYPE16(0, 6), 1675},
+  {QMI_DMS_GET_DEVICE_MFR_RESP_V01, QMI_IDL_TYPE16(0, 8), 138},
+  {QMI_DMS_GET_DEVICE_MODEL_ID_RESP_V01, QMI_IDL_TYPE16(0, 10), 266},
+  {QMI_DMS_GET_DEVICE_REV_ID_RESP_V01, QMI_IDL_TYPE16(0, 12), 543},
+  {QMI_DMS_GET_MSISDN_RESP_V01, QMI_IDL_TYPE16(0, 14), 112},
+  {QMI_DMS_GET_DEVICE_SERIAL_NUMBERS_RESP_V01, QMI_IDL_TYPE16(0, 16), 370},
+  {QMI_DMS_GET_POWER_STATE_RESP_V01, QMI_IDL_TYPE16(0, 18), 12},
+  {QMI_DMS_UIM_SET_PIN_PROTECTION_RESP_V01, QMI_IDL_TYPE16(0, 20), 12},
+  {QMI_DMS_UIM_VERIFY_PIN_RESP_V01, QMI_IDL_TYPE16(0, 22), 12},
+  {QMI_DMS_UIM_UNBLOCK_PIN_RESP_V01, QMI_IDL_TYPE16(0, 24), 12},
+  {QMI_DMS_UIM_CHANGE_PIN_RESP_V01, QMI_IDL_TYPE16(0, 26), 12},
+  {QMI_DMS_UIM_GET_PIN_STATUS_RESP_V01, QMI_IDL_TYPE16(0, 28), 19},
+  {QMI_DMS_GET_DEVICE_HARDWARE_REV_RESP_V01, QMI_IDL_TYPE16(0, 30), 266},
+  {QMI_DMS_GET_OPERATING_MODE_RESP_V01, QMI_IDL_TYPE16(0, 32), 20},
+  {QMI_DMS_SET_OPERATING_MODE_RESP_V01, QMI_IDL_TYPE16(0, 34), 7},
+  {QMI_DMS_GET_TIME_RESP_V01, QMI_IDL_TYPE16(0, 36), 40},
+  {QMI_DMS_GET_PRL_VER_RESP_V01, QMI_IDL_TYPE16(0, 38), 16},
+  {QMI_DMS_GET_ACTIVATION_STATE_RESP_V01, QMI_IDL_TYPE16(0, 40), 12},
+  {QMI_DMS_ACTIVATE_AUTOMATIC_RESP_V01, QMI_IDL_TYPE16(0, 42), 7},
+  {QMI_DMS_ACTIVATE_MANUAL_RESP_V01, QMI_IDL_TYPE16(0, 44), 7},
+  {QMI_DMS_GET_USER_LOCK_STATE_RESP_V01, QMI_IDL_TYPE16(0, 46), 11},
+  {QMI_DMS_SET_USER_LOCK_STATE_RESP_V01, QMI_IDL_TYPE16(0, 48), 7},
+  {QMI_DMS_SET_USER_LOCK_CODE_RESP_V01, QMI_IDL_TYPE16(0, 50), 7},
+  {QMI_DMS_READ_USER_DATA_RESP_V01, QMI_IDL_TYPE16(0, 52), 524},
+  {QMI_DMS_WRITE_USER_DATA_RESP_V01, QMI_IDL_TYPE16(0, 54), 7},
+  {QMI_DMS_READ_ERI_FILE_RESP_V01, QMI_IDL_TYPE16(0, 56), 1036},
+  {QMI_DMS_RESTORE_FACTORY_DEFAULTS_RESP_V01, QMI_IDL_TYPE16(0, 58), 7},
+  {QMI_DMS_VALIDATE_SERVICE_PROGRAMMING_CODE_RESP_V01, QMI_IDL_TYPE16(0, 60), 7},
+  {QMI_DMS_UIM_GET_ICCID_RESP_V01, QMI_IDL_TYPE16(0, 62), 30},
+  {QMI_DMS_UIM_GET_CK_STATUS_RESP_V01, QMI_IDL_TYPE16(0, 64), 17},
+  {QMI_DMS_UIM_SET_CK_PROTECTION_RESP_V01, QMI_IDL_TYPE16(0, 66), 11},
+  {QMI_DMS_UIM_UNBLOCK_CK_RESP_V01, QMI_IDL_TYPE16(0, 68), 11},
+  {QMI_DMS_UIM_GET_IMSI_RESP_V01, QMI_IDL_TYPE16(0, 70), 42},
+  {QMI_DMS_UIM_GET_STATE_RESP_V01, QMI_IDL_TYPE16(0, 72), 11},
+  {QMI_DMS_GET_BAND_CAPABILITY_RESP_V01, QMI_IDL_TYPE16(0, 74), 40},
+  {QMI_DMS_GET_FACTORY_SKU_RESP_V01, QMI_IDL_TYPE16(0, 76), 138},
+  {QMI_DMS_SET_TIME_RESP_V01, QMI_IDL_TYPE16(0, 78), 7},
+  {QMI_DMS_GET_ALT_NET_CONFIG_RESP_V01, QMI_IDL_TYPE16(0, 80), 11},
+  {QMI_DMS_SET_ALT_NET_CONFIG_RESP_V01, QMI_IDL_TYPE16(0, 82), 7},
+  {QMI_DMS_GET_SW_VERSION_RESP_V01, QMI_IDL_TYPE16(0, 84), 42},
+  {QMI_DMS_SET_SPC_RESP_V01, QMI_IDL_TYPE16(0, 86), 7},
+  {QMI_DMS_GET_CURRENT_PRL_INFO_RESP_V01, QMI_IDL_TYPE16(0, 88), 16},
+  {QMI_DMS_BIND_SUBSCRIPTION_RESP_V01, QMI_IDL_TYPE16(0, 90), 7},
+  {QMI_DMS_GET_BIND_SUBSCRIPTION_RESP_V01, QMI_IDL_TYPE16(0, 92), 14},
+  {QMI_DMS_SET_AP_SW_VERSION_RESP_V01, QMI_IDL_TYPE16(0, 94), 7},
+  {QMI_DMS_GET_CDMA_LOCK_MODE_RESP_V01, QMI_IDL_TYPE16(0, 96), 14},
+  {QMI_DMS_SET_TEST_CONFIG_RESP_V01, QMI_IDL_TYPE16(0, 98), 7},
+  {QMI_DMS_GET_TEST_CONFIG_RESP_V01, QMI_IDL_TYPE16(0, 100), 21},
+  {QMI_DMS_CLEAR_TEST_CONFIG_RESP_V01, QMI_IDL_TYPE16(0, 102), 7}
+};
+
+static const qmi_idl_service_message_table_entry dms_service_indication_messages_v01[] = {
+  {QMI_DMS_EVENT_REPORT_IND_V01, QMI_IDL_TYPE16(0, 4), 1650}
+};
+
+/*Service Object*/
+struct qmi_idl_service_object dms_qmi_idl_service_object_v01 = {
+  0x06,
+  0x01,
+  0x02,
+  8204,
+  { sizeof(dms_service_command_messages_v01)/sizeof(qmi_idl_service_message_table_entry),
+    sizeof(dms_service_response_messages_v01)/sizeof(qmi_idl_service_message_table_entry),
+    sizeof(dms_service_indication_messages_v01)/sizeof(qmi_idl_service_message_table_entry) },
+  { dms_service_command_messages_v01, dms_service_response_messages_v01, dms_service_indication_messages_v01},
+  &dms_qmi_idl_type_table_object_v01,
+  0x1F,
+  NULL
+};
+
+/* Service Object Accessor */
+qmi_idl_service_object_type dms_get_service_object_internal_v01
+ ( int32_t idl_maj_version, int32_t idl_min_version, int32_t library_version ){
+  if ( DMS_V01_IDL_MAJOR_VERS != idl_maj_version || DMS_V01_IDL_MINOR_VERS != idl_min_version
+       || DMS_V01_IDL_TOOL_VERS != library_version)
+  {
+    return NULL;
+  }
+  return (qmi_idl_service_object_type)&dms_qmi_idl_service_object_v01;
+}
+
diff --git a/wcnss-service/device_management_service_v01.h b/wcnss-service/device_management_service_v01.h
new file mode 100644
index 0000000..f696511
--- /dev/null
+++ b/wcnss-service/device_management_service_v01.h
@@ -0,0 +1,3111 @@
+#ifndef DMS_SERVICE_01_H
+#define DMS_SERVICE_01_H
+/**
+  @file device_management_service_v01.h
+
+  @brief This is the public header file which defines the dms service Data structures.
+
+  This header file defines the types and structures that were defined in
+  dms. It contains the constant values defined, enums, structures,
+  messages, and service message IDs (in that order) Structures that were
+  defined in the IDL as messages contain mandatory elements, optional
+  elements, a combination of mandatory and optional elements (mandatory
+  always come before optionals in the structure), or nothing (null message)
+
+  An optional element in a message is preceded by a uint8_t value that must be
+  set to true if the element is going to be included. When decoding a received
+  message, the uint8_t values will be set to true or false by the decode
+  routine, and should be checked before accessing the values that they
+  correspond to.
+
+  Variable sized arrays are defined as static sized arrays with an unsigned
+  integer (32 bit) preceding it that must be set to the number of elements
+  in the array that are valid. For Example:
+
+  uint32_t test_opaque_len;
+  uint8_t test_opaque[16];
+
+  If only 4 elements are added to test_opaque[] then test_opaque_len must be
+  set to 4 before sending the message.  When decoding, the _len value is set
+  by the decode routine and should be checked so that the correct number of
+  elements in the array will be accessed.
+
+*/
+/*====*====*====*====*====*====*====*====*====*====*====*====*====*====*====*
+  Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+  SPDX-License-Identifier: BSD-3-Clause-Clear
+
+  $Header$
+ *====*====*====*====*====*====*====*====*====*====*====*====*====*====*====*/
+/*====*====*====*====*====*====*====*====*====*====*====*====*====*====*====*
+ *THIS IS AN AUTO GENERATED FILE. DO NOT ALTER IN ANY WAY
+ *====*====*====*====*====*====*====*====*====*====*====*====*====*====*====*/
+
+/* This file was generated with Tool version 6.2
+   It was generated on: Fri Oct 25 2013 (Spin 0)
+   From IDL File: device_management_service_v01.idl */
+
+/** @defgroup dms_qmi_consts Constant values defined in the IDL */
+/** @defgroup dms_qmi_msg_ids Constant values for QMI message IDs */
+/** @defgroup dms_qmi_enums Enumerated types used in QMI messages */
+/** @defgroup dms_qmi_messages Structures sent as QMI messages */
+/** @defgroup dms_qmi_aggregates Aggregate types used in QMI messages */
+/** @defgroup dms_qmi_accessor Accessor for QMI service object */
+/** @defgroup dms_qmi_version Constant values for versioning information */
+
+#include <stdint.h>
+#include "qmi_idl_lib.h"
+#include "common_v01.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/** @addtogroup dms_qmi_version
+    @{
+  */
+/** Major Version Number of the IDL used to generate this file */
+#define DMS_V01_IDL_MAJOR_VERS 0x01
+/** Revision Number of the IDL used to generate this file */
+#define DMS_V01_IDL_MINOR_VERS 0x1F
+/** Major Version Number of the qmi_idl_compiler used to generate this file */
+#define DMS_V01_IDL_TOOL_VERS 0x06
+/** Maximum Defined Message ID */
+#define DMS_V01_MAX_MESSAGE_ID 0x005A;
+/**
+    @}
+  */
+
+
+/** @addtogroup dms_qmi_consts
+    @{
+  */
+#define QMI_DMS_POWER_SOURCE_BATTERY_V01 0
+#define QMI_DMS_POWER_SOURCE_EXT_SOURCE_V01 1
+#define QMI_DMS_RADIO_IF_LIST_MAX_V01 20
+#define QMI_DMS_DEVICE_MANUFACTURER_MAX_V01 128
+#define QMI_DMS_DEVICE_MODEL_ID_MAX_V01 256
+#define QMI_DMS_DEVICE_REV_ID_MAX_V01 256
+#define QMI_DMS_VOICE_NUMBER_MAX_V01 32
+#define QMI_DMS_MOBILE_ID_NUMBER_MAX_V01 32
+#define QMI_DMS_ESN_MAX_V01 32
+#define QMI_DMS_IMEI_MAX_V01 32
+#define QMI_DMS_MEID_MAX_V01 32
+#define QMI_DMS_PUK_VALUE_MAX_V01 16
+#define QMI_DMS_PIN_VALUE_MAX_V01 16
+#define QMI_DMS_HARDWARE_REV_MAX_V01 256
+#define QMI_DMS_UIM_ID_MAX_V01 20
+#define QMI_DMS_FACILITY_CK_MAX_V01 8
+#define QMI_DMS_FACILITY_UNBLOCK_CK_MAX_V01 8
+#define QMI_DMS_IMSI_MAX_V01 32
+#define QMI_DMS_BOOT_CODE_REV_MAX_V01 255
+#define QMI_DMS_PRI_REV_MAX_V01 16
+#define QMI_DMS_IMEISV_MAX_V01 255
+#define QMI_DMS_SW_VERSION_MAX_V01 32
+#define QMI_DMS_SPC_LEN_V01 6
+#define QMI_DMS_LOCK_CODE_LEN_V01 4
+#define QMI_DMS_MDN_MAX_V01 15
+#define QMI_DMS_MIN_MAX_V01 15
+#define QMI_DMS_HA_KEY_MAX_V01 16
+#define QMI_DMS_AAA_KEY_MAX_V01 16
+#define QMI_DMS_USER_DATA_MAX_V01 512
+#define QMI_DMS_ERI_DATA_MAX_V01 1024
+#define QMI_DMS_PRL_DATA_MAX_V01 1536
+#define QMI_DMS_FACTORY_SN_MAX_V01 128
+#define QMI_DMS_ACTIVATION_CODE_MAX_V01 81
+#define QMI_DMS_MAX_CONFIG_LIST_LEN_V01 32
+#define QMI_DMS_MAX_SUBSCRIPTION_LIST_LEN_V01 6
+/**
+    @}
+  */
+
+typedef uint8_t dms_power_status_mask_v01;
+#define QMI_DMS_MASK_POWER_SOURCE_V01 ((dms_power_status_mask_v01)0x01)
+#define QMI_DMS_MASK_BATTERY_CONNECTED_V01 ((dms_power_status_mask_v01)0x02)
+#define QMI_DMS_MASK_BATTERY_CHARGING_V01 ((dms_power_status_mask_v01)0x04)
+#define QMI_DMS_MASK_POWER_FAULT_V01 ((dms_power_status_mask_v01)0x08)
+typedef uint16_t dms_offline_reason_mask_v01;
+#define QMI_DMS_MASK_OFFLINE_REASON_HOST_IMAGE_V01 ((dms_offline_reason_mask_v01)0x0001)
+#define QMI_DMS_MASK_OFFLINE_REASON_PRI_IMAGE_V01 ((dms_offline_reason_mask_v01)0x0002)
+#define QMI_DMS_MASK_OFFLINE_REASON_PRI_VERSION_V01 ((dms_offline_reason_mask_v01)0x0004)
+#define QMI_DMS_MASK_OFFLINE_REASON_DEVICE_MEMORY_V01 ((dms_offline_reason_mask_v01)0x0008)
+typedef uint64_t dms_band_capability_mask_v01;
+#define QMI_DMS_MASK_BAND_PREF_BC0_A_V01 ((dms_band_capability_mask_v01)0x0000000000000001ull)
+#define QMI_DMS_MASK_BAND_PREF_BC0_B_V01 ((dms_band_capability_mask_v01)0x0000000000000002ull)
+#define QMI_DMS_MASK_BAND_PREF_BC1_V01 ((dms_band_capability_mask_v01)0x0000000000000004ull)
+#define QMI_DMS_MASK_BAND_PREF_BC2_V01 ((dms_band_capability_mask_v01)0x0000000000000008ull)
+#define QMI_DMS_MASK_BAND_PREF_BC3_V01 ((dms_band_capability_mask_v01)0x0000000000000010ull)
+#define QMI_DMS_MASK_BAND_PREF_BC4_V01 ((dms_band_capability_mask_v01)0x0000000000000020ull)
+#define QMI_DMS_MASK_BAND_PREF_BC5_V01 ((dms_band_capability_mask_v01)0x0000000000000040ull)
+#define QMI_DMS_MASK_BAND_PREF_GSM_DCS_1800_V01 ((dms_band_capability_mask_v01)0x0000000000000080ull)
+#define QMI_DMS_MASK_BAND_PREF_GSM_EGSM_900_V01 ((dms_band_capability_mask_v01)0x0000000000000100ull)
+#define QMI_DMS_MASK_BAND_PREF_GSM_PGSM_900_V01 ((dms_band_capability_mask_v01)0x0000000000000200ull)
+#define QMI_DMS_MASK_BAND_PREF_BC6_V01 ((dms_band_capability_mask_v01)0x0000000000000400ull)
+#define QMI_DMS_MASK_BAND_PREF_BC7_V01 ((dms_band_capability_mask_v01)0x0000000000000800ull)
+#define QMI_DMS_MASK_BAND_PREF_BC8_V01 ((dms_band_capability_mask_v01)0x0000000000001000ull)
+#define QMI_DMS_MASK_BAND_PREF_BC9_V01 ((dms_band_capability_mask_v01)0x0000000000002000ull)
+#define QMI_DMS_MASK_BAND_PREF_BC10_V01 ((dms_band_capability_mask_v01)0x0000000000004000ull)
+#define QMI_DMS_MASK_BAND_PREF_BC11_V01 ((dms_band_capability_mask_v01)0x0000000000008000ull)
+#define QMI_DMS_MASK_BAND_PREF_GSM_450_V01 ((dms_band_capability_mask_v01)0x0000000000010000ull)
+#define QMI_DMS_MASK_BAND_PREF_GSM_480_V01 ((dms_band_capability_mask_v01)0x0000000000020000ull)
+#define QMI_DMS_MASK_BAND_PREF_GSM_750_V01 ((dms_band_capability_mask_v01)0x0000000000040000ull)
+#define QMI_DMS_MASK_BAND_PREF_GSM_850_V01 ((dms_band_capability_mask_v01)0x0000000000080000ull)
+#define QMI_DMS_MASK_BAND_PREF_GSM_RGSM_900_V01 ((dms_band_capability_mask_v01)0x0000000000100000ull)
+#define QMI_DMS_MASK_BAND_PREF_GSM_PCS_1900_V01 ((dms_band_capability_mask_v01)0x0000000000200000ull)
+#define QMI_DMS_MASK_BAND_PREF_WCDMA_IMT_2100_V01 ((dms_band_capability_mask_v01)0x0000000000400000ull)
+#define QMI_DMS_MASK_BAND_PREF_WCDMA_PCS_1900_V01 ((dms_band_capability_mask_v01)0x0000000000800000ull)
+#define QMI_DMS_MASK_BAND_PREF_WCDMA_1800_V01 ((dms_band_capability_mask_v01)0x0000000001000000ull)
+#define QMI_DMS_MASK_BAND_PREF_WCDMA_1700_US_V01 ((dms_band_capability_mask_v01)0x0000000002000000ull)
+#define QMI_DMS_MASK_BAND_PREF_WCDMA_850_V01 ((dms_band_capability_mask_v01)0x0000000004000000ull)
+#define QMI_DMS_MASK_BAND_PREF_WCDMA_800_V01 ((dms_band_capability_mask_v01)0x0000000008000000ull)
+#define QMI_DMS_MASK_BAND_PREF_BC12_V01 ((dms_band_capability_mask_v01)0x0000000010000000ull)
+#define QMI_DMS_MASK_BAND_PREF_B14_V01 ((dms_band_capability_mask_v01)0x0000000020000000ull)
+#define QMI_DMS_MASK_BAND_PREF_B15_V01 ((dms_band_capability_mask_v01)0x0000000080000000ull)
+#define QMI_DMS_MASK_BAND_PREF_WCDMA_2600_V01 ((dms_band_capability_mask_v01)0x0001000000000000ull)
+#define QMI_DMS_MASK_BAND_PREF_WCDMA_900_V01 ((dms_band_capability_mask_v01)0x0002000000000000ull)
+#define QMI_DMS_MASK_BAND_PREF_WCDMA_1700_JPN_V01 ((dms_band_capability_mask_v01)0x0004000000000000ull)
+#define QMI_DMS_MASK_BAND_PREF_BC16_V01 ((dms_band_capability_mask_v01)0x0100000000000000ull)
+#define QMI_DMS_MASK_BAND_PREF_BC17_V01 ((dms_band_capability_mask_v01)0x0200000000000000ull)
+#define QMI_DMS_MASK_BAND_PREF_BC18_V01 ((dms_band_capability_mask_v01)0x0400000000000000ull)
+#define QMI_DMS_MASK_BAND_PREF_BC19_V01 ((dms_band_capability_mask_v01)0x0800000000000000ull)
+#define QMI_DMS_MASK_BAND_PREF_WCDMA_XIX_850_V01 ((dms_band_capability_mask_v01)0x1000000000000000ull)
+#define QMI_DMS_MASK_BAND_PREF_WCDMA_XI_1500_V01 ((dms_band_capability_mask_v01)0x2000000000000000ull)
+typedef uint64_t dms_lte_band_capability_mask_v01;
+#define QMI_DMS_MASK_BAND_PREF_LTE_EB1_V01 ((dms_lte_band_capability_mask_v01)0x0000000000000001ull)
+#define QMI_DMS_MASK_BAND_PREF_LTE_EB2_V01 ((dms_lte_band_capability_mask_v01)0x0000000000000002ull)
+#define QMI_DMS_MASK_BAND_PREF_LTE_EB3_V01 ((dms_lte_band_capability_mask_v01)0x0000000000000004ull)
+#define QMI_DMS_MASK_BAND_PREF_LTE_EB4_V01 ((dms_lte_band_capability_mask_v01)0x0000000000000008ull)
+#define QMI_DMS_MASK_BAND_PREF_LTE_EB5_V01 ((dms_lte_band_capability_mask_v01)0x0000000000000010ull)
+#define QMI_DMS_MASK_BAND_PREF_LTE_EB6_V01 ((dms_lte_band_capability_mask_v01)0x0000000000000020ull)
+#define QMI_DMS_MASK_BAND_PREF_LTE_EB7_V01 ((dms_lte_band_capability_mask_v01)0x0000000000000040ull)
+#define QMI_DMS_MASK_BAND_PREF_LTE_EB8_V01 ((dms_lte_band_capability_mask_v01)0x0000000000000080ull)
+#define QMI_DMS_MASK_BAND_PREF_LTE_EB9_V01 ((dms_lte_band_capability_mask_v01)0x0000000000000100ull)
+#define QMI_DMS_MASK_BAND_PREF_LTE_EB10_V01 ((dms_lte_band_capability_mask_v01)0x0000000000000200ull)
+#define QMI_DMS_MASK_BAND_PREF_LTE_EB11_V01 ((dms_lte_band_capability_mask_v01)0x0000000000000400ull)
+#define QMI_DMS_MASK_BAND_PREF_LTE_EB12_V01 ((dms_lte_band_capability_mask_v01)0x0000000000000800ull)
+#define QMI_DMS_MASK_BAND_PREF_LTE_EB13_V01 ((dms_lte_band_capability_mask_v01)0x0000000000001000ull)
+#define QMI_DMS_MASK_BAND_PREF_LTE_EB14_V01 ((dms_lte_band_capability_mask_v01)0x0000000000002000ull)
+#define QMI_DMS_MASK_BAND_PREF_LTE_EB17_V01 ((dms_lte_band_capability_mask_v01)0x0000000000010000ull)
+#define QMI_DMS_MASK_BAND_PREF_LTE_EB18_V01 ((dms_lte_band_capability_mask_v01)0x0000000000020000ull)
+#define QMI_DMS_MASK_BAND_PREF_LTE_EB19_V01 ((dms_lte_band_capability_mask_v01)0x0000000000040000ull)
+#define QMI_DMS_MASK_BAND_PREF_LTE_EB20_V01 ((dms_lte_band_capability_mask_v01)0x0000000000080000ull)
+#define QMI_DMS_MASK_BAND_PREF_LTE_EB21_V01 ((dms_lte_band_capability_mask_v01)0x0000000000100000ull)
+#define QMI_DMS_MASK_BAND_PREF_LTE_EB23_V01 ((dms_lte_band_capability_mask_v01)0x0000000000400000ull)
+#define QMI_DMS_MASK_BAND_PREF_LTE_EB24_V01 ((dms_lte_band_capability_mask_v01)0x0000000000800000ull)
+#define QMI_DMS_MASK_BAND_PREF_LTE_EB25_V01 ((dms_lte_band_capability_mask_v01)0x0000000001000000ull)
+#define QMI_DMS_MASK_BAND_PREF_LTE_EB26_V01 ((dms_lte_band_capability_mask_v01)0x0000000002000000ull)
+#define QMI_DMS_MASK_BAND_PREF_LTE_EB28_V01 ((dms_lte_band_capability_mask_v01)0x0000000008000000ull)
+#define QMI_DMS_MASK_BAND_PREF_LTE_EB29_V01 ((dms_lte_band_capability_mask_v01)0x0000000010000000ull)
+#define QMI_DMS_MASK_BAND_PREF_LTE_EB30_V01 ((dms_lte_band_capability_mask_v01)0x0000000020000000ull)
+#define QMI_DMS_MASK_BAND_PREF_LTE_EB33_V01 ((dms_lte_band_capability_mask_v01)0x0000000100000000ull)
+#define QMI_DMS_MASK_BAND_PREF_LTE_EB34_V01 ((dms_lte_band_capability_mask_v01)0x0000000200000000ull)
+#define QMI_DMS_MASK_BAND_PREF_LTE_EB35_V01 ((dms_lte_band_capability_mask_v01)0x0000000400000000ull)
+#define QMI_DMS_MASK_BAND_PREF_LTE_EB36_V01 ((dms_lte_band_capability_mask_v01)0x0000000800000000ull)
+#define QMI_DMS_MASK_BAND_PREF_LTE_EB37_V01 ((dms_lte_band_capability_mask_v01)0x0000001000000000ull)
+#define QMI_DMS_MASK_BAND_PREF_LTE_EB38_V01 ((dms_lte_band_capability_mask_v01)0x0000002000000000ull)
+#define QMI_DMS_MASK_BAND_PREF_LTE_EB39_V01 ((dms_lte_band_capability_mask_v01)0x0000004000000000ull)
+#define QMI_DMS_MASK_BAND_PREF_LTE_EB40_V01 ((dms_lte_band_capability_mask_v01)0x0000008000000000ull)
+#define QMI_DMS_MASK_BAND_PREF_LTE_EB41_V01 ((dms_lte_band_capability_mask_v01)0x0000010000000000ull)
+#define QMI_DMS_MASK_BAND_PREF_LTE_EB42_V01 ((dms_lte_band_capability_mask_v01)0x0000020000000000ull)
+#define QMI_DMS_MASK_BAND_PREF_LTE_EB43_V01 ((dms_lte_band_capability_mask_v01)0x0000040000000000ull)
+typedef uint64_t dms_tds_band_capability_mask_v01;
+#define QMI_DMS_MASK_BAND_PREF_TDS_BANDA_V01 ((dms_tds_band_capability_mask_v01)0x0000000000000001ull)
+#define QMI_DMS_MASK_BAND_PREF_TDS_BANDB_V01 ((dms_tds_band_capability_mask_v01)0x0000000000000002ull)
+#define QMI_DMS_MASK_BAND_PREF_TDS_BANDC_V01 ((dms_tds_band_capability_mask_v01)0x0000000000000004ull)
+#define QMI_DMS_MASK_BAND_PREF_TDS_BANDD_V01 ((dms_tds_band_capability_mask_v01)0x0000000000000008ull)
+#define QMI_DMS_MASK_BAND_PREF_TDS_BANDE_V01 ((dms_tds_band_capability_mask_v01)0x0000000000000010ull)
+#define QMI_DMS_MASK_BAND_PREF_TDS_BANDF_V01 ((dms_tds_band_capability_mask_v01)0x0000000000000020ull)
+typedef struct {
+  /* This element is a placeholder to prevent the declaration of
+     an empty struct.  DO NOT USE THIS FIELD UNDER ANY CIRCUMSTANCE */
+  char __placeholder;
+}dms_reset_req_msg_v01;
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Resets the DMS state variables of the requesting
+           control point. */
+typedef struct {
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+}dms_reset_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_aggregates
+    @{
+  */
+typedef struct {
+
+  uint8_t battery_lvl_lower_limit;
+  /**<   The battery level is reported to the control point if the battery
+       level falls below this lower limit (specified as percentage of
+       remaining battery power from 0 to 100).
+  */
+
+  uint8_t battery_lvl_upper_limit;
+  /**<   The battery level is reported to the control point if the battery
+       level rises above the upper limit (specified as percentage of
+       remaining battery power from 0 to 100).
+   */
+}dms_battery_lvl_limits_type_v01;  /* Type */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Request Message; Sets the device management state reporting conditions
+           for the requesting control point. */
+typedef struct {
+
+  /* Optional */
+  /*  Power State Reporting  */
+  uint8_t report_power_state_valid;  /**< Must be set to true if report_power_state is being passed */
+  uint8_t report_power_state;
+  /**<   Values: \n
+       - 0 -- Do not report \n
+       - 1 -- Report on change in power state
+  */
+
+  /* Optional */
+  /*  Battery Level Report Limits */
+  uint8_t lvl_limits_valid;  /**< Must be set to true if lvl_limits is being passed */
+  dms_battery_lvl_limits_type_v01 lvl_limits;
+
+  /* Optional */
+  /*  PIN State Reporting */
+  uint8_t report_pin_state_valid;  /**< Must be set to true if report_pin_state is being passed */
+  uint8_t report_pin_state;
+  /**<   Values: \n
+       - 0 -- Do not report \n
+       - 1 -- Report on change in PIN state
+  */
+
+  /* Optional */
+  /*  Activation State Reporting */
+  uint8_t report_activation_state_valid;  /**< Must be set to true if report_activation_state is being passed */
+  uint8_t report_activation_state;
+  /**<   Values: \n
+       - 0 -- Do not report \n
+       - 1 -- Report activation state changes
+  */
+
+  /* Optional */
+  /*  Operating Mode Reporting */
+  uint8_t report_oprt_mode_state_valid;  /**< Must be set to true if report_oprt_mode_state is being passed */
+  uint8_t report_oprt_mode_state;
+  /**<   Values: \n
+       - 0 -- Do not report \n
+       - 1 -- Report operating mode changes
+  */
+
+  /* Optional */
+  /*  UIM State Reporting */
+  uint8_t report_uim_state_valid;  /**< Must be set to true if report_uim_state is being passed */
+  uint8_t report_uim_state;
+  /**<   Values: \n
+       - 0 -- Do not report \n
+       - 1 -- Report UIM state changes
+  */
+
+  /* Optional */
+  /*  Wireless Disable State Reporting */
+  uint8_t report_wireless_disable_state_valid;  /**< Must be set to true if report_wireless_disable_state is being passed */
+  uint8_t report_wireless_disable_state;
+  /**<   Values: \n
+       - 0 -- Do not report \n
+       - 1 -- Report wireless disable state changes
+  */
+
+  /* Optional */
+  /*  PRL Init Reporting */
+  uint8_t report_prl_init_valid;  /**< Must be set to true if report_prl_init is being passed */
+  uint8_t report_prl_init;
+  /**<   Values: \n
+       - 0 -- Do not report \n
+       - 1 -- Report PRL initialized notification
+  */
+
+  /* Optional */
+  /*  CDMA Lock Mode Reporting */
+  uint8_t report_cdma_lock_mode_valid;  /**< Must be set to true if report_cdma_lock_mode is being passed */
+  uint8_t report_cdma_lock_mode;
+  /**<   Values: \n
+       - 0 -- Do not report (default value) \n
+       - 1 -- Report CDMA Lock mode state changes
+  */
+
+  /* Optional */
+  /*  Device Multisim info */
+  uint8_t report_device_multisim_info_valid;  /**< Must be set to true if report_device_multisim_info is being passed */
+  uint8_t report_device_multisim_info;
+  /**<   Values: \n
+       - 0 -- Do not report (default value) \n
+       - 1 -- Report device multisim changes
+  */
+}dms_set_event_report_req_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Sets the device management state reporting conditions
+           for the requesting control point. */
+typedef struct {
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+}dms_set_event_report_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_aggregates
+    @{
+  */
+typedef struct {
+
+  dms_power_status_mask_v01 power_status;
+  /**<   Power status flags. Values:  \n
+       Bit 0 -- Power source  \n
+       - 0 -- Powered by battery \n
+       - 1 -- Powered by external source \n
+
+       Bit 1 -- Battery connected \n
+       - 0 -- Not connected \n
+       - 1 -- Connected \n
+
+       Bit 2 -- Battery charging \n
+       - 0 -- Not charging \n
+       - 1 -- Charging \n
+
+       Bit 3 -- Power fault \n
+       - 0 -- No power fault \n
+       - 1 -- Recognized power fault, calls inhibited
+  */
+
+  uint8_t battery_lvl;
+  /**<   Level of the battery. Values: \n
+       - 0x00 -- Battery is exhausted or the mobile device does not have a
+                battery connected \n
+       - 1 through 100 (0x64) -- Percentage of battery capacity remaining
+  */
+}dms_power_state_type_v01;  /* Type */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_enums
+    @{
+  */
+typedef enum {
+  DMS_PIN_STATUS_ENUM_MIN_ENUM_VAL_V01 = -2147483647, /**< To force a 32 bit signed enum.  Do not change or use*/
+  DMS_PIN_STATUS_NOT_INITIALIZED_V01 = 0x00,
+  DMS_PIN_STATUS_ENABLED_NOT_VERIFIED_V01 = 0x01,
+  DMS_PIN_STATUS_ENABLED_VERIFIED_V01 = 0x02,
+  DMS_PIN_STATUS_DISABLED_V01 = 0x03,
+  DMS_PIN_STATUS_BLOCKED_V01 = 0x04,
+  DMS_PIN_STATUS_PERMANENTLY_BLOCKED_V01 = 0x05,
+  DMS_PIN_STATUS_UNBLOCKED_V01 = 0x06,
+  DMS_PIN_STATUS_CHANGED_V01 = 0x07,
+  DMS_PIN_STATUS_ENUM_MAX_ENUM_VAL_V01 = 2147483647 /**< To force a 32 bit signed enum.  Do not change or use*/
+}dms_pin_status_enum_v01;
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_aggregates
+    @{
+  */
+typedef struct {
+
+  dms_pin_status_enum_v01 status;
+  /**<   Current status of the PIN. Values: \n
+       - 0 -- PIN is not initialized \n
+       - 1 -- PIN is enabled, not verified \n
+       - 2 -- PIN is enabled, verified \n
+       - 3 -- PIN is disabled \n
+       - 4 -- PIN is blocked \n
+       - 5 -- PIN is permanently blocked \n
+       - 6 -- PIN is unblocked \n
+       - 7 -- PIN is changed
+  */
+
+  uint8_t verify_retries_left;
+  /**<   Number of retries left, after which the PIN is blocked. */
+
+  uint8_t unblock_retries_left;
+  /**<   Number of unblock retries left, after which the PIN is
+       permanently blocked, i.e., the UIM is unusable.
+  */
+}dms_pin_status_type_v01;  /* Type */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_enums
+    @{
+  */
+typedef enum {
+  DMS_OPERATING_MODE_ENUM_MIN_ENUM_VAL_V01 = -2147483647, /**< To force a 32 bit signed enum.  Do not change or use*/
+  DMS_OP_MODE_ONLINE_V01 = 0x00,
+  DMS_OP_MODE_LOW_POWER_V01 = 0x01,
+  DMS_OP_MODE_FACTORY_TEST_MODE_V01 = 0x02,
+  DMS_OP_MODE_OFFLINE_V01 = 0x03,
+  DMS_OP_MODE_RESETTING_V01 = 0x04,
+  DMS_OP_MODE_SHUTTING_DOWN_V01 = 0x05,
+  DMS_OP_MODE_PERSISTENT_LOW_POWER_V01 = 0x06,
+  DMS_OP_MODE_MODE_ONLY_LOW_POWER_V01 = 0x07,
+  DMS_OP_MODE_NET_TEST_GW_V01 = 0x08,
+  DMS_OPERATING_MODE_ENUM_MAX_ENUM_VAL_V01 = 2147483647 /**< To force a 32 bit signed enum.  Do not change or use*/
+}dms_operating_mode_enum_v01;
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_enums
+    @{
+  */
+typedef enum {
+  DMS_UIM_STATE_ENUM_MIN_ENUM_VAL_V01 = -2147483647, /**< To force a 32 bit signed enum.  Do not change or use*/
+  DMS_UIM_INITIALIZATION_COMPLETED_V01 = 0x00,
+  DMS_UIM_INITIALIZATION_FAILED_V01 = 0x01,
+  DMS_UIM_NOT_PRESENT_V01 = 0x02,
+  DMS_UIM_STATE_UNAVAILABLE_V01 = -1,
+  DMS_UIM_STATE_ENUM_MAX_ENUM_VAL_V01 = 2147483647 /**< To force a 32 bit signed enum.  Do not change or use*/
+}dms_uim_state_enum_v01;
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_enums
+    @{
+  */
+typedef enum {
+  DMS_ACTIVATION_STATE_ENUM_MIN_ENUM_VAL_V01 = -2147483647, /**< To force a 32 bit signed enum.  Do not change or use*/
+  DMS_ACTIVATION_NOT_ACTIVATED_V01 = 0x00,
+  DMS_ACTIVATION_ACTIVATED_V01 = 0x01,
+  DMS_ACTIVATION_CONNECTING_V01 = 0x02,
+  DMS_ACTIVATION_CONNECTED_V01 = 0x03,
+  DMS_ACTIVATION_OTASP_SEC_AUTHENTICATED_V01 = 0x4,
+  DMS_ACTIVATION_OTASP_NAM_DOWNLOADED_V01 = 0x05,
+  DMS_ACTIVATION_OTASP_MDN_DOWNLOADED_V01 = 0x06,
+  DMS_ACTIVATION_OTASP_IMSI_DOWNLOADED_V01 = 0x07,
+  DMS_ACTIVATION_OTASP_PRL_DOWNLOADED_V01 = 0x08,
+  DMS_ACTIVATION_OTASP_SPC_DOWNLOADED_V01 = 0x09,
+  DMS_ACTIVATION_OTASP_SETTINGS_COMMITTED_V01 = 0x0A,
+  DMS_ACTIVATION_STATE_ENUM_MAX_ENUM_VAL_V01 = 2147483647 /**< To force a 32 bit signed enum.  Do not change or use*/
+}dms_activation_state_enum_v01;
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_enums
+    @{
+  */
+typedef enum {
+  DMS_WIRELESS_DISABLE_STATE_ENUM_MIN_ENUM_VAL_V01 = -2147483647, /**< To force a 32 bit signed enum.  Do not change or use*/
+  DMS_WIRELESS_DISABLE_OFF_V01 = 0x00,
+  DMS_WIRELESS_DISABLE_ON_V01 = 0x01,
+  DMS_WIRELESS_DISABLE_STATE_ENUM_MAX_ENUM_VAL_V01 = 2147483647 /**< To force a 32 bit signed enum.  Do not change or use*/
+}dms_wireless_disable_state_enum_v01;
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_enums
+    @{
+  */
+typedef enum {
+  DMS_PRL_INIT_ENUM_MIN_ENUM_VAL_V01 = -2147483647, /**< To force a 32 bit signed enum.  Do not change or use*/
+  DMS_PRL_INIT_COMPLETED_V01 = 0x01,
+  DMS_PRL_INIT_ENUM_MAX_ENUM_VAL_V01 = 2147483647 /**< To force a 32 bit signed enum.  Do not change or use*/
+}dms_prl_init_enum_v01;
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_enums
+    @{
+  */
+typedef enum {
+  DMS_CDMA_LOCK_MODE_STATE_ENUM_MIN_ENUM_VAL_V01 = -2147483647, /**< To force a 32 bit signed enum.  Do not change or use*/
+  DMS_CDMA_LOCK_MODE_OFF_V01 = 0, /**<  Phone is not CDMA locked  */
+  DMS_CDMA_LOCK_MODE_ON_V01 = 1, /**<  Phone is CDMA locked  */
+  DMS_CDMA_LOCK_MODE_STATE_ENUM_MAX_ENUM_VAL_V01 = 2147483647 /**< To force a 32 bit signed enum.  Do not change or use*/
+}dms_cdma_lock_mode_state_enum_v01;
+/**
+    @}
+  */
+
+typedef uint64_t dms_subs_capability_mask_type_v01;
+#define DMS_SUBS_CAPABILITY_AMPS_V01 ((dms_subs_capability_mask_type_v01)0x00000001ull)
+#define DMS_SUBS_CAPABILITY_CDMA_V01 ((dms_subs_capability_mask_type_v01)0x00000002ull)
+#define DMS_SUBS_CAPABILITY_HDR_V01 ((dms_subs_capability_mask_type_v01)0x00000004ull)
+#define DMS_SUBS_CAPABILITY_GSM_V01 ((dms_subs_capability_mask_type_v01)0x00000008ull)
+#define DMS_SUBS_CAPABILITY_WCDMA_V01 ((dms_subs_capability_mask_type_v01)0x00000010ull)
+#define DMS_SUBS_CAPABILITY_LTE_V01 ((dms_subs_capability_mask_type_v01)0x00000020ull)
+#define DMS_SUBS_CAPABILITY_TDS_V01 ((dms_subs_capability_mask_type_v01)0x00000040ull)
+#define DMS_SUBS_CAPABILTIY_SGLTE_V01 ((dms_subs_capability_mask_type_v01)0x00000080ull)
+#define DMS_SUBS_CAPABILTIY_SVLTE_V01 ((dms_subs_capability_mask_type_v01)0x00000100ull)
+#define DMS_SUBS_CAPABILITY_SVDO_V01 ((dms_subs_capability_mask_type_v01)0x00000200ull)
+/** @addtogroup dms_qmi_aggregates
+    @{
+  */
+typedef struct {
+
+  uint8_t max_active;
+  /**<   The maximum number of subscriptions listed in this configuration that can be
+       simultaneously active. If this number is less than max_subscriptions it implies
+       that any combination of the subscriptions in this configuration can be active
+       and the remaining can be in standby */
+
+  uint32_t subscription_list_len;  /**< Must be set to # of elements in subscription_list */
+  dms_subs_capability_mask_type_v01 subscription_list[QMI_DMS_MAX_SUBSCRIPTION_LIST_LEN_V01];
+  /**<   An array of max_subscriptions entries where each entry is a mask of capabilities.
+ The client ignores any bits in the mask that it does not recognize. Values:
+      - DMS_SUBS_CAPABILITY_AMPS (0x00000001) --
+      - DMS_SUBS_CAPABILITY_CDMA (0x00000002) --
+      - DMS_SUBS_CAPABILITY_HDR (0x00000004) --
+      - DMS_SUBS_CAPABILITY_GSM (0x00000008) --
+      - DMS_SUBS_CAPABILITY_WCDMA (0x00000010) --
+      - DMS_SUBS_CAPABILITY_LTE (0x00000020) --
+      - DMS_SUBS_CAPABILITY_TDS (0x00000040) --
+      - DMS_SUBS_CAPABILTIY_SGLTE (0x00000080) --
+      - DMS_SUBS_CAPABILTIY_SVLTE (0x00000100) --
+      - DMS_SUBS_CAPABILITY_SVDO (0x00000200) --  */
+}dms_subs_config_type_v01;  /* Type */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_aggregates
+    @{
+  */
+typedef struct {
+
+  uint8_t max_subscriptions;
+  /**<   The maximum number of subscriptions that can be supported simultaneously. */
+
+  uint32_t subscription_config_list_len;  /**< Must be set to # of elements in subscription_config_list */
+  dms_subs_config_type_v01 subscription_config_list[QMI_DMS_MAX_CONFIG_LIST_LEN_V01];
+  /**<   List of supported multi-SIM configurations. */
+}dms_multisim_capability_type_v01;  /* Type */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Indication Message; Sets the device management state reporting conditions
+           for the requesting control point. */
+typedef struct {
+
+  /* Optional */
+  /*  Power State */
+  uint8_t power_state_valid;  /**< Must be set to true if power_state is being passed */
+  dms_power_state_type_v01 power_state;
+
+  /* Optional */
+  /*  PIN 1 Status */
+  uint8_t pin1_status_valid;  /**< Must be set to true if pin1_status is being passed */
+  dms_pin_status_type_v01 pin1_status;
+
+  /* Optional */
+  /*  PIN 2 Status */
+  uint8_t pin2_status_valid;  /**< Must be set to true if pin2_status is being passed */
+  dms_pin_status_type_v01 pin2_status;
+
+  /* Optional */
+  /*  Activation State */
+  uint8_t activation_state_valid;  /**< Must be set to true if activation_state is being passed */
+  dms_activation_state_enum_v01 activation_state;
+  /**<   Service activation state. Values: \n
+       - 0x00 -- Service is not activated \n
+       - 0x01 -- Service is activated \n
+       - 0x02 -- Activation connecting -- Network
+                connection is in progress for automatic activation of service \n
+       - 0x03 -- Activation connected -- Network
+                connection is connected for automatic activation of service \n
+       - 0x04 -- OTASP security is authenticated \n
+       - 0x05 - OTASP NAM is downloaded \n
+       - 0x06 - OTASP MDN is downloaded \n
+       - 0x07 - OTASP IMSI downloaded \n
+       - 0x08 - OTASP PRL is downloaded \n
+       - 0x09 - OTASP SPC is downloaded \n
+       - 0x0A - OTASP settings are committed
+  */
+
+  /* Optional */
+  /*  Operating Mode */
+  uint8_t operating_mode_valid;  /**< Must be set to true if operating_mode is being passed */
+  dms_operating_mode_enum_v01 operating_mode;
+  /**<   Current operating mode. Values: \n
+       - 0 -- Online \n
+       - 1 -- Low power \n
+       - 2 -- Factory Test mode \n
+       - 3 -- Offline \n
+       - 4 -- Resetting \n
+       - 5 -- Shutting down \n
+       - 6 -- Persistent low power \n
+       - 7 -- Mode-only low power \n
+       - 8 -- Conducting network test for GSM/WCDMA
+  */
+
+  /* Optional */
+  /*  UIM State */
+  uint8_t uim_state_valid;  /**< Must be set to true if uim_state is being passed */
+  dms_uim_state_enum_v01 uim_state;
+  /**<   UIM state. Values: \n
+       - 0x00 -- UIM initialization completed \n
+       - 0x01 -- UIM failed \n
+       - 0x02 -- UIM is not present \n
+       - 0xFF -- UIM state is currently unavailable
+  */
+
+  /* Optional */
+  /*  Wireless Disable State */
+  uint8_t wireless_disable_state_valid;  /**< Must be set to true if wireless_disable_state is being passed */
+  dms_wireless_disable_state_enum_v01 wireless_disable_state;
+  /**<   Wireless disable state. Values: \n
+       - 0x00 -- Wireless disable switch is turned off \n
+       - 0x01 -- Wireless disable switch is turned on
+  */
+
+  /* Optional */
+  /*  PRL Init Notification */
+  uint8_t prl_init_valid;  /**< Must be set to true if prl_init is being passed */
+  dms_prl_init_enum_v01 prl_init;
+  /**<   PRL initialized. Values: \n
+       - 0x01 -- PRL is completely loaded into the device
+       (could be the default PRL).
+  */
+
+  /* Optional */
+  /*  CDMA Lock Mode State */
+  uint8_t cdma_lock_mode_state_valid;  /**< Must be set to true if cdma_lock_mode_state is being passed */
+  dms_cdma_lock_mode_state_enum_v01 cdma_lock_mode_state;
+  /**<   CDMA Lock mode state. Values: \n
+      - DMS_CDMA_LOCK_MODE_OFF (0) --  Phone is not CDMA locked
+      - DMS_CDMA_LOCK_MODE_ON (1) --  Phone is CDMA locked
+ */
+
+  /* Optional */
+  /*  Device Multisim Capability */
+  uint8_t multisim_capability_valid;  /**< Must be set to true if multisim_capability is being passed */
+  dms_multisim_capability_type_v01 multisim_capability;
+  /**<   \n Device capability for supporting multiple simultaneously active radio interfaces.
+  */
+}dms_event_report_ind_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+typedef struct {
+  /* This element is a placeholder to prevent the declaration of
+     an empty struct.  DO NOT USE THIS FIELD UNDER ANY CIRCUMSTANCE */
+  char __placeholder;
+}dms_get_device_cap_req_msg_v01;
+
+/** @addtogroup dms_qmi_enums
+    @{
+  */
+typedef enum {
+  DMS_DATA_SERVICE_CAPABILITY_ENUM_MIN_ENUM_VAL_V01 = -2147483647, /**< To force a 32 bit signed enum.  Do not change or use*/
+  DMS_DATA_CAP_NONE_V01 = 0x00,
+  DMS_DATA_CAP_CS_ONLY_V01 = 0x01,
+  DMS_DATA_CAP_PS_ONLY_V01 = 0x02,
+  DMS_DATA_CAP_SIMUL_CS_AND_PS_V01 = 0x03,
+  DMS_DATA_CAP_NONSIMUL_CS_AND_PS_V01 = 0x04,
+  DMS_DATA_SERVICE_CAPABILITY_ENUM_MAX_ENUM_VAL_V01 = 2147483647 /**< To force a 32 bit signed enum.  Do not change or use*/
+}dms_data_service_capability_enum_v01;
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_enums
+    @{
+  */
+typedef enum {
+  DMS_SIM_CAPABILITY_ENUM_MIN_ENUM_VAL_V01 = -2147483647, /**< To force a 32 bit signed enum.  Do not change or use*/
+  DMS_SIM_NOT_SUPPORTED_V01 = 0x01,
+  DMS_SIM_SUPPORTED_V01 = 0x02,
+  DMS_SIM_CAPABILITY_ENUM_MAX_ENUM_VAL_V01 = 2147483647 /**< To force a 32 bit signed enum.  Do not change or use*/
+}dms_sim_capability_enum_v01;
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_enums
+    @{
+  */
+typedef enum {
+  DMS_RADIO_IF_ENUM_MIN_ENUM_VAL_V01 = -2147483647, /**< To force a 32 bit signed enum.  Do not change or use*/
+  DMS_RADIO_IF_1X_V01 = 0x01,
+  DMS_RADIO_IF_1X_EVDO_V01 = 0x02,
+  DMS_RADIO_IF_GSM_V01 = 0x04,
+  DMS_RADIO_IF_UMTS_V01 = 0x05,
+  DMS_RADIO_IF_LTE_V01 = 0x08,
+  DMS_RADIO_IF_TDS_V01 = 0x09,
+  DMS_RADIO_IF_ENUM_MAX_ENUM_VAL_V01 = 2147483647 /**< To force a 32 bit signed enum.  Do not change or use*/
+}dms_radio_if_enum_v01;
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_enums
+    @{
+  */
+typedef enum {
+  DMS_DEVICE_SERVICE_CAPABILITY_ENUM_MIN_ENUM_VAL_V01 = -2147483647, /**< To force a 32 bit signed enum.  Do not change or use*/
+  DMS_DEVICE_CAP_DATA_ONLY_V01 = 0x01,
+  DMS_DEVICE_CAP_VOICE_ONLY_V01 = 0x02,
+  DMS_DEVICE_CAP_SIMUL_VOICE_AND_DATA_V01 = 0x03,
+  DMS_DEVICE_CAP_NONSIMUL_VOICE_AND_DATA_V01 = 0x04,
+  DMS_DEVICE_SERVICE_CAPABILITY_ENUM_MAX_ENUM_VAL_V01 = 2147483647 /**< To force a 32 bit signed enum.  Do not change or use*/
+}dms_device_service_capability_enum_v01;
+/**
+    @}
+  */
+
+typedef uint64_t dms_voice_support_capability_mask_v01;
+#define QMI_DMS_MASK_VOICE_SUPPORT_GW_CSFB_CAPABLE_V01 ((dms_voice_support_capability_mask_v01)0x0001ull)
+#define QMI_DMS_MASK_VOICE_SUPPORT_1x_CSFB_CAPABLE_V01 ((dms_voice_support_capability_mask_v01)0x0002ull)
+#define QMI_DMS_MASK_VOICE_SUPPORT_VOLTE_CAPABLE_V01 ((dms_voice_support_capability_mask_v01)0x0004ull)
+typedef uint64_t dms_simul_voice_and_data_capability_mask_v01;
+#define QMI_DMS_MASK_SVLTE_CAPABLE_V01 ((dms_simul_voice_and_data_capability_mask_v01)0x0001ull)
+#define QMI_DMS_MASK_SVDO_CAPABLE_V01 ((dms_simul_voice_and_data_capability_mask_v01)0x0002ull)
+#define QMI_DMS_MASK_SGLTE_CAPABLE_V01 ((dms_simul_voice_and_data_capability_mask_v01)0x0004ull)
+/** @addtogroup dms_qmi_aggregates
+    @{
+  */
+typedef struct {
+
+  uint32_t max_tx_channel_rate;
+  /**<   Maximum Tx transmission rate in bits per second (bps) supported
+       by the device. The value 0xFFFFFFFF implies a rate greater than
+       or equal to 0xFFFFFFFF (4 Gbps). In multitechnology devices, this
+       value is the greatest rate among all supported technologies.
+  */
+
+  uint32_t max_rx_channel_rate;
+  /**<   Maximum Rx transmission rate in bits per second (bps) supported
+       by the device. The value 0xFFFFFFFF implies rate greater than or
+       equal to 0xFFFFFFFF (4 Gbps). In multitechnology devices, this
+       value is the greatest rate among all supported technologies.
+  */
+
+  /*  Note: Below data item is deprecated from QMI DMS version 1.11 in favor of device_service_capability TLV */
+  dms_data_service_capability_enum_v01 data_service_capability;
+  /**<   Values: \n
+       - 0 -- No data services supported \n
+       - 1 -- Only circuit-switched (CS) services are supported \n
+       - 2 -- Only packet-switched (PS) services are supported \n
+       - 3 -- Simultaneous CS and PS \n
+       - 4 -- Nonsimultaneous CS and PS
+  */
+
+  dms_sim_capability_enum_v01 sim_capability;
+  /**<   Values: \n
+       - 1 -- SIM is not supported \n
+       - 2 -- SIM is supported
+  */
+
+  uint32_t radio_if_list_len;  /**< Must be set to # of elements in radio_if_list */
+  dms_radio_if_enum_v01 radio_if_list[QMI_DMS_RADIO_IF_LIST_MAX_V01];
+  /**<   List of N one-byte elements describing the radio interfaces
+       supported by the device. Values: \n
+       - 1 -- CDMA2000 1X \n
+       - 2 -- CDMA2000 HRPD (1xEV-DO) \n
+       - 4 -- GSM \n
+       - 5 -- UMTS \n
+       - 8 -- LTE \n
+       - 9 -- TDS
+  */
+}dms_device_capabilities_type_v01;  /* Type */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Requests the device capabilities. */
+typedef struct {
+
+  /* Mandatory */
+  /*  Device Capabilities */
+  dms_device_capabilities_type_v01 device_capabilities;
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+
+  /* Optional */
+  /*  Device Service Capability */
+  uint8_t device_service_capability_valid;  /**< Must be set to true if device_service_capability is being passed */
+  dms_device_service_capability_enum_v01 device_service_capability;
+  /**<   Values: \n
+       - 1 -- Only data services are supported \n
+       - 2 -- Only voice services are supported \n
+       - 3 -- Simultaneous voice and data \n
+       - 4 -- Nonsimultaneous voice and data
+  */
+
+  /* Optional */
+  /*  Voice Support Capability */
+  uint8_t voice_support_capability_valid;  /**< Must be set to true if voice_support_capability is being passed */
+  dms_voice_support_capability_mask_v01 voice_support_capability;
+  /**<   Bitmask of voice support available on device. Values: \n
+       Bit 0 -- GW CSFB        \n
+       - 0 -- Not capable      \n
+       - 1 -- Capable          \n
+       Bit 1 -- 1x CSFB        \n
+       - 0 -- Not capable      \n
+       - 1 -- Capable          \n
+       Bit 2 -- VoLTE          \n
+       - 0 -- Not capable      \n
+       - 1 -- Capable
+  */
+
+  /* Optional */
+  /*  Simultaneous Voice and Data Capability */
+  uint8_t simul_voice_and_data_capability_valid;  /**< Must be set to true if simul_voice_and_data_capability is being passed */
+  dms_simul_voice_and_data_capability_mask_v01 simul_voice_and_data_capability;
+  /**<   Bitmask of simultaneous voice and data support available on the device. Values: \n
+       - Bit 0 -- SVLTE capability \n
+       - Bit 1 -- SVDO capability  \n
+       - Bit 2 -- SGLTE capability  \n
+       Note: Zero bits set means that none of the defined capabilities are supported.
+  */
+
+  /* Optional */
+  /*  Device Multisim Capability */
+  uint8_t multisim_capability_valid;  /**< Must be set to true if multisim_capability is being passed */
+  dms_multisim_capability_type_v01 multisim_capability;
+  /**<   \n Device capability for supporting multiple simultaneously active radio interfaces.
+  */
+}dms_get_device_cap_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+typedef struct {
+  /* This element is a placeholder to prevent the declaration of
+     an empty struct.  DO NOT USE THIS FIELD UNDER ANY CIRCUMSTANCE */
+  char __placeholder;
+}dms_get_device_mfr_req_msg_v01;
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Requests the device the manufacturer information. */
+typedef struct {
+
+  /* Mandatory */
+  /*  Device Manufacturer */
+  char device_manufacturer[QMI_DMS_DEVICE_MANUFACTURER_MAX_V01 + 1];
+  /**<   String identifying the device manufacturer. */
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+}dms_get_device_mfr_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+typedef struct {
+  /* This element is a placeholder to prevent the declaration of
+     an empty struct.  DO NOT USE THIS FIELD UNDER ANY CIRCUMSTANCE */
+  char __placeholder;
+}dms_get_device_model_id_req_msg_v01;
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Requests the device model identification. */
+typedef struct {
+
+  /* Mandatory */
+  /*  Device Model */
+  char device_model_id[QMI_DMS_DEVICE_MODEL_ID_MAX_V01 + 1];
+  /**<   String identifying the device model. */
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+}dms_get_device_model_id_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+typedef struct {
+  /* This element is a placeholder to prevent the declaration of
+     an empty struct.  DO NOT USE THIS FIELD UNDER ANY CIRCUMSTANCE */
+  char __placeholder;
+}dms_get_device_rev_id_req_msg_v01;
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Requests the device firmware revision identification. */
+typedef struct {
+
+  /* Mandatory */
+  /*  Revision ID   */
+  char device_rev_id[QMI_DMS_DEVICE_REV_ID_MAX_V01 + 1];
+  /**<   String containing the device revision ID. */
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+
+  /* Optional */
+  /*  Boot Code Revision */
+  uint8_t boot_code_rev_valid;  /**< Must be set to true if boot_code_rev is being passed */
+  char boot_code_rev[QMI_DMS_BOOT_CODE_REV_MAX_V01 + 1];
+  /**<   String containing the boot code revision.
+  */
+
+  /* Optional */
+  /*  PRI Revision */
+  uint8_t pri_rev_valid;  /**< Must be set to true if pri_rev is being passed */
+  char pri_rev[QMI_DMS_PRI_REV_MAX_V01 + 1];
+  /**<   String containing the device PRI revision.
+  */
+}dms_get_device_rev_id_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+typedef struct {
+  /* This element is a placeholder to prevent the declaration of
+     an empty struct.  DO NOT USE THIS FIELD UNDER ANY CIRCUMSTANCE */
+  char __placeholder;
+}dms_get_msisdn_req_msg_v01;
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Requests the assigned voice number. */
+typedef struct {
+
+  /* Mandatory */
+  /*  Voice Number */
+  char voice_number[QMI_DMS_VOICE_NUMBER_MAX_V01 + 1];
+  /**<   String containing the voice number in use by the device. */
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+
+  /* Optional */
+  /*  Mobile ID */
+  uint8_t mobile_id_number_valid;  /**< Must be set to true if mobile_id_number is being passed */
+  char mobile_id_number[QMI_DMS_MOBILE_ID_NUMBER_MAX_V01 + 1];
+  /**<   String containing the mobile ID number of the device. */
+
+  /* Optional */
+  /*  International Mobile Subscriber ID */
+  uint8_t imsi_valid;  /**< Must be set to true if imsi is being passed */
+  char imsi[QMI_DMS_IMSI_MAX_V01 + 1];
+  /**<   String containing the international mobile subscriber ID of the device.
+  */
+}dms_get_msisdn_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+typedef struct {
+  /* This element is a placeholder to prevent the declaration of
+     an empty struct.  DO NOT USE THIS FIELD UNDER ANY CIRCUMSTANCE */
+  char __placeholder;
+}dms_get_device_serial_numbers_req_msg_v01;
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Requests the serial numbers of the device. */
+typedef struct {
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+
+  /* Optional */
+  /*  ESN */
+  uint8_t esn_valid;  /**< Must be set to true if esn is being passed */
+  char esn[QMI_DMS_ESN_MAX_V01 + 1];
+  /**<   String containing the Electronic Serial Number (ESN) of the device. */
+
+  /* Optional */
+  /*  IMEI */
+  uint8_t imei_valid;  /**< Must be set to true if imei is being passed */
+  char imei[QMI_DMS_IMEI_MAX_V01 + 1];
+  /**<   String containing the International Mobile Equipment Identity
+      (IMEI) of the device.
+  */
+
+  /* Optional */
+  /*  MEID */
+  uint8_t meid_valid;  /**< Must be set to true if meid is being passed */
+  char meid[QMI_DMS_MEID_MAX_V01 + 1];
+  /**<   String containing the Mobile Equipment Identifier (MEID) of the device. */
+
+  /* Optional */
+  /*  IMEI SVN */
+  uint8_t imeisv_svn_valid;  /**< Must be set to true if imeisv_svn is being passed */
+  char imeisv_svn[QMI_DMS_IMEISV_MAX_V01 + 1];
+  /**<   IMEI software version number
+  */
+}dms_get_device_serial_numbers_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+typedef struct {
+  /* This element is a placeholder to prevent the declaration of
+     an empty struct.  DO NOT USE THIS FIELD UNDER ANY CIRCUMSTANCE */
+  char __placeholder;
+}dms_get_power_state_req_msg_v01;
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Requests the power status of the device. */
+typedef struct {
+
+  /* Mandatory */
+  /*  Power State */
+  dms_power_state_type_v01 power_state;
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+}dms_get_power_state_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_enums
+    @{
+  */
+typedef enum {
+  DMS_PIN_ID_ENUM_MIN_ENUM_VAL_V01 = -2147483647, /**< To force a 32 bit signed enum.  Do not change or use*/
+  DMS_QMI_PIN_ID_PIN_1_V01 = 0x01,
+  DMS_QMI_PIN_ID_PIN_2_V01 = 0x02,
+  DMS_PIN_ID_ENUM_MAX_ENUM_VAL_V01 = 2147483647 /**< To force a 32 bit signed enum.  Do not change or use*/
+}dms_pin_id_enum_v01;
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_aggregates
+    @{
+  */
+typedef struct {
+
+  dms_pin_id_enum_v01 pin_id;
+  /**<   Specifies the ID of the PIN to be enabled or disabled. Values: \n
+       - 1 -- PIN1 (also called PIN) \n
+       - 2 -- PIN2
+  */
+
+  uint8_t protection_setting_enabled;
+  /**<   Specifies whether the PIN is enabled. Values: \n
+     - 0 -- Disable PIN \n
+     - 1 -- Enable PIN
+  */
+
+  uint32_t pin_value_len;  /**< Must be set to # of elements in pin_value */
+  uint8_t pin_value[QMI_DMS_PIN_VALUE_MAX_V01];
+  /**<   Specifies the PIN value of the PIN to be enabled/disabled. The
+       protection setting is only changed if this value is
+       successfully verified by the SIM.
+  */
+}dms_pin_protection_info_type_v01;  /* Type */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Request Message; Enables or disables protection of UIM contents by a
+           specified PIN. (Deprecated) */
+typedef struct {
+
+  /* Mandatory */
+  /*  PIN Protection Information */
+  dms_pin_protection_info_type_v01 pin_protection_info;
+}dms_uim_set_pin_protection_req_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_aggregates
+    @{
+  */
+typedef struct {
+
+  uint8_t verify_retries_left;
+  /**<   Number of retries left, after which the PIN is blocked. */
+
+  uint8_t unblock_retries_left;
+  /**<   Number of unblock retries left, after which the PIN is
+       permanently blocked, i.e., the UIM is unusable.
+  */
+}dms_pin_retries_status_type_v01;  /* Type */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Enables or disables protection of UIM contents by a
+           specified PIN. (Deprecated) */
+typedef struct {
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+
+  /* Optional */
+  /*  Pin Retries Status */
+  uint8_t pin_retries_status_valid;  /**< Must be set to true if pin_retries_status is being passed */
+  dms_pin_retries_status_type_v01 pin_retries_status;
+}dms_uim_set_pin_protection_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_aggregates
+    @{
+  */
+typedef struct {
+
+  dms_pin_id_enum_v01 pin_id;
+  /**<   Specifies the ID of the PIN to be enabled or disabled. Values: \n
+       - 1 -- PIN1 (also called PIN) \n
+       - 2 -- PIN2
+  */
+
+  uint32_t pin_value_len;  /**< Must be set to # of elements in pin_value */
+  uint8_t pin_value[QMI_DMS_PIN_VALUE_MAX_V01];
+  /**<   Specifies the PIN value of the PIN to be verified; the
+       protection setting is only changed if this value is
+       successfully verified by the SIM.
+  */
+}dms_pin_info_type_v01;  /* Type */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Request Message; Verifies the PIN before accessing the UIM contents. (Deprecated) */
+typedef struct {
+
+  /* Mandatory */
+  /*  PIN Value */
+  dms_pin_info_type_v01 pin_info;
+}dms_uim_verify_pin_req_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Verifies the PIN before accessing the UIM contents. (Deprecated) */
+typedef struct {
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+
+  /* Optional */
+  /*  PIN Retries Status */
+  uint8_t pin_retries_status_valid;  /**< Must be set to true if pin_retries_status is being passed */
+  dms_pin_retries_status_type_v01 pin_retries_status;
+}dms_uim_verify_pin_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_aggregates
+    @{
+  */
+typedef struct {
+
+  dms_pin_id_enum_v01 unblock_pin_id;
+  /**<   Specifies the ID of the PIN to be unblocked. Values: \n
+       - 1 -- PIN1 (also called PIN) \n
+       - 2 -- PIN2
+  */
+
+  uint32_t puk_value_len;  /**< Must be set to # of elements in puk_value */
+  uint8_t puk_value[QMI_DMS_PUK_VALUE_MAX_V01];
+  /**<   Specifies the PUK value (password) of the PIN to be unblocked. */
+
+  uint32_t new_pin_value_len;  /**< Must be set to # of elements in new_pin_value */
+  uint8_t new_pin_value[QMI_DMS_PUK_VALUE_MAX_V01];
+  /**<   Specifies the new PIN value (password) for the PIN to be unblocked. */
+}dms_pin_unblock_info_type_v01;  /* Type */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Request Message; Unblocks a blocked PIN. (Deprecated) */
+typedef struct {
+
+  /* Mandatory */
+  /*  PIN Unblock Information */
+  dms_pin_unblock_info_type_v01 pin_unblock_info;
+}dms_uim_unblock_pin_req_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Unblocks a blocked PIN. (Deprecated) */
+typedef struct {
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+
+  /* Optional */
+  /*  PIN Retries Status */
+  uint8_t pin_retries_status_valid;  /**< Must be set to true if pin_retries_status is being passed */
+  dms_pin_retries_status_type_v01 pin_retries_status;
+}dms_uim_unblock_pin_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_aggregates
+    @{
+  */
+typedef struct {
+
+  dms_pin_id_enum_v01 pin_id;
+  /**<   Specifies the ID of the PIN to be changed. Values: \n
+       - 1 -- PIN1 (also called PIN) \n
+       - 2 -- PIN2
+  */
+
+  uint32_t old_pin_value_len;  /**< Must be set to # of elements in old_pin_value */
+  uint8_t old_pin_value[QMI_DMS_PIN_VALUE_MAX_V01];
+  /**<   Specifies the old PIN value (old password) of the PIN. */
+
+  uint32_t new_pin_value_len;  /**< Must be set to # of elements in new_pin_value */
+  uint8_t new_pin_value[QMI_DMS_PIN_VALUE_MAX_V01];
+  /**<   Specifies the new PIN value (new password) of the PIN. */
+}dms_pin_change_info_type_v01;  /* Type */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Request Message; Changes the PIN value. (Deprecated) */
+typedef struct {
+
+  /* Mandatory */
+  /*  PIN Change Information */
+  dms_pin_change_info_type_v01 pin_change_info;
+}dms_uim_change_pin_req_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Changes the PIN value. (Deprecated) */
+typedef struct {
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+
+  /* Optional */
+  /*  PIN Retries Status */
+  uint8_t pin_retries_status_valid;  /**< Must be set to true if pin_retries_status is being passed */
+  dms_pin_retries_status_type_v01 pin_retries_status;
+}dms_uim_change_pin_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+typedef struct {
+  /* This element is a placeholder to prevent the declaration of
+     an empty struct.  DO NOT USE THIS FIELD UNDER ANY CIRCUMSTANCE */
+  char __placeholder;
+}dms_uim_get_pin_status_req_msg_v01;
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Gets the status of a PIN. (Deprecated) */
+typedef struct {
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+
+  /* Optional */
+  /*  PIN 1 Status */
+  uint8_t pin1_status_valid;  /**< Must be set to true if pin1_status is being passed */
+  dms_pin_status_type_v01 pin1_status;
+
+  /* Optional */
+  /*  PIN 2 Status */
+  uint8_t pin2_status_valid;  /**< Must be set to true if pin2_status is being passed */
+  dms_pin_status_type_v01 pin2_status;
+}dms_uim_get_pin_status_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+typedef struct {
+  /* This element is a placeholder to prevent the declaration of
+     an empty struct.  DO NOT USE THIS FIELD UNDER ANY CIRCUMSTANCE */
+  char __placeholder;
+}dms_get_device_hardware_rev_req_msg_v01;
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Queries the hardware revision of the device. */
+typedef struct {
+
+  /* Mandatory */
+  /*  Hardware Revision */
+  char hardware_rev[QMI_DMS_HARDWARE_REV_MAX_V01 + 1];
+  /**<   String containing the hardware revision of the device. */
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+}dms_get_device_hardware_rev_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+typedef struct {
+  /* This element is a placeholder to prevent the declaration of
+     an empty struct.  DO NOT USE THIS FIELD UNDER ANY CIRCUMSTANCE */
+  char __placeholder;
+}dms_get_operating_mode_req_msg_v01;
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Queries the current operating mode of the device. */
+typedef struct {
+
+  /* Mandatory */
+  /*  Operating Mode */
+  dms_operating_mode_enum_v01 operating_mode;
+  /**<   Selected operating mode. Values: \n
+       - 0 -- Online \n
+       - 1 -- Low power \n
+       - 2 -- Factory Test mode \n
+       - 3 -- Offline \n
+       - 4 -- Resetting \n
+       - 5 -- Shutting down \n
+       - 6 -- Persistent low power \n
+       - 8 -- Conducting network test for GSM/WCDMA
+  */
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+
+  /* Optional */
+  /*  Offline Reason */
+  uint8_t offline_reason_valid;  /**< Must be set to true if offline_reason is being passed */
+  dms_offline_reason_mask_v01 offline_reason;
+  /**<   Offline reason bitmask. All unlisted bits are reserved for
+       future use and are ignored. Values: \n
+       - 0x0001 -- Host image misconfiguration \n
+       - 0x0002 -- PRI image misconfiguration \n
+       - 0x0004 -- PRI version incompatible \n
+       - 0x0008 -- Device memory is full, cannot copy PRI information
+
+  */
+
+  /* Optional */
+  /*  Hardware-Restricted Mode */
+  uint8_t hardware_controlled_mode_valid;  /**< Must be set to true if hardware_controlled_mode is being passed */
+  uint8_t hardware_controlled_mode;
+  /**<   Hardware-Restricted mode. Values: \n
+       - 0x01 -- TRUE
+  */
+}dms_get_operating_mode_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Request Message; Sets the operating mode of the device. */
+typedef struct {
+
+  /* Mandatory */
+  /*  Operating Mode */
+  dms_operating_mode_enum_v01 operating_mode;
+  /**<   Selected operating mode. Values:  \n
+       - 0 -- Online \n
+       - 1 -- Low power \n
+       - 2 -- Factory Test mode \n
+       - 3 -- Offline \n
+       - 4 -- Resetting \n
+       - 5 -- Shutting down \n
+       - 6 -- Persistent low power \n
+       - 7 -- Mode-only low power
+  */
+}dms_set_operating_mode_req_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Sets the operating mode of the device. */
+typedef struct {
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+}dms_set_operating_mode_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+typedef struct {
+  /* This element is a placeholder to prevent the declaration of
+     an empty struct.  DO NOT USE THIS FIELD UNDER ANY CIRCUMSTANCE */
+  char __placeholder;
+}dms_get_time_req_msg_v01;
+
+/** @addtogroup dms_qmi_enums
+    @{
+  */
+typedef enum {
+  DMS_TIME_SOURCE_ENUM_MIN_ENUM_VAL_V01 = -2147483647, /**< To force a 32 bit signed enum.  Do not change or use*/
+  DMS_TIME_SOURCE_DEVICE_CLOCK_V01 = 0x00,
+  DMS_TIME_SOURCE_CDMA_V01 = 0x01,
+  DMS_TIME_SOURCE_HDR_V01 = 0x02,
+  DMS_TIME_SOURCE_ENUM_MAX_ENUM_VAL_V01 = 2147483647 /**< To force a 32 bit signed enum.  Do not change or use*/
+}dms_time_source_enum_v01;
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_aggregates
+    @{
+  */
+typedef struct {
+
+  uint8_t time_count[6];
+  /**<   Count of 1.25 ms that have elapsed from the start of GPS Epoch
+       time (January 6, 1980). A 6-byte integer in little-endian format.
+  */
+
+  dms_time_source_enum_v01 time_source;
+  /**<   Source of the timestamp. Values: \n
+       - 0 -- 32 kHz device clock \n
+       - 1 -- CDMA network \n
+       - 2 -- HDR network
+  */
+}dms_device_time_type_v01;  /* Type */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Queries the current time of the device. */
+typedef struct {
+
+  /* Mandatory */
+  /*  Device Time */
+  dms_device_time_type_v01 device_time;
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+
+  /* Optional */
+  /*  System Time in Milliseconds */
+  uint8_t sys_time_in_ms_valid;  /**< Must be set to true if sys_time_in_ms is being passed */
+  uint64_t sys_time_in_ms;
+  /**<   Count of system time in milliseconds that have
+       elapsed from the start of GPS Epoch time
+       (Jan 6, 1980).
+  */
+
+  /* Optional */
+  /*  User Time in Milliseconds */
+  uint8_t user_time_in_ms_valid;  /**< Must be set to true if user_time_in_ms is being passed */
+  uint64_t user_time_in_ms;
+  /**<   Count of user time in milliseconds that have
+       elapsed from the start of GPS Epoch time
+       (Jan 6, 1980).
+  */
+}dms_get_time_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+typedef struct {
+  /* This element is a placeholder to prevent the declaration of
+     an empty struct.  DO NOT USE THIS FIELD UNDER ANY CIRCUMSTANCE */
+  char __placeholder;
+}dms_get_prl_ver_req_msg_v01;
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Queries the version of the active Preferred Roaming
+           List (PRL) of the device. */
+typedef struct {
+
+  /* Mandatory */
+  /*  PRL Version */
+  uint16_t prl_version;
+  /**<   PRL version.*/
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+
+  /* Optional */
+  /*  PRL-Only Preference */
+  uint8_t prl_only_valid;  /**< Must be set to true if prl_only is being passed */
+  uint8_t prl_only;
+  /**<   Values: \n
+       - 0 -- Unset \n
+       - 1 -- Set
+  */
+}dms_get_prl_ver_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+typedef struct {
+  /* This element is a placeholder to prevent the declaration of
+     an empty struct.  DO NOT USE THIS FIELD UNDER ANY CIRCUMSTANCE */
+  char __placeholder;
+}dms_get_activation_state_req_msg_v01;
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Queries the activation state of the device. */
+typedef struct {
+
+  /* Mandatory */
+  /*  Activation State */
+  dms_activation_state_enum_v01 activation_state;
+  /**<   Service activation state. Values: \n
+       - 0x00 -- Service is not activated \n
+       - 0x01 --Service is activated \n
+       - 0x02 -- Activation is connecting - Network
+                connection in progress for automatic activation of service \n
+       - 0x03 -- Activation is connected - Network
+                connection is connected for automatic activation of service \n
+       - 0x04 -- OTASP security is authenticated \n
+       - 0x05 -- OTASP NAM is downloaded \n
+       - 0x06 -- OTASP MDN is downloaded \n
+       - 0x07 -- OTASP IMSI is downloaded \n
+       - 0x08 -- OTASP PRL is downloaded \n
+       - 0x09 -- OTASP SPC is downloaded \n
+       - 0x0A -- OTASP settings are committed
+  */
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+}dms_get_activation_state_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_aggregates
+    @{
+  */
+typedef struct {
+
+  char act_code[QMI_DMS_ACTIVATION_CODE_MAX_V01 + 1];
+  /**<   Activation code to be used by the default activation type
+       for the device in ASCII format (maximum 81 bytes).
+  */
+}dms_activation_code_type_v01;  /* Type */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Request Message; Requests that the device perform automatic
+           service activation. */
+typedef struct {
+
+  /* Mandatory */
+  /*  Activation Code */
+  dms_activation_code_type_v01 activation_code;
+}dms_activate_automatic_req_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Requests that the device perform automatic
+           service activation. */
+typedef struct {
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+}dms_activate_automatic_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_aggregates
+    @{
+  */
+typedef struct {
+
+  char spc[QMI_DMS_SPC_LEN_V01];
+  /**<   Service programming code in ASCII format (digits 0 to 9 only).
+  */
+
+  uint16_t sid;
+  /**<   System identification number
+  */
+
+  char mdn[QMI_DMS_MDN_MAX_V01 + 1];
+  /**<   String containing the mobile directory number (maximum 15 bytes).
+  */
+
+  char min[QMI_DMS_MIN_MAX_V01 + 1];
+  /**<   String containing the mobile identification number (maximum 15 bytes).
+  */
+}dms_manual_act_data_type_v01;  /* Type */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_aggregates
+    @{
+  */
+typedef struct {
+
+  char mn_ha_key[QMI_DMS_HA_KEY_MAX_V01 + 1];
+  /**<   String containing the MN-HA key (maximum 16 bytes).*/
+}dms_mn_ha_key_type_v01;  /* Type */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_aggregates
+    @{
+  */
+typedef struct {
+
+  char mn_aaa_key[QMI_DMS_AAA_KEY_MAX_V01 + 1];
+  /**<   String containing the MN-AAA key (maximum 16 bytes).*/
+}dms_mn_aaa_key_type_v01;  /* Type */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_aggregates
+    @{
+  */
+typedef struct {
+
+  uint16_t prl_total_len;
+  /**<    PRL total length (maximum 16384)*/
+
+  uint8_t prl_seg_num;
+  /**<   PRL segment sequence number*/
+
+  uint32_t prl_len;  /**< Must be set to # of elements in prl */
+  uint8_t prl[QMI_DMS_PRL_DATA_MAX_V01];
+  /**<   PRL segment data*/
+}dms_pref_roaming_list_type_v01;  /* Type */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Request Message; Requests that the device perform manual service activation. */
+typedef struct {
+
+  /* Mandatory */
+  /*  Manual Activation Data */
+  dms_manual_act_data_type_v01 activation_data;
+
+  /* Optional */
+  /*  MN-HA Key */
+  uint8_t mn_ha_key_valid;  /**< Must be set to true if mn_ha_key is being passed */
+  dms_mn_ha_key_type_v01 mn_ha_key;
+
+  /* Optional */
+  /*  MN-AAA Key */
+  uint8_t mn_aaa_key_valid;  /**< Must be set to true if mn_aaa_key is being passed */
+  dms_mn_aaa_key_type_v01 mn_aaa_key;
+
+  /* Optional */
+  /*  Preferred Roaming List */
+  uint8_t pref_roaming_list_valid;  /**< Must be set to true if pref_roaming_list is being passed */
+  dms_pref_roaming_list_type_v01 pref_roaming_list;
+}dms_activate_manual_req_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Requests that the device perform manual service activation. */
+typedef struct {
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+}dms_activate_manual_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+typedef struct {
+  /* This element is a placeholder to prevent the declaration of
+     an empty struct.  DO NOT USE THIS FIELD UNDER ANY CIRCUMSTANCE */
+  char __placeholder;
+}dms_get_user_lock_state_req_msg_v01;
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Queries the state of the user lock maintained by the
+           device. */
+typedef struct {
+
+  /* Mandatory */
+  /*  User Lock State */
+  uint8_t lock_enabled;
+  /**<   Current state of the lock. Values: \n
+       - 0 -- Disabled \n
+       - 1 -- Enabled
+  */
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+}dms_get_user_lock_state_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_enums
+    @{
+  */
+typedef enum {
+  DMS_LOCK_STATE_ENUM_MIN_ENUM_VAL_V01 = -2147483647, /**< To force a 32 bit signed enum.  Do not change or use*/
+  DMS_LOCK_DISABLED_V01 = 0x00,
+  DMS_LOCK_ENABLED_V01 = 0x01,
+  DMS_LOCK_STATE_ENUM_MAX_ENUM_VAL_V01 = 2147483647 /**< To force a 32 bit signed enum.  Do not change or use*/
+}dms_lock_state_enum_v01;
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_aggregates
+    @{
+  */
+typedef struct {
+
+  dms_lock_state_enum_v01 lock_state;
+  /**<   Current state of the lock. Values: \n
+       - 0 -- Disabled \n
+       - 1 -- Enabled
+  */
+
+  char lock_code[QMI_DMS_LOCK_CODE_LEN_V01];
+  /**<   4-byte code set for the lock in ASCII format (digits 0 to 9 only). */
+}dms_user_lock_state_info_type_v01;  /* Type */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Request Message; Sets the user lock state maintained by the device. */
+typedef struct {
+
+  /* Mandatory */
+  /*  User Lock State */
+  dms_user_lock_state_info_type_v01 lock_info;
+}dms_set_user_lock_state_req_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Sets the user lock state maintained by the device. */
+typedef struct {
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+}dms_set_user_lock_state_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_aggregates
+    @{
+  */
+typedef struct {
+
+  char cur_code[QMI_DMS_LOCK_CODE_LEN_V01];
+  /**<   Current 4-byte code to use for the lock in ASCII format (digits 0 to
+       9 only).
+  */
+
+  char new_code[QMI_DMS_LOCK_CODE_LEN_V01];
+  /**<   New 4-byte code to use for the lock in ASCII format (digits 0 to
+       9 only).
+  */
+}dms_user_lock_set_info_type_v01;  /* Type */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Request Message; Sets the user lock code maintained by the device. */
+typedef struct {
+
+  /* Mandatory */
+  /*  User Lock Code */
+  dms_user_lock_set_info_type_v01 lock_info;
+}dms_set_user_lock_code_req_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Sets the user lock code maintained by the device. */
+typedef struct {
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+}dms_set_user_lock_code_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+typedef struct {
+  /* This element is a placeholder to prevent the declaration of
+     an empty struct.  DO NOT USE THIS FIELD UNDER ANY CIRCUMSTANCE */
+  char __placeholder;
+}dms_read_user_data_req_msg_v01;
+
+/** @addtogroup dms_qmi_aggregates
+    @{
+  */
+typedef struct {
+
+  uint32_t data_len;  /**< Must be set to # of elements in data */
+  uint8_t data[QMI_DMS_USER_DATA_MAX_V01];
+  /**<   User data from/to persistent storage (maximum 512).*/
+}dms_user_data_type_v01;  /* Type */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Queries the user data maintained by the device. */
+typedef struct {
+
+  /* Mandatory */
+  /*  User Data */
+  dms_user_data_type_v01 user_data;
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+}dms_read_user_data_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Request Message; Writes user data maintained by the device. */
+typedef struct {
+
+  /* Mandatory */
+  /*  User Data */
+  dms_user_data_type_v01 user_data;
+}dms_write_user_data_req_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Writes user data maintained by the device. */
+typedef struct {
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+}dms_write_user_data_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+typedef struct {
+  /* This element is a placeholder to prevent the declaration of
+     an empty struct.  DO NOT USE THIS FIELD UNDER ANY CIRCUMSTANCE */
+  char __placeholder;
+}dms_read_eri_file_req_msg_v01;
+
+/** @addtogroup dms_qmi_aggregates
+    @{
+  */
+typedef struct {
+
+  uint32_t eri_data_len;  /**< Must be set to # of elements in eri_data */
+  uint8_t eri_data[QMI_DMS_ERI_DATA_MAX_V01];
+  /**<   ERI data read from persistent storage (maximum 1024).*/
+}dms_eri_data_type_v01;  /* Type */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Queries the Extended Roaming Indicator (ERI) file stored on the device. */
+typedef struct {
+
+  /* Mandatory */
+  /*  ERI File */
+  dms_eri_data_type_v01 eri_file;
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+}dms_read_eri_file_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Request Message; Requests that the device reset all settings to
+           factory defined values. */
+typedef struct {
+
+  /* Mandatory */
+  /*  Service Programming Code */
+  char spc[QMI_DMS_SPC_LEN_V01];
+  /**<   Service programming code in ASCII format (digits 0 to 9 only).
+  */
+}dms_restore_factory_defaults_req_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Requests that the device reset all settings to
+           factory defined values. */
+typedef struct {
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+}dms_restore_factory_defaults_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Request Message; Requests the device to validate a specified service
+           programming code. */
+typedef struct {
+
+  /* Mandatory */
+  /*  Programming Code */
+  char spc[QMI_DMS_SPC_LEN_V01];
+  /**<   Service programming code in ASCII format (digits 0 to 9 only). */
+}dms_validate_service_programming_code_req_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Requests the device to validate a specified service
+           programming code. */
+typedef struct {
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+}dms_validate_service_programming_code_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+typedef struct {
+  /* This element is a placeholder to prevent the declaration of
+     an empty struct.  DO NOT USE THIS FIELD UNDER ANY CIRCUMSTANCE */
+  char __placeholder;
+}dms_uim_get_iccid_req_msg_v01;
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Queries the Integrated Circuit Card ID (ICCID) of the UIM for the device. (Deprecated) */
+typedef struct {
+
+  /* Mandatory */
+  /*  UIM ICCID */
+  char uim_id[QMI_DMS_UIM_ID_MAX_V01 + 1];
+  /**<   String containing the UIM ICCID. */
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+}dms_uim_get_iccid_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_enums
+    @{
+  */
+typedef enum {
+  DMS_GSM_PERSO_FACILITY_ENUM_MIN_ENUM_VAL_V01 = -2147483647, /**< To force a 32 bit signed enum.  Do not change or use*/
+  DMS_PERSO_FACILITY_NETWORK_V01 = 0x00,
+  DMS_PERSO_FACILITY_NETWORK_SUBSET_V01 = 0x01,
+  DMS_PERSO_FACILITY_SERVICE_PROVIDER_V01 = 0x02,
+  DMS_PERSO_FACILITY_CORPORATE_V01 = 0x03,
+  DMS_PERSO_FACILITY_UIM_V01 = 0x04,
+  DMS_GSM_PERSO_FACILITY_ENUM_MAX_ENUM_VAL_V01 = 2147483647 /**< To force a 32 bit signed enum.  Do not change or use*/
+}dms_gsm_perso_facility_enum_v01;
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Request Message; Queries the status of a UIM facility control key. (Deprecated) */
+typedef struct {
+
+  /* Mandatory */
+  /*  UIM Personalization Facility */
+  dms_gsm_perso_facility_enum_v01 facility;
+  /**<   MT or network facility (corresponding AT+CLCK value). Values: \n
+       - 0 -- Network personalization (PN) \n
+       - 1 -- Network subset personalization (PU) \n
+       - 2 -- Service provider personalization (PP) \n
+       - 3 -- Corporate personalization (PC) \n
+       - 4 -- UIM personalization (PF)
+  */
+}dms_uim_get_ck_status_req_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_enums
+    @{
+  */
+typedef enum {
+  DMS_FACILITY_STATE_ENUM_MIN_ENUM_VAL_V01 = -2147483647, /**< To force a 32 bit signed enum.  Do not change or use*/
+  DMS_FACILITY_DEACTIVATED_V01 = 0x00,
+  DMS_FACILITY_ACTIVATED_V01 = 0x01,
+  DMS_FACILITY_BLOCKED_V01 = 0x02,
+  DMS_FACILITY_STATE_ENUM_MAX_ENUM_VAL_V01 = 2147483647 /**< To force a 32 bit signed enum.  Do not change or use*/
+}dms_facility_state_enum_v01;
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_aggregates
+    @{
+  */
+typedef struct {
+
+  dms_facility_state_enum_v01 facility_state;
+  /**<   UIM facility state. Values: \n
+       - 0 -- Deactivated \n
+       - 1 -- Activated \n
+       - 2 -- Blocked
+  */
+
+  uint8_t verify_reties_left;
+  /**<   Indicates the number of retries left, after which the CK is blocked. */
+
+  uint8_t unblock_retries_left;
+  /**<   Number of unblock retries left, after which the CK is permanently blocked.
+   */
+}dms_facility_state_info_type_v01;  /* Type */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Queries the status of a UIM facility control key. (Deprecated) */
+typedef struct {
+
+  /* Mandatory */
+  /*  Facility CK Status */
+  dms_facility_state_info_type_v01 facility_info;
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+
+  /* Optional */
+  /*  Operation Blocking Facility */
+  uint8_t operation_blocking_valid;  /**< Must be set to true if operation_blocking is being passed */
+  uint8_t operation_blocking;
+  /**<   Presence of this TLV indicates that this facility is currently
+       blocking normal operation of the device. This value can be
+       returned only if the facility_state is not 0 (deactivated).
+
+       Note: This value is set to 1 when the TLV is provided.
+  */
+}dms_uim_get_ck_status_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_aggregates
+    @{
+  */
+typedef struct {
+
+  dms_gsm_perso_facility_enum_v01 facility;
+  /**<   UIM Personalization facility (corresponding AT+CLCK value). Values: \n
+       - 0 -- Network personalization (PN) \n
+       - 1 -- Network subset personalization (PU) \n
+       - 2 -- Service provider personalization (PP) \n
+       - 3 -- Corporate personalization (PC) \n
+       - 4 -- UIM personalization (PF)
+  */
+
+  dms_facility_state_enum_v01 facility_state;
+  /**<   UIM facility state. Values: \n
+       - 0 -- Deactivated
+  */
+
+  char facility_ck[QMI_DMS_FACILITY_CK_MAX_V01 + 1];
+  /**<   Facility depersonalization control key string in ASCII text
+       (maximum 8 bytes).
+   */
+}dms_facility_set_ck_info_type_v01;  /* Type */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Request Message; Sets the protection of a UIM facility control key. (Deprecated) */
+typedef struct {
+
+  /* Mandatory */
+  /*  UIM Personalization Facility */
+  dms_facility_set_ck_info_type_v01 facility_set_ck_info;
+}dms_uim_set_ck_protection_req_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Sets the protection of a UIM facility control key. (Deprecated) */
+typedef struct {
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+
+  /* Optional */
+  /*  Facility CK Retry Status */
+  uint8_t verify_retries_left_valid;  /**< Must be set to true if verify_retries_left is being passed */
+  uint8_t verify_retries_left;
+  /**<   Number of retries left, after which the CK is blocked.
+   */
+}dms_uim_set_ck_protection_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_aggregates
+    @{
+  */
+typedef struct {
+
+  dms_gsm_perso_facility_enum_v01 facility;
+  /**<   UIM personalization facility (corresponding AT+CLCK value). Values:\n
+       - 0 -- Network personalization (PN) \n
+       - 1 -- Network subset personalization (PU) \n
+       - 2 -- Service provider personalization (PP) \n
+       - 3 -- Corporate personalization (PC) \n
+       - 4 -- UIM personalization (PF)
+  */
+
+  char facility_unblock_ck[QMI_DMS_FACILITY_UNBLOCK_CK_MAX_V01 + 1];
+  /**<   Facility control key string in ASCII text (maximum 8 bytes). */
+}dms_facility_unblock_info_type_v01;  /* Type */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Request Message; Unblocks a UIM facility control key. (Deprecated) */
+typedef struct {
+
+  /* Mandatory */
+  /*  UIM Personalization Facility */
+  dms_facility_unblock_info_type_v01 facility_unblock_info;
+}dms_uim_unblock_ck_req_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Unblocks a UIM facility control key. (Deprecated) */
+typedef struct {
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+
+  /* Optional */
+  /*  Facility CK Retry Status */
+  uint8_t unblock_retries_left_valid;  /**< Must be set to true if unblock_retries_left is being passed */
+  uint8_t unblock_retries_left;
+  /**<   Number of unblock retries left, after which the CK is
+       permanently blocked.
+   */
+}dms_uim_unblock_ck_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+typedef struct {
+  /* This element is a placeholder to prevent the declaration of
+     an empty struct.  DO NOT USE THIS FIELD UNDER ANY CIRCUMSTANCE */
+  char __placeholder;
+}dms_uim_get_imsi_req_msg_v01;
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Queries the International Mobile Station Identity (IMSI)
+           of the UIM for the device. (Deprecated) */
+typedef struct {
+
+  /* Mandatory */
+  /*  International Mobile Subscriber ID */
+  char imsi[QMI_DMS_IMSI_MAX_V01 + 1];
+  /**<   String containing the international mobile subscriber ID. */
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+}dms_uim_get_imsi_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+typedef struct {
+  /* This element is a placeholder to prevent the declaration of
+     an empty struct.  DO NOT USE THIS FIELD UNDER ANY CIRCUMSTANCE */
+  char __placeholder;
+}dms_uim_get_state_req_msg_v01;
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Queries the state of the UIM. (Deprecated) */
+typedef struct {
+
+  /* Mandatory */
+  /*  UIM State */
+  dms_uim_state_enum_v01 uim_state;
+  /**<   UIM state. Values: \n
+       - 0x00 -- UIM initialization completed \n
+       - 0x01 -- UIM is locked or the UIM failed \n
+       - 0x02 -- UIM is not present \n
+       - 0x03 -- Reserved \n
+       - 0xFF -- UIM state is currently unavailable
+  */
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+}dms_uim_get_state_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+typedef struct {
+  /* This element is a placeholder to prevent the declaration of
+     an empty struct.  DO NOT USE THIS FIELD UNDER ANY CIRCUMSTANCE */
+  char __placeholder;
+}dms_get_band_capability_req_msg_v01;
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Queries the band capability of the device. */
+typedef struct {
+
+  /* Mandatory */
+  /*  Band Capability */
+  dms_band_capability_mask_v01 band_capability;
+  /**<   Bitmask of bands supported by the device; see Appendix
+  \ref{app:BandCapability} for the definition of these
+       values.
+  */
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+
+  /* Optional */
+  /*  LTE Band Capability */
+  uint8_t lte_band_capability_valid;  /**< Must be set to true if lte_band_capability is being passed */
+  dms_lte_band_capability_mask_v01 lte_band_capability;
+  /**<   This TLV is present on devices that support LTE bands.
+       Bitmask of LTE bands supported by the device; see Appendix
+       \ref{app:LTEBandCapability} for the definition of these
+       values.
+  */
+
+  /* Optional */
+  /*  TDS Band Capability */
+  uint8_t tds_band_capability_valid;  /**< Must be set to true if tds_band_capability is being passed */
+  dms_tds_band_capability_mask_v01 tds_band_capability;
+  /**<   This TLV is present on devices that support TDS bands.
+       Bitmask of TDS bands supported by the device.
+       Values: \n
+       - Bit 0 -- TDS Band A 1900 to 1920 MHz, 2010 to 2020 MHz \n
+       - Bit 1 -- TDS Band B 1850 to 1910 MHz, 1930 to 1990 MHz \n
+       - Bit 2 -- TDS Band C 1910 to 1930 MHz \n
+       - Bit 3 -- TDS Band D 2570 to 2620 MHz \n
+       - Bit 4 -- TDS Band E 2300 to 2400 MHz \n
+       - Bit 5 -- TDS Band F 1880 to 1920 MHz
+  */
+}dms_get_band_capability_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+typedef struct {
+  /* This element is a placeholder to prevent the declaration of
+     an empty struct.  DO NOT USE THIS FIELD UNDER ANY CIRCUMSTANCE */
+  char __placeholder;
+}dms_get_factory_sku_req_msg_v01;
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Queries the factory provisioned Stock Keeping
+           Unit (SKU). */
+typedef struct {
+
+  /* Mandatory */
+  /*  Factory SKU */
+  char factory_serial_number[QMI_DMS_FACTORY_SN_MAX_V01 + 1];
+  /**<   Factory serial number string in ASCII format (maximum 128 bytes).
+  */
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+}dms_get_factory_sku_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_enums
+    @{
+  */
+typedef enum {
+  DMS_TIME_REF_TYPE_ENUM_MIN_ENUM_VAL_V01 = -2147483647, /**< To force a 32 bit signed enum.  Do not change or use*/
+  DMS_TIME_REF_TYPE_USER_V01 = 0x00000000,
+  DMS_TIME_REF_TYPE_ENUM_MAX_ENUM_VAL_V01 = 2147483647 /**< To force a 32 bit signed enum.  Do not change or use*/
+}dms_time_ref_type_enum_v01;
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Request Message; Sets the time on the device. */
+typedef struct {
+
+  /* Mandatory */
+  /*  Time */
+  uint64_t time_in_ms;
+  /**<   Count of time in milliseconds that have elapsed
+         from the start of GPS Epoch time (Jan 6, 1980).
+   */
+
+  /* Optional */
+  /*  Time Reference Type */
+  uint8_t time_reference_type_valid;  /**< Must be set to true if time_reference_type is being passed */
+  dms_time_ref_type_enum_v01 time_reference_type;
+  /**<   Time reference used while setting the time. Values: \n
+       - 0x00000000 -- User time \n
+       - 0x00000001 to 0xFFFFFFFF -- Reserved for
+         future extension
+  */
+}dms_set_time_req_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Sets the time on the device. */
+typedef struct {
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+  /**<   Standard response type. */
+}dms_set_time_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+typedef struct {
+  /* This element is a placeholder to prevent the declaration of
+     an empty struct.  DO NOT USE THIS FIELD UNDER ANY CIRCUMSTANCE */
+  char __placeholder;
+}dms_get_alt_net_config_req_msg_v01;
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Queries the alternative network interface configuration
+           used for the device. */
+typedef struct {
+
+  /* Mandatory */
+  /*  Alternative Net Configuration */
+  uint8_t alt_net_config;
+  /**<   Alternative network interface configuration. If not provisioned, the
+       Disabled setting is used by the device as default. Values: \n
+       - 0 -- Disabled \n
+       - 1 -- Enabled
+    */
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+}dms_get_alt_net_config_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Request Message; Sets the alternative network interface configuration
+           used for the device. */
+typedef struct {
+
+  /* Mandatory */
+  /*  Alternative Net Configuration */
+  uint8_t alt_net_config;
+  /**<   Alternative network interface configuration. Values: \n
+       - 0 -- Disabled \n
+       - 1 -- Enabled
+  */
+}dms_set_alt_net_config_req_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Sets the alternative network interface configuration
+           used for the device. */
+typedef struct {
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+}dms_set_alt_net_config_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+typedef struct {
+  /* This element is a placeholder to prevent the declaration of
+     an empty struct.  DO NOT USE THIS FIELD UNDER ANY CIRCUMSTANCE */
+  char __placeholder;
+}dms_get_sw_version_req_msg_v01;
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Queries the software version from the device. */
+typedef struct {
+
+  /* Mandatory */
+  /*  Software Version Information */
+  char sw_version[QMI_DMS_SW_VERSION_MAX_V01 + 1];
+  /**<   String representing the software version information.
+  */
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+}dms_get_sw_version_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Request Message; Changes the service programming code of the device
+           after authentication. */
+typedef struct {
+
+  /* Mandatory */
+  /*  Current SPC */
+  char curr_spc[QMI_DMS_SPC_LEN_V01];
+  /**<   SPC for authentication in ASCII format (digits 0 to 9 only).
+  */
+
+  /* Mandatory */
+  /*  New SPC */
+  char new_spc[QMI_DMS_SPC_LEN_V01];
+  /**<   New SPC in ASCII format (digits 0 to 9 only).
+  */
+}dms_set_spc_req_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Changes the service programming code of the device
+           after authentication. */
+typedef struct {
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+}dms_set_spc_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+typedef struct {
+  /* This element is a placeholder to prevent the declaration of
+     an empty struct.  DO NOT USE THIS FIELD UNDER ANY CIRCUMSTANCE */
+  char __placeholder;
+}dms_get_current_prl_info_req_msg_v01;
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Queries the currently active PRL information of the device. */
+typedef struct {
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+
+  /* Optional */
+  /*  PRL Version */
+  uint8_t prl_version_valid;  /**< Must be set to true if prl_version is being passed */
+  uint16_t prl_version;
+  /**<   PRL version */
+
+  /* Optional */
+  /*  PRL Only Preference */
+  uint8_t prl_only_valid;  /**< Must be set to true if prl_only is being passed */
+  uint8_t prl_only;
+  /**<   Values: \n
+       - 0 -- Unset \n
+       - 1 -- Set
+  */
+}dms_get_current_prl_info_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_enums
+    @{
+  */
+typedef enum {
+  DMS_BIND_SUBSCRIPTION_ENUM_MIN_ENUM_VAL_V01 = -2147483647, /**< To force a 32 bit signed enum.  Do not change or use*/
+  DMS_PRIMARY_SUBS_V01 = 0x0001, /**<  Primary \n  */
+  DMS_SECONDARY_SUBS_V01 = 0x0002, /**<  Secondary \n  */
+  DMS_TERTIARY_SUBS_V01 = 0x0003, /**<  Tertiary   */
+  DMS_BIND_SUBSCRIPTION_ENUM_MAX_ENUM_VAL_V01 = 2147483647 /**< To force a 32 bit signed enum.  Do not change or use*/
+}dms_bind_subscription_enum_v01;
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Request Message; Associates the requesting control point with the requested subscription. */
+typedef struct {
+
+  /* Mandatory */
+  /*  Bind Subscription */
+  dms_bind_subscription_enum_v01 bind_subs;
+  /**<   Subscription to which to bind. Values: \n
+      - DMS_PRIMARY_SUBS (0x0001) --  Primary \n
+      - DMS_SECONDARY_SUBS (0x0002) --  Secondary \n
+      - DMS_TERTIARY_SUBS (0x0003) --  Tertiary
+ */
+}dms_bind_subscription_req_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Associates the requesting control point with the requested subscription. */
+typedef struct {
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+}dms_bind_subscription_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+typedef struct {
+  /* This element is a placeholder to prevent the declaration of
+     an empty struct.  DO NOT USE THIS FIELD UNDER ANY CIRCUMSTANCE */
+  char __placeholder;
+}dms_get_bind_subscription_req_msg_v01;
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Queries the subscription associated with the control point. */
+typedef struct {
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+
+  /* Optional */
+  /*  Bound Subscription */
+  uint8_t bind_subscription_valid;  /**< Must be set to true if bind_subscription is being passed */
+  dms_bind_subscription_enum_v01 bind_subscription;
+  /**<   Values: \n
+      - DMS_PRIMARY_SUBS (0x0001) --  Primary \n
+      - DMS_SECONDARY_SUBS (0x0002) --  Secondary \n
+      - DMS_TERTIARY_SUBS (0x0003) --  Tertiary
+ */
+}dms_get_bind_subscription_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Request Message; Sets the AP software version on the modem required for an
+           Auto Register Short message. */
+typedef struct {
+
+  /* Mandatory */
+  /*  AP Software Version */
+  char ap_sw_version[QMI_DMS_SW_VERSION_MAX_V01 + 1];
+  /**<   String representing the AP software version information.
+  */
+}dms_set_ap_sw_version_req_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Sets the AP software version on the modem required for an
+           Auto Register Short message. */
+typedef struct {
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+}dms_set_ap_sw_version_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+typedef struct {
+  /* This element is a placeholder to prevent the declaration of
+     an empty struct.  DO NOT USE THIS FIELD UNDER ANY CIRCUMSTANCE */
+  char __placeholder;
+}dms_get_cdma_lock_mode_req_msg_v01;
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Requests the CDMA Lock mode status. */
+typedef struct {
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+
+  /* Optional */
+  /*  CDMA Lock Mode */
+  uint8_t cdma_lock_mode_status_valid;  /**< Must be set to true if cdma_lock_mode_status is being passed */
+  dms_cdma_lock_mode_state_enum_v01 cdma_lock_mode_status;
+  /**<   CDMA Lock mode status. Values: \n
+      - DMS_CDMA_LOCK_MODE_OFF (0) --  Phone is not CDMA locked
+      - DMS_CDMA_LOCK_MODE_ON (1) --  Phone is CDMA locked
+ */
+}dms_get_cdma_lock_mode_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_enums
+    @{
+  */
+typedef enum {
+  DMS_TEST_CONFIG_TDS_ENUM_MIN_ENUM_VAL_V01 = -2147483647, /**< To force a 32 bit signed enum.  Do not change or use*/
+  DMS_TEST_CONFIG_TDS_PRODUCTION_V01 = 0, /**<  Use the configuration applicable in production
+                                       (in the field) \n  */
+  DMS_TEST_CONFIG_TDS_LAB_V01 = 1, /**<  Use the configuration applicable in the
+                                  lab \n  */
+  DMS_TEST_CONFIG_TDS_USER_V01 = 2, /**<  Use the user-defined configuration   */
+  DMS_TEST_CONFIG_TDS_ENUM_MAX_ENUM_VAL_V01 = 2147483647 /**< To force a 32 bit signed enum.  Do not change or use*/
+}dms_test_config_tds_enum_v01;
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Request Message; Sets the configuration type used while testing. */
+typedef struct {
+
+  /* Optional */
+  /*  TDS CDMA Configuration */
+  uint8_t tds_config_valid;  /**< Must be set to true if tds_config is being passed */
+  dms_test_config_tds_enum_v01 tds_config;
+  /**<   Configuration parameters to be used for TDS CDMA. Values: \n
+      - DMS_TEST_CONFIG_TDS_PRODUCTION (0) --  Use the configuration applicable in production
+                                       (in the field) \n
+      - DMS_TEST_CONFIG_TDS_LAB (1) --  Use the configuration applicable in the
+                                  lab \n
+      - DMS_TEST_CONFIG_TDS_USER (2) --  Use the user-defined configuration
+ */
+}dms_set_test_config_req_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Sets the configuration type used while testing. */
+typedef struct {
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+}dms_set_test_config_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+typedef struct {
+  /* This element is a placeholder to prevent the declaration of
+     an empty struct.  DO NOT USE THIS FIELD UNDER ANY CIRCUMSTANCE */
+  char __placeholder;
+}dms_get_test_config_req_msg_v01;
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Gets the configuration type used for testing. */
+typedef struct {
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+
+  /* Optional */
+  /*  Active TDS CDMA Configuration */
+  uint8_t active_tds_config_valid;  /**< Must be set to true if active_tds_config is being passed */
+  dms_test_config_tds_enum_v01 active_tds_config;
+  /**<   Configuration parameters currently used for TDS CDMA. Values: \n
+      - DMS_TEST_CONFIG_TDS_PRODUCTION (0) --  Use the configuration applicable in production
+                                       (in the field) \n
+      - DMS_TEST_CONFIG_TDS_LAB (1) --  Use the configuration applicable in the
+                                  lab \n
+      - DMS_TEST_CONFIG_TDS_USER (2) --  Use the user-defined configuration
+ */
+
+  /* Optional */
+  /*  Desired TDS CDMA Configuration */
+  uint8_t desired_tds_config_valid;  /**< Must be set to true if desired_tds_config is being passed */
+  dms_test_config_tds_enum_v01 desired_tds_config;
+  /**<   Configuration parameters for TDS CDMA that were set using the last
+ QMI_DMS_SET_TEST_CONFIG command. Values: \n
+      - DMS_TEST_CONFIG_TDS_PRODUCTION (0) --  Use the configuration applicable in production
+                                       (in the field) \n
+      - DMS_TEST_CONFIG_TDS_LAB (1) --  Use the configuration applicable in the
+                                  lab \n
+      - DMS_TEST_CONFIG_TDS_USER (2) --  Use the user-defined configuration
+ */
+}dms_get_test_config_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+typedef struct {
+  /* This element is a placeholder to prevent the declaration of
+     an empty struct.  DO NOT USE THIS FIELD UNDER ANY CIRCUMSTANCE */
+  char __placeholder;
+}dms_clear_test_config_req_msg_v01;
+
+/** @addtogroup dms_qmi_messages
+    @{
+  */
+/** Response Message; Resets the modem configuration to production values. */
+typedef struct {
+
+  /* Mandatory */
+  /*  Result Code */
+  qmi_response_type_v01 resp;
+}dms_clear_test_config_resp_msg_v01;  /* Message */
+/**
+    @}
+  */
+
+/*Service Message Definition*/
+/** @addtogroup dms_qmi_msg_ids
+    @{
+  */
+#define QMI_DMS_RESET_REQ_V01 0x0000
+#define QMI_DMS_RESET_RESP_V01 0x0000
+#define QMI_DMS_SET_EVENT_REPORT_REQ_V01 0x0001
+#define QMI_DMS_SET_EVENT_REPORT_RESP_V01 0x0001
+#define QMI_DMS_EVENT_REPORT_IND_V01 0x0001
+#define QMI_DMS_GET_SUPPORTED_MSGS_REQ_V01 0x001E
+#define QMI_DMS_GET_SUPPORTED_MSGS_RESP_V01 0x001E
+#define QMI_DMS_GET_SUPPORTED_FIELDS_REQ_V01 0x001F
+#define QMI_DMS_GET_SUPPORTED_FIELDS_RESP_V01 0x001F
+#define QMI_DMS_GET_DEVICE_CAP_REQ_V01 0x0020
+#define QMI_DMS_GET_DEVICE_CAP_RESP_V01 0x0020
+#define QMI_DMS_GET_DEVICE_MFR_REQ_V01 0x0021
+#define QMI_DMS_GET_DEVICE_MFR_RESP_V01 0x0021
+#define QMI_DMS_GET_DEVICE_MODEL_ID_REQ_V01 0x0022
+#define QMI_DMS_GET_DEVICE_MODEL_ID_RESP_V01 0x0022
+#define QMI_DMS_GET_DEVICE_REV_ID_REQ_V01 0x0023
+#define QMI_DMS_GET_DEVICE_REV_ID_RESP_V01 0x0023
+#define QMI_DMS_GET_MSISDN_REQ_V01 0x0024
+#define QMI_DMS_GET_MSISDN_RESP_V01 0x0024
+#define QMI_DMS_GET_DEVICE_SERIAL_NUMBERS_REQ_V01 0x0025
+#define QMI_DMS_GET_DEVICE_SERIAL_NUMBERS_RESP_V01 0x0025
+#define QMI_DMS_GET_POWER_STATE_REQ_V01 0x0026
+#define QMI_DMS_GET_POWER_STATE_RESP_V01 0x0026
+#define QMI_DMS_UIM_SET_PIN_PROTECTION_REQ_V01 0x0027
+#define QMI_DMS_UIM_SET_PIN_PROTECTION_RESP_V01 0x0027
+#define QMI_DMS_UIM_VERIFY_PIN_REQ_V01 0x0028
+#define QMI_DMS_UIM_VERIFY_PIN_RESP_V01 0x0028
+#define QMI_DMS_UIM_UNBLOCK_PIN_REQ_V01 0x0029
+#define QMI_DMS_UIM_UNBLOCK_PIN_RESP_V01 0x0029
+#define QMI_DMS_UIM_CHANGE_PIN_REQ_V01 0x002A
+#define QMI_DMS_UIM_CHANGE_PIN_RESP_V01 0x002A
+#define QMI_DMS_UIM_GET_PIN_STATUS_REQ_V01 0x002B
+#define QMI_DMS_UIM_GET_PIN_STATUS_RESP_V01 0x002B
+#define QMI_DMS_GET_DEVICE_HARDWARE_REV_REQ_V01 0x002C
+#define QMI_DMS_GET_DEVICE_HARDWARE_REV_RESP_V01 0x002C
+#define QMI_DMS_GET_OPERATING_MODE_REQ_V01 0x002D
+#define QMI_DMS_GET_OPERATING_MODE_RESP_V01 0x002D
+#define QMI_DMS_SET_OPERATING_MODE_REQ_V01 0x002E
+#define QMI_DMS_SET_OPERATING_MODE_RESP_V01 0x002E
+#define QMI_DMS_GET_TIME_REQ_V01 0x002F
+#define QMI_DMS_GET_TIME_RESP_V01 0x002F
+#define QMI_DMS_GET_PRL_VER_REQ_V01 0x0030
+#define QMI_DMS_GET_PRL_VER_RESP_V01 0x0030
+#define QMI_DMS_GET_ACTIVATION_STATE_REQ_V01 0x0031
+#define QMI_DMS_GET_ACTIVATION_STATE_RESP_V01 0x0031
+#define QMI_DMS_ACTIVATE_AUTOMATIC_REQ_V01 0x0032
+#define QMI_DMS_ACTIVATE_AUTOMATIC_RESP_V01 0x0032
+#define QMI_DMS_ACTIVATE_MANUAL_REQ_V01 0x0033
+#define QMI_DMS_ACTIVATE_MANUAL_RESP_V01 0x0033
+#define QMI_DMS_GET_USER_LOCK_STATE_REQ_V01 0x0034
+#define QMI_DMS_GET_USER_LOCK_STATE_RESP_V01 0x0034
+#define QMI_DMS_SET_USER_LOCK_STATE_REQ_V01 0x0035
+#define QMI_DMS_SET_USER_LOCK_STATE_RESP_V01 0x0035
+#define QMI_DMS_SET_USER_LOCK_CODE_REQ_V01 0x0036
+#define QMI_DMS_SET_USER_LOCK_CODE_RESP_V01 0x0036
+#define QMI_DMS_READ_USER_DATA_REQ_V01 0x0037
+#define QMI_DMS_READ_USER_DATA_RESP_V01 0x0037
+#define QMI_DMS_WRITE_USER_DATA_REQ_V01 0x0038
+#define QMI_DMS_WRITE_USER_DATA_RESP_V01 0x0038
+#define QMI_DMS_READ_ERI_FILE_REQ_V01 0x0039
+#define QMI_DMS_READ_ERI_FILE_RESP_V01 0x0039
+#define QMI_DMS_RESTORE_FACTORY_DEFAULTS_REQ_V01 0x003A
+#define QMI_DMS_RESTORE_FACTORY_DEFAULTS_RESP_V01 0x003A
+#define QMI_DMS_VALIDATE_SERVICE_PROGRAMMING_CODE_REQ_V01 0x003B
+#define QMI_DMS_VALIDATE_SERVICE_PROGRAMMING_CODE_RESP_V01 0x003B
+#define QMI_DMS_UIM_GET_ICCID_REQ_V01 0x003C
+#define QMI_DMS_UIM_GET_ICCID_RESP_V01 0x003C
+#define QMI_DMS_UIM_GET_CK_STATUS_REQ_V01 0x0040
+#define QMI_DMS_UIM_GET_CK_STATUS_RESP_V01 0x0040
+#define QMI_DMS_UIM_SET_CK_PROTECTION_REQ_V01 0x0041
+#define QMI_DMS_UIM_SET_CK_PROTECTION_RESP_V01 0x0041
+#define QMI_DMS_UIM_UNBLOCK_CK_REQ_V01 0x0042
+#define QMI_DMS_UIM_UNBLOCK_CK_RESP_V01 0x0042
+#define QMI_DMS_UIM_GET_IMSI_REQ_V01 0x0043
+#define QMI_DMS_UIM_GET_IMSI_RESP_V01 0x0043
+#define QMI_DMS_UIM_GET_STATE_REQ_V01 0x0044
+#define QMI_DMS_UIM_GET_STATE_RESP_V01 0x0044
+#define QMI_DMS_GET_BAND_CAPABILITY_REQ_V01 0x0045
+#define QMI_DMS_GET_BAND_CAPABILITY_RESP_V01 0x0045
+#define QMI_DMS_GET_FACTORY_SKU_REQ_V01 0x0046
+#define QMI_DMS_GET_FACTORY_SKU_RESP_V01 0x0046
+#define QMI_DMS_SET_TIME_REQ_V01 0x004B
+#define QMI_DMS_SET_TIME_RESP_V01 0x004B
+#define QMI_DMS_GET_ALT_NET_CONFIG_REQ_V01 0x004D
+#define QMI_DMS_GET_ALT_NET_CONFIG_RESP_V01 0x004D
+#define QMI_DMS_SET_ALT_NET_CONFIG_REQ_V01 0x004E
+#define QMI_DMS_SET_ALT_NET_CONFIG_RESP_V01 0x004E
+#define QMI_DMS_GET_SW_VERSION_REQ_V01 0x0051
+#define QMI_DMS_GET_SW_VERSION_RESP_V01 0x0051
+#define QMI_DMS_SET_SPC_REQ_V01 0x0052
+#define QMI_DMS_SET_SPC_RESP_V01 0x0052
+#define QMI_DMS_GET_CURRENT_PRL_INFO_REQ_V01 0x0053
+#define QMI_DMS_GET_CURRENT_PRL_INFO_RESP_V01 0x0053
+#define QMI_DMS_BIND_SUBSCRIPTION_REQ_V01 0x0054
+#define QMI_DMS_BIND_SUBSCRIPTION_RESP_V01 0x0054
+#define QMI_DMS_GET_BIND_SUBSCRIPTION_REQ_V01 0x0055
+#define QMI_DMS_GET_BIND_SUBSCRIPTION_RESP_V01 0x0055
+#define QMI_DMS_SET_AP_SW_VERSION_REQ_V01 0x0056
+#define QMI_DMS_SET_AP_SW_VERSION_RESP_V01 0x0056
+#define QMI_DMS_GET_CDMA_LOCK_MODE_REQ_V01 0x0057
+#define QMI_DMS_GET_CDMA_LOCK_MODE_RESP_V01 0x0057
+#define QMI_DMS_SET_TEST_CONFIG_REQ_V01 0x0058
+#define QMI_DMS_SET_TEST_CONFIG_RESP_V01 0x0058
+#define QMI_DMS_GET_TEST_CONFIG_REQ_V01 0x0059
+#define QMI_DMS_GET_TEST_CONFIG_RESP_V01 0x0059
+#define QMI_DMS_CLEAR_TEST_CONFIG_REQ_V01 0x005A
+#define QMI_DMS_CLEAR_TEST_CONFIG_RESP_V01 0x005A
+/**
+    @}
+  */
+
+/* Service Object Accessor */
+/** @addtogroup wms_qmi_accessor
+    @{
+  */
+/** This function is used internally by the autogenerated code.  Clients should use the
+   macro dms_get_service_object_v01( ) that takes in no arguments. */
+qmi_idl_service_object_type dms_get_service_object_internal_v01
+ ( int32_t idl_maj_version, int32_t idl_min_version, int32_t library_version );
+
+/** This macro should be used to get the service object */
+#define dms_get_service_object_v01( ) \
+          dms_get_service_object_internal_v01( \
+            DMS_V01_IDL_MAJOR_VERS, DMS_V01_IDL_MINOR_VERS, \
+            DMS_V01_IDL_TOOL_VERS )
+/**
+    @}
+  */
+
+
+#ifdef __cplusplus
+}
+#endif
+#endif
+
diff --git a/wcnss-service/wcnss_service.c b/wcnss-service/wcnss_service.c
index c817be1..70f9970 100644
--- a/wcnss-service/wcnss_service.c
+++ b/wcnss-service/wcnss_service.c
@@ -37,13 +37,19 @@
 #include <utime.h>
 #include <sys/stat.h>
 #include <sys/sendfile.h>
+#include <unistd.h>
 #define LOG_TAG "wcnss_service"
 #include <cutils/log.h>
 #include <cutils/properties.h>
 #ifdef WCNSS_QMI
 #include "wcnss_qmi_client.h"
+#ifdef MDM_DETECT
 #include "mdm_detect.h"
 #endif
+#endif
+#ifdef WCNSS_QMI_OSS
+#include <dlfcn.h>
+#endif
 
 #define SUCCESS 0
 #define FAILED -1
@@ -72,7 +78,6 @@
 #define WLAN_INI_FILE_SOURCE "/vendor/etc/wifi/WCNSS_qcom_cfg.ini"
 #define WCNSS_HAS_CAL_DATA\
 		"/sys/module/wcnsscore/parameters/has_calibrated_data"
-#define WLAN_DRIVER_ATH_DEFAULT_VAL "0"
 
 #define ASCII_A		65
 #define ASCII_a		97
@@ -80,7 +85,7 @@
 #define HEXA_A		10
 #define HEX_BASE		16
 
-#ifdef WCNSS_QMI
+#if defined (WCNSS_QMI) || defined(WCNSS_QMI_OSS)
 #define WLAN_ADDR_SIZE   6
 unsigned char wlan_nv_mac_addr[WLAN_ADDR_SIZE];
 #define MAC_ADDR_ARRAY(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
@@ -389,17 +394,15 @@
 }
 
 
-#ifdef WCNSS_QMI
+#if defined(WCNSS_QMI) || defined(WCNSS_QMI_OSS)
 void setup_wcnss_parameters(int *cal, int nv_mac_addr)
 #else
 void setup_wcnss_parameters(int *cal)
 #endif
 {
 	char msg[WCNSS_MAX_CMD_LEN];
-	char serial[PROPERTY_VALUE_MAX];
 	int fd, rc, pos = 0;
 	struct stat st;
-	unsigned int serial_num = 0;
 
 	fd = open(WCNSS_CTRL, O_WRONLY);
 	if (fd < 0) {
@@ -407,26 +410,7 @@
 		return;
 	}
 
-	rc = property_get("ro.serialno", serial, "");
-	if (rc) {
-		serial_num = convert_string_to_hex(serial);
-		ALOGE("Serial Number is  %x", serial_num);
-
-		msg[pos++] = WCNSS_USR_SERIAL_NUM >> BYTE_1;
-		msg[pos++] = WCNSS_USR_SERIAL_NUM >> BYTE_0;
-		msg[pos++] = serial_num >> BYTE_3;
-		msg[pos++] = serial_num >> BYTE_2;
-		msg[pos++] = serial_num >> BYTE_1;
-		msg[pos++] = serial_num >> BYTE_0;
-
-		if (write(fd, msg, pos) < 0) {
-			ALOGE("Failed to write to %s : %s", WCNSS_CTRL,
-					strerror(errno));
-			goto fail;
-		}
-	}
-
-#ifdef WCNSS_QMI
+#if defined(WCNSS_QMI) || defined (WCNSS_QMI_OSS)
 	if (SUCCESS == nv_mac_addr)
 	{
 		pos = 0;
@@ -493,12 +477,7 @@
 	return;
 }
 
-void setup_wlan_driver_ath_prop()
-{
-	property_set("vendor.wlan.driver.ath", WLAN_DRIVER_ATH_DEFAULT_VAL);
-}
-
-#ifdef WCNSS_QMI
+#ifdef MDM_DETECT
 int check_modem_compatability(struct dev_info *mdm_detect_info)
 {
 	char args[MODEM_BASEBAND_PROPERTY_SIZE] = {0};
@@ -720,20 +699,99 @@
 
 }
 
+#ifdef WCNSS_QMI_OSS
+static void *wcnss_qmi_handle = NULL;
+static int (*wcnss_init_qmi)(void) = NULL;
+static int (*wcnss_qmi_get_wlan_address)(unsigned char *) = NULL;
+static void (*wcnss_qmi_deinit)(void) = NULL;
+
+static int setup_wcnss_qmi(void)
+{
+	const char *error = NULL;
+
+	/* initialize the DMS client and request the wlan mac address */
+	wcnss_qmi_handle = dlopen("libwcnss_qmi.so", RTLD_NOW);
+	if (!wcnss_qmi_handle) {
+		ALOGE("Failed to open libwcnss_qmi.so: %s", dlerror());
+		goto dlopen_err;
+	}
+
+	dlerror();
+
+	wcnss_init_qmi = dlsym(wcnss_qmi_handle, "wcnss_init_qmi");
+	if ((error = dlerror()) != NULL) {
+		ALOGE("Failed to resolve function: %s: %s",
+				"wcnss_init_qmi", error);
+		goto dlsym_err;
+	}
+
+	dlerror();
+
+	wcnss_qmi_get_wlan_address = dlsym(wcnss_qmi_handle,
+			"wcnss_qmi_get_wlan_address");
+	if ((error = dlerror()) != NULL) {
+		ALOGE("Failed to resolve function: %s: %s",
+				"wcnss_qmi_get_wlan_address", error);
+		goto dlsym_err;
+	}
+
+	dlerror();
+
+	wcnss_qmi_deinit = dlsym(wcnss_qmi_handle, "wcnss_qmi_deinit");
+	if ((error = dlerror()) != NULL) {
+		ALOGE("Failed to resolve function: %s: %s",
+				"wcnss_qmi_deinit", error);
+		goto dlsym_err;
+	}
+
+	return SUCCESS;
+
+dlsym_err:
+	dlclose(wcnss_qmi_handle);
+dlopen_err:
+	return FAILED;
+}
+#endif
+
 int main(int argc, char *argv[])
 {
 	UNUSED(argc), UNUSED(argv);
 	int rc;
 	int fd_dev, ret_cal;
-#ifdef WCNSS_QMI
+#if defined(WCNSS_QMI) || defined(WCNSS_QMI_OSS)
 	int nv_mac_addr = FAILED;
+#ifdef MDM_DETECT
 	struct dev_info mdm_detect_info;
 	int nom = 0;
 #endif
+#endif
 
 	setup_wlan_config_file();
 
+#ifdef WCNSS_QMI_OSS
+	/* dlopen WCNSS QMI lib */
+
+	rc = setup_wcnss_qmi();
+	if (rc == SUCCESS) {
+		if (SUCCESS == (*wcnss_init_qmi)()) {
+			rc = (*wcnss_qmi_get_wlan_address)(wlan_nv_mac_addr);
+			if (rc == SUCCESS) {
+				nv_mac_addr = SUCCESS;
+				ALOGE("WLAN MAC Addr:" MAC_ADDRESS_STR,
+						MAC_ADDR_ARRAY(wlan_nv_mac_addr));
+			} else
+				ALOGE("Failed to Get MAC addr from modem");
+
+			(*wcnss_qmi_deinit)();
+		}
+		else
+			ALOGE("Failed to Initialize wcnss QMI Interface");
+	} else {
+		ALOGE("Failed to Initialize wcnss QMI interface library");
+	}
+#endif
 #ifdef WCNSS_QMI
+#ifdef MDM_DETECT
 	/* Call ESOC API to get the number of modems.
 	   If the number of modems is not zero, only then proceed
 	   with the eap_proxy intialization.*/
@@ -755,6 +813,7 @@
 		ALOGE("wcnss_service: Target does not have external modem");
 		goto nomodem;
 	}
+#endif
 
 	/* initialize the DMS client and request the wlan mac address */
 
@@ -779,7 +838,7 @@
 
 	dynamic_nv_replace();
 
-#ifdef WCNSS_QMI
+#if defined(WCNSS_QMI) || defined(WCNSS_QMI_OSS)
 	setup_wcnss_parameters(&ret_cal, nv_mac_addr);
 #else
 	setup_wcnss_parameters(&ret_cal);
@@ -800,8 +859,6 @@
 			ALOGE("Cal data is successfully written to WCNSS");
 	}
 
-	setup_wlan_driver_ath_prop();
-
 	rc = wcnss_read_and_store_cal_data(fd_dev);
 	if (rc != SUCCESS)
 		ALOGE("Failed to read and save cal data %d", rc);
@@ -811,5 +868,9 @@
 
 	close(fd_dev);
 
+#ifdef WCNSS_QMI_OSS
+	dlclose(wcnss_qmi_handle);
+#endif
+
 	return rc;
 }