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;
}