diff options
author | Guido Günther <agx@sigxcpu.org> | 2014-02-05 08:38:30 +0100 |
---|---|---|
committer | Guido Günther <agx@sigxcpu.org> | 2014-02-05 08:38:30 +0100 |
commit | 13ed135b9ae78c692dc359976eb8b54d0a3629b8 (patch) | |
tree | ae2ea713ad51d73980cf83db1411d6589dac5e8b /libqcdm/src | |
parent | 14d771b90f5a7d3887e5e900d1fb4737477ad305 (diff) |
Imported Upstream version 0.7.991upstream/0.7.991
Diffstat (limited to 'libqcdm/src')
-rw-r--r-- | libqcdm/src/Makefile.in | 317 | ||||
-rw-r--r-- | libqcdm/src/commands.c | 310 | ||||
-rw-r--r-- | libqcdm/src/commands.h | 89 | ||||
-rw-r--r-- | libqcdm/src/dm-commands.h | 82 | ||||
-rw-r--r-- | libqcdm/src/errors.h | 6 | ||||
-rw-r--r-- | libqcdm/src/log-items.h | 44 | ||||
-rw-r--r-- | libqcdm/src/nv-items.h | 19 | ||||
-rw-r--r-- | libqcdm/src/result.c | 9 | ||||
-rw-r--r-- | libqcdm/src/utils.c | 8 | ||||
-rw-r--r-- | libqcdm/src/utils.h | 8 |
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 */ |