aboutsummaryrefslogtreecommitdiff
path: root/libqcdm/src
diff options
context:
space:
mode:
authorGuido Günther <agx@sigxcpu.org>2014-02-05 08:38:30 +0100
committerGuido Günther <agx@sigxcpu.org>2014-02-05 08:38:30 +0100
commit13ed135b9ae78c692dc359976eb8b54d0a3629b8 (patch)
treeae2ea713ad51d73980cf83db1411d6589dac5e8b /libqcdm/src
parent14d771b90f5a7d3887e5e900d1fb4737477ad305 (diff)
Imported Upstream version 0.7.991upstream/0.7.991
Diffstat (limited to 'libqcdm/src')
-rw-r--r--libqcdm/src/Makefile.in317
-rw-r--r--libqcdm/src/commands.c310
-rw-r--r--libqcdm/src/commands.h89
-rw-r--r--libqcdm/src/dm-commands.h82
-rw-r--r--libqcdm/src/errors.h6
-rw-r--r--libqcdm/src/log-items.h44
-rw-r--r--libqcdm/src/nv-items.h19
-rw-r--r--libqcdm/src/result.c9
-rw-r--r--libqcdm/src/utils.c8
-rw-r--r--libqcdm/src/utils.h8
10 files changed, 712 insertions, 180 deletions
diff --git a/libqcdm/src/Makefile.in b/libqcdm/src/Makefile.in
index 24eafbb..1338fd9 100644
--- a/libqcdm/src/Makefile.in
+++ b/libqcdm/src/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.13.2 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
@SET_MAKE@
VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
@@ -35,13 +79,19 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = libqcdm/src
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+ $(top_srcdir)/depcomp
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
- $(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/libtool.m4 \
- $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
- $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
- $(top_srcdir)/m4/nls.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \
+ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
+ $(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
@@ -53,13 +103,26 @@ am__DEPENDENCIES_1 =
libqcdm_test_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
am_libqcdm_test_la_OBJECTS = libqcdm_test_la-utils.lo
libqcdm_test_la_OBJECTS = $(am_libqcdm_test_la_OBJECTS)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
+am__v_lt_1 =
libqcdm_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
am_libqcdm_la_OBJECTS = libqcdm_la-com.lo libqcdm_la-commands.lo \
libqcdm_la-errors.lo libqcdm_la-result.lo libqcdm_la-utils.lo
libqcdm_la_OBJECTS = $(am_libqcdm_la_OBJECTS)
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
@@ -70,24 +133,42 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo " CC " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
CCLD = $(CC)
LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo " CCLD " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo " GEN " $@;
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
SOURCES = $(libqcdm_test_la_SOURCES) $(libqcdm_la_SOURCES)
DIST_SOURCES = $(libqcdm_test_la_SOURCES) $(libqcdm_la_SOURCES)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -121,13 +202,22 @@ ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GLIB_MKENUMS = @GLIB_MKENUMS@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
GUDEV_CFLAGS = @GUDEV_CFLAGS@
GUDEV_LIBS = @GUDEV_LIBS@
+HTML_DIR = @HTML_DIR@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -139,22 +229,39 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
INTLTOOL_MERGE = @INTLTOOL_MERGE@
INTLTOOL_PERL = @INTLTOOL_PERL@
INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
+INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
+INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
+INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
LD = @LD@
LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBMM_GLIB_CFLAGS = @LIBMM_GLIB_CFLAGS@
+LIBMM_GLIB_LIBS = @LIBMM_GLIB_LIBS@
+LIBMM_LIBS = @LIBMM_LIBS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIPO = @LIPO@
LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
LTLIBOBJS = @LTLIBOBJS@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MANIFEST_TOOL = @MANIFEST_TOOL@
+MBIM_CFLAGS = @MBIM_CFLAGS@
+MBIM_LIBS = @MBIM_LIBS@
MKDIR_P = @MKDIR_P@
MKINSTALLDIRS = @MKINSTALLDIRS@
+MMCLI_CFLAGS = @MMCLI_CFLAGS@
+MMCLI_LIBS = @MMCLI_LIBS@
MM_CFLAGS = @MM_CFLAGS@
MM_LIBS = @MM_LIBS@
MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
MSGFMT_OPTS = @MSGFMT_OPTS@
MSGMERGE = @MSGMERGE@
NM = @NM@
@@ -181,15 +288,20 @@ POSUB = @POSUB@
PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
PPPD_PLUGIN_DIR = @PPPD_PLUGIN_DIR@
+QMI_CFLAGS = @QMI_CFLAGS@
+QMI_LIBS = @QMI_LIBS@
RANLIB = @RANLIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
+SYSTEMD_UNIT_DIR = @SYSTEMD_UNIT_DIR@
UDEV_BASE_DIR = @UDEV_BASE_DIR@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
@@ -223,6 +335,8 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
+intltool__v_merge_options_ = @intltool__v_merge_options_@
+intltool__v_merge_options_0 = @intltool__v_merge_options_0@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -316,15 +430,19 @@ $(am__aclocal_m4_deps):
clean-noinstLTLIBRARIES:
-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
- @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
- dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
- test "$$dir" != "$$p" || dir=.; \
- echo "rm -f \"$${dir}/so_locations\""; \
- rm -f "$${dir}/so_locations"; \
- done
-libqcdm-test.la: $(libqcdm_test_la_OBJECTS) $(libqcdm_test_la_DEPENDENCIES)
+ @list='$(noinst_LTLIBRARIES)'; \
+ locs=`for p in $$list; do echo $$p; done | \
+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+ sort -u`; \
+ test -z "$$locs" || { \
+ echo rm -f $${locs}; \
+ rm -f $${locs}; \
+ }
+
+libqcdm-test.la: $(libqcdm_test_la_OBJECTS) $(libqcdm_test_la_DEPENDENCIES) $(EXTRA_libqcdm_test_la_DEPENDENCIES)
$(AM_V_CCLD)$(LINK) $(libqcdm_test_la_OBJECTS) $(libqcdm_test_la_LIBADD) $(LIBS)
-libqcdm.la: $(libqcdm_la_OBJECTS) $(libqcdm_la_DEPENDENCIES)
+
+libqcdm.la: $(libqcdm_la_OBJECTS) $(libqcdm_la_DEPENDENCIES) $(EXTRA_libqcdm_la_DEPENDENCIES)
$(AM_V_CCLD)$(LINK) $(libqcdm_la_OBJECTS) $(libqcdm_la_LIBADD) $(LIBS)
mostlyclean-compile:
@@ -344,76 +462,67 @@ distclean-compile:
@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $<
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
.c.obj:
@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
.c.lo:
@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
libqcdm_test_la-utils.lo: utils.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libqcdm_test_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libqcdm_test_la-utils.lo -MD -MP -MF $(DEPDIR)/libqcdm_test_la-utils.Tpo -c -o libqcdm_test_la-utils.lo `test -f 'utils.c' || echo '$(srcdir)/'`utils.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libqcdm_test_la-utils.Tpo $(DEPDIR)/libqcdm_test_la-utils.Plo
-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='utils.c' object='libqcdm_test_la-utils.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='utils.c' object='libqcdm_test_la-utils.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libqcdm_test_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libqcdm_test_la-utils.lo `test -f 'utils.c' || echo '$(srcdir)/'`utils.c
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libqcdm_test_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libqcdm_test_la-utils.lo `test -f 'utils.c' || echo '$(srcdir)/'`utils.c
libqcdm_la-com.lo: com.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libqcdm_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libqcdm_la-com.lo -MD -MP -MF $(DEPDIR)/libqcdm_la-com.Tpo -c -o libqcdm_la-com.lo `test -f 'com.c' || echo '$(srcdir)/'`com.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libqcdm_la-com.Tpo $(DEPDIR)/libqcdm_la-com.Plo
-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='com.c' object='libqcdm_la-com.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='com.c' object='libqcdm_la-com.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libqcdm_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libqcdm_la-com.lo `test -f 'com.c' || echo '$(srcdir)/'`com.c
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libqcdm_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libqcdm_la-com.lo `test -f 'com.c' || echo '$(srcdir)/'`com.c
libqcdm_la-commands.lo: commands.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libqcdm_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libqcdm_la-commands.lo -MD -MP -MF $(DEPDIR)/libqcdm_la-commands.Tpo -c -o libqcdm_la-commands.lo `test -f 'commands.c' || echo '$(srcdir)/'`commands.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libqcdm_la-commands.Tpo $(DEPDIR)/libqcdm_la-commands.Plo
-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='commands.c' object='libqcdm_la-commands.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='commands.c' object='libqcdm_la-commands.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libqcdm_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libqcdm_la-commands.lo `test -f 'commands.c' || echo '$(srcdir)/'`commands.c
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libqcdm_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libqcdm_la-commands.lo `test -f 'commands.c' || echo '$(srcdir)/'`commands.c
libqcdm_la-errors.lo: errors.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libqcdm_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libqcdm_la-errors.lo -MD -MP -MF $(DEPDIR)/libqcdm_la-errors.Tpo -c -o libqcdm_la-errors.lo `test -f 'errors.c' || echo '$(srcdir)/'`errors.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libqcdm_la-errors.Tpo $(DEPDIR)/libqcdm_la-errors.Plo
-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='errors.c' object='libqcdm_la-errors.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='errors.c' object='libqcdm_la-errors.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libqcdm_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libqcdm_la-errors.lo `test -f 'errors.c' || echo '$(srcdir)/'`errors.c
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libqcdm_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libqcdm_la-errors.lo `test -f 'errors.c' || echo '$(srcdir)/'`errors.c
libqcdm_la-result.lo: result.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libqcdm_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libqcdm_la-result.lo -MD -MP -MF $(DEPDIR)/libqcdm_la-result.Tpo -c -o libqcdm_la-result.lo `test -f 'result.c' || echo '$(srcdir)/'`result.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libqcdm_la-result.Tpo $(DEPDIR)/libqcdm_la-result.Plo
-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='result.c' object='libqcdm_la-result.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='result.c' object='libqcdm_la-result.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libqcdm_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libqcdm_la-result.lo `test -f 'result.c' || echo '$(srcdir)/'`result.c
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libqcdm_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libqcdm_la-result.lo `test -f 'result.c' || echo '$(srcdir)/'`result.c
libqcdm_la-utils.lo: utils.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libqcdm_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libqcdm_la-utils.lo -MD -MP -MF $(DEPDIR)/libqcdm_la-utils.Tpo -c -o libqcdm_la-utils.lo `test -f 'utils.c' || echo '$(srcdir)/'`utils.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libqcdm_la-utils.Tpo $(DEPDIR)/libqcdm_la-utils.Plo
-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='utils.c' object='libqcdm_la-utils.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='utils.c' object='libqcdm_la-utils.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libqcdm_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libqcdm_la-utils.lo `test -f 'utils.c' || echo '$(srcdir)/'`utils.c
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libqcdm_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libqcdm_la-utils.lo `test -f 'utils.c' || echo '$(srcdir)/'`utils.c
mostlyclean-libtool:
-rm -f *.lo
@@ -421,26 +530,15 @@ mostlyclean-libtool:
clean-libtool:
-rm -rf .libs _libs
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ $(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
@@ -452,15 +550,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$$unique; \
fi; \
fi
-ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
@@ -469,6 +563,21 @@ GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -517,10 +626,15 @@ install-am: all-am
installcheck: installcheck-am
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
mostlyclean-generic:
clean-generic:
@@ -605,18 +719,19 @@ uninstall-am:
.MAKE: install-am install-strip
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
- clean-libtool clean-noinstLTLIBRARIES ctags distclean \
- distclean-compile distclean-generic distclean-libtool \
- distclean-tags distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am install-man \
- install-pdf install-pdf-am install-ps install-ps-am \
- install-strip installcheck installcheck-am installdirs \
- maintainer-clean maintainer-clean-generic mostlyclean \
- mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
- pdf pdf-am ps ps-am tags uninstall uninstall-am
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+ clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \
+ ctags-am distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags tags-am uninstall uninstall-am
# Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/libqcdm/src/commands.c b/libqcdm/src/commands.c
index f906f1a..541cad7 100644
--- a/libqcdm/src/commands.c
+++ b/libqcdm/src/commands.c
@@ -103,6 +103,43 @@ cdma_band_class_to_qcdm (u_int8_t cdma)
return QCDM_CDMA_BAND_CLASS_UNKNOWN;
}
+static u_int8_t
+nv_mode_pref_from_qcdm (u_int8_t qcdm)
+{
+ switch (qcdm) {
+ case QCDM_CMD_NV_MODE_PREF_ITEM_MODE_PREF_DIGITAL:
+ return DIAG_NV_MODE_PREF_DIGITAL;
+ case QCDM_CMD_NV_MODE_PREF_ITEM_MODE_PREF_DIGITAL_ONLY:
+ return DIAG_NV_MODE_PREF_DIGITAL_ONLY;
+ case QCDM_CMD_NV_MODE_PREF_ITEM_MODE_PREF_ANALOG:
+ return DIAG_NV_MODE_PREF_ANALOG;
+ case QCDM_CMD_NV_MODE_PREF_ITEM_MODE_PREF_ANALOG_ONLY:
+ return DIAG_NV_MODE_PREF_ANALOG_ONLY;
+ case QCDM_CMD_NV_MODE_PREF_ITEM_MODE_PREF_AUTO:
+ return DIAG_NV_MODE_PREF_AUTO;
+ case QCDM_CMD_NV_MODE_PREF_ITEM_MODE_PREF_1X_ONLY:
+ return DIAG_NV_MODE_PREF_1X_ONLY;
+ case QCDM_CMD_NV_MODE_PREF_ITEM_MODE_PREF_HDR_ONLY:
+ return DIAG_NV_MODE_PREF_HDR_ONLY;
+ case QCDM_CMD_NV_MODE_PREF_ITEM_MODE_PREF_GPRS_ONLY:
+ return DIAG_NV_MODE_PREF_GPRS_ONLY;
+ case QCDM_CMD_NV_MODE_PREF_ITEM_MODE_PREF_UMTS_ONLY:
+ return DIAG_NV_MODE_PREF_UMTS_ONLY;
+ case QCDM_CMD_NV_MODE_PREF_ITEM_MODE_PREF_GSM_UMTS_ONLY:
+ return DIAG_NV_MODE_PREF_GSM_UMTS_ONLY;
+ case QCDM_CMD_NV_MODE_PREF_ITEM_MODE_PREF_1X_HDR_ONLY:
+ return DIAG_NV_MODE_PREF_1X_HDR_ONLY;
+ case QCDM_CMD_NV_MODE_PREF_ITEM_MODE_PREF_LTE_ONLY:
+ return DIAG_NV_MODE_PREF_LTE_ONLY;
+ case QCDM_CMD_NV_MODE_PREF_ITEM_MODE_PREF_GSM_UMTS_LTE_ONLY:
+ return DIAG_NV_MODE_PREF_GSM_UMTS_LTE_ONLY;
+ case QCDM_CMD_NV_MODE_PREF_ITEM_MODE_PREF_1X_HDR_LTE_ONLY:
+ return DIAG_NV_MODE_PREF_1X_HDR_LTE_ONLY;
+ }
+ return DIAG_NV_MODE_PREF_AUTO;
+};
+
+
/**********************************************************************/
/*
@@ -366,6 +403,35 @@ qcdm_cmd_esn_result (const char *buf, size_t len, int *out_error)
/**********************************************************************/
size_t
+qcdm_cmd_control_new (char *buf, size_t len, u_int8_t mode)
+{
+ char cmdbuf[5];
+ DMCmdControl *cmd = (DMCmdControl *) &cmdbuf[0];
+
+ qcdm_return_val_if_fail (buf != NULL, 0);
+ qcdm_return_val_if_fail (len >= sizeof (*cmd) + DIAG_TRAILER_LEN, 0);
+
+ memset (cmd, 0, sizeof (*cmd));
+ cmd->code = DIAG_CMD_CONTROL;
+ cmd->mode = htole16 ((u_int16_t) mode);
+
+ return dm_encapsulate_buffer (cmdbuf, sizeof (*cmd), sizeof (cmdbuf), buf, len);
+}
+
+QcdmResult *
+qcdm_cmd_control_result (const char *buf, size_t len, int *out_error)
+{
+ qcdm_return_val_if_fail (buf != NULL, NULL);
+
+ if (!check_command (buf, len, DIAG_CMD_CONTROL, sizeof (DMCmdControl), out_error))
+ return NULL;
+
+ return qcdm_result_new ();
+}
+
+/**********************************************************************/
+
+size_t
qcdm_cmd_cdma_status_new (char *buf, size_t len)
{
char cmdbuf[3];
@@ -507,11 +573,26 @@ snapshot_state_to_qcdm (u_int8_t cdma_state)
return cdma_state + 1;
}
+static inline u_int8_t
+digit_fixup (u_int8_t d)
+{
+ /* CDMA MCC/IMSI conversion adds 1 to each digit, and digits equal to
+ * 10 are really zero.
+ */
+ if (d + 1 < 10)
+ return d + 1;
+ return 0;
+}
+
QcdmResult *
qcdm_cmd_status_snapshot_result (const char *buf, size_t len, int *out_error)
{
QcdmResult *result = NULL;
DMCmdStatusSnapshotRsp *rsp = (DMCmdStatusSnapshotRsp *) buf;
+ char *tmp;
+ u_int8_t swapped[4];
+ u_int8_t tmcc[3];
+ u_int16_t mcc, hmcc;
qcdm_return_val_if_fail (buf != NULL, NULL);
@@ -520,6 +601,27 @@ qcdm_cmd_status_snapshot_result (const char *buf, size_t len, int *out_error)
result = qcdm_result_new ();
+ /* Convert the ESN from binary to a hex string; it's LE so we have to
+ * swap it to get the correct ordering.
+ */
+ swapped[0] = rsp->esn[3];
+ swapped[1] = rsp->esn[2];
+ swapped[2] = rsp->esn[1];
+ swapped[3] = rsp->esn[0];
+
+ tmp = bin2hexstr (&swapped[0], sizeof (swapped));
+ qcdm_result_add_string (result, QCDM_CMD_STATUS_SNAPSHOT_ITEM_ESN, tmp);
+ free (tmp);
+
+ /* Cheap binary -> decimal conversion */
+ hmcc = le16toh (rsp->mcc);
+ tmcc[2] = hmcc / 100;
+ tmcc[1] = (hmcc - (tmcc[2] * 100)) / 10;
+ tmcc[0] = (hmcc - (tmcc[2] * 100) - (tmcc[1] * 10));
+
+ mcc = (100 * digit_fixup (tmcc[2])) + (10 * digit_fixup (tmcc[1])) + digit_fixup (tmcc[0]);
+ qcdm_result_add_u32 (result, QCDM_CMD_STATUS_SNAPSHOT_ITEM_HOME_MCC, mcc);
+
qcdm_result_add_u8 (result, QCDM_CMD_STATUS_SNAPSHOT_ITEM_BAND_CLASS, cdma_band_class_to_qcdm (rsp->band_class));
qcdm_result_add_u8 (result, QCDM_CMD_STATUS_SNAPSHOT_ITEM_BASE_STATION_PREV, cdma_prev_to_qcdm (rsp->prev));
qcdm_result_add_u8 (result, QCDM_CMD_STATUS_SNAPSHOT_ITEM_MOBILE_PREV, cdma_prev_to_qcdm (rsp->mob_prev));
@@ -587,7 +689,7 @@ qcdm_cmd_pilot_sets_result (const char *buf, size_t len, int *out_error)
sets_len = rsp->candidate_count * sizeof (DMCmdPilotSetsSet);
if (sets_len > 0) {
qcdm_result_add_u8_array (result,
- PILOT_SETS_CMD_ACTIVE_SET,
+ PILOT_SETS_CMD_CANDIDATE_SET,
(const u_int8_t *) &rsp->sets[rsp->active_count],
sets_len);
}
@@ -595,7 +697,7 @@ qcdm_cmd_pilot_sets_result (const char *buf, size_t len, int *out_error)
sets_len = rsp->neighbor_count * sizeof (DMCmdPilotSetsSet);
if (sets_len > 0) {
qcdm_result_add_u8_array (result,
- PILOT_SETS_CMD_ACTIVE_SET,
+ PILOT_SETS_CMD_NEIGHBOR_SET,
(const u_int8_t *) &rsp->sets[rsp->active_count + rsp->candidate_count],
sets_len);
}
@@ -617,7 +719,7 @@ qcdm_cmd_pilot_sets_result_get_num (QcdmResult *result,
set_name = set_num_to_str (set_type);
qcdm_return_val_if_fail (set_name != NULL, FALSE);
- if (!qcdm_result_get_u8_array (result, set_name, &array, &array_len))
+ if (qcdm_result_get_u8_array (result, set_name, &array, &array_len))
return FALSE;
*out_num = array_len / sizeof (DMCmdPilotSetsSet);
@@ -642,7 +744,7 @@ qcdm_cmd_pilot_sets_result_get_pilot (QcdmResult *result,
set_name = set_num_to_str (set_type);
qcdm_return_val_if_fail (set_name != NULL, FALSE);
- if (!qcdm_result_get_u8_array (result, set_name, &array, &array_len))
+ if (qcdm_result_get_u8_array (result, set_name, &array, &array_len))
return FALSE;
qcdm_return_val_if_fail (num < array_len / sizeof (DMCmdPilotSetsSet), FALSE);
@@ -813,24 +915,6 @@ qcdm_cmd_nv_set_roam_pref_result (const char *buf, size_t len, int *out_error)
/**********************************************************************/
-static qcdmbool
-mode_pref_validate (u_int8_t dm)
-{
- switch (dm) {
- case DIAG_NV_MODE_PREF_DIGITAL:
- case DIAG_NV_MODE_PREF_DIGITAL_ONLY:
- case DIAG_NV_MODE_PREF_AUTO:
- case DIAG_NV_MODE_PREF_1X_ONLY:
- case DIAG_NV_MODE_PREF_HDR_ONLY:
- case DIAG_NV_MODE_PREF_1X_HDR_ONLY:
- case DIAG_NV_MODE_PREF_LTE_ONLY:
- case DIAG_NV_MODE_PREF_1X_HDR_LTE_ONLY:
- return TRUE;
- default:
- return FALSE;
- }
-}
-
size_t
qcdm_cmd_nv_get_mode_pref_new (char *buf, size_t len, u_int8_t profile)
{
@@ -868,9 +952,6 @@ qcdm_cmd_nv_get_mode_pref_result (const char *buf, size_t len, int *out_error)
mode = (DMNVItemModePref *) &rsp->data[0];
- if (!mode_pref_validate (mode->mode_pref))
- qcdm_warn (0, "Unknown mode preference 0x%X", mode->mode_pref);
-
result = qcdm_result_new ();
qcdm_result_add_u8 (result, QCDM_CMD_NV_GET_MODE_PREF_ITEM_PROFILE, mode->profile);
qcdm_result_add_u8 (result, QCDM_CMD_NV_GET_MODE_PREF_ITEM_MODE_PREF, mode->mode_pref);
@@ -891,18 +972,13 @@ qcdm_cmd_nv_set_mode_pref_new (char *buf,
qcdm_return_val_if_fail (buf != NULL, 0);
qcdm_return_val_if_fail (len >= sizeof (*cmd) + DIAG_TRAILER_LEN, 0);
- if (!mode_pref_validate (mode_pref)) {
- qcdm_err (0, "Invalid mode preference %d", mode_pref);
- return 0;
- }
-
memset (cmd, 0, sizeof (*cmd));
cmd->code = DIAG_CMD_NV_WRITE;
cmd->nv_item = htole16 (DIAG_NV_MODE_PREF);
req = (DMNVItemModePref *) &cmd->data[0];
req->profile = profile;
- req->mode_pref = mode_pref;
+ req->mode_pref = nv_mode_pref_from_qcdm (mode_pref);
return dm_encapsulate_buffer (cmdbuf, sizeof (*cmd), sizeof (cmdbuf), buf, len);
}
@@ -923,6 +999,94 @@ qcdm_cmd_nv_set_mode_pref_result (const char *buf, size_t len, int *out_error)
/**********************************************************************/
+size_t
+qcdm_cmd_nv_get_hybrid_pref_new (char *buf, size_t len)
+{
+ char cmdbuf[sizeof (DMCmdNVReadWrite) + 2];
+ DMCmdNVReadWrite *cmd = (DMCmdNVReadWrite *) &cmdbuf[0];
+
+ qcdm_return_val_if_fail (buf != NULL, 0);
+ qcdm_return_val_if_fail (len >= sizeof (*cmd) + DIAG_TRAILER_LEN, 0);
+
+ memset (cmd, 0, sizeof (*cmd));
+ cmd->code = DIAG_CMD_NV_READ;
+ cmd->nv_item = htole16 (DIAG_NV_HYBRID_PREF);
+
+ return dm_encapsulate_buffer (cmdbuf, sizeof (*cmd), sizeof (cmdbuf), buf, len);
+}
+
+QcdmResult *
+qcdm_cmd_nv_get_hybrid_pref_result (const char *buf, size_t len, int *out_error)
+{
+ QcdmResult *result = NULL;
+ DMCmdNVReadWrite *rsp = (DMCmdNVReadWrite *) buf;
+ DMNVItemHybridPref *hybrid;
+
+ qcdm_return_val_if_fail (buf != NULL, NULL);
+
+ if (!check_command (buf, len, DIAG_CMD_NV_READ, sizeof (DMCmdNVReadWrite), out_error))
+ return NULL;
+
+ if (!check_nv_cmd (rsp, DIAG_NV_HYBRID_PREF, out_error))
+ return NULL;
+
+ hybrid = (DMNVItemHybridPref *) &rsp->data[0];
+
+ if (hybrid->hybrid_pref > 1)
+ qcdm_warn (0, "Unknown hybrid preference 0x%X", hybrid->hybrid_pref);
+
+ result = qcdm_result_new ();
+ qcdm_result_add_u8 (result, QCDM_CMD_NV_GET_HYBRID_PREF_ITEM_HYBRID_PREF, hybrid->hybrid_pref);
+
+ return result;
+}
+
+size_t
+qcdm_cmd_nv_set_hybrid_pref_new (char *buf,
+ size_t len,
+ u_int8_t hybrid_pref)
+{
+ char cmdbuf[sizeof (DMCmdNVReadWrite) + 2];
+ DMCmdNVReadWrite *cmd = (DMCmdNVReadWrite *) &cmdbuf[0];
+ DMNVItemHybridPref *req;
+
+ qcdm_return_val_if_fail (buf != NULL, 0);
+ qcdm_return_val_if_fail (len >= sizeof (*cmd) + DIAG_TRAILER_LEN, 0);
+
+ if (hybrid_pref > QCDM_CMD_NV_HYBRID_PREF_ITEM_REV_HYBRID_ON) {
+ qcdm_err (0, "Invalid hybrid preference %d", hybrid_pref);
+ return 0;
+ }
+
+ memset (cmd, 0, sizeof (*cmd));
+ cmd->code = DIAG_CMD_NV_WRITE;
+ cmd->nv_item = htole16 (DIAG_NV_HYBRID_PREF);
+
+ req = (DMNVItemHybridPref *) &cmd->data[0];
+ if (hybrid_pref == QCDM_CMD_NV_HYBRID_PREF_ITEM_REV_HYBRID_OFF)
+ req->hybrid_pref = DIAG_NV_HYBRID_PREF_OFF;
+ else if (hybrid_pref == QCDM_CMD_NV_HYBRID_PREF_ITEM_REV_HYBRID_ON)
+ req->hybrid_pref = DIAG_NV_HYBRID_PREF_ON;
+
+ return dm_encapsulate_buffer (cmdbuf, sizeof (*cmd), sizeof (cmdbuf), buf, len);
+}
+
+QcdmResult *
+qcdm_cmd_nv_set_hybrid_pref_result (const char *buf, size_t len, int *out_error)
+{
+ qcdm_return_val_if_fail (buf != NULL, NULL);
+
+ if (!check_command (buf, len, DIAG_CMD_NV_WRITE, sizeof (DMCmdNVReadWrite), out_error))
+ return NULL;
+
+ if (!check_nv_cmd ((DMCmdNVReadWrite *) buf, DIAG_NV_HYBRID_PREF, out_error))
+ return NULL;
+
+ return qcdm_result_new ();
+}
+
+/**********************************************************************/
+
static qcdmbool
hdr_rev_pref_validate (u_int8_t dm)
{
@@ -1321,16 +1485,16 @@ qcdm_cmd_nw_subsys_modem_snapshot_cdma_new (char *buf,
cmd->hdr.code = DIAG_CMD_SUBSYS;
switch (chipset) {
case QCDM_NW_CHIPSET_6500:
- cmd->hdr.subsys_id = DIAG_SUBSYS_NW_CONTROL_6500;
+ cmd->hdr.subsys_id = DIAG_SUBSYS_NOVATEL_6500;
break;
case QCDM_NW_CHIPSET_6800:
- cmd->hdr.subsys_id = DIAG_SUBSYS_NW_CONTROL_6800;
+ cmd->hdr.subsys_id = DIAG_SUBSYS_NOVATEL_6800;
break;
default:
qcdm_assert_not_reached ();
}
- cmd->hdr.subsys_cmd = htole16 (DIAG_SUBSYS_NW_CONTROL_MODEM_SNAPSHOT);
- cmd->technology = DIAG_SUBSYS_NW_CONTROL_MODEM_SNAPSHOT_TECH_CDMA_EVDO;
+ cmd->hdr.subsys_cmd = htole16 (DIAG_SUBSYS_NOVATEL_MODEM_SNAPSHOT);
+ cmd->technology = DIAG_SUBSYS_NOVATEL_MODEM_SNAPSHOT_TECH_CDMA_EVDO;
cmd->snapshot_mask = htole32 (0xFFFF);
return dm_encapsulate_buffer (cmdbuf, sizeof (*cmd), sizeof (cmdbuf), buf, len);
@@ -1383,6 +1547,76 @@ qcdm_cmd_nw_subsys_modem_snapshot_cdma_result (const char *buf, size_t len, int
/**********************************************************************/
+size_t
+qcdm_cmd_nw_subsys_eri_new (char *buf,
+ size_t len,
+ u_int8_t chipset)
+{
+ char cmdbuf[sizeof (DMCmdSubsysHeader) + 2];
+ DMCmdSubsysHeader *cmd = (DMCmdSubsysHeader *) &cmdbuf[0];
+
+ qcdm_return_val_if_fail (buf != NULL, 0);
+ qcdm_return_val_if_fail (len >= sizeof (*cmd) + DIAG_TRAILER_LEN, 0);
+
+ /* Validate chipset */
+ if (chipset != QCDM_NW_CHIPSET_6500 && chipset != QCDM_NW_CHIPSET_6800) {
+ qcdm_err (0, "Unknown Novatel chipset 0x%X", chipset);
+ return 0;
+ }
+
+ memset (cmd, 0, sizeof (*cmd));
+ cmd->code = DIAG_CMD_SUBSYS;
+ switch (chipset) {
+ case QCDM_NW_CHIPSET_6500:
+ cmd->subsys_id = DIAG_SUBSYS_NOVATEL_6500;
+ break;
+ case QCDM_NW_CHIPSET_6800:
+ cmd->subsys_id = DIAG_SUBSYS_NOVATEL_6800;
+ break;
+ default:
+ qcdm_assert_not_reached ();
+ }
+ cmd->subsys_cmd = htole16 (DIAG_SUBSYS_NOVATEL_ERI);
+
+ return dm_encapsulate_buffer (cmdbuf, sizeof (*cmd), sizeof (cmdbuf), buf, len);
+}
+
+QcdmResult *
+qcdm_cmd_nw_subsys_eri_result (const char *buf, size_t len, int *out_error)
+{
+ QcdmResult *result = NULL;
+ DMCmdSubsysNwEriRsp *rsp = (DMCmdSubsysNwEriRsp *) buf;
+ char str[50];
+
+ qcdm_return_val_if_fail (buf != NULL, NULL);
+
+ if (!check_command (buf, len, DIAG_CMD_SUBSYS, sizeof (DMCmdSubsysNwEriRsp), out_error))
+ return NULL;
+
+ /* FIXME: check 'status' when we know what it means */
+
+ result = qcdm_result_new ();
+
+ qcdm_result_add_u8 (result, QCDM_CMD_NW_SUBSYS_ERI_ITEM_ROAM, rsp->roam);
+ qcdm_result_add_u8 (result, QCDM_CMD_NW_SUBSYS_ERI_ITEM_INDICATOR_ID, rsp->indicator_id);
+ qcdm_result_add_u8 (result, QCDM_CMD_NW_SUBSYS_ERI_ITEM_ICON_ID, rsp->icon_id);
+ qcdm_result_add_u8 (result, QCDM_CMD_NW_SUBSYS_ERI_ITEM_ICON_MODE, rsp->icon_mode);
+ qcdm_result_add_u8 (result, QCDM_CMD_NW_SUBSYS_ERI_ITEM_CALL_PROMPT_ID, rsp->call_prompt_id);
+ qcdm_result_add_u8 (result, QCDM_CMD_NW_SUBSYS_ERI_ITEM_ALERT_ID, rsp->alert_id);
+
+ qcdm_warn_if_fail (rsp->text_len < sizeof (str));
+ if (rsp->text_len < sizeof (str)) {
+ qcdm_assert (sizeof (str) > sizeof (rsp->text));
+ memcpy (str, rsp->text, sizeof (rsp->text));
+ str[rsp->text_len] = '\0';
+ qcdm_result_add_string (result, QCDM_CMD_NW_SUBSYS_ERI_ITEM_TEXT, str);
+ }
+
+ return result;
+}
+
+/**********************************************************************/
+
static size_t
qcdm_cmd_log_config_new (char *buf,
size_t len,
@@ -1629,7 +1863,7 @@ imxi_bcd_to_string (u_int8_t bytes[8], size_t len, char *buf, size_t buflen)
qcdm_return_val_if_fail (len == 8, FALSE);
qcdm_return_val_if_fail (buf != NULL, FALSE);
- qcdm_return_val_if_fail (buflen > len, FALSE);
+ qcdm_return_val_if_fail (buflen > (len * 2), FALSE);
p = buf;
for (i = 0 ; i < len; i++) {
@@ -1673,7 +1907,7 @@ qcdm_cmd_wcdma_subsys_state_info_result (const char *buf, size_t len, int *out_e
{
QcdmResult *result = NULL;
DMCmdSubsysWcdmaStateInfoRsp *rsp = (DMCmdSubsysWcdmaStateInfoRsp *) buf;
- char imxi[10];
+ char imxi[18];
qcdm_return_val_if_fail (buf != NULL, NULL);
@@ -1719,7 +1953,7 @@ qcdm_cmd_gsm_subsys_state_info_result (const char *buf, size_t len, int *out_err
{
QcdmResult *result = NULL;
DMCmdSubsysGsmStateInfoRsp *rsp = (DMCmdSubsysGsmStateInfoRsp *) buf;
- char imxi[10];
+ char imxi[18];
u_int32_t mcc = 0, mnc = 0;
u_int8_t mnc3;
diff --git a/libqcdm/src/commands.h b/libqcdm/src/commands.h
index 6477eb1..437261b 100644
--- a/libqcdm/src/commands.h
+++ b/libqcdm/src/commands.h
@@ -66,6 +66,19 @@ enum {
QCDM_HDR_REV_A = 0x02
};
+enum {
+ QCDM_ERI_ROAMING_ICON_ON = 0,
+ QCDM_ERI_ROAMING_ICON_OFF = 1,
+ QCDM_ERI_ROAMING_ICON_FLASH = 2,
+ /* Values greater than 2 are OEM defined */
+};
+
+enum {
+ /* Valid with QCDM_ERI_ROAMING_ICON_FLASH and greater */
+ QCDM_ERI_ROAMING_ICON_MODE_NORMAL = 0,
+ QCDM_ERI_ROAMING_ICON_MODE_FLASH = 1,
+};
+
/**********************************************************************/
#define QCDM_CMD_VERSION_INFO_ITEM_COMP_DATE "comp-date"
@@ -92,6 +105,19 @@ QcdmResult *qcdm_cmd_esn_result (const char *buf,
/**********************************************************************/
+enum {
+ QCDM_CMD_CONTROL_MODE_OFFLINE = 1,
+ QCDM_CMD_CONTROL_MODE_RESET = 2,
+};
+
+size_t qcdm_cmd_control_new (char *buf, size_t len, u_int8_t mode);
+
+QcdmResult *qcdm_cmd_control_result (const char *buf,
+ size_t len,
+ int *out_error);
+
+/**********************************************************************/
+
/* Values for QCDM_CMD_CDMA_STATUS_ITEM_RF_MODE */
enum {
QCDM_CMD_CDMA_STATUS_RF_MODE_ANALOG = 0,
@@ -146,6 +172,10 @@ QcdmResult *qcdm_cmd_sw_version_result (const char *buf,
/**********************************************************************/
+#define QCDM_CMD_STATUS_SNAPSHOT_ITEM_ESN "esn"
+
+#define QCDM_CMD_STATUS_SNAPSHOT_ITEM_HOME_MCC "mcc"
+
/* One of QCDM_CDMA_BAND_CLASS_* */
#define QCDM_CMD_STATUS_SNAPSHOT_ITEM_BAND_CLASS "band-class"
@@ -262,11 +292,17 @@ QcdmResult *qcdm_cmd_nv_set_roam_pref_result (const char *buf,
enum {
QCDM_CMD_NV_MODE_PREF_ITEM_MODE_PREF_DIGITAL = 0x00,
QCDM_CMD_NV_MODE_PREF_ITEM_MODE_PREF_DIGITAL_ONLY = 0x01,
+ QCDM_CMD_NV_MODE_PREF_ITEM_MODE_PREF_ANALOG = 0x02,
+ QCDM_CMD_NV_MODE_PREF_ITEM_MODE_PREF_ANALOG_ONLY = 0x03,
QCDM_CMD_NV_MODE_PREF_ITEM_MODE_PREF_AUTO = 0x04,
QCDM_CMD_NV_MODE_PREF_ITEM_MODE_PREF_1X_ONLY = 0x09,
QCDM_CMD_NV_MODE_PREF_ITEM_MODE_PREF_HDR_ONLY = 0x0A,
- QCDM_CMD_NV_MODE_PREF_ITEM_MODE_PREF_1X_HDR_ONLY = 0x0D,
+ QCDM_CMD_NV_MODE_PREF_ITEM_MODE_PREF_GPRS_ONLY = 0x0D,
+ QCDM_CMD_NV_MODE_PREF_ITEM_MODE_PREF_UMTS_ONLY = 0x0E,
+ QCDM_CMD_NV_MODE_PREF_ITEM_MODE_PREF_GSM_UMTS_ONLY = 0x11,
+ QCDM_CMD_NV_MODE_PREF_ITEM_MODE_PREF_1X_HDR_ONLY = 0x13,
QCDM_CMD_NV_MODE_PREF_ITEM_MODE_PREF_LTE_ONLY = 0x1E,
+ QCDM_CMD_NV_MODE_PREF_ITEM_MODE_PREF_GSM_UMTS_LTE_ONLY = 0x1F,
QCDM_CMD_NV_MODE_PREF_ITEM_MODE_PREF_1X_HDR_LTE_ONLY = 0x24,
};
@@ -292,6 +328,29 @@ QcdmResult *qcdm_cmd_nv_set_mode_pref_result (const char *buf,
/**********************************************************************/
+enum {
+ QCDM_CMD_NV_HYBRID_PREF_ITEM_REV_HYBRID_OFF = 0x00,
+ QCDM_CMD_NV_HYBRID_PREF_ITEM_REV_HYBRID_ON = 0x01,
+};
+
+#define QCDM_CMD_NV_GET_HYBRID_PREF_ITEM_HYBRID_PREF "hybrid-pref"
+
+size_t qcdm_cmd_nv_get_hybrid_pref_new (char *buf, size_t len);
+
+QcdmResult *qcdm_cmd_nv_get_hybrid_pref_result (const char *buf,
+ size_t len,
+ int *out_error);
+
+size_t qcdm_cmd_nv_set_hybrid_pref_new (char *buf,
+ size_t len,
+ u_int8_t hybrid_pref);
+
+QcdmResult *qcdm_cmd_nv_set_hybrid_pref_result (const char *buf,
+ size_t len,
+ int *out_error);
+
+/**********************************************************************/
+
/* Values for QCDM_CMD_NV_GET_HDR_REV_PREF_ITEM_REV_PREF */
enum {
QCDM_CMD_NV_HDR_REV_PREF_ITEM_REV_PREF_0 = 0x00,
@@ -375,6 +434,8 @@ enum {
QCDM_CMD_CM_SUBSYS_STATE_INFO_MODE_PREF_WCDMA_ONLY = 0x0E,
QCDM_CMD_CM_SUBSYS_STATE_INFO_MODE_PREF_PERSISTENT_MODE = 0x0F,
QCDM_CMD_CM_SUBSYS_STATE_INFO_MODE_PREF_NO_CHANGE = 0x10,
+ QCDM_CMD_CM_SUBSYS_STATE_INFO_MODE_PREF_LTE_ONLY = 0x26,
+ QCDM_CMD_CM_SUBSYS_STATE_INFO_MODE_PREF_GSM_WCDMA_LTE_ONLY = 0x27,
};
#define QCDM_CMD_CM_SUBSYS_STATE_INFO_ITEM_CALL_STATE "call-state"
@@ -575,6 +636,32 @@ QcdmResult *qcdm_cmd_nw_subsys_modem_snapshot_cdma_result (const char *buf,
/**********************************************************************/
+#define QCDM_CMD_NW_SUBSYS_ERI_ITEM_ROAM "roam"
+
+#define QCDM_CMD_NW_SUBSYS_ERI_ITEM_INDICATOR_ID "indicator-id"
+
+/* One of QCDM_ERI_ROAMING_ICON_* */
+#define QCDM_CMD_NW_SUBSYS_ERI_ITEM_ICON_ID "icon-id"
+
+/* One of QCDM_ERI_ROAMING_ICON_MODE_* */
+#define QCDM_CMD_NW_SUBSYS_ERI_ITEM_ICON_MODE "icon-mode"
+
+#define QCDM_CMD_NW_SUBSYS_ERI_ITEM_CALL_PROMPT_ID "call-prompt-id"
+
+#define QCDM_CMD_NW_SUBSYS_ERI_ITEM_ALERT_ID "alert-id"
+
+#define QCDM_CMD_NW_SUBSYS_ERI_ITEM_TEXT "text"
+
+size_t qcdm_cmd_nw_subsys_eri_new (char *buf,
+ size_t len,
+ u_int8_t chipset);
+
+QcdmResult *qcdm_cmd_nw_subsys_eri_result (const char *buf,
+ size_t len,
+ int *out_error);
+
+/**********************************************************************/
+
#define QCDM_CMD_WCDMA_SUBSYS_STATE_INFO_ITEM_IMEI "imei"
#define QCDM_CMD_WCDMA_SUBSYS_STATE_INFO_ITEM_IMSI "imsi"
diff --git a/libqcdm/src/dm-commands.h b/libqcdm/src/dm-commands.h
index cc254bb..2cbd417 100644
--- a/libqcdm/src/dm-commands.h
+++ b/libqcdm/src/dm-commands.h
@@ -115,7 +115,8 @@ enum {
DIAG_CMD_EXT_BUILD_ID = 124,
DIAG_CMD_EXT_MESSAGE_CONFIG= 125,
DIAG_CMD_EVENT_GET_MASK = 129,
- DIAG_CMD_EVENT_SET_MASK = 130
+ DIAG_CMD_EVENT_SET_MASK = 130,
+ DIAG_CMD_SAMSUNG_IND = 217, /* Unsolicited message seen on Samsung Z810 */
};
/* Subsystem IDs used with DIAG_CMD_SUBSYS; these often obsolete many of
@@ -131,9 +132,10 @@ enum {
DIAG_SUBSYS_SMS = 14, /* Wireless Messaging Service */
DIAG_SUBSYS_CM = 15, /* Call manager */
DIAG_SUBSYS_FS = 19, /* File System (EFS2) */
- DIAG_SUBSYS_NW_CONTROL_6500 = 50, /* for Novatel Wireless MSM6500-based devices */
+ DIAG_SUBSYS_NOVATEL_6500 = 50, /* for Novatel Wireless MSM6500-based devices */
+ DIAG_SUBSYS_LTE = 68,
DIAG_SUBSYS_ZTE = 101, /* for ZTE EVDO devices */
- DIAG_SUBSYS_NW_CONTROL_6800 = 250 /* for Novatel Wireless MSM6800-based devices */
+ DIAG_SUBSYS_NOVATEL_6800 = 250 /* for Novatel Wireless MSM6800-based devices */
};
/* WCDMA subsystem command codes */
@@ -158,18 +160,18 @@ enum {
DIAG_SUBSYS_CM_STATE_INFO = 0, /* Gets Call Manager state */
};
-/* NW_CONTROL subsystem command codes (only for Novatel Wireless devices) */
+/* NOVATEL subsystem command codes (only for Novatel Wireless devices) */
enum {
- DIAG_SUBSYS_NW_CONTROL_AT_REQUEST = 3, /* AT commands via diag */
- DIAG_SUBSYS_NW_CONTROL_AT_RESPONSE = 4,
- DIAG_SUBSYS_NW_CONTROL_MODEM_SNAPSHOT = 7,
- DIAG_SUBSYS_NW_CONTROL_ERI = 8, /* Extended Roaming Indicator */
- DIAG_SUBSYS_NW_CONTROL_PRL = 12,
+ DIAG_SUBSYS_NOVATEL_AT_REQUEST = 3, /* AT commands via diag */
+ DIAG_SUBSYS_NOVATEL_AT_RESPONSE = 4,
+ DIAG_SUBSYS_NOVATEL_MODEM_SNAPSHOT = 7,
+ DIAG_SUBSYS_NOVATEL_ERI = 8, /* Extended Roaming Indicator */
+ DIAG_SUBSYS_NOVATEL_PRL = 12,
};
enum {
- DIAG_SUBSYS_NW_CONTROL_MODEM_SNAPSHOT_TECH_CDMA_EVDO = 7,
- DIAG_SUBSYS_NW_CONTROL_MODEM_SNAPSHOT_TECH_WCDMA = 20,
+ DIAG_SUBSYS_NOVATEL_MODEM_SNAPSHOT_TECH_CDMA_EVDO = 7,
+ DIAG_SUBSYS_NOVATEL_MODEM_SNAPSHOT_TECH_WCDMA = 20,
};
enum {
@@ -246,6 +248,19 @@ struct DMCmdSubsysHeader {
} __attribute__ ((packed));
typedef struct DMCmdSubsysHeader DMCmdSubsysHeader;
+typedef enum {
+ DM_CONTROL_MODE_OFFLINE = 1,
+ DM_CONTROL_MODE_RESET = 2,
+} DMControlMode;
+
+/* DIAG_CMD_CONTROL */
+struct DMCmdControl {
+ u_int8_t code;
+ /* DMControlMode */
+ u_int16_t mode;
+} __attribute__ ((packed));
+typedef struct DMCmdControl DMCmdControl;
+
/* DIAG_CMD_NV_READ / DIAG_CMD_NV_WRITE */
struct DMCmdNVReadWrite {
u_int8_t code;
@@ -414,7 +429,7 @@ typedef struct DMCmdPilotSetsRsp DMCmdPilotSetsRsp;
struct DMCmdLog {
u_int8_t code;
u_int8_t more;
- u_int16_t len;
+ u_int16_t len; /* size of packet after this member */
u_int16_t _unknown2; /* contains same value as len */
u_int16_t log_code;
u_int64_t timestamp;
@@ -445,21 +460,21 @@ struct DMCmdEventReportRsp {
} __attribute__ ((packed));
typedef struct DMCmdEventReportRsp DMCmdEventReportRsp;
-/* DIAG_SUBSYS_NW_CONTROL_* subsys command */
+/* DIAG_SUBSYS_NOVATEL_* subsys command */
struct DMCmdSubsysNwSnapshotReq {
DMCmdSubsysHeader hdr;
- u_int8_t technology; /* DIAG_SUBSYS_NW_CONTROL_MODEM_SNAPSHOT_TECH_* */
+ u_int8_t technology; /* DIAG_SUBSYS_NOVATEL_MODEM_SNAPSHOT_TECH_* */
u_int32_t snapshot_mask;
} __attribute__ ((packed));
typedef struct DMCmdSubsysNwSnapshotReq DMCmdSubsysNwSnapshotReq;
-/* DIAG_SUBSYS_NW_CONTROL_MODEM_SNAPSHOT response */
+/* DIAG_SUBSYS_NOVATEL_MODEM_SNAPSHOT response */
struct DMCmdSubsysNwSnapshotRsp {
DMCmdSubsysHeader hdr;
u_int8_t response_code;
u_int32_t bitfield1;
u_int32_t bitfield2;
- u_int8_t data[100];
+ u_int8_t data[100]; /* DMCmdSubsysNwSnapshotCdma */
} __attribute__ ((packed));
typedef struct DMCmdSubsysNwSnapshotRsp DMCmdSubsysNwSnapshotRsp;
@@ -488,6 +503,27 @@ struct DMCmdSubsysNwSnapshotCdma {
} __attribute__ ((packed));
typedef struct DMCmdSubsysNwSnapshotCdma DMCmdSubsysNwSnapshotCdma;
+/* DIAG_SUBSYS_NOVATEL_MODEM_SNAPSHOT response */
+struct DMCmdSubsysNwEriRsp {
+ DMCmdSubsysHeader hdr;
+ u_int8_t status;
+ u_int16_t error;
+ u_int8_t roam;
+ u_int8_t eri_header[6];
+ u_int8_t eri_call_prompt[38];
+
+ /* Roaming Indicator */
+ u_int8_t indicator_id;
+ u_int8_t icon_id;
+ u_int8_t icon_mode;
+ u_int8_t call_prompt_id; /* Call Guard? */
+ u_int8_t alert_id; /* Ringer? */
+ u_int8_t encoding_type;
+ u_int8_t text_len;
+ u_int8_t text[32];
+} __attribute__ ((packed));
+typedef struct DMCmdSubsysNwEriRsp DMCmdSubsysNwEriRsp;
+
enum {
DIAG_CMD_LOG_CONFIG_OP_GET_RANGE = 0x01,
DIAG_CMD_LOG_CONFIG_OP_SET_MASK = 0x03,
@@ -555,5 +591,19 @@ struct DMCmdSubsysGsmStateInfoRsp {
} __attribute__ ((packed));
typedef struct DMCmdSubsysGsmStateInfoRsp DMCmdSubsysGsmStateInfoRsp;
+/* DIAG_CMD_SAMSUNG_IND response */
+struct DMCmdSamsungIndRsp {
+ DMCmdHeader hdr;
+ u_int8_t _unknown1; /* always zero */
+ u_int8_t _unknown2; /* 0x0c */
+ u_int8_t _unknown3[4]; /* always zero */
+ u_int8_t _unknown4; /* 0x05 */
+ u_int8_t _unknown5; /* always zero */
+ u_int8_t _unknown6; /* 0x01 */
+ u_int8_t _unknown7; /* always zero */
+ u_int8_t signal; /* 0 - 5 */
+} __attribute__ ((packed));
+typedef struct DMCmdSamsungIndRsp DMCmdSamsungIndRsp;
+
#endif /* LIBQCDM_DM_COMMANDS_H */
diff --git a/libqcdm/src/errors.h b/libqcdm/src/errors.h
index a5507bb..faa0a8a 100644
--- a/libqcdm/src/errors.h
+++ b/libqcdm/src/errors.h
@@ -15,8 +15,8 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef LIBQCDM_ERROR_H
-#define LIBQCDM_ERROR_H
+#ifndef LIBQCDM_ERRORS_H
+#define LIBQCDM_ERRORS_H
#include <config.h>
#include <sys/types.h>
@@ -98,5 +98,5 @@ void _qcdm_log (const char *file,
#define qcdm_err(domain, ...) \
_qcdm_log (__FILE__, __LINE__, __func__, domain, QCDM_LOGL_ERR, ## __VA_ARGS__ )
-#endif /* LIBQCDM_ERROR_H */
+#endif /* LIBQCDM_ERRORS_H */
diff --git a/libqcdm/src/log-items.h b/libqcdm/src/log-items.h
index 5b44fcd..6a0a9ab 100644
--- a/libqcdm/src/log-items.h
+++ b/libqcdm/src/log-items.h
@@ -28,6 +28,8 @@ enum {
DM_LOG_ITEM_CDMA_FWD_LINK_VOCODER_PACKET = 0x1009,
DM_LOG_ITEM_CDMA_REV_LINK_VOCODER_PACKET = 0x100A,
DM_LOG_ITEM_CDMA_MARKOV_STATS = 0x100E,
+ DM_LOG_ITEM_CDMA_REVERSE_POWER_CONTROL = 0x102C,
+ DM_LOG_ITEM_CDMA_SERVICE_CONFIG = 0x102E,
DM_LOG_ITEM_EVDO_HANDOFF_STATE = 0x105E,
DM_LOG_ITEM_EVDO_ACTIVE_PILOT_SET = 0x105F,
DM_LOG_ITEM_EVDO_REV_LINK_PACKET_SUMMARY = 0x1060,
@@ -39,12 +41,16 @@ enum {
DM_LOG_ITEM_EVDO_FWD_LINK_PACKET_SNAPSHOT = 0x106A,
DM_LOG_ITEM_EVDO_ACCESS_ATTEMPT = 0x106C,
DM_LOG_ITEM_EVDO_REV_ACTIVITY_BITS_BUFFER = 0x106D,
- DM_LOG_ITEM_CDMA_REVERSE_POWER_CONTROL = 0x102c,
- DM_LOG_ITEM_CDMA_SERVICE_CONFIG = 0x102e,
+ DM_LOG_ITEM_EVDO_PILOT_SETS = 0x107A,
+ DM_LOG_ITEM_EVDO_STATE_INFO = 0x107E,
+ DM_LOG_ITEM_EVDO_SECTOR_INFO = 0x1080,
+ DM_LOG_ITEM_EVDO_PILOT_SETS_V2 = 0x108B,
/* WCDMA items */
+ DM_LOG_ITEM_WCDMA_TA_FINGER_INFO = 0x4003,
DM_LOG_ITEM_WCDMA_AGC_INFO = 0x4105,
DM_LOG_ITEM_WCDMA_RRC_STATE = 0x4125,
+ DM_LOG_ITEM_WCDMA_CELL_ID = 0x4127,
/* GSM items */
DM_LOG_ITEM_GSM_BURST_METRICS = 0x506c,
@@ -85,8 +91,25 @@ struct DMLogItemCdmaReversePowerControl {
typedef struct DMLogItemCdmaReversePowerControl DMLogItemCdmaReversePowerControl;
+/* DM_LOG_ITEM_WCDMA_TA_FINGER_INFO */
+struct DMLogItemWcdmaTaFingerInfo {
+ int32_t tx_pos;
+ int16_t coherent_interval_len;
+ u_int8_t non_coherent_interval_len;
+ u_int8_t num_paths;
+ u_int32_t path_enr;
+ int32_t pn_pos_path
+ int16_t pri_cpich_psc;
+ u_int8_t unknown1;
+ u_int8_t sec_cpich_ssc;
+ u_int8_t finger_channel_code_index;
+ u_int8_t finger_index;
+} __attribute__ ((packed));
+typedef struct DMLogItemWcdmaTaFingerInfo DMLogItemWcdmaTaFingerInfo;
+
+
/* DM_LOG_ITEM_WCDMA_AGC_INFO */
-struct DMLogItemWcdmRrcState {
+struct DMLogItemWcdmaAgcInfo {
u_int8_t num_samples;
u_int16_t rx_agc;
u_int16_t tx_agc;
@@ -96,7 +119,7 @@ struct DMLogItemWcdmRrcState {
/* Bit 4 means tx_agc is valid */
u_int8_t agc_info;
} __attribute__ ((packed));
-typedef struct DMLogItemWcdmRrcState DMLogItemWcdmRrcState;
+typedef struct DMLogItemWcdmaAgcInfo DMLogItemWcdmaAgcInfo;
/* DM_LOG_ITEM_WCDMA_RRC_STATE */
@@ -109,10 +132,19 @@ enum {
DM_LOG_ITEM_WCDMA_RRC_STATE_URA_PCH = 5,
};
-struct DMLogItemWcdmRrcState {
+struct DMLogItemWcdmaRrcState {
u_int8_t rrc_state;
} __attribute__ ((packed));
-typedef struct DMLogItemWcdmRrcState DMLogItemWcdmRrcState;
+typedef struct DMLogItemWcdmaRrcState DMLogItemWcdmaRrcState;
+
+
+/* DM_LOG_ITEM_WCDMA_CELL_ID */
+struct DMLogItemWcdmaCellId {
+ u_int8_t unknown1[8];
+ u_int32_t cellid;
+ u_int8_t unknown2[4];
+} __attribute__ ((packed));
+typedef struct DMLogItemWcdmaCellId DMLogItemWcdmaCellId;
/* DM_LOG_ITEM_GSM_BURST_METRICS */
diff --git a/libqcdm/src/nv-items.h b/libqcdm/src/nv-items.h
index eca9d65..1a5db67 100644
--- a/libqcdm/src/nv-items.h
+++ b/libqcdm/src/nv-items.h
@@ -36,6 +36,7 @@ enum {
DIAG_NV_MODE_PREF = 10, /* Mode preference: 1x, HDR, auto */
DIAG_NV_DIR_NUMBER = 178, /* Mobile Directory Number (MDN) */
DIAG_NV_ROAM_PREF = 442, /* Roaming preference */
+ DIAG_NV_HYBRID_PREF = 562, /* Hybrid 1x + HDR preference */
DIAG_NV_HDR_REV_PREF = 4964, /* HDR mode preference(?): rev0, revA, eHRPD */
};
@@ -51,8 +52,12 @@ enum {
DIAG_NV_MODE_PREF_HOME_ONLY = 0x06,
DIAG_NV_MODE_PREF_1X_ONLY = 0x09,
DIAG_NV_MODE_PREF_HDR_ONLY = 0x0A,
- DIAG_NV_MODE_PREF_1X_HDR_ONLY = 0x0D,
+ DIAG_NV_MODE_PREF_GPRS_ONLY = 0x0D,
+ DIAG_NV_MODE_PREF_UMTS_ONLY = 0x0E,
+ DIAG_NV_MODE_PREF_GSM_UMTS_ONLY = 0x11,
+ DIAG_NV_MODE_PREF_1X_HDR_ONLY = 0x13,
DIAG_NV_MODE_PREF_LTE_ONLY = 0x1E,
+ DIAG_NV_MODE_PREF_GSM_UMTS_LTE_ONLY = 0x1F,
DIAG_NV_MODE_PREF_1X_HDR_LTE_ONLY = 0x24,
};
@@ -97,5 +102,17 @@ struct DMNVItemHdrRevPref {
} __attribute__ ((packed));
typedef struct DMNVItemHdrRevPref DMNVItemHdrRevPref;
+/* Hybrid pref */
+enum {
+ DIAG_NV_HYBRID_PREF_OFF = 0x00,
+ DIAG_NV_HYBRID_PREF_ON = 0x01,
+};
+
+/* DIAG_NV_HYBRID_PREF */
+struct DMNVItemHybridPref {
+ u_int8_t hybrid_pref;
+} __attribute__ ((packed));
+typedef struct DMNVItemHybridPref DMNVItemHybridPref;
+
#endif /* LIBQCDM_NV_ITEMS_H */
diff --git a/libqcdm/src/result.c b/libqcdm/src/result.c
index d51a050..d508fb7 100644
--- a/libqcdm/src/result.c
+++ b/libqcdm/src/result.c
@@ -53,14 +53,11 @@ static void
val_free (Val *v)
{
if (v->type == VAL_TYPE_STRING) {
- if (v->u.s)
- free (v->u.s);
+ free (v->u.s);
} else if (v->type == VAL_TYPE_U8_ARRAY) {
- if (v->u.u8_array);
- free (v->u.u8_array);
+ free (v->u.u8_array);
} else if (v->type == VAL_TYPE_U16_ARRAY) {
- if (v->u.u16_array);
- free (v->u.u16_array);
+ free (v->u.u16_array);
}
free (v->key);
memset (v, 0, sizeof (*v));
diff --git a/libqcdm/src/utils.c b/libqcdm/src/utils.c
index 922d1cb..c362479 100644
--- a/libqcdm/src/utils.c
+++ b/libqcdm/src/utils.c
@@ -33,7 +33,7 @@
*/
/* Table of CRCs for each possible byte, with a generator polynomial of 0x8408 */
-const u_int16_t crc_table[256] = {
+static const u_int16_t crc_table[256] = {
0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf,
0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7,
0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e,
@@ -70,7 +70,7 @@ const u_int16_t crc_table[256] = {
/* Calculate the CRC for a buffer using a seed of 0xffff */
u_int16_t
-crc16 (const char *buffer, size_t len)
+dm_crc16 (const char *buffer, size_t len)
{
u_int16_t crc = 0xffff;
@@ -196,7 +196,7 @@ dm_encapsulate_buffer (char *inbuf,
qcdm_return_val_if_fail (outbuf != NULL, 0);
/* Add the CRC */
- crc = crc16 (inbuf, cmd_len);
+ crc = dm_crc16 (inbuf, cmd_len);
inbuf[cmd_len++] = crc & 0xFF;
inbuf[cmd_len++] = (crc >> 8) & 0xFF;
@@ -297,7 +297,7 @@ dm_decapsulate_buffer (const char *inbuf,
}
/* Check the CRC of the packet's data */
- crc = crc16 (outbuf, unesc_len - 2);
+ crc = dm_crc16 (outbuf, unesc_len - 2);
pkt_crc = outbuf[unesc_len - 2] & 0xFF;
pkt_crc |= (outbuf[unesc_len - 1] & 0xFF) << 8;
if (crc != pkt_crc) {
diff --git a/libqcdm/src/utils.h b/libqcdm/src/utils.h
index e8cb0b7..457c2e9 100644
--- a/libqcdm/src/utils.h
+++ b/libqcdm/src/utils.h
@@ -15,8 +15,8 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef UTILS_H
-#define UTILS_H
+#ifndef LIBQCDM_UTILS_H
+#define LIBQCDM_UTILS_H
#include <config.h>
#include <sys/types.h>
@@ -32,7 +32,7 @@ typedef u_int8_t qcdmbool;
#define DIAG_CONTROL_CHAR 0x7E
#define DIAG_TRAILER_LEN 3
-u_int16_t crc16 (const char *buffer, size_t len);
+u_int16_t dm_crc16 (const char *buffer, size_t len);
size_t dm_escape (const char *inbuf,
size_t inbuf_len,
@@ -59,5 +59,5 @@ qcdmbool dm_decapsulate_buffer (const char *inbuf,
size_t *out_used,
qcdmbool *out_need_more);
-#endif /* UTILS_H */
+#endif /* LIBQCDM_UTILS_H */