# Set required packages
INCLUDE(FindPkgConfig)
+
+IF(FEATURE_PROFILE_TV)
+ MESSAGE("<<< TV Profile >>>")
+ ADD_DEFINITIONS("-DTIZEN_PROFILE_TV")
+ SET(PRIVACY_PKG "")
+ELSE(FEATURE_PROFILE_TV)
+ SET(PRIVACY_PKG "privacy-manager-client")
+
+ IF(FEATURE_PROFILE_WEARABLE)
+ MESSAGE("<<< Wearable Profile >>>")
+ ELSE(FEATURE_PROFILE_WEARABLE)
+ MESSAGE("<<< Mobile Profile >>>")
+ ADD_DEFINITIONS("-DTIZEN_PROFILE_MOBILE")
+ ENDIF(FEATURE_PROFILE_WEARABLE)
+ENDIF(FEATURE_PROFILE_TV)
+
pkg_check_modules(pkgs REQUIRED glib-2.0 gthread-2.0 gobject-2.0 gmodule-2.0
capi-appfw-app-manager capi-appfw-package-manager pkgmgr-info
- privacy-manager-client dlog vconf json-glib-1.0 lbs-dbus)
+ dlog vconf json-glib-1.0 bundle eventsystem ${PRIVACY_PKG})
FOREACH(flag ${pkgs_CFLAGS})
SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+++ /dev/null
-ACLOCAL_AMFLAGS=-I m4
-
-SUBDIRS=location tests
-
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = location.pc
+++ /dev/null
-#!/bin/sh
-rm -f config.cache
-rm -f acconfig.h
-
-echo "- libtoolize..."
-libtoolize --force || exit $?
-
-echo "- aclocal..."
-aclocal --force -I m4 || exit $?
-
-echo "- autoheader..."
-autoheader --force || exit $?
-
-echo "- automake..."
-automake --add-missing --force-missing || exit $?
-
-echo "- autoconf..."
-autoconf --force || exit $?
-
-echo "- ready!"
-exit
+++ /dev/null
-# Initialize
-AC_PREREQ(2.61)
-AC_INIT(Location, 0.1, [sena06.kim@samsung.com])
-AC_CONFIG_AUX_DIR([build-aux])
-AC_CONFIG_MACRO_DIR([m4])
-AC_CONFIG_HEADER([config.h])
-AC_CONFIG_SRCDIR([location])
-AM_INIT_AUTOMAKE([1.10.2 foreign -Wall -Werror])
-
-# Check programs for making executable
-AC_PROG_CC
-AM_PROG_CC_C_O
-AC_PROG_INSTALL
-
-# Check programs for making libraries.
-AM_PROG_LIBTOOL
-AC_PATH_PROG(GLIB_GENMARSHAL, glib-genmarshal)
-
-# Add default build options to CFLAGS, LDFLAGS
-if test "x$GCC" = "xyes"; then
- CFLAGS="$CFLAGS -Wall" # -Werror
- LDFLAGS="$LDFLAGS -Wl,-z,defs -Wl,--as-needed -Wl,--hash-style=both"
-fi
-
-AC_ARG_ENABLE([docomo-location],
- [AC_HELP_STRING([--enable-docomo-location],[docomo feature enable [default=no]])],
- [case "${enableval}" in
- yes) enable_dcm=yes ;;
- no) enable_dcm=no ;;
- *) AC_MSG_ERROR([Bad value ${enableval} for --enable-docomo-location]) ;;
- esac],[enable_dcm=no])
-if ([test "x$enable_dcm" = xyes]); then
- CFLAGS="$CFLAGS -DDOCOMO_FEATURE"
-fi
-
-# Add -g option to CFLAGS
-AC_ARG_ENABLE([debug],
- [AC_HELP_STRING([--enable-debug],[turn on debugging [default=no]])],
- [case "${enableval}" in
- yes) enable_dbg=yes ;;
- no) enable_dbg=no ;;
- *) AC_MSG_ERROR([Bad value ${enableval} for --enable-debug]) ;;
- esac],[enable_dbg=no])
-if ([test "x$enable_dbg" = xyes]); then
- CFLAGS="$CFLAGS -g"
-fi
-
-# Check GCC EFL visibility
-AC_MSG_CHECKING(for ELF visibility)
-AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM([[
- __attribute__((visibility("default")))
- int var=10;
- ]])],
- [has_visibility=yes
- AC_DEFINE([EXPORT_API], [__attribute__((visibility("default")))], [Symbol visibility prefix])
- CFLAGS="$CFLAGS -fvisibility=hidden"],
- [has_visibility=no
- AC_DEFINE([EXPORT_API], [], [Symbol visibility prefix]) ]
-)
-AC_MSG_RESULT($has_visibility)
-
-# Check dependencies
-PKG_CHECK_MODULES(LOCATION, [glib-2.0 gobject-2.0 gmodule-2.0 vconf vconf-internal-keys capi-appfw-app-manager capi-appfw-package-manager pkgmgr-info privacy-manager-client])
-AC_SUBST(LOCATION_LIBS)
-AC_SUBST(LOCATION_CFLAGS)
-
-PKG_CHECK_MODULES(TEST, [glib-2.0 json-glib-1.0 lbs-dbus])
-AC_SUBST(TEST_LIBS)
-AC_SUBST(TEST_CFLAGS)
-
-# Check dlog libraries
-AC_ARG_ENABLE([dlog],
- [AC_HELP_STRING([--enable-dlog],[show dlog message [default=no]])],
- [case "${enableval}" in
- yes) enable_dlog=yes ;;
- no) enable_dlog=no ;;
- *) AC_MSG_ERROR([Bad value ${enableval} for --enable-dlog]) ;;
- esac],[enable_dlog=no])
-if ([test "x$enable_dlog" = xyes]); then
- PKG_CHECK_MODULES(DLOG, [dlog], have_dlog="yes", have_dlog="no")
- AC_SUBST(DLOG_LIBS)
- AC_SUBST(DLOG_CFLAGS)
- if test "x$have_dlog" = "xyes"; then
- LOCATION_CFLAGS="$LOCATION_CFLAGS -DLOCATION_DLOG_DEBUG $DLOG_CFLAGS"
- LOCATION_LIBS="$LOCATION_LIBS $DLOG_LIBS"
- fi
-fi
-
-# Generate files
-AC_CONFIG_FILES([
-location.pc
-Makefile
-location/Makefile
-location/manager/Makefile
-location/module/Makefile
-tests/Makefile
-])
-
-AC_OUTPUT
+++ /dev/null
-/*
- * libslp-location
- *
- * Copyright (c) 2010-2013 Samsung Electronics Co., Ltd. All rights reserved.
- *
- * Contact: Youngae Kang <youngae.kang@samsung.com>, Minjune Kim <sena06.kim@samsung.com>
- * Genie Kim <daejins.kim@samsung.com>
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
--- /dev/null
+[Version] libslp-location_0.11.0
+[Date] 29 May 2015
+[Changes] [ACR-225][2.4][location-manager][Add] Turn Location setting on or off
+ The creation of vconfkey was moved to vconf-internal-keys,
+ so vconftool command was removed in spec file except profile difference.
+[Developer] Young-Ae Kang <youngae.kang@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.10.2
+[Date] 27 Apr 2015
+[Changes] Implement event_system
+[Developer] Kyoungjun Sung <kj7.sung@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.10.1
+[Date] 19 Mar 2015
+[Changes] vconf permission changed to system for non-root daemon
+[Developer] Kyoungjun Sung <kj7.sung@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.10.0
+[Date] 12 Mar 2015
+[Changes] Signaling changed to support location_changed_cb
+ Signaling changed to support efficient callback update
+[Developer] Kyoungjun Sung <kj7.sung@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.9.0
+[Date] 26 Dec 2014
+[Changes] Interface changed to support batch API
+ Build feature changed for multi profile
+[Developer] Kyoungjun Sung <kj7.sung@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.8.4
+[date] 16 Oct 2014
+[Title] Changed some typo in route
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Minjune Kim <sena06.kim@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.8.3
+[date] 15 Sep 2014
+[Title] Changed code sequence to prevent crash.
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Youngho Jeon <ykernel.jeon@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.8.2
+[date] 17 Aug 2014
+[Title] Added module free code when companion module passed.
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Youngho Jeon <ykernel.jeon@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.8.1
+[date] 16 Aug 2014
+[Title] check object type to prevent crash
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Young-Ae Kang <youngae.kang@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.8.0
+[date] 12 Aug 2014
+[Title] add getter of location setting
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Youngho Jeon <ykernel.jeon@samsung.com>
+
+================================================================================
+[Version] libslp-location_0.7.35
+[date] 24 July 2014
+[Title] Delete Map API added
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Kartika Sharma <s.kartika@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.7.33
+[date] 18 July 2014
+[Title] Change smack lable on vconf
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Minjune Kim <sena06.kim@samsung.com>
+
+================================================================================
+
+
+[Version] libslp-location_0.7.32
+[date] 24 June 2014
+[Title] Return Error at Ultra Power Saving mode
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Minjune Kim <sena06.kim@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.7.31
+[date] 2 June 2014
+[Title] modify last parameter type of 'location_map_start_navigation' and 'location_map_start_navigation_with_location'
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Youngho Jeon <ykernel.jeon@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.7.30
+[date] 26 May 2014
+[Title] Temporary modify is_connected_network( ) logic
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Youngho Jeon <ykernel.jeon@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.7.29
+[date] 24 Apr 2014
+[Title] Add guidance apis
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Haena Kim <hena.kim@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.7.28
+[date] 16 May 2014
+[Title] remove deprecated api
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Haena Kim <hena.kim@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.7.27
+[date] 13 May 2014
+[Title] remove geofence
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Haena Kim <hena.kim@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.7.25
+[date] 21 Apr 2014
+[Title] Fix a crash in tct of wrt
+[Issue#] P140412-01617
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Minjune Kim <sena06.kim@samsung.com>
+
+================================================================================
+
+
+[Version] libslp-location_0.7.24
+[date] 17 Apr 2014
+[Title] Fix build issue when builded by c++ compiler.
+[Issue#] Na
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Youngho Jeon <ykernel.jeon@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.7.23
+[date] 17 Apr 2014
+[Title] Fix memory leak
+[Issue#] P140407-02660
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Kartika Sharma <s.kartika@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.7.22
+[date] 15 Apr 2014
+[Title] init and deinit privacy_checker
+[Issue#] P140410-03504
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Haena Kim <hena.kim@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.7.21
+[date] 31 Mar 2014
+[Title] Modify API name and parameter list to support geofence with bluetooth bssid.
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Youngho Jeon <ykernel.jeon@samsung.com>
+
+================================================================================
+[Version] libslp-location_0.7.20
+[date] 16 Jan 2014
+[Title] Add APIs to check map version
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Minjune Kim <sena06.kim@samsung.com>
+
+================================================================================
+[Version] libslp-location_0.7.19
+[date] 16 Jan 2014
+[Title] Add geofence instread of location-manager
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Kartika Sharma <s.kartika@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.7.18
+[date] 7 Jan 2014
+[Title] Add Webapp location privilege check routine
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Genie Kim <daejins.kim@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.7.17
+[date] 30 Dec 2013
+[Title] Requirement: Add consent popup
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] API added to just show the consent popup
+[Developer] Kartika Sharma <s.kartika@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.7.16
+[date] 17 Dec 2013
+[Title] Check privilege in map service.
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Minjune Kim <sena06.kim@samsung.com>
+
+================================================================================
+
+
+[Version] libslp-location_0.7.15
+[date] 13 Dec 2013
+[Title] Fix memory leaks at location_get_privacy
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Minjune Kim <sena06.kim@samsung.com>
+
+================================================================================
+
+
+[Version] libslp-location_0.7.14
+[date] 12 Dec 2013
+[Title] Fix memory leaks at location_get_privacy
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Genie Kim <daejins.kim@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.7.13
+[date] 4 Dec 2013
+[Title] Disable MDM_PHASE2 feature
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Genie Kim <daejins.kim@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.7.12
+[date] 28 Nov 2013
+[Title] Check location privacy for admin-lbs(remove exception code)
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Genie Kim <daejins.kim@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.7.11
+[date] 28 Nov 2013
+[Title] Move location setting to CSC feature
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Genie Kim <daejins.kim@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.7.10
+[date] 19 Nov 2013
+[Title] Donot check location privilege of CPPAPP
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Genie Kim <daejins.kim@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.7.9
+[date] 18 Nov 2013
+[Title] Fix memory leak for g_mutex_lock
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Genie Kim <daejins.kim@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.7.8
+[date] 15 Nov 2013
+[Title] Change location default setting for Orange
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Genie Kim <daejins.kim@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.7.7
+[date] 12 Nov 2013
+[Title] Fix memory leak
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Genie Kim <daejins.kim@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.7.6
+[date] 11 Nov 2013
+[Title] Add location_get_privacy
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Genie Kim <daejins.kim@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.7.5
+[date] 9 Nov 2013
+[Title] fix bug when wps_start is failed
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Genie Kim <daejins.kim@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.7.4
+[date] 7 Nov 2013
+[Title] Not register vconf_notify for native apps
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Minjune Kim <sena06.kim@samsung.com>
+================================================================================
+[Version] libslp-location_0.7.3
+[date] 4 Nov 2013
+[Title] Prevent unusual case
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Minjune Kim <sena06.kim@samsung.com>
+================================================================================
+[Version] libslp-location_0.7.2
+[date] 25 Oct 2013
+[Title] Added user consent response API
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Madhu Sudhan <madhu.panga@samsung.com>
+================================================================================
+[Version] libslp-location_0.7.1
+[date] 11 Oct 2013
+[Title] Add mutex
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Minjune Kim <sena06.kim@samsung.com>
+
+================================================================================
+
+
+[Version] libslp-location_0.7.0
+[date] 30 Sep 2013
+[Title] remove set/get devname for GPS
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Genie Kim <daejins.kim@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.6.2-1
+[date] 27 Sep 2013
+[Title] add set_option in module
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Genie Kim <daejins.kim@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.6.1-1
+[date] 13 Sep 2013
+[Title] Set language as lower letters.
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Minjune Kim <sena06.kim@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.6.0-1
+[date] 22 Aug 2013
+[Title] Support geofence
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Genie Kim <daejins.kim@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.5.12-1
+[date] 16 Aug 2013
+[Title] remove gconf-2.0 pakcage
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Genie Kim <daejins.kim@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.5.11-1
+[date] 18 July 2013
+[Title] ADD Usemylocation vconf key in spec file.
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Congyi Shi <congyi.shi@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.5.10-1
+[date] 17 July 2013
+[Title] Fix memory leak in location_map_pref_free() API
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] Releasing the memory allocated for maps_key and country variables.
+[Developer] Kartika Sharma <s.kartika@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.5.9-1
+[date] 1 July 2013
+[Title] change location vconf key from db to memory & bug fix get_last_position_ext
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Genie Kim <daejins.kim@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.5.8-1
+[date] 11 June 2013
+[Title] enhance locatin hybrid method, stop wps when gps available, restart wps when gps in searching
+ add SECURE_LOg
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Ming Zhu <mingwu.zhu@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.5.7-1
+[date] 13 May 2013
+[Title] Fix bug when copying maps_key
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Minjune Kim <sena06.kim@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.5.6-1
+[date] 13 May 2013
+[Title] Fix PLM
+[Issue#] P130506-6200
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Minjune Kim <sena06.kim@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.5.5-1
+[date] 13 May 2013
+[Title] Change the DoCoMo location logs saving mechanism.
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Congyi Shi <congyi.shi@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.5.4-1
+[date] 10 May 2013
+[Title] Add smack label to vconf
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Minjune Kim <sena06.kim@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.5.3-1
+[date] 26 Apr 2013
+[Title] Fail to get position at enabled signal
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Minjune Kim <sena06.kim@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.5.2-1
+[date] 26 Apr 2013
+[Title] fix crash : hybrid method check gps/wps status
+[Issue#] P130426-0716
+[Problem] S voice application is crashed
+[Cause] hybrid donot check gps/wps setting state
+[Solution] NA
+[Developer] Genie Kim <daejins.kim@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.5.1-1
+[date] 17 Mar 2013
+[Title] Remove CPS Method
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Minjune Kim <sena06.kim@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.4.10-1
+[date] 17 Mar 2013
+[Title] Not to get current position of gps
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Minjune Kim <sena06.kim@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.4.9-1
+[date] 17 Mar 2013
+[Title] add DCM feature for logging position
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Genie Kim <daejins.kim@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.4.8-1
+[date] 20 Feb 2013
+[Title] move mdm_register_policy_receiver to gps-manager/geoclue-xps/geoclue-cps
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Genie Kim <daejins.kim@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.4.7-1
+[date] 5 Feb 2013
+[Title] Return Satellite info instead of last one.
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Minjune Kim <sena06.kim@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.4.6-1
+[date] 5 Feb 2013
+[Title] bug fixed about location_start/stop when gps/wps module is missing
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Genie Kim <daejins.kim@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.4.5-1
+[date] 30 Jan 2013
+[Title] Remove checking accessibility when apis related to location are called.
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Minjune Kim <sena06.kim@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.4.4-1
+[date] 30 Jan 2013
+[Title] fixed prevent deffect
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Genie Kim <daejins.kim@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.4.3-1
+[date] 26 Jan 2013
+[Title] fixed prevent deffect
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] NA
+[Developer] Genie Kim <daejins.kim@samsung.com>
+
+================================================================================
+
+[Version] libslp-location_0.4.2-1
+[date] 24 Jan 2013
+[Title] change boilerplate
+[Issue#] NA
+[Problem] NA
+[Cause] NA
+[Solution] change boilerplate
+[Developer] Genie Kim <daejins.kim@samsung.com>
+
+================================================================================
+
+libslp-location (0.4.1-1) precise; urgency=low
+
+ * Support PositionExt interface
+ * Tag: libslp-location_0.4.1-1
+
+ -- Minjune Kim <sena06.kim@samsung.com> Tue, 08 Jan 2013 23:17:22 +0900
+
+libslp-location (0.4.0-1) precise; urgency=low
+
+ * new feature : Geofence service
+ * Tag: libslp-location_0.4.0-1
+
+ -- Genie Kim <daejins.kim@samsung.com> Mon, 07 Jan 2013 22:04:56 +0900
+
+libslp-location (0.3.51-1) precise; urgency=low
+
+ * Location extension for POI
+ * Tag: libslp-location_0.3.51-1
+
+ -- Ming Zhu <mingwu.zhu@samsung.com> Mon, 7 Jan 2013 15:14:32 +0900
+
+libslp-location (0.3.50-1) precise; urgency=low
+
+ * Change Dlog Format
+ * Tag: libslp-location_0.3.50-1
+
+ -- Ming Zhu <mingwu.zhu@samsung.com> Fri, 28 Dec 2012 21:44:32 +0900
+
+libslp-location (0.3.49-1) precise; urgency=low
+
+ * Fix crash when trying to remove boundary
+ * Tag: libslp-location_0.3.49-1
+
+ -- Minjune Kim <sena06.kim@samsung.com> Fri, 28 Dec 2012 09:46:32 +0900
+
+libslp-location (0.3.48-1) precise; urgency=low
+
+ * Check validation of a pointer and fix send_command bug.
+ * Tag: libslp-location_0.3.48-1
+
+ -- Minjune Kim <sena06.kim@samsung.com> Thu, 27 Dec 2012 17:26:35 +0900
+
+libslp-location (0.3.47-1) precise; urgency=low
+
+ * add send command about accessibility
+ * Tag: libslp-location_0.3.47-1
+
+ -- Genie Kim <daejins.kim@samsung.com> Mon, 17 Dec 2012 14:23:51 +0900
+
+libslp-location (0.3.46-1) precise; urgency=low
+
+ * add private accuracy in position signaling funcation
+ * Tag: libslp-location_0.3.46-1
+
+ -- Genie Kim <daejins.kim@samsung.com> Fri, 14 Dec 2012 17:27:07 +0900
+
+libslp-location (0.3.45-1) precise; urgency=low
+
+ * Support center position of polygon
+ * Tag: libslp-location_0.3.45-1
+
+ -- Genie Kim <daejins.kim@samsung.com> Wed, 12 Dec 2012 16:28:59 +0900
+
+libslp-location (0.3.44-1) unstable; urgency=low
+
+ * Support zone in/out callback using LocationBoundary
+ * Add features for extension
+ * Tag: libslp-location_0.3.44-1
+
+ -- Genie Kim <daejins.kim@samsung.com> Wed, 28 Nov 2012 19:34:05 +0900
+
+libslp-location (0.3.43-1) unstable; urgency=low
+
+ * Do not return a position after stopped.
+ * Tag: libslp-location_0.3.43-1
+
+ -- Minjune Kim <sena06.kim@samsung.com> Mon, 26 Nov 2012 20:39:18 +0900
+
+libslp-location (0.3.42-2) unstable; urgency=low
+
+ * Add location_get_accessibility_state to header file
+ * Tag: libslp-location_0.3.42-2
+
+ -- Minjune Kim <sena06.kim@samsung.com> Wed, 21 Nov 2012 11:15:05 +0900
+
+libslp-location (0.3.42-1) unstable; urgency=low
+
+ * Fix prevent bug, Check an authority when creating location object Distinguish Error Type between SETTING_OFF and ACCESSIBILITY DENIED
+ * Tag: libslp-location_0.3.42-1
+
+ -- Minjune Kim <sena06.kim@samsung.com> Tue, 20 Nov 2012 20:45:52 +0900
+
+libslp-location (0.3.41-1) unstable; urgency=low
+
+ * Apply MDM phase II
+ * Tag: libslp-location_0.3.41-1
+
+ -- Minjune Kim <sena06.kim@samsung.com> Thu, 13 Sep 2012 21:04:15 +0900
+
+libslp-location (0.3.40-1) unstable; urgency=low
+
+ * Fix bug for check lt/rb latitude in new for rect
+ * Tag: libslp-location_0.3.40-1
+
+ -- Genie Kim <daejins.kim@samsung.com> Mon, 10 Sep 2012 17:43:20 +0900
+
+libslp-location (0.3.39-1) unstable; urgency=low
+
+ * Fix a crash after changes that velocity is updated before position.
+ * Tag: libslp-location_0.3.39-1
+
+ -- Minjune Kim <sena06.kim@samsung.com> Fri, 31 Aug 2012 19:02:39 +0900
+
+libslp-location (0.3.38-1) unstable; urgency=low
+
+ * Add the parameter, LocationMapPref in Geocoder
+ * Tag: libslp-location_0.3.38-1
+
+ -- Minjune Kim <sena06.kim@samsung.com> Mon, 13 Aug 2012 15:52:07 +0900
+
+libslp-location (0.3.37-1) unstable; urgency=low
+
+ * Support multi-provider
+ * Tag: libslp-location_0.3.37-1
+
+ -- Minjune Kim <sena06.kim@samsung.com> Tue, 07 Aug 2012 21:19:19 +0900
+
+libslp-location (0.3.36-6) unstable; urgency=low
+
+ * Fix N_SE-4475, the time difference was occured between a positon and a velocity
+ * Tag: libslp-location_0.3.36-6
+
+ -- Minjune Kim <sena06.kim@samsung.com> Fri, 03 Aug 2012 22:58:01 +0900
+
+libslp-location (0.3.36-5) unstable; urgency=low
+
+ * Seperate map service from location service.
+ * Tag: libslp-location_0.3.36-5
+
+ -- Minjune Kim <sena06.kim@samsung.com> Thu, 26 Jul 2012 14:47:16 +0900
+
+libslp-location (0.3.36-4) unstable; urgency=low
+
+ * Fix the bug that satellite_callback was periodically called even when location_start was failed
+ * Tag: libslp-location_0.3.36-4
+
+ -- Minjune Kim <sena06.kim@samsung.com> Thu, 26 Jul 2012 13:14:32 +0900
+
+libslp-location (0.3.36-3) unstable; urgency=low
+
+ * Check permission when calling location_start.
+ * Tag: libslp-location_0.3.36-3
+
+ -- Minjune Kim <sena06.kim@samsung.com> Tue, 17 Jul 2012 20:59:24 +0900
+
+libslp-location (0.3.36-2) unstable; urgency=low
+
+ * Apply new glib and add map-service-test
+ * Tag: libslp-location_0.3.36-2
+
+ -- Minjune Kim <sena06.kim@samsung.com> Tue, 10 Jul 2012 15:52:07 +0900
+
+libslp-location (0.3.36-1) unstable; urgency=low
+
+ * support location application list in setting
+ * Tag: libslp-location_0.3.36-1
+
+ -- Genie Kim <daejins.kim@samsung.com> Sat, 07 Jul 2012 19:44:10 +0900
+
+libslp-location (0.3.35-6) unstable; urgency=low
+
+ * Fix a bug when creating a boundary
+ * Tag: libslp-location_0.3.35-6
+
+ -- Minjune Kim <sena06.kim@samsung.com> Fri, 29 Jun 2012 15:15:40 +0900
+
+libslp-location (0.3.35-5) unstable; urgency=low
+
+ * Fix memory leak when finalizing an object.
+ * Tag: libslp-location_0.3.35-5
+
+ -- Minjune Kim <sena06.kim@samsung.com> Fri, 15 Jun 2012 16:05:29 +0900
+
+libslp-location (0.3.35-4) unstable; urgency=low
+
+ * Do not check returned value after calling vconf_ignore_key_changed and vconf_notify_key_changed
+ * Tag: libslp-location_0.3.35-4
+
+ -- Minjune Kim <sena06.kim@samsung.com> Thu, 14 Jun 2012 11:12:54 +0900
+
+libslp-location (0.3.35-3) unstable; urgency=low
+
+ * Fix bugs, a failure to get wps positioning and receiving satellite callback after location_stop()
+ * Tag: libslp-location_0.3.35-3
+
+ -- Minjune Kim <sena06.kim@samsung.com> Tue, 12 Jun 2012 17:00:25 +0900
+
+libslp-location (0.3.35-2) unstable; urgency=low
+
+ * Remove both LOCATION_METHOD_IPS and LOCATION_METHOD_SPS & support location_is_supported_method for LOCATION_METHOD_CPS
+ * Tag: libslp-location_0.3.35-2
+
+ -- Minjune Kim <sena06.kim@samsung.com> Tue, 29 May 2012 11:16:17 +0900
+
+libslp-location (0.3.35-1) unstable; urgency=low
+
+ * Support CPS Method
+ * Tag: libslp-location_0.3.35-1
+
+ -- Minjune Kim <sena06.kim@samsung.com> Thu, 24 May 2012 19:01:08 +0900
+
+libslp-location (0.3.34-17) unstable; urgency=low
+
+ * fix a bug when calling location_route_step_set_geometry
+ * Tag: libslp-location_0.3.34-17
+
+ -- Genie Kim <daejins.kim@samsung.com> Fri, 18 May 2012 19:20:33 +0900
+
+libslp-location (0.3.34-16) unstable; urgency=low
+
+ * Enable to set each interval of a position, a velocity and satellite
+ * change vconf keys
+ * Tag: libslp-location_0.3.34-16
+
+ -- Genie Kim <daejins.kim@samsung.com> Tue, 15 May 2012 19:49:10 +0900
+
+libslp-location (0.3.34-15) unstable; urgency=low
+
+ * Update current method whenever the callback callback, hybrid_service_updated is called in hybrid.
+ * Tag: libslp-location_0.3.34-15
+
+ -- Minjune Kim <sena06.kim@samsung.com> Thu, 10 May 2012 14:49:33 +0900
+
+libslp-location (0.3.34-14) unstable; urgency=low
+
+ * ignore notify when a method (gps, wps or sps) is disposed.
+ * Tag: libslp-location_0.3.34-14
+
+ -- Minjune Kim <sena06.kim@samsung.com> Thu, 26 Apr 2012 21:09:41 +0900
+
+libslp-location (0.3.34-13) unstable; urgency=low
+
+ * The result was wrong when location_boundary_if_inside was called
+ * Tag: libslp-location_0.3.34-13
+
+ -- Minjune Kim <sena06.kim@samsung.com> Mon, 02 Apr 2012 16:59:08 +0900
+
+libslp-location (0.3.34-12) unstable; urgency=low
+
+ * Fix the bug that get_last_position of WPS was failed on emulator.
+ * Move the fuctionality to location module
+ * Tag: libslp-location_0.3.34-12
+
+ -- Minjune Kim <sena06.kim@samsung.com> Tue, 27 Mar 2012 11:09:07 +0900
+
+libslp-location (0.3.34-11) unstable; urgency=low
+
+ * Add location_route_step_set_transport_mode / location_route_step_get_transport_mode
+ * Tag: libslp-location_0.3.34-11
+
+ -- Minjune Kim <sena06.kim@samsung.com> Mon, 26 Mar 2012 17:00:48 +0900
+
+libslp-location (0.3.34-10) unstable; urgency=low
+
+ * Check param's range in funcs.
+ * Tag: libslp-location_0.3.34-10
+
+ -- Minjune Kim <sena06.kim@samsung.com> Thu, 22 Mar 2012 13:18:42 +0900
+
+libslp-location (0.3.34-9) unstable; urgency=low
+
+ * Fix the bug that location_get_map_service_pref returned fail
+ * Tag: libslp-location_0.3.34-9
+
+ -- Minjune Kim <sena06.kim@samsung.com> Tue, 20 Mar 2012 22:15:17 +0900
+
+libslp-location (0.3.34-8) unstable; urgency=low
+
+ * modity TC script and copy satellite info with timestamp
+ * Tag: libslp-location_0.3.34-8
+
+ -- Minjune Kim <sena06.kim@samsung.com> Mon, 19 Mar 2012 20:49:24 +0900
+
+libslp-location (0.3.34-7) unstable; urgency=low
+
+ * add libgconf-dbus-dev in control
+ * Tag: libslp-location_0.3.34-7
+
+ -- Genie Kim <daejins.kim@samsung.com> Fri, 16 Mar 2012 11:33:54 +0900
+
+libslp-location (0.3.34-6) unstable; urgency=low
+
+ * Support Capability APIs
+ * Tag: libslp-location_0.3.34-6
+
+ -- Minjune Kim <sena06.kim@samsung.com> Wed, 14 Mar 2012 20:35:31 +0900
+
+libslp-location (0.3.34-5) unstable; urgency=low
+
+ * Add dbus_g_thread_init & g_thread_init to location_init
+ * Tag: libslp-location_0.3.34-5
+
+ -- Minjune Kim <sena06.kim@samsung.com> Fri, 09 Mar 2012 16:29:07 +0900
+
+libslp-location (0.3.34-4) unstable; urgency=low
+
+ * Change a wps_start to support an emulator.
+ * Tag: libslp-location_0.3.34-4
+
+ -- Minjune Kim <sena06.kim@samsung.com> Wed, 07 Mar 2012 10:59:54 +0900
+
+libslp-location (0.3.34-3) unstable; urgency=low
+
+ * Add POI func & Route prototype
+ * Implement get_last_xxx & Update satellite info
+ * Tag: libslp-location_0.3.34-3
+
+ -- Genie Kim <daejins.kim@samsung.com> Mon, 20 Feb 2012 20:23:01 +0900
+
+libslp-location (0.3.34-2) unstable; urgency=low
+
+ * Add location_get_last_XXX and location_get_satellite proto. Add timestamp on satellite info
+ * Add TC
+ * Tag: libslp-location_0.3.34-2
+
+ -- Minjune Kim <sena06.kim@samsung.com> Mon, 13 Feb 2012 21:03:22 +0900
+
+libslp-location (0.3.34-1) unstable; urgency=low
+
+ * Support to get multi positions using geocode service.
+ * Correct typo.
+ * Tag: libslp-location_0.3.34-1
+
+ -- Minjune Kim <sena06.kim@samsung.com> Fri, 03 Feb 2012 15:01:49 +0900
+
+libslp-location (0.3.33-2) unstable; urgency=low
+
+ * Remove a needless conditional code.
+ * Tag: libslp-location_0.3.33-2
+
+ -- Minjune Kim <sena06.kim@samsung.com> Sun, 29 Jan 2012 09:48:48 +0900
+
+libslp-location (0.3.33-1) unstable; urgency=low
+
+ * Enable to get last known position for each method.
+ * Tag: libslp-location_0.3.33-1
+
+ -- Minjune Kim <sena06.kim@samsung.com> Thu, 19 Jan 2012 19:44:12 +0900
+
+libslp-location (0.3.32-1) unstable; urgency=low
+
+ * Fix a bug that a module is not started when a service turns on.
+ * Tag: libslp-location_0.3.32-1
+
+ -- Minjune Kim <sena06.kim@samsung.com> Fri, 06 Jan 2012 17:10:12 +0900
+
+libslp-location (0.3.31-2) unstable; urgency=low
+
+ * check a method before creating its object.
+ * Tag: libslp-location_0.3.31-2
+
+ -- Minjune Kim <sena06.kim@samsung.com> Mon, 19 Dec 2011 21:34:46 +0900
+
+libslp-location (0.3.31-1) unstable; urgency=low
+
+ * change default value of location serverce from 'On' to 'Off'
+ * Tag: libslp-location_0.3.31-1
+
+ -- Genie Kim <daejins.kim@samsung.com> Thu, 08 Dec 2011 20:08:49 +0900
+
+libslp-location (0.3.30-1) unstable; urgency=low
+
+ * add an empty body of location_send_command & support exception case
+ * Tag: libslp-location_0.3.30-1
+
+ -- Minjune Kim <sena06.kim@samsung.com> Tue, 06 Dec 2011 17:05:16 +0900
+
+libslp-location (0.3.29-1) unstable; urgency=low
+
+ * Support multi boundaries & add new API, location_is_enabled_gps
+ * Tag: libslp-location_0.3.29-1
+
+ -- Minjune Kim <sena06.kim@samsung.com> Thu, 03 Nov 2011 22:16:21 +0900
+
+libslp-location (0.3.28-1) unstable; urgency=low
+
+ * fix the bug that the last value of logitude was truncated.
+ * Tag: libslp-location_0.3.28-1
+
+ -- Minjune Kim <sena06.kim@samsung.com> Wed, 02 Nov 2011 14:42:03 +0900
+
+libslp-location (0.3.27-1) unstable; urgency=low
+
+ * fix the bug that libslp-location returns 0,0 instead of error when a last postion(VCONF) is null
+ * Tag: libslp-location_0.3.27-1
+
+ -- Minjune Kim <sena06.kim@samsung.com> Mon, 31 Oct 2011 11:17:21 +0900
+
+libslp-location (0.3.26-1) unstable; urgency=low
+
+ * vconf key is changed and use time_t for timestamp
+ * Tag: libslp-location_0.3.26-1
+
+ -- Genie Kim <daejins.kim@samsung.com> Mon, 17 Oct 2011 13:29:19 +0900
+
+libslp-location (0.3.25-1) unstable; urgency=low
+
+ * add location_is_supported_method, location_send_command & update_interval
+ * Tag: libslp-location_0.3.25-1
+
+ -- Minjune Kim <sena06.kim@samsung.com> Wed, 12 Oct 2011 12:36:45 +0900
+
+libslp-location (0.3.24-1) unstable; urgency=low
+
+ * add location_get_last_known_position & fix prevent defect
+ * Tag: libslp-location_0.3.24-1
+
+ -- Genie Kim <daejins.kim@samsung.com> Thu, 29 Sep 2011 21:37:27 +0900
+
+libslp-location (0.3.23-2) unstable; urgency=low
+
+ * change maintainer in boilerplate
+ * Tag: libslp-location_0.3.23-2
+
+ -- Genie Kim <daejins.kim@samsung.com> Wed, 20 Jul 2011 17:56:38 +0900
+
+libslp-location (0.3.23-1) unstable; urgency=low
+
+ * Vconfkey value is changed by new UI guide
+ * Tag: libslp-location_0.3.23-1
+
+ -- Genie Kim <daejins.kim@samsung.com> Fri, 01 Jul 2011 17:42:34 +0900
+
+libslp-location (0.3.22-1) unstable; urgency=low
+
+ * Release New Location APIs
+ * Tag: libslp-location_0.3.22-1
+
+ -- Tae-Hwan Kim <the81.kim@samsung.com> Wed, 20 Apr 2011 11:07:38 +0900
+
+libslp-location (0.2.22-1) unstable; urgency=low
+
+ * Bug fix when hybrid exit
+ * Tag: libslp-location_0.2.22-1
+
+ -- Tae-Hwan Kim <the81.kim@samsung.com> Thu, 10 Mar 2011 19:44:07 +0900
+
+libslp-location (0.2.21-1) unstable; urgency=low
+
+ * Always update GPS data to PDR in hybrid mode & change some names
+ * Tag: libslp-location_0.2.21-1
+
+ -- Tae-Hwan Kim <the81.kim@samsung.com> Thu, 10 Mar 2011 14:52:09 +0900
+
+libslp-location (0.2.20-1) unstable; urgency=low
+
+ * Location eanbled by UX guide
+ * Tag: libslp-location_0.2.20-1
+
+ -- Tae-Hwan Kim <the81.kim@samsung.com> Mon, 07 Mar 2011 21:01:50 +0900
+
+libslp-location (0.2.19-2) unstable; urgency=low
+
+ * Release again for sbox i386 build
+ * Tag: libslp-location_0.2.19-1
+
+ -- sangho park <sangho.g.park@samsung.com> Tue, 22 Feb 2011 13:57:22 +0900
+
+libslp-location (0.2.18-2) unstable; urgency=low
+
+ * Fix depends for Sbox1
+ * Tag: libslp-location_0.2.18-2
+
+ -- Tae-Hwan Kim <the81.kim@samsung.com> Thu, 17 Feb 2011 20:07:52 +0900
+
+libslp-location (0.2.18-1) unstable; urgency=low
+
+ * Add SPS object/module
+ * Tag: libslp-location_0.2.18-1
+
+ -- Tae-Hwan Kim <the81.kim@samsung.com> Wed, 16 Feb 2011 16:52:43 +0900
+
+libslp-location (0.2.17-1) unstable; urgency=low
+
+ * Apply prevent & Fix PG
+ * Tag: libslp-location_0.2.17-1
+
+ -- Tae-Hwan Kim <the81.kim@samsung.com> Tue, 08 Feb 2011 13:04:34 +0900
+
+libslp-location (0.2.16-2) unstable; urgency=low
+
+ * Add prevent & Fix accuracy
+ * Tag: libslp-location_0.2.16-2
+
+ -- Tae-Hwan Kim <the81.kim@samsung.com> Tue, 25 Jan 2011 17:12:01 +0900
+
+libslp-location (0.2.16-1) unstable; urgency=low
+
+ * Add CPS/IPS & Async address API & Appy vconf security
+ * Tag: libslp-location_0.2.16-1
+
+ -- Tae-Hwan Kim <the81.kim@samsung.com> Wed, 19 Jan 2011 11:39:22 +0900
+
+libslp-location (0.2.15-1) unstable; urgency=low
+
+ * Apply TC recomm. & change default setting value to 0
+ * Tag: libslp-location_0.2.15-1
+
+ -- Tae-hwan Kim <the81.kim@samsung.com> Thu, 06 Jan 2011 10:21:04 +0900
+
+libslp-location (0.2.14-1) unstable; urgency=low
+
+ * Change plugin & guide & Fix TC
+ * Tag: libslp-location_0.2.14-1
+
+ -- Tae-hwan Kim <the81.kim@samsung.com> Mon, 20 Dec 2010 17:27:55 +0900
+
+libslp-location (0.2.13-0) unstable; urgency=low
+
+ * Fix build dependency
+ * Tag: libslp-location_0.2.13-0
+
+ -- Tae-hwan Kim <the81.kim@samsung.com> Mon, 13 Dec 2010 13:03:30 +0900
+
+libslp-location (0.2.12-0) unstable; urgency=low
+
+ * Fix plugin & guide & add setting feature
+ * Tag: libslp-location_0.2.12-0
+
+ -- Tae-hwan Kim <the81.kim@samsung.com> Mon, 13 Dec 2010 09:40:53 +0900
+
+libslp-location (0.2.11-0) unstable; urgency=low
+
+ * Add hybri mode & Fix some bugs
+ * Tag: libslp-location_0.2.11-0
+
+ -- Tae-hwan Kim <the81.kim@samsung.com> Mon, 29 Nov 2010 10:57:57 +0900
+
+libslp-location (0.2.10-0) unstable; urgency=low
+
+ * Fix minor bugs
+ * Tag: libslp-location_0.2.10-0
+
+ -- Tae-hwan Kim <the81.kim@samsung.com> Wed, 24 Nov 2010 23:26:37 +0900
+
+libslp-location (0.2.9-1) unstable; urgency=low
+
+ * Remove caching
+ * Tag: libslp-location_0.2.9-1
+
+ -- Tae-hwan Kim <the81.kim@samsung.com> Tue, 23 Nov 2010 14:29:20 +0900
+
+libslp-location (0.2.8-1) unstable; urgency=low
+
+ * Fix plugin priority & Fix sample code bug
+ * Tag: libslp-location_0.2.8-1
+
+ -- Tae-hwan Kim <the81.kim@samsung.com> Wed, 10 Nov 2010 21:46:03 +0900
+
+libslp-location (0.2.7-1) unstable; urgency=low
+
+ * Add geocode object & Enable wps object
+ * Tag: libslp-location_0.2.7-1
+
+ -- Tae-hwan Kim <the81.kim@samsung.com> Mon, 08 Nov 2010 23:03:50 +0900
+
+libslp-location (0.1.7-1) unstable; urgency=low
+
+ * Remove unnecessary dependencies(geoclue-skyhook,gpsd ..)
+ * Tag: libslp-location_0.1.7-1
+
+ -- Tae-hwan Kim <the81.kim@samsung.com> Mon, 01 Nov 2010 13:53:11 +0900
+
+libslp-location (0.1.6-1) unstable; urgency=low
+
+ * Fix dependency
+ * Tag: libslp-location_0.1.6-1
+
+ -- Tae-hwan Kim <the81.kim@samsung.com> Sun, 31 Oct 2010 16:59:48 +0900
+
+libslp-location (0.1.5-1) unstable; urgency=low
+
+ * Fix for limo
+ * Tag: libslp-location_0.1.5-1
+
+ -- Tae-hwan Kim <the81.kim@samsung.com> Fri, 29 Oct 2010 16:26:43 +0900
+
+libslp-location (0.1.4-2) unstable; urgency=low
+
+ * Remove version field for limo
+ * Tag: libslp-location_0.1.4-2
+
+ -- Tae-hwan Kim <the81.kim@samsung.com> Fri, 29 Oct 2010 14:50:42 +0900
+
+libslp-location (0.1.4-1) unstable; urgency=low
+
+ * Add version field in control
+ * Tag: libslp-location_0.1.4-1
+
+ -- Tae-hwan Kim <the81.kim@samsung.com> Fri, 29 Oct 2010 14:18:01 +0900
+
+libslp-location (0.1.3-1) unstable; urgency=low
+
+ * Fix PG & sample, Change signal emission
+ * Tag: libslp-location_0.1.3-1
+
+ -- Tae-hwan Kim <the81.kim@samsung.com> Fri, 29 Oct 2010 13:49:11 +0900
+
+libslp-location (0.1.2-1) unstable; urgency=low
+
+ * Add more bolier plate
+ * Tag: libslp-location_0.1.2-1
+
+ -- Tae-hwan Kim <the81.kim@samsung.com> Tue, 26 Oct 2010 16:40:31 +0900
+
+libslp-location (0.1.1-1) unstable; urgency=low
+
+ * Fix for PG & Doxygen & Limo Contrib.
+ * Tag: libslp-location_0.1.1-1
+
+ -- Tae-hwan Kim <the81.kim@samsung.com> Tue, 26 Oct 2010 12:22:16 +0900
+
+libslp-location (0.1.0-15) unstable; urgency=low
+
+ * Update programming guide & test case for address APIs
+ * Tag: libslp-location_0.1.0-15
+
+ -- Tae-hwan Kim <the81.kim@samsung.com> Sat, 16 Oct 2010 20:53:38 +0900
+
+libslp-location (0.1.0-14) unstable; urgency=low
+
+ * Adapt to libdecarta
+ * Tag: libslp-location_0.1.0-14
+
+ -- Tae-hwan Kim <the81.kim@samsung.com> Mon, 11 Oct 2010 22:33:14 +0900
+
+libslp-location (0.1.0-13) unstable; urgency=low
+
+ * Add input parameter error handling & Change TC
+ * Tag: libslp-location_0.1.0-13
+
+ -- Tae-hwan Kim <the81.kim@samsung.com> Mon, 27 Sep 2010 20:03:09 +0900
+
+libslp-location (0.1.0-12) unstable; urgency=low
+
+ * Fix in zone in/out & Add more test case
+ * Tag: libslp-location_0.1.0-12
+
+ -- Tae-hwan Kim <the81.kim@samsung.com> Fri, 17 Sep 2010 16:56:35 +0900
+
+libslp-location (0.1.0-11) unstable; urgency=low
+
+ * Add glib-genmarshal & Remove marshal source/header
+ * Tag: libslp-location_0.1.0-11
+
+ -- Tae-hwan Kim <the81.kim@samsung.com> Tue, 14 Sep 2010 10:18:37 +0900
+
+libslp-location (0.1.0-10) unstable; urgency=low
+
+ * Change programming guide & doxygen comments
+ * Tag: libslp-location_0.1.0-10
+
+ -- Tae-hwan Kim <the81.kim@samsung.com> Fri, 10 Sep 2010 14:52:24 +0900
+
+libslp-location (0.1.0-9) unstable; urgency=low
+
+ * Change programming guilde & Add sample codes
+ * Tag: libslp-location_0.1.0-9
+
+ -- Tae-hwan Kim <the81.kim@samsung.com> Thu, 09 Sep 2010 17:50:27 +0900
+
+libslp-location (0.1.0-8) unstable; urgency=low
+
+ * Add zone in/out & boundary feature
+ * Tag: libslp-location_0.1.0-8
+
+ -- Tae-hwan Kim <the81.kim@samsung.com> Mon, 06 Sep 2010 10:57:08 +0900
+
+libslp-location (0.1.0-7) unstable; urgency=low
+
+ * Adapt to geoclue change
+ * Tag: libslp-location_0.1.0-7
+
+ -- Tae-hwan Kim <the81.kim@samsung.com> Sat, 04 Sep 2010 19:40:16 +0900
+
+libslp-location (0.1.0-6) unstable; urgency=low
+
+ * Change programming guide & test application
+ * Tag: libslp-location_0.1.0-6
+
+ -- Tae-hwan Kim <the81.kim@samsung.com> Wed, 01 Sep 2010 20:07:34 +0900
+
+libslp-location (0.1.0-5) unstable; urgency=low
+
+ * Change fw name in doxygen & release again
+ * Tag: libslp-location_0.1.0-5
+
+ -- Tae-hwan Kim <the81.kim@samsung.com> Tue, 31 Aug 2010 23:28:12 +0900
+
+libslp-location (0.1.0-4) unstable; urgency=low
+
+ * Add doxygen & change API return value to integer
+ * Tag: libslp-location_0.1.0-4
+
+ -- Tae-hwan Kim <the81.kim@samsung.com> Tue, 31 Aug 2010 22:09:35 +0900
+
+libslp-location (0.1.0-3) unstable; urgency=low
+
+ * Change header dependency for relase
+ * Tag: libslp-location_0.1.0-3
+
+ -- Tae-hwan Kim <the81.kim@samsung.com> Mon, 30 Aug 2010 20:58:04 +0900
+
+libslp-location (0.1.0-2) unstable; urgency=low
+
+ * Fix header include & Release again
+ * Tag: libslp-location_0.1.0-2
+
+ -- Tae-hwan Kim <the81.kim@samsung.com> Mon, 30 Aug 2010 17:51:44 +0900
+
+libslp-location (0.1.0-1) unstable; urgency=low
+
+ * Initial version
+ * Tag: libslp-location_0.1.0-1
+
+ -- Tae-hwan Kim <the81.kim@samsung.com> Mon, 30 Aug 2010 12:01:05 +0900
SET(MANAGER_DIR "manager")
SET(MODULE_DIR "module")
-
+IF(FEATURE_PROFILE_TV)
+ SET (PRIVACY_SRC "")
+ELSE(FEATURE_PROFILE_TV)
+ SET (PRIVACY_SRC "${MANAGER_DIR}/location-privacy.c")
+ENDIF(FEATURE_PROFILE_TV)
INCLUDE_DIRECTORIES(
${INC_DIR}
${MANAGER_DIR}/location-common-util.c
${MANAGER_DIR}/location-gps.c
${MANAGER_DIR}/location-wps.c
- ${MANAGER_DIR}/location-hybrid.c
- ${MANAGER_DIR}/location-privacy.c
+ ${PRIVACY_SRC}
${MODULE_DIR}/module-internal.c
)
+SET(SRCS_MOBILE
+ ${MANAGER_DIR}/location-hybrid-mobile.c
+)
+
SET (INSTALL_HEADERS
${INC_DIR}/location-types.h
${MODULE_DIR}/location-module.h
)
-ADD_LIBRARY(${LIB_NAME} SHARED ${SRCS})
+ADD_LIBRARY(${LIB_NAME} SHARED ${SRCS} ${SRCS_MOBILE})
TARGET_LINK_LIBRARIES(${LIB_NAME} ${pkgs_LDFLAGS} -lm)
SET_TARGET_PROPERTIES(${LIB_NAME} PROPERTIES VERSION ${FULLVER} SOVERSION ${MAJORVER} CLEAN_DIRECT_OUTPUT 1)
ENDIF (NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${MANAGER_DIR}/location-marshal.c)
INSTALL(TARGETS ${LIB_NAME} DESTINATION lib COMPONENT Runtime)
-#INSTALL(DIRECTORY manager module DESTINATION
-# "include/${PROJECT_NAME}" FILES_MATCHING PATTERN "*.h")
-#FOREACH(ITEM ${INCLUDE_DIRECTORIES})
-
FOREACH(ITEM IN ITEMS ${INSTALL_HEADERS})
MESSAGE ("${ITEM}")
INSTALL(FILES ${ITEM} DESTINATION include/${PROJECT_NAME})
+++ /dev/null
-SUBDIRS = manager module
-lib_LTLIBRARIES = libSLP-location.la
-
-COMMON_HEADER_DIR = include
-MANAGER_DIR = manager
-MODULE_DIR = module
-
-libSLP_location_la_SOURCES = \
- ${MANAGER_DIR}/location.c
-
-libSLP_location_la_CFLAGS = \
- -fPIC\
- -I${srcdir} \
- -I${srcdir}/include \
- -I${srcdir}/${MANAGER_DIR} \
- -I${srcdir}/${MODULE_DIR} \
- $(LOCATION_CFLAGS)
-
-libSLP_location_la_LIBADD = \
- ${MANAGER_DIR}/liblocation-manager.la \
- ${MODULE_DIR}/liblocation-module.la \
- -lm\
- $(LOCATION_LIBS)
-
-libSLP_location_includedir = $(includedir)/location
-libSLP_location_include_HEADERS = \
- ${COMMON_HEADER_DIR}/location-types.h \
- ${MANAGER_DIR}/location.h \
- ${MANAGER_DIR}/location-position.h \
- ${MANAGER_DIR}/location-batch.h \
- ${MANAGER_DIR}/location-velocity.h \
- ${MANAGER_DIR}/location-accuracy.h \
- ${MANAGER_DIR}/location-boundary.h \
- ${MANAGER_DIR}/location-satellite.h \
- ${MODULE_DIR}/location-module.h
* @brief This represents the returned error code of used functions.
*/
typedef enum {
- LOCATION_ERROR_NONE = 0, ///< Success.
- LOCATION_ERROR_NOT_ALLOWED, ///< Location servie is not allowed from privacy settings.
- LOCATION_ERROR_NOT_AVAILABLE, ///< Location service is not available.
- LOCATION_ERROR_NETWORK_FAILED, ///< Network is not available.
- LOCATION_ERROR_NETWORK_NOT_CONNECTED, ///< Network is not connected.
- LOCATION_ERROR_CONFIGURATION, ///< Configuration setting is not correct.
- LOCATION_ERROR_PARAMETER, ///< Input parameter is not correct.
- LOCATION_ERROR_NOT_FOUND, ///< Output is not found.
- LOCATION_ERROR_NOT_SUPPORTED, ///< Not supported.
- LOCATION_ERROR_UNKNOWN, ///< Unknown error.
- LOCATION_ERROR_SETTING_OFF, ///< Location service(GPS/WPS) is off in location settings.
- LOCATION_ERROR_SECURITY_DENIED, ///< System disables location service.
+ LOCATION_ERROR_NONE = 0, /*/< Success. */
+ LOCATION_ERROR_NOT_ALLOWED, /*/< Location servie is not allowed from privacy settings. */
+ LOCATION_ERROR_NOT_AVAILABLE, /*/< Location service is not available. */
+ LOCATION_ERROR_NETWORK_FAILED, /*/< Network is not available. */
+ LOCATION_ERROR_NETWORK_NOT_CONNECTED, /*/< Network is not connected. */
+ LOCATION_ERROR_CONFIGURATION, /*/< Configuration setting is not correct. */
+ LOCATION_ERROR_PARAMETER, /*/< Input parameter is not correct. */
+ LOCATION_ERROR_NOT_FOUND, /*/< Output is not found. */
+ LOCATION_ERROR_NOT_SUPPORTED, /*/< Not supported. */
+ LOCATION_ERROR_UNKNOWN, /*/< Unknown error. */
+ LOCATION_ERROR_SETTING_OFF, /*/< Location service(GPS/WPS) is off in location settings. */
+ LOCATION_ERROR_SECURITY_DENIED, /*/< System disables location service. */
} LocationError;
/**
* @brief This represents location method to be used.
*/
-typedef enum
-{
- LOCATION_METHOD_NONE = -1, ///< Undefined method.
- LOCATION_METHOD_HYBRID = 0, ///< This method selects best method.
- LOCATION_METHOD_GPS, ///< This method uses Global Positioning System.
- LOCATION_METHOD_WPS, ///< This method uses Wifi Positioning System.
- LOCATION_METHOD_MAX, ///< The numer of methods
+typedef enum {
+ LOCATION_METHOD_NONE = -1, /*/< Undefined method. */
+ LOCATION_METHOD_HYBRID = 0, /*/< This method selects best method. */
+ LOCATION_METHOD_GPS, /*/< This method uses Global Positioning System. */
+ LOCATION_METHOD_WPS, /*/< This method uses Wifi Positioning System. */
+ LOCATION_METHOD_MAX, /*/< The numer of methods */
} LocationMethod;
/**
* @brief This represents the update type given by signal callback.
*/
typedef enum {
- UPDATE_TYPE_NONE = -1, ///< Undefined update type.
- POSITION_UPDATED = 0, ///< This type is used when position information is updated.
- VELOCITY_UPDATED, ///< This type is used when velocity information is updated.
- SATELLITE_UPDATED, ///< This type is used when satellite information is updated.
+ POSITION_UPDATED = 0x01, /*/< This type is used when position information is updated. */
+ VELOCITY_UPDATED = POSITION_UPDATED << 0x01, /*/< This type is used when velocity information is updated. */
+ SATELLITE_UPDATED = POSITION_UPDATED << 0x02, /*/< This type is used when satellite information is updated. */
+ DISTANCE_UPDATED = POSITION_UPDATED << 0x03, /*/< This type is used when distance information is updated. */
+ LOCATION_CHANGED = POSITION_UPDATED << 0x04, /*/< This type is used when location information is updated. */
} LocationUpdateType;
/**
* @brief This represents the state whether an application is able to use location service
*/
typedef enum {
- LOCATION_ACCESS_NONE, ///< An application is not registered.
- LOCATION_ACCESS_DENIED, ///< An application is not permited to use location service.
- LOCATION_ACCESS_ALLOWED, ///< An application is able to use location service.
+ LOCATION_ACCESS_NONE, /*/< An application is not registered. */
+ LOCATION_ACCESS_DENIED, /*/< An application is not permited to use location service. */
+ LOCATION_ACCESS_ALLOWED, /*/< An application is able to use location service. */
} LocationAccessState;
/**
*/
typedef struct _LocationBoundary LocationBoundary;
-typedef void (*LocationSettingCb) (LocationMethod method, gboolean enable, void *user_data);
+typedef void (*LocationSettingCb)(LocationMethod method, gboolean enable, void *user_data);
/**
* @}@}
+++ /dev/null
-noinst_LTLIBRARIES = liblocation-manager.la
-
-COMMON_HEADER_DIR = include
-MANAGER_DIR = manager
-MAP_SERVICE_DIR = map-service
-MODULE_DIR = module
-
-liblocation_manager_la_SOURCES = \
- location-marshal.c \
- location-marshal.h \
- location-ielement.c \
- location-setting.c \
- location-position.c \
- location-batch.c \
- location-velocity.c \
- location-accuracy.c \
- location-boundary.c \
- location-satellite.c \
- location-signaling-util.c \
- location-common-util.c \
- location-gps.c \
- location-wps.c \
- location-hybrid.c \
- location-privacy.c
-
-liblocation_manager_la_CFLAGS = \
- -fPIC\
- -I${srcdir} \
- -I${srcdir}/.. \
- -I${srcdir}/../include \
- -I${srcdir}/../${MANAGER_DIR} \
- -I${srcdir}/../${MAP_SERVICE_DIR} \
- -I${srcdir}/../${MODULE_DIR} \
- $(LOCATION_CFLAGS)
-
-EXTRA_DIST = \
- location-marshal.list
-
-location-marshal.h: location-marshal.list $(GLIB_GENMARSHAL)
- $(GLIB_GENMARSHAL) $< --header --prefix=location > $@
-location-marshal.c: location-marshal.list location-marshal.h $(GLIB_GENMARSHAL)
- echo "#include \"location-marshal.h\"" > $@ && $(GLIB_GENMARSHAL) location-marshal.list --body --prefix=location >> $@
#include "location-log.h"
GType
-location_accuracy_get_type (void)
+location_accuracy_get_type(void)
{
static volatile gsize type_volatile = 0;
- if(g_once_init_enter(&type_volatile)) {
- GType type = g_boxed_type_register_static (
- g_intern_static_string ("LocationAccuracy"),
- (GBoxedCopyFunc) location_accuracy_copy,
- (GBoxedFreeFunc) location_accuracy_free);
+ if (g_once_init_enter(&type_volatile)) {
+ GType type = g_boxed_type_register_static(
+ g_intern_static_string("LocationAccuracy"),
+ (GBoxedCopyFunc) location_accuracy_copy,
+ (GBoxedFreeFunc) location_accuracy_free);
g_once_init_leave(&type_volatile, type);
}
return type_volatile;
}
-EXPORT_API LocationAccuracy*
-location_accuracy_new (LocationAccuracyLevel level,
- gdouble horizontal_accuracy,
- gdouble vertical_accuracy)
+EXPORT_API LocationAccuracy *
+location_accuracy_new(LocationAccuracyLevel level,
+ gdouble horizontal_accuracy,
+ gdouble vertical_accuracy)
{
- LocationAccuracy* accuracy = g_slice_new0 (LocationAccuracy);
+ LocationAccuracy *accuracy = g_slice_new0(LocationAccuracy);
g_return_val_if_fail(accuracy, NULL);
accuracy->level = level;
}
EXPORT_API void
-location_accuracy_free (LocationAccuracy* accuracy)
+location_accuracy_free(LocationAccuracy *accuracy)
{
- g_return_if_fail (accuracy);
- g_slice_free (LocationAccuracy, accuracy);
+ g_return_if_fail(accuracy);
+ g_slice_free(LocationAccuracy, accuracy);
}
static int
}
EXPORT_API int
-location_accuracy_compare (const LocationAccuracy *accuracy1, const LocationAccuracy *accuracy2)
+location_accuracy_compare(const LocationAccuracy *accuracy1, const LocationAccuracy *accuracy2)
{
int ret = 0;
ret = location_accuracy_level_compare(accuracy1, accuracy2);
- if(!ret){
+ if (!ret) {
ret = comp_double_reverse(accuracy1->horizontal_accuracy, accuracy2->horizontal_accuracy);
- if(!ret) return comp_double_reverse(accuracy1->vertical_accuracy, accuracy2->vertical_accuracy);
+ if (!ret) return comp_double_reverse(accuracy1->vertical_accuracy, accuracy2->vertical_accuracy);
}
return ret;
}
-EXPORT_API LocationAccuracy*
-location_accuracy_copy (const LocationAccuracy *accuracy)
+EXPORT_API LocationAccuracy *
+location_accuracy_copy(const LocationAccuracy *accuracy)
{
g_return_val_if_fail(accuracy, NULL);
return location_accuracy_new(accuracy->level,
- accuracy->horizontal_accuracy,
- accuracy->vertical_accuracy);
+ accuracy->horizontal_accuracy,
+ accuracy->vertical_accuracy);
}
* @brief This represents the approximate accuracy level of given information.
*/
typedef enum {
- LOCATION_ACCURACY_LEVEL_NONE = 0, ///< Invalid data.
- LOCATION_ACCURACY_LEVEL_COUNTRY, ///< Country accuracy level->
- LOCATION_ACCURACY_LEVEL_REGION, ///< Regional accuracy level->
- LOCATION_ACCURACY_LEVEL_LOCALITY, ///< Local accuracy level->
- LOCATION_ACCURACY_LEVEL_POSTALCODE, ///< Postal accuracy level->
- LOCATION_ACCURACY_LEVEL_STREET, ///< Street accuracy level->
- LOCATION_ACCURACY_LEVEL_DETAILED, ///< Detailed accuracy level->
+ LOCATION_ACCURACY_LEVEL_NONE = 0, /*/< Invalid data. */
+ LOCATION_ACCURACY_LEVEL_COUNTRY, /*/< Country accuracy level-> */
+ LOCATION_ACCURACY_LEVEL_REGION, /*/< Regional accuracy level-> */
+ LOCATION_ACCURACY_LEVEL_LOCALITY, /*/< Local accuracy level-> */
+ LOCATION_ACCURACY_LEVEL_POSTALCODE, /*/< Postal accuracy level-> */
+ LOCATION_ACCURACY_LEVEL_STREET, /*/< Street accuracy level-> */
+ LOCATION_ACCURACY_LEVEL_DETAILED, /*/< Detailed accuracy level-> */
} LocationAccuracyLevel;
/**
* @brief This represents location accuracy information such as accuracy level, horizontal and vertical accuracy.
*/
-struct _LocationAccuracy
-{
- LocationAccuracyLevel level; ///< The accuracy level of the location information.
- gdouble horizontal_accuracy; ///< The horizontal position uncertainty of the location in meters.
- gdouble vertical_accuracy; ///< The vertical position uncertainty of the location in meters.
+struct _LocationAccuracy {
+ LocationAccuracyLevel level; /*/< The accuracy level of the location information. */
+ gdouble horizontal_accuracy; /*/< The horizontal position uncertainty of the location in meters. */
+ gdouble vertical_accuracy; /*/< The vertical position uncertainty of the location in meters. */
};
/**
* @return a new #LocationAccuracy
* @retval NULL if error occured
*/
-LocationAccuracy *location_accuracy_new (LocationAccuracyLevel level, gdouble horizontal_accuracy, gdouble vertical_accuracy);
+LocationAccuracy *location_accuracy_new(LocationAccuracyLevel level, gdouble horizontal_accuracy, gdouble vertical_accuracy);
/**
* @brief Free a #LocationAccuracy.
* @param [in] accuracy - a #LocationAccuracy.
* @return None.
*/
-void location_accuracy_free (LocationAccuracy *accuracy);
+void location_accuracy_free(LocationAccuracy *accuracy);
/**
* @brief Compare for two accuracys.
* positive value - if accuracy of accuracy1 is better than accuracy of accuracy2\n
* negative value - if accuracy of accuracy1 is worse than accuracy of accuracy2
*/
-int location_accuracy_compare (const LocationAccuracy *accuracy1, const LocationAccuracy *accuracy2);
+int location_accuracy_compare(const LocationAccuracy *accuracy1, const LocationAccuracy *accuracy2);
/**
* @brief Compare for two accuracys' level.
* @return a new #LocationAccuracy
* @retval NULL if error occured
*/
-LocationAccuracy *location_accuracy_copy (const LocationAccuracy *accuracy);
+LocationAccuracy *location_accuracy_copy(const LocationAccuracy *accuracy);
/**
* @} @}
#include "location-log.h"
-EXPORT_API LocationBatch*
-location_batch_new (int num_of_location)
+EXPORT_API LocationBatch *
+location_batch_new(int num_of_location)
{
- LocationBatch* batch = g_slice_new0(LocationBatch);
+ LocationBatch *batch = g_slice_new0(LocationBatch);
g_return_val_if_fail(batch, NULL);
batch->num_of_location = num_of_location;
}
EXPORT_API gboolean
-location_set_batch_parse_details (LocationBatch *batch, char* location_info, int i)
+location_set_batch_parse_details(LocationBatch *batch, char *location_info, int i)
{
g_return_val_if_fail(batch, FALSE);
g_return_val_if_fail(batch->batch_data, FALSE);
batch->batch_data[i].altitude = strtod(last_location[index++], NULL);
batch->batch_data[i].speed = strtod(last_location[index++], NULL);
batch->batch_data[i].direction = strtod(last_location[index++], NULL);
- batch->batch_data[i].horizontal_accuracy= strtod(last_location[index++], NULL);
+ batch->batch_data[i].horizontal_accuracy = strtod(last_location[index++], NULL);
batch->batch_data[i].vertical_accuracy = strtod(last_location[index++], NULL);
return TRUE;
}
-EXPORT_API LocationBatch*
-location_get_batch_file (int num_of_location)
+EXPORT_API LocationBatch *
+location_get_batch_file(int num_of_location)
{
LOCATION_LOGD("location_get_batch_file [num_of_location = %d]", num_of_location);
- LocationBatch* batch = location_batch_new(num_of_location);
+ LocationBatch *batch = location_batch_new(num_of_location);
batch->num_of_location = num_of_location;
FILE *fd = fopen(BATCH_LOG, "r");
}
fclose(fd);
- }
- else {
+ } else {
LOCATION_LOGE("Batch fd is NULL");
}
return batch;
}
-EXPORT_API LocationBatch*
-location_batch_copy (const LocationBatch *batch)
+EXPORT_API LocationBatch *
+location_batch_copy(const LocationBatch *batch)
{
g_return_val_if_fail(batch, NULL);
- LocationBatch* batch_dup = location_batch_new(batch->num_of_location);
+ LocationBatch *batch_dup = location_batch_new(batch->num_of_location);
batch_dup->num_of_location = batch->num_of_location;
int i = 0;
for (i = 0 ; i < batch_dup->num_of_location; i++)
location_set_batch_details(batch_dup, i,
- batch->batch_data[i].latitude,
- batch->batch_data[i].longitude,
- batch->batch_data[i].altitude,
- batch->batch_data[i].speed,
- batch->batch_data[i].direction,
- batch->batch_data[i].horizontal_accuracy,
- batch->batch_data[i].vertical_accuracy,
- batch->batch_data[i].timestamp);
+ batch->batch_data[i].latitude,
+ batch->batch_data[i].longitude,
+ batch->batch_data[i].altitude,
+ batch->batch_data[i].speed,
+ batch->batch_data[i].direction,
+ batch->batch_data[i].horizontal_accuracy,
+ batch->batch_data[i].vertical_accuracy,
+ batch->batch_data[i].timestamp);
return batch_dup;
}
EXPORT_API gboolean
-location_get_batch_details (const LocationBatch *batch,
- guint index,
- gdouble *latitude,
- gdouble *longitude,
- gdouble *altitude,
- gdouble *speed,
- gdouble *direction,
- gdouble *h_accuracy,
- gdouble *v_accuracy,
- guint *timestamp)
+location_get_batch_details(const LocationBatch *batch,
+ guint index,
+ gdouble *latitude,
+ gdouble *longitude,
+ gdouble *altitude,
+ gdouble *speed,
+ gdouble *direction,
+ gdouble *h_accuracy,
+ gdouble *v_accuracy,
+ guint *timestamp)
{
g_return_val_if_fail(batch, FALSE);
g_return_val_if_fail(latitude, FALSE);
}
EXPORT_API gboolean
-location_set_batch_details (LocationBatch *batch,
- guint index,
- gdouble latitude,
- gdouble longitude,
- gdouble altitude,
- gdouble speed,
- gdouble direction,
- gdouble h_accuracy,
- gdouble v_accuracy,
- guint timestamp)
+location_set_batch_details(LocationBatch *batch,
+ guint index,
+ gdouble latitude,
+ gdouble longitude,
+ gdouble altitude,
+ gdouble speed,
+ gdouble direction,
+ gdouble h_accuracy,
+ gdouble v_accuracy,
+ guint timestamp)
{
g_return_val_if_fail(batch, FALSE);
g_return_val_if_fail(batch->batch_data, FALSE);
}
EXPORT_API void
-location_batch_free (LocationBatch* batch)
+location_batch_free(LocationBatch *batch)
{
g_return_if_fail(batch);
g_free(batch->batch_data);
G_BEGIN_DECLS
-GType location_batch_get_type (void);
+GType location_batch_get_type(void);
#define LOCATION_TYPE_BATCH (location_batch_get_type ())
/**
* TBD
*/
typedef struct {
- guint timestamp; ///< Time stamp.
- guint level; ///< Level.
- gdouble latitude; ///< Latitude data.
- gdouble longitude; ///< Longitude data.
- gdouble altitude; ///< Altitude data.
- gdouble horizontal_accuracy; ///< Horizontal accuracy data.
- gdouble vertical_accuracy; ///< Vertical accuracy data.
- gdouble speed; ///< The speed over ground. (km/h)
- gdouble direction; ///< The course made in degrees relative to true north. The value is always in the range [0.0, 360.0] degree.
- gdouble climb; ///< The vertical speed. (km/h)
+ guint timestamp; /*/< Time stamp. */
+ guint level; /*/< Level. */
+ gdouble latitude; /*/< Latitude data. */
+ gdouble longitude; /*/< Longitude data. */
+ gdouble altitude; /*/< Altitude data. */
+ gdouble horizontal_accuracy; /*/< Horizontal accuracy data. */
+ gdouble vertical_accuracy; /*/< Vertical accuracy data. */
+ gdouble speed; /*/< The speed over ground. (km/h) */
+ gdouble direction; /*/< The course made in degrees relative to true north. The value is always in the range [0.0, 360.0] degree. */
+ gdouble climb; /*/< The vertical speed. (km/h) */
} LocationBatchDetail;
/**
* TBD
*/
-struct _LocationBatch
-{
- guint num_of_location; ///< The number of location batch.
- LocationBatchDetail* batch_data;
+struct _LocationBatch {
+ guint num_of_location; /*/< The number of location batch. */
+ LocationBatchDetail *batch_data;
};
-LocationBatch*location_batch_new (int num_of_location);
+LocationBatch *location_batch_new(int num_of_location);
-gboolean location_set_batch_parse_details(LocationBatch *batch, char* location_info, int i);
+gboolean location_set_batch_parse_details(LocationBatch *batch, char *location_info, int i);
gboolean location_get_batch_details(const LocationBatch *batch, guint index, gdouble *latitude, gdouble *longitude, gdouble *altitude, gdouble *speed, gdouble *direction, gdouble *h_accuracy, gdouble *v_accuracy, guint *timestamp);
gboolean location_set_batch_details(LocationBatch *batch, guint index, gdouble latitude, gdouble longitude, gdouble altitude, gdouble speed, gdouble direction, gdouble h_accuracy, gdouble v_accuracy, guint timestamp);
-LocationBatch *location_batch_copy (const LocationBatch *batch);
+LocationBatch *location_batch_copy(const LocationBatch *batch);
-LocationBatch* location_get_batch_file (int num_of_location);
+LocationBatch *location_get_batch_file(int num_of_location);
-void location_batch_free (LocationBatch* batch);
+void location_batch_free(LocationBatch *batch);
/**
* @} @}
#include "location-log.h"
GType
-location_boundary_get_type (void)
+location_boundary_get_type(void)
{
static volatile gsize type_volatile = 0;
- if(g_once_init_enter(&type_volatile)) {
- GType type = g_boxed_type_register_static (
- g_intern_static_string ("LocationBoundary"),
- (GBoxedCopyFunc) location_boundary_copy,
- (GBoxedFreeFunc) location_boundary_free);
+ if (g_once_init_enter(&type_volatile)) {
+ GType type = g_boxed_type_register_static(
+ g_intern_static_string("LocationBoundary"),
+ (GBoxedCopyFunc) location_boundary_copy,
+ (GBoxedFreeFunc) location_boundary_free);
g_once_init_leave(&type_volatile, type);
}
return type_volatile;
g_return_if_fail(data);
g_return_if_fail(user_data);
- LocationBoundary* boundary = (LocationBoundary*)user_data;
- LocationPosition* position = (LocationPosition *)data;
- LocationPosition* new_position = location_position_copy(position);
+ LocationBoundary *boundary = (LocationBoundary *)user_data;
+ LocationPosition *position = (LocationPosition *)data;
+ LocationPosition *new_position = location_position_copy(position);
boundary->polygon.position_list = g_list_append(boundary->polygon.position_list, new_position);
}
{
g_return_if_fail(data);
- LocationPosition* position = (LocationPosition *)data;
+ LocationPosition *position = (LocationPosition *)data;
location_position_free(position);
}
EXPORT_API LocationBoundary *
-location_boundary_new_for_rect (LocationPosition* left_top,
- LocationPosition* right_bottom)
+location_boundary_new_for_rect(LocationPosition *left_top,
+ LocationPosition *right_bottom)
{
g_return_val_if_fail(left_top, NULL);
g_return_val_if_fail(right_bottom, NULL);
gdouble lon_interval = right_bottom->longitude - left_top->longitude;
- if(lon_interval < 180 && lon_interval > -180) {
- if(right_bottom->longitude <= left_top->longitude || right_bottom->latitude >= left_top->latitude)
+ if (lon_interval < 180 && lon_interval > -180) {
+ if (right_bottom->longitude <= left_top->longitude || right_bottom->latitude >= left_top->latitude)
return NULL;
- }
- else {
- if(right_bottom->longitude >= left_top->longitude || right_bottom->latitude >= left_top->latitude)
+ } else {
+ if (right_bottom->latitude >= left_top->latitude)
return NULL;
}
- LocationBoundary* boundary = g_slice_new0 (LocationBoundary);
+ LocationBoundary *boundary = g_slice_new0(LocationBoundary);
g_return_val_if_fail(boundary, NULL);
boundary->type = LOCATION_BOUNDARY_RECT;
}
EXPORT_API LocationBoundary *
-location_boundary_new_for_circle (LocationPosition* center,
- gdouble radius)
+location_boundary_new_for_circle(LocationPosition *center,
+ gdouble radius)
{
g_return_val_if_fail(center, NULL);
g_return_val_if_fail(radius > 0, NULL);
- LocationBoundary* boundary = g_slice_new0 (LocationBoundary);
+ LocationBoundary *boundary = g_slice_new0(LocationBoundary);
g_return_val_if_fail(boundary, NULL);
boundary->type = LOCATION_BOUNDARY_CIRCLE;
g_return_val_if_fail(position_list, NULL);
g_return_val_if_fail(g_list_length(position_list) > 2, NULL);
- LocationBoundary *boundary = g_slice_new0 (LocationBoundary);
+ LocationBoundary *boundary = g_slice_new0(LocationBoundary);
g_return_val_if_fail(boundary, NULL);
g_list_foreach(position_list, (GFunc)_append_polygon_position, boundary);
}
EXPORT_API void
-location_boundary_free (LocationBoundary* boundary)
+location_boundary_free(LocationBoundary *boundary)
{
g_return_if_fail(boundary);
g_slice_free(LocationBoundary, boundary);
}
-EXPORT_API LocationBoundary*
-location_boundary_copy (const LocationBoundary* boundary)
+EXPORT_API LocationBoundary *
+location_boundary_copy(const LocationBoundary *boundary)
{
g_return_val_if_fail(boundary, NULL);
if (boundary->type == LOCATION_BOUNDARY_RECT) {
}
EXPORT_API gboolean
-location_boundary_if_inside (LocationBoundary* boundary,
- LocationPosition* position)
+location_boundary_if_inside(LocationBoundary *boundary,
+ LocationPosition *position)
{
g_return_val_if_fail(boundary, FALSE);
g_return_val_if_fail(position, FALSE);
gboolean is_inside = FALSE;
- switch(boundary->type) {
+ switch (boundary->type) {
case LOCATION_BOUNDARY_RECT: {
- gdouble y = position->latitude;
- gdouble x = position->longitude;
-
- gdouble lt_y = boundary->rect.left_top->latitude;
- gdouble lt_x = boundary->rect.left_top->longitude;
- gdouble rb_y = boundary->rect.right_bottom->latitude;
- gdouble rb_x = boundary->rect.right_bottom->longitude;
-
- if (lt_x - rb_x < 180 && lt_x - rb_x > -180) {
- if ((rb_y < y && y < lt_y) && ( lt_x < x && x < rb_x)) {
- LOCATION_LOGD("\tInside of Rectangular boundary");
- is_inside = TRUE;
- }
- }
- else {
- if ((rb_y < y && y < lt_y) && ( lt_x < x || x < rb_x)) {
- LOCATION_LOGD("\tInside of Rectangular boundary near 180th meridian");
- is_inside = TRUE;
+ gdouble y = position->latitude;
+ gdouble x = position->longitude;
+
+ gdouble lt_y = boundary->rect.left_top->latitude;
+ gdouble lt_x = boundary->rect.left_top->longitude;
+ gdouble rb_y = boundary->rect.right_bottom->latitude;
+ gdouble rb_x = boundary->rect.right_bottom->longitude;
+
+ if (lt_x - rb_x < 180 && lt_x - rb_x > -180) {
+ if ((rb_y < y && y < lt_y) && (lt_x < x && x < rb_x)) {
+ LOCATION_LOGD("\tInside of Rectangular boundary");
+ is_inside = TRUE;
+ }
+ } else {
+ if ((rb_y < y && y < lt_y) && (lt_x < x || x < rb_x)) {
+ LOCATION_LOGD("\tInside of Rectangular boundary near 180th meridian");
+ is_inside = TRUE;
+ }
}
+ break;
}
- break;
- }
case LOCATION_BOUNDARY_CIRCLE: {
- LocationPosition center;
- gulong distance = 0;
+ LocationPosition center;
+ gulong distance = 0;
- center.latitude = boundary->circle.center->latitude;
- center.longitude = boundary->circle.center->longitude;
+ center.latitude = boundary->circle.center->latitude;
+ center.longitude = boundary->circle.center->longitude;
- location_get_distance(¢er, position, &distance);
- if (distance < boundary->circle.radius){
- LOCATION_LOGD("\tInside Circle boundary");
- is_inside = TRUE;
+ location_get_distance(¢er, position, &distance);
+ if (distance < boundary->circle.radius) {
+ LOCATION_LOGD("\tInside Circle boundary");
+ is_inside = TRUE;
+ }
+ break;
}
- break;
- }
case LOCATION_BOUNDARY_POLYGON: {
- double interval_x = 0.0, interval_y = 0.0;
- double x0, y0;
- gboolean edge_area;
- int crossing_num = 0;
- GList *position_list = boundary->polygon.position_list;
- GList *pos1_list = NULL;
- GList *pos2_list = NULL;
- LocationPosition* pos1 = NULL;
- LocationPosition* pos2 = NULL;
-
- pos1_list = g_list_first(position_list);
- pos2_list = g_list_last(position_list);
- while(pos1_list) {
- edge_area = FALSE;
- pos1 = pos1_list->data;
- pos2 = pos2_list->data;
- interval_y = pos1->longitude - pos2->longitude;
- interval_x = pos1->latitude - pos2->latitude;
- /**
- * Case 1. -180 < longitude2 - longitude1 < 180 : normal case
- * Case 2. longitude2 - longitude1 < -180 : interval_y = longitude2 - longitude1 + 360
- * Case 3. longitude2 - longitude1 > 180 : intreval_y = longitude2 - longitude1 - 360
- */
- if (interval_y > 180) {
- interval_y = interval_y - 360;
- edge_area = TRUE;
- }
- else if (interval_y < -180) {
- interval_y = interval_y + 360;
- edge_area = TRUE;
- }
+ double interval_x = 0.0, interval_y = 0.0;
+ double x0 = 0.0, y0 = 0.0;
+ gboolean edge_area;
+ int crossing_num = 0;
+ GList *position_list = boundary->polygon.position_list;
+ GList *pos1_list = NULL;
+ GList *pos2_list = NULL;
+ LocationPosition *pos1 = NULL;
+ LocationPosition *pos2 = NULL;
+
+ pos1_list = g_list_first(position_list);
+ pos2_list = g_list_last(position_list);
+ while (pos1_list) {
+ edge_area = FALSE;
+ pos1 = pos1_list->data;
+ pos2 = pos2_list->data;
+ interval_y = pos1->longitude - pos2->longitude;
+ interval_x = pos1->latitude - pos2->latitude;
+ /**
+ * Case 1. -180 < longitude2 - longitude1 < 180 : normal case
+ * Case 2. longitude2 - longitude1 < -180 : interval_y = longitude2 - longitude1 + 360
+ * Case 3. longitude2 - longitude1 > 180 : intreval_y = longitude2 - longitude1 - 360
+ */
+ if (interval_y > 180) {
+ interval_y = interval_y - 360;
+ edge_area = TRUE;
+ } else if (interval_y < -180) {
+ interval_y = interval_y + 360;
+ edge_area = TRUE;
+ }
- if (edge_area && (pos1->longitude > position->longitude) == (pos2->longitude > position->longitude)){
- if (pos2->longitude * position->longitude > 0) {
+ if (edge_area && (pos1->longitude > position->longitude) == (pos2->longitude > position->longitude)) {
+ if (pos2->longitude * position->longitude > 0) {
+ x0 = pos2->latitude;
+ y0 = pos2->longitude;
+ } else {
+ x0 = pos1->latitude;
+ y0 = pos1->longitude;
+ }
+
+ if (position->latitude < ((interval_x / interval_y) * (position->longitude - y0) + x0)) {
+
+ LOCATION_LOGD("Reverse");
+ crossing_num++;
+ }
+ } else if (!edge_area && (pos1->longitude > position->longitude) != (pos2->longitude > position->longitude)) {
x0 = pos2->latitude;
y0 = pos2->longitude;
- }
- else {
- x0 = pos1->latitude;
- y0 = pos1->longitude;
- }
-
- if (position->latitude < ((interval_x/interval_y)*(position->longitude - y0) + x0)) {
-
- LOCATION_LOGD("Reverse");
- crossing_num++;
- }
+ if (position->latitude < ((interval_x / interval_y) * (position->longitude - y0) + x0)) {
+ LOCATION_LOGD("Common");
+ crossing_num++;
+ }
+ } else LOCATION_LOGD("It is not crossed.");
+
+ pos2_list = pos1_list;
+ pos1_list = g_list_next(pos1_list);
}
- else if (!edge_area && (pos1->longitude > position->longitude) != (pos2->longitude > position->longitude)) {
- x0 = pos2->latitude;
- y0 = pos2->longitude;
- if (position->latitude < ((interval_x/interval_y)*(position->longitude - y0) + x0)) {
- LOCATION_LOGD("Common");
- crossing_num++;
- }
- }
- else LOCATION_LOGD("It is not crossed.");
+ LOCATION_LOGW("num[%d]", crossing_num);
+ is_inside = crossing_num & 1; /* Odd : inside, Even : outside */
- pos2_list = pos1_list;
- pos1_list = g_list_next(pos1_list);
+ break;
}
- LOCATION_LOGW("num[%d]", crossing_num);
- is_inside = crossing_num & 1; // Odd : inside, Even : outside
-
- break;
- }
default: {
- LOCATION_LOGW("\tboundary type is undefined.[%d]", boundary->type);
- break;
- }
+ LOCATION_LOGW("\tboundary type is undefined.[%d]", boundary->type);
+ break;
+ }
}
return is_inside;
EXPORT_API int
location_boundary_add(const LocationObject *obj, const LocationBoundary *boundary)
{
- g_return_val_if_fail (obj, LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (boundary, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(obj, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(boundary, LOCATION_ERROR_PARAMETER);
GList *boundary_priv_list = NULL;
LocationBoundaryPrivate *priv = g_slice_new0(LocationBoundaryPrivate);
- g_return_val_if_fail (priv, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(priv, LOCATION_ERROR_PARAMETER);
priv->boundary = location_boundary_copy(boundary);
priv->zone_status = ZONE_STATUS_NONE;
EXPORT_API int
location_boundary_remove(const LocationObject *obj, const LocationBoundary *boundary)
{
- g_return_val_if_fail (obj, LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (boundary, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(obj, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(boundary, LOCATION_ERROR_PARAMETER);
g_object_set(G_OBJECT(obj), "removal-boundary", boundary, NULL);
EXPORT_API int
location_boundary_foreach(const LocationObject *obj, LocationBoundaryFunc func, gpointer user_data)
{
- g_return_val_if_fail (obj, LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (func, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(obj, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(func, LOCATION_ERROR_PARAMETER);
int index = 0;
- GList * boundary_priv_list = NULL;
- GList * boundary_list = NULL;
+ GList *boundary_priv_list = NULL;
+ GList *boundary_list = NULL;
LocationBoundaryPrivate *priv;
g_object_get(G_OBJECT(obj), "boundary", &boundary_priv_list, NULL);
return LOCATION_ERROR_UNKNOWN;
}
- while((priv = (LocationBoundaryPrivate *)g_list_nth_data(boundary_priv_list, index))!= NULL) {
+ while ((priv = (LocationBoundaryPrivate *)g_list_nth_data(boundary_priv_list, index)) != NULL) {
boundary_list = g_list_append(boundary_list, (gpointer) priv->boundary);
index++;
}
g_list_foreach(boundary_list, (GFunc)func, user_data);
-
g_list_free(boundary_list);
return LOCATION_ERROR_NONE;
}
EXPORT_API LocationBoundary *
-location_boundary_get_bounding_box (LocationBoundary *boundary)
+location_boundary_get_bounding_box(LocationBoundary *boundary)
{
- g_return_val_if_fail (boundary, NULL);
+ g_return_val_if_fail(boundary, NULL);
LocationBoundary *bbox = NULL;
return bbox;
}
EXPORT_API LocationPosition *
-location_boundary_get_center_position (LocationBoundary *boundary)
+location_boundary_get_center_position(LocationBoundary *boundary)
{
- g_return_val_if_fail (boundary, NULL);
+ g_return_val_if_fail(boundary, NULL);
LocationPosition *center = NULL;
- switch(boundary->type) {
+ switch (boundary->type) {
case LOCATION_BOUNDARY_RECT: {
- gdouble latitude, longitude, altitude;
- latitude = (boundary->rect.left_top->latitude + boundary->rect.right_bottom->latitude) / 2.0;
- longitude = (boundary->rect.left_top->longitude + boundary->rect.right_bottom->longitude) / 2.0;
- altitude = (boundary->rect.left_top->altitude + boundary->rect.right_bottom->altitude) / 2.0;
+ gdouble latitude, longitude, altitude;
+ latitude = (boundary->rect.left_top->latitude + boundary->rect.right_bottom->latitude) / 2.0;
+ longitude = (boundary->rect.left_top->longitude + boundary->rect.right_bottom->longitude) / 2.0;
+ altitude = (boundary->rect.left_top->altitude + boundary->rect.right_bottom->altitude) / 2.0;
- center = location_position_new(boundary->rect.left_top->timestamp, latitude, longitude, altitude, boundary->rect.left_top->status);
- break;
- }
+ center = location_position_new(boundary->rect.left_top->timestamp, latitude, longitude, altitude, boundary->rect.left_top->status);
+ break;
+ }
case LOCATION_BOUNDARY_CIRCLE: {
- center = location_position_copy(boundary->circle.center);
- break;
- }
+ center = location_position_copy(boundary->circle.center);
+ break;
+ }
case LOCATION_BOUNDARY_POLYGON: {
- gdouble center_latitude = 0.0;
- gdouble center_longitude = 0.0;
- gdouble area = 0.0;
-
- gdouble x1, y1;
- gdouble x2, y2;
- GList *position_list = boundary->polygon.position_list;
- GList *pos1_list = g_list_first(position_list);
- GList *pos2_list = g_list_next(pos1_list);
- LocationPosition* pos1 = NULL;
- LocationPosition* pos2 = NULL;
-
- while(pos2_list) {
+ gdouble center_latitude = 0.0;
+ gdouble center_longitude = 0.0;
+ gdouble area = 0.0;
+
+ gdouble x1, y1;
+ gdouble x2, y2;
+ GList *position_list = boundary->polygon.position_list;
+ GList *pos1_list = g_list_first(position_list);
+ GList *pos2_list = g_list_next(pos1_list);
+ LocationPosition *pos1 = NULL;
+ LocationPosition *pos2 = NULL;
+
+ while (pos2_list) {
+ pos1 = pos1_list->data;
+ pos2 = pos2_list->data;
+
+ x1 = pos1->latitude + 90.0;
+ y1 = pos1->longitude + 180.0;
+ x2 = pos2->latitude + 90.0;
+ y2 = pos2->longitude + 180.0;
+
+ center_latitude += (x1 + x2) * (x1 * y2 - x2 * y1);
+ center_longitude += (y1 + y2) * (x1 * y2 - x2 * y1);
+ area += x1 * y2 - x2 * y1;
+
+ pos1_list = pos2_list;
+ pos2_list = g_list_next(pos2_list);
+ }
+
+ pos2_list = g_list_first(position_list);
pos1 = pos1_list->data;
pos2 = pos2_list->data;
x2 = pos2->latitude + 90.0;
y2 = pos2->longitude + 180.0;
- center_latitude += (x1 + x2) * (x1*y2 - x2*y1);
- center_longitude += (y1 + y2) * (x1*y2 - x2*y1);
- area += x1*y2 - x2*y1;
-
- pos1_list = pos2_list;
- pos2_list = g_list_next(pos2_list);
- }
+ center_latitude += (x1 + x2) * (x1 * y2 - x2 * y1);
+ center_longitude += (y1 + y2) * (x1 * y2 - x2 * y1);
+ area += x1 * y2 - x2 * y1;
- pos2_list = g_list_first(position_list);
- pos1 = pos1_list->data;
- pos2 = pos2_list->data;
-
- x1 = pos1->latitude + 90.0;
- y1 = pos1->longitude + 180.0;
- x2 = pos2->latitude + 90.0;
- y2 = pos2->longitude + 180.0;
-
- center_latitude += (x1 + x2) * (x1*y2 - x2*y1);
- center_longitude += (y1 + y2) * (x1*y2 - x2*y1);
- area += x1*y2 - x2*y1;
-
- area = fabs(area / 2.0);
- if (area != 0) {
- center_latitude = (center_latitude - 90.0) / (6.0 * area);
- center_longitude = (center_longitude - 180.0) / (6.0 * area);
- center = location_position_new(0, center_latitude, center_longitude, 0, LOCATION_STATUS_2D_FIX);
+ area = fabs(area / 2.0);
+ if (area != 0) {
+ center_latitude = (center_latitude - 90.0) / (6.0 * area);
+ center_longitude = (center_longitude - 180.0) / (6.0 * area);
+ center = location_position_new(0, center_latitude, center_longitude, 0, LOCATION_STATUS_2D_FIX);
+ }
+ break;
}
- break;
- }
default:
break;
}
G_BEGIN_DECLS
-GType location_boundary_get_type (void);
+GType location_boundary_get_type(void);
#define LOCATION_TYPE_BOUNDARY (location_boundary_get_type ())
/**
* @brief
* The type of the @location_boundary_foreach function of #LocationObject
*/
-typedef void (*LocationBoundaryFunc) (LocationBoundary *boundary, gpointer user_data);
+typedef void (*LocationBoundaryFunc)(LocationBoundary *boundary, gpointer user_data);
/**
* @brief This represents used geographical type, and supports rectangle or circle area.
*/
typedef enum {
- LOCATION_BOUNDARY_NONE = 0, ///< Undefined geographical area type.
- LOCATION_BOUNDARY_RECT, ///< Rectangular geographical area type.
- LOCATION_BOUNDARY_CIRCLE, ///< Circle geographical area type.
- LOCATION_BOUNDARY_POLYGON ///< Polygon geographical area type.
+ LOCATION_BOUNDARY_NONE = 0, /*/< Undefined geographical area type. */
+ LOCATION_BOUNDARY_RECT, /*/< Rectangular geographical area type. */
+ LOCATION_BOUNDARY_CIRCLE, /*/< Circle geographical area type. */
+ LOCATION_BOUNDARY_POLYGON /*/< Polygon geographical area type. */
} LocationBoundaryType;
/**
* @brief This represents a rectangular geographical area.
*/
typedef struct {
- LocationPosition* left_top; ///< The left top position of rectangle.
- LocationPosition* right_bottom; ///< The right bottom position of rectangle.
+ LocationPosition *left_top; /*/< The left top position of rectangle. */
+ LocationPosition *right_bottom; /*/< The right bottom position of rectangle. */
} LocationRect;
/**
* @brief This represents a circle geographical area with center geographic position and radius.
*/
typedef struct {
- LocationPosition* center; ///< The center position of a circle.
- gdouble radius; ///< The radius of a circle.
+ LocationPosition *center; /*/< The center position of a circle. */
+ gdouble radius; /*/< The radius of a circle. */
} LocationCircle;
/**
* @brief This represents a polygon geographical area.
*/
typedef struct {
- GList *position_list; ///< The collection of positions
+ GList *position_list; /*/< The collection of positions */
} LocationPolygon;
/**
* @brief This represents boundary information such as rectangular or circle area.
*/
-struct _LocationBoundary{
- LocationBoundaryType type; ///< The boundary type of this information.
+struct _LocationBoundary {
+ LocationBoundaryType type; /*/< The boundary type of this information. */
union {
- LocationRect rect; ///< The geographical information of a rectangle.
- LocationCircle circle; ///< The geographical information of a circle.
- LocationPolygon polygon; ///< The geographical information of a polygon.
+ LocationRect rect; /*/< The geographical information of a rectangle. */
+ LocationCircle circle; /*/< The geographical information of a circle. */
+ LocationPolygon polygon; /*/< The geographical information of a polygon. */
};
};
* @return a new #LocationBoundary
* @retval NULL if error occured
*/
-LocationBoundary *location_boundary_new_for_rect (LocationPosition *left_top, LocationPosition *right_bottom);
+LocationBoundary *location_boundary_new_for_rect(LocationPosition *left_top, LocationPosition *right_bottom);
/**
* @brief Create a circle type of new #LocationBoundary with given information.
* @return a new #LocationBoundary
* @retval NULL if error occured
*/
-LocationBoundary *location_boundary_new_for_circle (LocationPosition *center, gdouble radius);
+LocationBoundary *location_boundary_new_for_circle(LocationPosition *center, gdouble radius);
/**
* @brief Create a polygon type of new #LocationBoundary with given information.
* @param [in] boundary - a #LocationBoundary.
* @return None.
*/
-void location_boundary_free (LocationBoundary *boundary);
+void location_boundary_free(LocationBoundary *boundary);
/**
* @brief Makes a copy of #LocationBoundary
* @return a new #LocationBoundary
* @retval NULL if error occured
*/
-LocationBoundary *location_boundary_copy (const LocationBoundary* boundary);
+LocationBoundary *location_boundary_copy(const LocationBoundary *boundary);
/**
* @brief
* @endcode
*/
-gboolean location_boundary_if_inside (LocationBoundary *boundary, LocationPosition *position);
+gboolean location_boundary_if_inside(LocationBoundary *boundary, LocationPosition *position);
/**
* @brief Get bounding box of #LocationBoundary
*/
-LocationBoundary *location_boundary_get_bounding_box (LocationBoundary *boundary);
+LocationBoundary *location_boundary_get_bounding_box(LocationBoundary *boundary);
/**
* @brief Get the center position of #LocationBoundary
*/
-LocationPosition * location_boundary_get_center_position (LocationBoundary *boundary);
+LocationPosition *location_boundary_get_center_position(LocationBoundary *boundary);
/**
* @} @}
#include "location-common-util.h"
#include "location-setting.h"
#include "location-log.h"
+#include <app_manager.h>
-int location_application_get_authority (void)
+
+int location_application_get_authority(void)
{
return LOCATION_APP_ON;
}
-int location_application_set_authority (int auth)
+int location_application_set_authority(int auth)
{
return LOCATION_ERROR_NONE;
}
-static gint compare_position (gconstpointer a, gconstpointer b)
+static gint compare_position(gconstpointer a, gconstpointer b)
{
g_return_val_if_fail(a, 1);
g_return_val_if_fail(b, -1);
- if(location_position_equal((LocationPosition*) a, (LocationPosition *)b) == TRUE) {
+ if (location_position_equal((LocationPosition *) a, (LocationPosition *)b) == TRUE) {
return 0;
}
}
static int
-boundary_compare (gconstpointer comp1, gconstpointer comp2)
+boundary_compare(gconstpointer comp1, gconstpointer comp2)
{
g_return_val_if_fail(comp1, 1);
g_return_val_if_fail(comp2, -1);
if (priv1->boundary->type == priv2->boundary->type) {
switch (priv1->boundary->type) {
case LOCATION_BOUNDARY_CIRCLE: {
- if (location_position_equal(priv1->boundary->circle.center, priv2->boundary->circle.center)
- && priv1->boundary->circle.radius == priv2->boundary->circle.radius) {
- ret = 0;
+ if (location_position_equal(priv1->boundary->circle.center, priv2->boundary->circle.center)
+ && priv1->boundary->circle.radius == priv2->boundary->circle.radius) {
+ ret = 0;
+ }
+ break;
}
- break;
- }
case LOCATION_BOUNDARY_RECT: {
- if (location_position_equal(priv1->boundary->rect.left_top, priv2->boundary->rect.left_top)
- && location_position_equal(priv1->boundary->rect.right_bottom, priv2->boundary->rect.right_bottom)) {
- ret = 0;
+ if (location_position_equal(priv1->boundary->rect.left_top, priv2->boundary->rect.left_top)
+ && location_position_equal(priv1->boundary->rect.right_bottom, priv2->boundary->rect.right_bottom)) {
+ ret = 0;
+ }
+ break;
}
- break;
- }
case LOCATION_BOUNDARY_POLYGON: {
- GList *boundary1_next = NULL;
- GList *boundary2_start = NULL, *boundary2_prev = NULL, *boundary2_next = NULL;
- if (g_list_length(priv1->boundary->polygon.position_list) != g_list_length(priv2->boundary->polygon.position_list)) {
- return -1;
- }
+ GList *boundary1_next = NULL;
+ GList *boundary2_start = NULL, *boundary2_prev = NULL, *boundary2_next = NULL;
+ if (g_list_length(priv1->boundary->polygon.position_list) != g_list_length(priv2->boundary->polygon.position_list)) {
+ return -1;
+ }
- // Find a matching index of Boundary2 with Boundary1's 1st postion.
- boundary2_start = g_list_find_custom(priv2->boundary->polygon.position_list, g_list_nth_data(priv1->boundary->polygon.position_list, 0), (GCompareFunc) compare_position);
- if (boundary2_start == NULL) return -1;
-
- boundary2_prev = g_list_previous(boundary2_start);
- boundary2_next = g_list_next(boundary2_start);
- if (boundary2_prev == NULL) boundary2_prev = g_list_last(priv2->boundary->polygon.position_list);
- if (boundary2_next == NULL) boundary2_next = g_list_first(priv2->boundary->polygon.position_list);
-
- boundary1_next = g_list_next(priv1->boundary->polygon.position_list);
- if (boundary1_next && location_position_equal((LocationPosition*)boundary1_next->data, (LocationPosition*)boundary2_prev->data) == TRUE){
- boundary1_next = g_list_next(boundary1_next);
- while (boundary1_next) {
- boundary2_prev = g_list_previous(boundary2_prev);
- if (boundary2_prev == NULL) boundary2_prev = g_list_last(priv2->boundary->polygon.position_list);
- if (location_position_equal((LocationPosition*)boundary1_next->data, (LocationPosition*) boundary2_prev->data) == FALSE){
- return -1;
- }
+ /* Find a matching index of Boundary2 with Boundary1's 1st postion. */
+ boundary2_start = g_list_find_custom(priv2->boundary->polygon.position_list, g_list_nth_data(priv1->boundary->polygon.position_list, 0), (GCompareFunc) compare_position);
+ if (boundary2_start == NULL) return -1;
+
+ boundary2_prev = g_list_previous(boundary2_start);
+ boundary2_next = g_list_next(boundary2_start);
+ if (boundary2_prev == NULL) boundary2_prev = g_list_last(priv2->boundary->polygon.position_list);
+ if (boundary2_next == NULL) boundary2_next = g_list_first(priv2->boundary->polygon.position_list);
+
+ boundary1_next = g_list_next(priv1->boundary->polygon.position_list);
+ if (boundary1_next && location_position_equal((LocationPosition *)boundary1_next->data, (LocationPosition *)boundary2_prev->data) == TRUE) {
boundary1_next = g_list_next(boundary1_next);
- }
- ret = 0;
- }
- else if (boundary1_next && location_position_equal((LocationPosition*)boundary1_next->data, (LocationPosition*)boundary2_next->data) == TRUE) {
- boundary1_next = g_list_next(boundary1_next);
- while(boundary1_next) {
- boundary2_next = g_list_next(boundary2_next);
- if (boundary2_next == NULL) boundary2_next = g_list_first(priv2->boundary->polygon.position_list);
- if (location_position_equal((LocationPosition*)boundary1_next->data, (LocationPosition*) boundary2_next->data) == FALSE){
- return -1;
+ while (boundary1_next) {
+ boundary2_prev = g_list_previous(boundary2_prev);
+ if (boundary2_prev == NULL) boundary2_prev = g_list_last(priv2->boundary->polygon.position_list);
+ if (location_position_equal((LocationPosition *)boundary1_next->data, (LocationPosition *) boundary2_prev->data) == FALSE) {
+ return -1;
+ }
+ boundary1_next = g_list_next(boundary1_next);
}
+ ret = 0;
+ } else if (boundary1_next && location_position_equal((LocationPosition *)boundary1_next->data, (LocationPosition *)boundary2_next->data) == TRUE) {
boundary1_next = g_list_next(boundary1_next);
+ while (boundary1_next) {
+ boundary2_next = g_list_next(boundary2_next);
+ if (boundary2_next == NULL) boundary2_next = g_list_first(priv2->boundary->polygon.position_list);
+ if (location_position_equal((LocationPosition *)boundary1_next->data, (LocationPosition *) boundary2_next->data) == FALSE) {
+ return -1;
+ }
+ boundary1_next = g_list_next(boundary1_next);
+ }
+ ret = 0;
+ } else {
+ return -1;
}
- ret = 0;
+ break;
}
- else {
- return -1;
+ default: {
+ ret = -1;
+ break;
}
- break;
- }
- default:{
- ret = -1;
- break;
- }
}
}
LocationBoundaryPrivate *new_priv = NULL;
- while((new_priv = (LocationBoundaryPrivate *) g_list_nth_data(new_boundary_priv_list, index)) != NULL) {
+ while ((new_priv = (LocationBoundaryPrivate *) g_list_nth_data(new_boundary_priv_list, index)) != NULL) {
*prev_boundary_priv_list = g_list_first(*prev_boundary_priv_list);
check_list = g_list_find_custom(*prev_boundary_priv_list, new_priv, (GCompareFunc)boundary_compare);
if (check_list == NULL) {
*prev_boundary_priv_list = g_list_append(*prev_boundary_priv_list, copy_priv);
LOCATION_LOGD("copy_priv: %p, copy_priv->boundary: %p, copy_priv->boundary->type: %d",
- copy_priv, copy_priv->boundary, copy_priv->boundary->type);
+ copy_priv, copy_priv->boundary, copy_priv->boundary->type);
}
location_boundary_free(new_priv->boundary);
index++;
return LOCATION_ERROR_NONE;
}
-int set_prop_removal_boundary(GList **prev_boundary_list, LocationBoundary* boundary)
+int set_prop_removal_boundary(GList **prev_boundary_list, LocationBoundary *boundary)
{
LOCATION_LOGD("ENTER >>>");
g_return_val_if_fail(*prev_boundary_list, LOCATION_ERROR_PARAMETER);
remove_priv->boundary = location_boundary_copy(boundary);
g_return_val_if_fail(remove_priv->boundary, LOCATION_ERROR_PARAMETER);
- check_list = g_list_find_custom (*prev_boundary_list, remove_priv, (GCompareFunc) boundary_compare);
+ check_list = g_list_find_custom(*prev_boundary_list, remove_priv, (GCompareFunc) boundary_compare);
if (check_list) {
LOCATION_LOGD("Found");
*prev_boundary_list = g_list_delete_link(*prev_boundary_list, check_list);
}
- if (g_list_length(*prev_boundary_list) == 0 ) {
+ if (g_list_length(*prev_boundary_list) == 0) {
LOCATION_LOGD("Boundary List is empty");
g_list_free(*prev_boundary_list);
*prev_boundary_list = NULL;
return LOCATION_ERROR_NONE;
}
-void free_boundary_list (gpointer data)
+void free_boundary_list(gpointer data)
{
- LocationBoundaryPrivate *priv= (LocationBoundaryPrivate *)data;
+ LocationBoundaryPrivate *priv = (LocationBoundaryPrivate *)data;
location_boundary_free(priv->boundary);
g_slice_free(LocationBoundaryPrivate, priv);
}
+
+int location_get_app_type(char *target_app_id)
+{
+ int ret = 0;
+ pid_t pid = 0;
+ char *app_id = NULL;
+ app_info_h app_info;
+ char *type = NULL;
+
+ if (target_app_id == NULL) {
+ pid = getpid();
+ ret = app_manager_get_app_id(pid, &app_id);
+ if (ret != APP_MANAGER_ERROR_NONE) {
+ LOCATION_LOGE("Fail to get app_id. Err[%d]", ret);
+ return LOCATION_ERROR_NONE;
+ }
+ } else {
+ app_id = g_strdup(target_app_id);
+ }
+
+ ret = app_info_create(app_id, &app_info);
+ if (ret != APP_MANAGER_ERROR_NONE) {
+ LOCATION_LOGE("Fail to get app_info. Err[%d]", ret);
+ g_free(app_id);
+ return LOCATION_ERROR_NONE;
+ }
+
+ ret = app_info_get_type(app_info, &type);
+ if (ret != APP_MANAGER_ERROR_NONE) {
+ LOCATION_LOGE("Fail to get type. Err[%d]", ret);
+ g_free(app_id);
+ app_info_destroy(app_info);
+ return LOCATION_ERROR_NONE;
+ }
+
+ if (strcmp(type, "c++app") == 0) {
+ ret = CPPAPP;
+ } else if (strcmp(type, "webapp") == 0) {
+ ret = WEBAPP;
+ } else {
+ ret = CAPP;
+ }
+
+ g_free(type);
+ g_free(app_id);
+ app_info_destroy(app_info);
+
+ return ret;
+}
#include <location-ielement.h>
#include <location-boundary.h>
-#define CAPP 1
-#define WEBAPP 2
-#define CPPAPP 3
-
/**
* @file location-common-util.h
* @brief This file contains the common utils for LocationObject.
G_BEGIN_DECLS
+#define CAPP 1
+#define WEBAPP 2
+#define CPPAPP 3
+
typedef enum {
- LOCATION_APP_OFF = 0,
- LOCATION_APP_ON,
- LOCATION_APP_NOT_FOUND
+ LOCATION_APP_OFF = 0,
+ LOCATION_APP_ON,
+ LOCATION_APP_NOT_FOUND
} LOCATION_APP_STATE;
typedef enum {
- ZONE_STATUS_NONE = 0,
- ZONE_STATUS_IN,
- ZONE_STATUS_OUT,
+ ZONE_STATUS_NONE = 0,
+ ZONE_STATUS_IN,
+ ZONE_STATUS_OUT,
} ZoneStatus;
typedef struct _LocationBoundaryPrivate {
} LocationBoundaryPrivate;
int location_application_get_authority(void);
-int location_application_set_authority (int auth);
+int location_application_set_authority(int auth);
int set_prop_boundary(GList **prev_boundary_list, GList *new_boundary_list);
int set_prop_removal_boundary(GList **prev_boundary_list, LocationBoundary *boundary);
-void free_boundary_list (gpointer data);
+void free_boundary_list(gpointer data);
+
+int location_get_app_type(char *app_id);
+
G_END_DECLS
guint app_type;
gboolean set_noti;
gboolean enabled;
+ gint signal_type;
guint pos_updated_timestamp;
guint pos_interval;
guint vel_updated_timestamp;
guint vel_interval;
guint sat_updated_timestamp;
guint sat_interval;
+ guint loc_updated_timestamp;
+ guint loc_interval;
guint loc_timeout;
guint batch_interval;
guint batch_period;
+ guint dist_updated_timestamp;
+ guint min_interval;
+ gdouble min_distance;
LocationPosition *pos;
LocationBatch *batch;
LocationVelocity *vel;
LocationAccuracy *acc;
LocationSatellite *sat;
GList *boundary_list;
+#ifdef TIZEN_PROFILE_MOBILE
guint pos_searching_timer;
guint vel_searching_timer;
+#endif
} LocationGpsPrivate;
enum {
- PROP_0,
- PROP_METHOD_TYPE,
- PROP_IS_STARTED,
- PROP_LAST_POSITION,
- PROP_POS_INTERVAL,
- PROP_VEL_INTERVAL,
- PROP_SAT_INTERVAL,
- PROP_BATCH_INTERVAL,
- PROP_BATCH_PERIOD,
- PROP_BOUNDARY,
- PROP_REMOVAL_BOUNDARY,
- PROP_NMEA,
- PROP_SATELLITE,
- PROP_MAX
+ PROP_0,
+ PROP_METHOD_TYPE,
+ PROP_IS_STARTED,
+ PROP_LAST_POSITION,
+ PROP_POS_INTERVAL,
+ PROP_VEL_INTERVAL,
+ PROP_SAT_INTERVAL,
+ PROP_LOC_INTERVAL,
+ PROP_BATCH_INTERVAL,
+ PROP_BATCH_PERIOD,
+ PROP_BOUNDARY,
+ PROP_REMOVAL_BOUNDARY,
+ PROP_NMEA,
+ PROP_SATELLITE,
+ PROP_MIN_INTERVAL,
+ PROP_MIN_DISTANCE,
+ PROP_MAX
};
static guint32 signals[LAST_SIGNAL] = {0, };
#define GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), LOCATION_TYPE_GPS, LocationGpsPrivate))
-static void location_ielement_interface_init (LocationIElementInterface *iface);
-
-G_DEFINE_TYPE_WITH_CODE (LocationGps, location_gps, G_TYPE_OBJECT,
- G_IMPLEMENT_INTERFACE (LOCATION_TYPE_IELEMENT,
- location_ielement_interface_init));
+static void location_ielement_interface_init(LocationIElementInterface *iface);
+G_DEFINE_TYPE_WITH_CODE(LocationGps, location_gps, G_TYPE_OBJECT,
+ G_IMPLEMENT_INTERFACE(LOCATION_TYPE_IELEMENT,
+ location_ielement_interface_init));
+#ifdef TIZEN_PROFILE_MOBILE
static gboolean
-_position_timeout_cb (gpointer data)
+_location_timeout_cb(gpointer data)
{
GObject *object = (GObject *)data;
LocationGpsPrivate *priv = GET_PRIVATE(object);
g_return_val_if_fail(priv, FALSE);
LocationPosition *pos = NULL;
+ LocationVelocity *vel = NULL;
LocationAccuracy *acc = NULL;
if (priv->pos) {
pos = location_position_copy(priv->pos);
} else {
- pos = location_position_new (0, 0.0, 0.0, 0.0, LOCATION_STATUS_NO_FIX);
+ pos = location_position_new(0, 0.0, 0.0, 0.0, LOCATION_STATUS_NO_FIX);
+ }
+
+ if (priv->vel) {
+ vel = location_velocity_copy(priv->vel);
+ } else {
+ vel = location_velocity_new(0, 0.0, 0.0, 0.0);
}
if (priv->acc) {
- acc = location_accuracy_copy (priv->acc);
+ acc = location_accuracy_copy(priv->acc);
} else {
- acc = location_accuracy_new (LOCATION_ACCURACY_LEVEL_NONE, 0.0, 0.0);
+ acc = location_accuracy_new(LOCATION_ACCURACY_LEVEL_NONE, 0.0, 0.0);
}
- g_signal_emit(object, signals[SERVICE_UPDATED], 0, POSITION_UPDATED, pos, acc);
+ g_signal_emit(object, signals[SERVICE_UPDATED], 0, priv->signal_type, pos, vel, acc);
+ priv->signal_type = 0;
- location_position_free (pos);
- location_accuracy_free (acc);
+ location_position_free(pos);
+ location_velocity_free(vel);
+ location_accuracy_free(acc);
return TRUE;
}
static gboolean
-_velocity_timeout_cb (gpointer data)
+_position_timeout_cb(gpointer data)
{
GObject *object = (GObject *)data;
LocationGpsPrivate *priv = GET_PRIVATE(object);
g_return_val_if_fail(priv, FALSE);
- LocationVelocity *vel = NULL;
- LocationAccuracy *acc = NULL;
-
- if (priv->vel) {
- vel = location_velocity_copy(priv->vel);
+ if (priv->pos_interval == priv->vel_interval) {
+ priv->signal_type |= POSITION_UPDATED;
+ priv->signal_type |= VELOCITY_UPDATED;
} else {
- vel = location_velocity_new (0, 0.0, 0.0, 0.0);
+ priv->signal_type |= POSITION_UPDATED;
}
+ _location_timeout_cb(object);
- if (priv->acc) {
- acc = location_accuracy_copy (priv->acc);
- } else {
- acc = location_accuracy_new (LOCATION_ACCURACY_LEVEL_NONE, 0.0, 0.0);
- }
+ return TRUE;
+}
- g_signal_emit(object, signals[SERVICE_UPDATED], 0, VELOCITY_UPDATED, vel, acc);
+static gboolean
+_velocity_timeout_cb(gpointer data)
+{
+ GObject *object = (GObject *)data;
+ LocationGpsPrivate *priv = GET_PRIVATE(object);
+ g_return_val_if_fail(priv, FALSE);
- location_velocity_free (vel);
- location_accuracy_free (acc);
+ if (priv->pos_interval != priv->vel_interval) {
+ priv->signal_type |= VELOCITY_UPDATED;
+ _location_timeout_cb(object);
+ }
return TRUE;
}
+#endif
+
static void
__reset_pos_data_from_priv(LocationGpsPrivate *priv)
{
priv->pos_updated_timestamp = 0;
priv->vel_updated_timestamp = 0;
priv->sat_updated_timestamp = 0;
+ priv->loc_updated_timestamp = 0;
+
+ priv->signal_type = 0;
}
static gboolean
-__get_started (gpointer self)
+__get_started(gpointer self)
{
g_return_val_if_fail(self, FALSE);
- LocationGpsPrivate* priv = GET_PRIVATE(self);
+ LocationGpsPrivate *priv = GET_PRIVATE(self);
g_return_val_if_fail(priv, FALSE);
return priv->is_started;
}
static int
-__set_started (gpointer self, gboolean started)
+__set_started(gpointer self, gboolean started)
{
g_return_val_if_fail(self, -1);
- LocationGpsPrivate* priv = GET_PRIVATE(self);
+ LocationGpsPrivate *priv = GET_PRIVATE(self);
g_return_val_if_fail(priv, -1);
if (priv->is_started != started) {
}
static void
-gps_status_cb (gboolean enabled,
- LocationStatus status,
- gpointer self)
+gps_status_cb(gboolean enabled,
+ LocationStatus status,
+ gpointer self)
{
LOCATION_LOGD("gps_status_cb");
g_return_if_fail(self);
- LocationGpsPrivate* priv = GET_PRIVATE(self);
+ LocationGpsPrivate *priv = GET_PRIVATE(self);
g_return_if_fail(priv);
- if (!priv->enabled && enabled) { // Update satellite at searching status.
- if (priv->pos_searching_timer) g_source_remove (priv->pos_searching_timer);
- if (priv->vel_searching_timer) g_source_remove (priv->vel_searching_timer);
+ if (!priv->enabled && enabled) { /* Update satellite at searching status. */
+#ifdef TIZEN_PROFILE_MOBILE
+ if (priv->pos_searching_timer) g_source_remove(priv->pos_searching_timer);
+ if (priv->vel_searching_timer) g_source_remove(priv->vel_searching_timer);
priv->pos_searching_timer = 0;
priv->vel_searching_timer = 0;
- return; // Ignored: Support to get position at enabled callback
+#endif
+ return; /* Ignored: Support to get position at enabled callback */
} else if (priv->enabled == TRUE && enabled == FALSE) {
__set_started(self, FALSE);
enable_signaling(self, signals, &(priv->enabled), enabled, status);
}
static void
-gps_location_cb (gboolean enabled,
- LocationPosition *pos,
- LocationVelocity *vel,
- LocationAccuracy *acc,
- gpointer self)
+gps_location_cb(gboolean enabled,
+ LocationPosition *pos,
+ LocationVelocity *vel,
+ LocationAccuracy *acc,
+ gpointer self)
{
g_return_if_fail(self);
g_return_if_fail(pos);
g_return_if_fail(vel);
g_return_if_fail(acc);
- LocationGpsPrivate* priv = GET_PRIVATE(self);
+ LocationGpsPrivate *priv = GET_PRIVATE(self);
g_return_if_fail(priv);
+ if (priv->min_interval != LOCATION_UPDATE_INTERVAL_NONE) {
+ distance_based_position_signaling(self,
+ signals,
+ enabled,
+ pos,
+ vel,
+ acc,
+ priv->min_interval,
+ priv->min_distance,
+ &(priv->enabled),
+ &(priv->dist_updated_timestamp),
+ &(priv->pos),
+ &(priv->vel),
+ &(priv->acc));
+ }
location_signaling(self,
- signals,
- enabled, // previous status
- priv->boundary_list,
- pos,
- vel,
- acc,
- priv->pos_interval,
- priv->vel_interval,
- &(priv->enabled),
- &(priv->pos_updated_timestamp),
- &(priv->vel_updated_timestamp),
- &(priv->pos),
- &(priv->vel),
- &(priv->acc));
+ signals,
+ enabled, /* previous status */
+ priv->boundary_list,
+ pos,
+ vel,
+ acc,
+ priv->pos_interval,
+ priv->vel_interval,
+ priv->loc_interval,
+ &(priv->enabled),
+ &(priv->pos_updated_timestamp),
+ &(priv->vel_updated_timestamp),
+ &(priv->loc_updated_timestamp),
+ &(priv->pos),
+ &(priv->vel),
+ &(priv->acc));
}
static void
-gps_batch_cb (gboolean enabled,
- guint num_of_location,
- gpointer self)
+gps_batch_cb(gboolean enabled,
+ guint num_of_location,
+ gpointer self)
{
g_return_if_fail(self);
- LocationGpsPrivate* priv = GET_PRIVATE(self);
+ LocationGpsPrivate *priv = GET_PRIVATE(self);
g_return_if_fail(priv);
if (priv->batch != NULL) {
}
priv->batch = location_get_batch_file(num_of_location);
- g_signal_emit (self, signals[BATCH_UPDATED], 0, num_of_location);
+ g_signal_emit(self, signals[BATCH_UPDATED], 0, num_of_location);
}
static void
-gps_satellite_cb (gboolean enabled,
- LocationSatellite *sat,
- gpointer self)
+gps_satellite_cb(gboolean enabled,
+ LocationSatellite *sat,
+ gpointer self)
{
g_return_if_fail(self);
- LocationGpsPrivate* priv = GET_PRIVATE(self);
+ LocationGpsPrivate *priv = GET_PRIVATE(self);
g_return_if_fail(priv);
satellite_signaling(self, signals, &(priv->enabled), priv->sat_interval, TRUE, &(priv->sat_updated_timestamp), &(priv->sat), sat);
}
+#ifdef TIZEN_PROFILE_MOBILE
static void
-location_setting_search_cb (keynode_t *key, gpointer self)
+location_setting_search_cb(keynode_t *key, gpointer self)
{
LOCATION_LOGD("location_setting_search_cb");
g_return_if_fail(key);
g_return_if_fail(self);
- LocationGpsPrivate* priv = GET_PRIVATE(self);
+ LocationGpsPrivate *priv = GET_PRIVATE(self);
g_return_if_fail(priv);
- g_return_if_fail (priv->mod);
- g_return_if_fail (priv->mod->handler);
if (location_setting_get_key_val(key) == VCONFKEY_LOCATION_GPS_SEARCHING) {
- if (!priv->pos_searching_timer) priv->pos_searching_timer = g_timeout_add (priv->pos_interval * 1000, _position_timeout_cb, self);
- if (!priv->vel_searching_timer) priv->vel_searching_timer = g_timeout_add (priv->vel_interval * 1000, _velocity_timeout_cb, self);
+ if (!priv->pos_searching_timer) priv->pos_searching_timer = g_timeout_add(priv->pos_interval * 1000, _position_timeout_cb, self);
+ if (!priv->vel_searching_timer) priv->vel_searching_timer = g_timeout_add(priv->vel_interval * 1000, _velocity_timeout_cb, self);
} else {
- if (priv->pos_searching_timer) g_source_remove (priv->pos_searching_timer);
- if (priv->vel_searching_timer) g_source_remove (priv->vel_searching_timer);
+ if (priv->pos_searching_timer) g_source_remove(priv->pos_searching_timer);
+ if (priv->vel_searching_timer) g_source_remove(priv->vel_searching_timer);
priv->pos_searching_timer = 0;
priv->vel_searching_timer = 0;
}
}
+#endif
static void
-location_setting_gps_cb (keynode_t *key,
- gpointer self)
+location_setting_gps_cb(keynode_t *key,
+ gpointer self)
{
LOCATION_LOGD("location_setting_gps_cb");
g_return_if_fail(key);
g_return_if_fail(self);
- LocationGpsPrivate* priv = GET_PRIVATE(self);
- g_return_if_fail (priv);
- g_return_if_fail (priv->mod);
- g_return_if_fail (priv->mod->handler);
+ LocationGpsPrivate *priv = GET_PRIVATE(self);
+ g_return_if_fail(priv);
+ g_return_if_fail(priv->mod);
+ g_return_if_fail(priv->mod->handler);
int ret = LOCATION_ERROR_NONE;
} else if (1 == location_setting_get_key_val(key) && priv->mod->ops.start && !__get_started(self)) {
LOCATION_LOGD("location resumed by setting");
__set_started(self, TRUE);
- ret = priv->mod->ops.start (priv->mod->handler, priv->pos_interval, gps_status_cb, gps_location_cb, gps_satellite_cb, self);
+ ret = priv->mod->ops.start(priv->mod->handler, priv->pos_interval, gps_status_cb, gps_location_cb, gps_satellite_cb, self);
if (ret != LOCATION_ERROR_NONE) {
__set_started(self, FALSE);
LOCATION_LOGI("Fail to start[%d]", ret);
}
static int
-location_gps_start (LocationGps *self)
+location_gps_start(LocationGps *self)
{
- LOCATION_LOGD("location_gps_start");
- LocationGpsPrivate* priv = GET_PRIVATE(self);
- g_return_val_if_fail (priv, LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (priv->mod->ops.start, LOCATION_ERROR_NOT_AVAILABLE);
+ LOCATION_LOGD("ENTER >>>");
+ LocationGpsPrivate *priv = GET_PRIVATE(self);
+ g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(priv->mod->ops.start, LOCATION_ERROR_NOT_AVAILABLE);
if (__get_started(self) == TRUE) return LOCATION_ERROR_NONE;
if (!location_setting_get_int(VCONFKEY_LOCATION_ENABLED)) {
ret = LOCATION_ERROR_SETTING_OFF;
+ } else if (location_setting_get_int(VCONFKEY_SETAPPL_PSMODE) == SETTING_PSMODE_WEARABLE_ENHANCED) {
+ return LOCATION_ACCESS_DENIED;
} else {
__set_started(self, TRUE);
- ret = priv->mod->ops.start (priv->mod->handler, priv->pos_interval, gps_status_cb, gps_location_cb, gps_satellite_cb, self);
+ ret = priv->mod->ops.start(priv->mod->handler, priv->pos_interval, gps_status_cb, gps_location_cb, gps_satellite_cb, self);
if (ret != LOCATION_ERROR_NONE) {
LOCATION_LOGE("Fail to start gps. Error[%d]", ret);
__set_started(self, FALSE);
}
}
- if(priv->app_type != CPPAPP && priv->set_noti == FALSE) {
- location_setting_add_notify (VCONFKEY_LOCATION_ENABLED, location_setting_gps_cb, self);
- location_setting_add_notify (VCONFKEY_LOCATION_GPS_STATE, location_setting_search_cb, self);
+ if (priv->app_type != CPPAPP && priv->set_noti == FALSE) {
+ location_setting_add_notify(VCONFKEY_LOCATION_ENABLED, location_setting_gps_cb, self);
+
+#ifdef TIZEN_PROFILE_MOBILE
+ location_state_add_notify(VCONFKEY_LOCATION_GPS_STATE, location_setting_search_cb, self);
+#endif
priv->set_noti = TRUE;
}
+ LOCATION_LOGD("EXIT <<<");
return ret;
}
static int
-location_gps_stop (LocationGps *self)
+location_gps_stop(LocationGps *self)
{
LOCATION_LOGD("location_gps_stop");
- LocationGpsPrivate* priv = GET_PRIVATE(self);
- g_return_val_if_fail (priv, LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (priv->mod->ops.stop, LOCATION_ERROR_NOT_AVAILABLE);
+ LocationGpsPrivate *priv = GET_PRIVATE(self);
+ g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(priv->mod->ops.stop, LOCATION_ERROR_NOT_AVAILABLE);
int ret = LOCATION_ERROR_NONE;
if (__get_started(self) == TRUE) {
- __set_started (self, FALSE);
- ret = priv->mod->ops.stop (priv->mod->handler);
+ __set_started(self, FALSE);
+ ret = priv->mod->ops.stop(priv->mod->handler);
if (ret != LOCATION_ERROR_NONE) {
- LOCATION_LOGD("Failed to stop. Error[%d]", ret);
+ LOCATION_LOGE("Failed to stop. Error[%d]", ret);
}
} else {
return LOCATION_ERROR_NONE;
}
- if (priv->pos_searching_timer ) g_source_remove (priv->pos_searching_timer);
- if (priv->vel_searching_timer ) g_source_remove (priv->vel_searching_timer);
+#ifdef TIZEN_PROFILE_MOBILE
+ if (priv->pos_searching_timer) g_source_remove(priv->pos_searching_timer);
+ if (priv->vel_searching_timer) g_source_remove(priv->vel_searching_timer);
priv->pos_searching_timer = 0;
priv->vel_searching_timer = 0;
+#endif
- if(priv->app_type != CPPAPP && priv->set_noti == TRUE) {
- location_setting_ignore_notify (VCONFKEY_LOCATION_ENABLED, location_setting_gps_cb);
- location_setting_ignore_notify (VCONFKEY_LOCATION_GPS_STATE, location_setting_search_cb);
+ if (priv->app_type != CPPAPP && priv->set_noti == TRUE) {
+ location_setting_ignore_notify(VCONFKEY_LOCATION_ENABLED, location_setting_gps_cb);
+#ifdef TIZEN_PROFILE_MOBILE
+ location_state_ignore_notify(VCONFKEY_LOCATION_GPS_STATE, location_setting_search_cb);
+#endif
priv->set_noti = FALSE;
}
}
static int
-location_gps_start_batch (LocationGps *self)
+location_gps_start_batch(LocationGps *self)
{
LOCATION_LOGD("location_gps_start_batch");
- LocationGpsPrivate* priv = GET_PRIVATE(self);
- g_return_val_if_fail (priv, LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (priv->mod->ops.start_batch, LOCATION_ERROR_NOT_AVAILABLE);
+ LocationGpsPrivate *priv = GET_PRIVATE(self);
+ g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(priv->mod->ops.start_batch, LOCATION_ERROR_NOT_AVAILABLE);
if (__get_started(self) == TRUE) return LOCATION_ERROR_NONE;
ret = LOCATION_ERROR_SETTING_OFF;
} else {
__set_started(self, TRUE);
- ret = priv->mod->ops.start_batch (priv->mod->handler, gps_batch_cb, priv->batch_interval, priv->batch_period, self);
+ ret = priv->mod->ops.start_batch(priv->mod->handler, gps_batch_cb, priv->batch_interval, priv->batch_period, self);
if (ret != LOCATION_ERROR_NONE) {
LOCATION_LOGE("Fail to start_batch. Error[%d]", ret);
__set_started(self, FALSE);
}
static int
-location_gps_stop_batch (LocationGps *self)
+location_gps_stop_batch(LocationGps *self)
{
LOCATION_LOGD("location_gps_stop_batch");
- LocationGpsPrivate* priv = GET_PRIVATE(self);
- g_return_val_if_fail (priv, LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (priv->mod->ops.stop_batch, LOCATION_ERROR_NOT_AVAILABLE);
+ LocationGpsPrivate *priv = GET_PRIVATE(self);
+ g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(priv->mod->ops.stop_batch, LOCATION_ERROR_NOT_AVAILABLE);
int ret = LOCATION_ERROR_NONE;
if (__get_started(self) == TRUE) {
- __set_started (self, FALSE);
- ret = priv->mod->ops.stop_batch (priv->mod->handler);
+ __set_started(self, FALSE);
+ ret = priv->mod->ops.stop_batch(priv->mod->handler);
if (ret != LOCATION_ERROR_NONE) {
- LOCATION_LOGD("Failed to stop_batch. Error[%d]", ret);
+ LOCATION_LOGE("Failed to stop_batch. Error[%d]", ret);
}
} else {
return LOCATION_ERROR_NONE;
}
static void
-location_gps_dispose (GObject *gobject)
+location_gps_dispose(GObject *gobject)
{
LOCATION_LOGD("location_gps_dispose");
- LocationGpsPrivate* priv = GET_PRIVATE(gobject);
- g_return_if_fail (priv);
+ LocationGpsPrivate *priv = GET_PRIVATE(gobject);
+ g_return_if_fail(priv);
g_mutex_clear(&priv->mutex);
- if (priv->pos_searching_timer) g_source_remove (priv->pos_searching_timer);
- if (priv->vel_searching_timer) g_source_remove (priv->vel_searching_timer);
- if (priv->loc_timeout) g_source_remove(priv->loc_timeout);
+#ifdef TIZEN_PROFILE_MOBILE
+ if (priv->pos_searching_timer) g_source_remove(priv->pos_searching_timer);
+ if (priv->vel_searching_timer) g_source_remove(priv->vel_searching_timer);
priv->pos_searching_timer = 0;
priv->vel_searching_timer = 0;
+#endif
+ if (priv->loc_timeout) g_source_remove(priv->loc_timeout);
priv->loc_timeout = 0;
- if(priv->app_type != CPPAPP && priv->set_noti == TRUE) {
- location_setting_ignore_notify (VCONFKEY_LOCATION_ENABLED, location_setting_gps_cb);
- location_setting_ignore_notify (VCONFKEY_LOCATION_GPS_STATE, location_setting_search_cb);
+ if (priv->app_type != CPPAPP && priv->set_noti == TRUE) {
+ location_setting_ignore_notify(VCONFKEY_LOCATION_ENABLED, location_setting_gps_cb);
+#ifdef TIZEN_PROFILE_MOBILE
+ location_state_ignore_notify(VCONFKEY_LOCATION_GPS_STATE, location_setting_search_cb);
+#endif
priv->set_noti = FALSE;
}
}
static void
-location_gps_finalize (GObject *gobject)
+location_gps_finalize(GObject *gobject)
{
LOCATION_LOGD("location_gps_finalize");
- LocationGpsPrivate* priv = GET_PRIVATE(gobject);
- g_return_if_fail (priv);
+ LocationGpsPrivate *priv = GET_PRIVATE(gobject);
+ g_return_if_fail(priv);
module_free(priv->mod, "gps");
priv->mod = NULL;
if (priv->boundary_list) {
- g_list_free_full (priv->boundary_list, free_boundary_list);
+ g_list_free_full(priv->boundary_list, free_boundary_list);
priv->boundary_list = NULL;
}
location_satellite_free(priv->sat);
priv->sat = NULL;
}
- G_OBJECT_CLASS (location_gps_parent_class)->finalize (gobject);
+ G_OBJECT_CLASS(location_gps_parent_class)->finalize(gobject);
}
static void
-location_gps_set_property (GObject *object,
- guint property_id,
- const GValue *value,
- GParamSpec *pspec)
+location_gps_set_property(GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec)
{
- LocationGpsPrivate* priv = GET_PRIVATE(object);
- g_return_if_fail (priv);
- g_return_if_fail (priv->mod);
- g_return_if_fail (priv->mod->handler);
+ LocationGpsPrivate *priv = GET_PRIVATE(object);
+ g_return_if_fail(priv);
+ g_return_if_fail(priv->mod);
+ g_return_if_fail(priv->mod->handler);
int ret = 0;
- switch (property_id){
+ switch (property_id) {
case PROP_BOUNDARY: {
- GList *boundary_list = g_list_copy(g_value_get_pointer(value));
- ret = set_prop_boundary(&priv->boundary_list, boundary_list);
- if(ret != 0) LOCATION_LOGD("Set boundary. Error[%d]", ret);
- if (boundary_list) g_list_free(boundary_list);
- break;
- }
+ GList *boundary_list = g_list_copy(g_value_get_pointer(value));
+ ret = set_prop_boundary(&priv->boundary_list, boundary_list);
+ if (ret != LOCATION_ERROR_NONE) LOCATION_LOGE("Set boundary. Error[%d]", ret);
+ if (boundary_list) g_list_free(boundary_list);
+ break;
+ }
case PROP_REMOVAL_BOUNDARY: {
- LocationBoundary *req_boundary = (LocationBoundary*) g_value_dup_boxed(value);
- ret = set_prop_removal_boundary(&priv->boundary_list, req_boundary);
- if(ret != 0) LOCATION_LOGD("Removal boundary. Error[%d]", ret);
- break;
- }
- case PROP_POS_INTERVAL: {
- guint interval = g_value_get_uint(value);
- LOCATION_LOGD("Set prop>> update-interval: %u", interval);
- if(interval > 0) {
- if(interval < LOCATION_UPDATE_INTERVAL_MAX)
- priv->pos_interval = interval;
- else
- priv->pos_interval = (guint)LOCATION_UPDATE_INTERVAL_MAX;
+ LocationBoundary *req_boundary = (LocationBoundary *) g_value_dup_boxed(value);
+ ret = set_prop_removal_boundary(&priv->boundary_list, req_boundary);
+ if (ret != 0) LOCATION_LOGD("Removal boundary. Error[%d]", ret);
+ break;
}
- else
- priv->pos_interval = (guint)LOCATION_UPDATE_INTERVAL_DEFAULT;
+ case PROP_POS_INTERVAL: {
+ guint interval = g_value_get_uint(value);
+ LOCATION_LOGD("Set prop>> PROP_POS_INTERVAL: %u", interval);
+ /* We don't need to set interval when new one is same as the previous one */
+ if (interval == priv->pos_interval) break;
+
+ if (interval > 0) {
+ if (interval < LOCATION_UPDATE_INTERVAL_MAX)
+ priv->pos_interval = interval;
+ else
+ priv->pos_interval = (guint)LOCATION_UPDATE_INTERVAL_MAX;
+ } else {
+ priv->pos_interval = (guint)LOCATION_UPDATE_INTERVAL_DEFAULT;
+ }
+
+#ifdef TIZEN_PROFILE_MOBILE
+ if (priv->pos_searching_timer) {
+ g_source_remove(priv->pos_searching_timer);
+ priv->pos_searching_timer = g_timeout_add(priv->pos_interval * 1000, _position_timeout_cb, object);
+ }
+#endif
- if (priv->pos_searching_timer) {
- g_source_remove (priv->pos_searching_timer);
- priv->pos_searching_timer = g_timeout_add (priv->pos_interval * 1000, _position_timeout_cb, object);
- }
+ if (__get_started(object) == TRUE) {
+ LOCATION_LOGD("[update_pos_interval]: update pos-interval while pos-tracking");
+ g_return_if_fail(priv->mod->ops.set_position_update_interval);
+ priv->mod->ops.set_position_update_interval(priv->mod->handler, priv->pos_interval);
+ }
- if (__get_started(object) == TRUE) {
- LOCATION_LOGD("[update_pos_interval]: update pos-interval while pos-tracking");
- g_return_if_fail(priv->mod->ops.set_position_update_interval);
- priv->mod->ops.set_position_update_interval(priv->mod->handler, priv->pos_interval);
+ break;
}
-
- break;
- }
case PROP_VEL_INTERVAL: {
- guint interval = g_value_get_uint(value);
- LOCATION_LOGD("Set prop>> update-interval: %u", interval);
- if(interval > 0) {
- if(interval < LOCATION_UPDATE_INTERVAL_MAX)
- priv->vel_interval = interval;
- else
- priv->vel_interval = (guint)LOCATION_UPDATE_INTERVAL_MAX;
- }
- else
- priv->vel_interval = (guint)LOCATION_UPDATE_INTERVAL_DEFAULT;
-
- if (priv->vel_searching_timer) {
- g_source_remove (priv->vel_searching_timer);
- priv->vel_searching_timer = g_timeout_add (priv->vel_interval * 1000, _velocity_timeout_cb, object);
+ guint interval = g_value_get_uint(value);
+ LOCATION_LOGD("Set prop>> PROP_VEL_INTERVAL: %u", interval);
+ if (interval == priv->vel_interval) break;
+
+ if (interval > 0) {
+ if (interval < LOCATION_UPDATE_INTERVAL_MAX)
+ priv->vel_interval = interval;
+ else
+ priv->vel_interval = (guint)LOCATION_UPDATE_INTERVAL_MAX;
+ } else
+ priv->vel_interval = (guint)LOCATION_UPDATE_INTERVAL_DEFAULT;
+
+#ifdef TIZEN_PROFILE_MOBILE
+ if (priv->vel_searching_timer) {
+ g_source_remove(priv->vel_searching_timer);
+ priv->vel_searching_timer = g_timeout_add(priv->vel_interval * 1000, _velocity_timeout_cb, object);
+ }
+#endif
+ break;
}
-
- break;
- }
case PROP_SAT_INTERVAL: {
- guint interval = g_value_get_uint(value);
- LOCATION_LOGD("Set prop>> update-interval: %u", interval);
- if(interval > 0) {
- if(interval < LOCATION_UPDATE_INTERVAL_MAX)
- priv->sat_interval = interval;
- else
- priv->sat_interval = (guint)LOCATION_UPDATE_INTERVAL_MAX;
+ guint interval = g_value_get_uint(value);
+ LOCATION_LOGD("Set prop>> PROP_SAT_INTERVAL: %u", interval);
+ if (interval > 0) {
+ if (interval < LOCATION_UPDATE_INTERVAL_MAX)
+ priv->sat_interval = interval;
+ else
+ priv->sat_interval = (guint)LOCATION_UPDATE_INTERVAL_MAX;
+ } else
+ priv->sat_interval = (guint)LOCATION_UPDATE_INTERVAL_DEFAULT;
+
+ break;
}
- else
- priv->sat_interval = (guint)LOCATION_UPDATE_INTERVAL_DEFAULT;
-
- break;
- }
- case PROP_BATCH_INTERVAL: {
- guint interval = g_value_get_uint(value);
- LOCATION_LOGD("Set prop>> update-batch-interval: %u", interval);
- if(interval > 0) {
- if(interval < LOCATION_UPDATE_INTERVAL_MAX)
- priv->batch_interval = interval;
- else
- priv->batch_interval = (guint)LOCATION_UPDATE_INTERVAL_MAX;
+ case PROP_LOC_INTERVAL: {
+ guint interval = g_value_get_uint(value);
+ LOCATION_LOGD("Set prop>> PROP_LOC_INTERVAL: %u", interval);
+ if (interval > 0) {
+ if (interval < LOCATION_UPDATE_INTERVAL_MAX)
+ priv->loc_interval = interval;
+ else
+ priv->loc_interval = (guint)LOCATION_UPDATE_INTERVAL_MAX;
+ } else
+ priv->loc_interval = (guint)LOCATION_UPDATE_INTERVAL_DEFAULT;
+
+ break;
}
- else
- priv->batch_interval = (guint)LOCATION_UPDATE_INTERVAL_DEFAULT;
-
- if (__get_started(object) == TRUE) {
- LOCATION_LOGE("[===update_batch_interval]: update batch-interval while pos-tracking");
- g_return_if_fail(priv->mod->ops.set_position_update_interval);
- priv->mod->ops.set_position_update_interval(priv->mod->handler, priv->batch_interval);
+ case PROP_BATCH_INTERVAL: {
+ guint interval = g_value_get_uint(value);
+ LOCATION_LOGD("Set prop>> PROP_BATCH_INTERVAL: %u", interval);
+ if (interval > 0) {
+ if (interval < LOCATION_UPDATE_INTERVAL_MAX)
+ priv->batch_interval = interval;
+ else
+ priv->batch_interval = (guint)LOCATION_UPDATE_INTERVAL_MAX;
+ } else
+ priv->batch_interval = (guint)LOCATION_UPDATE_INTERVAL_DEFAULT;
+
+ if (__get_started(object) == TRUE) {
+ LOCATION_LOGD("[update_batch_interval]: update batch-interval while pos-tracking");
+ g_return_if_fail(priv->mod->ops.set_position_update_interval);
+ priv->mod->ops.set_position_update_interval(priv->mod->handler, priv->batch_interval);
+ }
+ break;
}
- break;
- }
case PROP_BATCH_PERIOD: {
- guint interval = g_value_get_uint(value);
- LOCATION_LOGD("Set prop>> update-batch-period: %u", interval);
- if(interval > 0) {
- if(interval < LOCATION_BATCH_PERIOD_MAX)
- priv->batch_period = interval;
- else
- priv->batch_period = (guint)LOCATION_BATCH_PERIOD_MAX;
+ guint interval = g_value_get_uint(value);
+ LOCATION_LOGD("Set prop>> PROP_BATCH_PERIOD: %u", interval);
+ if (interval > 0) {
+ if (interval < LOCATION_BATCH_PERIOD_MAX)
+ priv->batch_period = interval;
+ else
+ priv->batch_period = (guint)LOCATION_BATCH_PERIOD_MAX;
+ } else
+ priv->batch_period = (guint)LOCATION_BATCH_PERIOD_DEFAULT;
+
+ break;
+ }
+ case PROP_MIN_INTERVAL: {
+ guint interval = g_value_get_uint(value);
+ LOCATION_LOGD("Set prop>> PROP_MIN_INTERVAL: %u", interval);
+ if (interval > 0) {
+ if (interval < LOCATION_MIN_INTERVAL_MAX)
+ priv->min_interval = interval;
+ else
+ priv->min_interval = (guint)LOCATION_MIN_INTERVAL_MAX;
+ } else
+ priv->min_interval = (guint)LOCATION_MIN_INTERVAL_DEFAULT;
+
+ break;
+ }
+ case PROP_MIN_DISTANCE: {
+ gdouble distance = g_value_get_double(value);
+ LOCATION_LOGD("Set prop>> PROP_MIN_DISTANCE: %u", distance);
+ if (distance > 0) {
+ if (distance < LOCATION_MIN_DISTANCE_MAX)
+ priv->min_distance = distance;
+ else
+ priv->min_distance = (gdouble)LOCATION_MIN_DISTANCE_MAX;
+ } else
+ priv->min_distance = (gdouble)LOCATION_MIN_DISTANCE_DEFAULT;
+
+ break;
}
- else
- priv->batch_period = (guint)LOCATION_BATCH_PERIOD_DEFAULT;
-
- break;
- }
default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec);
break;
}
}
static void
-location_gps_get_property (GObject *object,
- guint property_id,
- GValue *value,
- GParamSpec *pspec)
+location_gps_get_property(GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec)
{
- LocationGpsPrivate *priv = GET_PRIVATE (object);
- g_return_if_fail (priv);
- g_return_if_fail (priv->mod);
- g_return_if_fail (priv->mod->handler);
+ LocationGpsPrivate *priv = GET_PRIVATE(object);
+ g_return_if_fail(priv);
+ g_return_if_fail(priv->mod);
+ g_return_if_fail(priv->mod->handler);
LocModGpsOps ops = priv->mod->ops;
switch (property_id) {
case PROP_METHOD_TYPE:
g_value_set_boolean(value, __get_started(object));
break;
case PROP_LAST_POSITION:
- g_value_set_boxed (value, priv->pos);
+ g_value_set_boxed(value, priv->pos);
break;
case PROP_POS_INTERVAL:
g_value_set_uint(value, priv->pos_interval);
case PROP_SAT_INTERVAL:
g_value_set_uint(value, priv->sat_interval);
break;
+ case PROP_LOC_INTERVAL:
+ g_value_set_uint(value, priv->loc_interval);
+ break;
case PROP_BATCH_INTERVAL:
g_value_set_uint(value, priv->batch_interval);
break;
case PROP_BATCH_PERIOD:
g_value_set_uint(value, priv->batch_period);
break;
+ case PROP_MIN_INTERVAL:
+ g_value_set_uint(value, priv->min_interval);
+ break;
+ case PROP_MIN_DISTANCE:
+ g_value_set_double(value, priv->min_distance);
+ break;
case PROP_BOUNDARY:
g_value_set_pointer(value, g_list_first(priv->boundary_list));
break;
case PROP_NMEA: {
- char *nmea_data = NULL;
- if (ops.get_nmea && LOCATION_ERROR_NONE == ops.get_nmea(priv->mod->handler, &nmea_data) && nmea_data) {
- LOCATION_SECLOG("Get prop>> Lastest nmea: \n%s", nmea_data);
- g_value_set_string(value, nmea_data);
- g_free(nmea_data);
- } else {
- LOCATION_LOGW("Get prop>> Lastest nmea: failed");
- g_value_set_string(value, NULL);
+ char *nmea_data = NULL;
+ if (ops.get_nmea && LOCATION_ERROR_NONE == ops.get_nmea(priv->mod->handler, &nmea_data) && nmea_data) {
+ LOCATION_SECLOG("Get prop>> Lastest nmea: \n%s", nmea_data);
+ g_value_set_string(value, nmea_data);
+ g_free(nmea_data);
+ } else {
+ LOCATION_LOGW("Get prop>> Lastest nmea: failed");
+ g_value_set_string(value, NULL);
+ }
+ break;
}
- break;
- }
case PROP_SATELLITE: {
- LocationSatellite *satellite = NULL;
- if (ops.get_satellite && priv->mod->handler && LOCATION_ERROR_NONE == ops.get_satellite(priv->mod->handler, &satellite) && satellite){
- LOCATION_LOGD("Get prop>> Last sat: num_used(%d) num_view(%d)", satellite->num_of_sat_used, satellite->num_of_sat_inview);
- g_value_set_boxed (value, satellite);
- location_satellite_free(satellite);
- } else {
- LOCATION_LOGW("Get prop>> Last sat: failed");
- g_value_set_boxed (value, NULL);
+ LocationSatellite *satellite = NULL;
+ if (ops.get_satellite && priv->mod->handler && LOCATION_ERROR_NONE == ops.get_satellite(priv->mod->handler, &satellite) && satellite) {
+ LOCATION_LOGD("Get prop>> Last sat: num_used(%d) num_view(%d)", satellite->num_of_sat_used, satellite->num_of_sat_inview);
+ g_value_set_boxed(value, satellite);
+ location_satellite_free(satellite);
+ } else {
+ LOCATION_LOGW("Get prop>> Last sat: failed");
+ g_value_set_boxed(value, NULL);
+ }
+ break;
}
- break;
- }
default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec);
break;
}
}
static int
-location_gps_get_position (LocationGps *self,
- LocationPosition **position,
- LocationAccuracy **accuracy)
+location_gps_get_position(LocationGps *self,
+ LocationPosition **position,
+ LocationAccuracy **accuracy)
{
int ret = LOCATION_ERROR_NOT_AVAILABLE;
- LocationGpsPrivate *priv = GET_PRIVATE (self);
- g_return_val_if_fail (priv, LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
+ LocationGpsPrivate *priv = GET_PRIVATE(self);
+ g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
setting_retval_if_fail(VCONFKEY_LOCATION_ENABLED);
- g_return_val_if_fail (priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
-
if (__get_started(self) != TRUE) {
- LOCATION_LOGD("location is not started");
+ LOCATION_LOGE("location is not started");
return LOCATION_ERROR_NOT_AVAILABLE;
}
if (priv->pos) {
- *position = location_position_copy (priv->pos);
- if (priv->acc) *accuracy = location_accuracy_copy (priv->acc);
+ *position = location_position_copy(priv->pos);
+ if (priv->acc) *accuracy = location_accuracy_copy(priv->acc);
else *accuracy = location_accuracy_new(LOCATION_ACCURACY_LEVEL_NONE, 0.0, 0.0);
ret = LOCATION_ERROR_NONE;
}
}
static int
-location_gps_get_position_ext (LocationGps *self,
- LocationPosition **position,
- LocationVelocity **velocity,
- LocationAccuracy **accuracy)
+location_gps_get_position_ext(LocationGps *self,
+ LocationPosition **position,
+ LocationVelocity **velocity,
+ LocationAccuracy **accuracy)
{
int ret = LOCATION_ERROR_NOT_AVAILABLE;
- LocationGpsPrivate *priv = GET_PRIVATE (self);
- g_return_val_if_fail (priv, LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
+ LocationGpsPrivate *priv = GET_PRIVATE(self);
+ g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
setting_retval_if_fail(VCONFKEY_LOCATION_ENABLED);
if (__get_started(self) != TRUE) {
- LOCATION_LOGD("location is not started");
+ LOCATION_LOGE("location is not started");
return LOCATION_ERROR_NOT_AVAILABLE;
}
if (priv->pos && priv->vel) {
- *position = location_position_copy (priv->pos);
- *velocity = location_velocity_copy (priv->vel);
- if (priv->acc) *accuracy = location_accuracy_copy (priv->acc);
+ *position = location_position_copy(priv->pos);
+ *velocity = location_velocity_copy(priv->vel);
+ if (priv->acc) *accuracy = location_accuracy_copy(priv->acc);
else *accuracy = location_accuracy_new(LOCATION_ACCURACY_LEVEL_NONE, 0.0, 0.0);
ret = LOCATION_ERROR_NONE;
}
}
static int
-location_gps_get_last_position (LocationGps *self,
- LocationPosition **position,
- LocationAccuracy **accuracy)
+location_gps_get_last_position(LocationGps *self,
+ LocationPosition **position,
+ LocationAccuracy **accuracy)
{
- LocationGpsPrivate *priv = GET_PRIVATE (self);
- g_return_val_if_fail (priv, LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
+ LocationGpsPrivate *priv = GET_PRIVATE(self);
+ g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
setting_retval_if_fail(VCONFKEY_LOCATION_ENABLED);
int ret = LOCATION_ERROR_NONE;
LocationVelocity *_velocity = NULL;
LocModGpsOps ops = priv->mod->ops;
- g_return_val_if_fail (priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (ops.get_last_position, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(ops.get_last_position, LOCATION_ERROR_NOT_AVAILABLE);
ret = ops.get_last_position(priv->mod->handler, position, &_velocity, accuracy);
if (_velocity) location_velocity_free(_velocity);
}
static int
-location_gps_get_last_position_ext (LocationGps *self,
- LocationPosition **position,
- LocationVelocity **velocity,
- LocationAccuracy **accuracy)
+location_gps_get_last_position_ext(LocationGps *self,
+ LocationPosition **position,
+ LocationVelocity **velocity,
+ LocationAccuracy **accuracy)
{
- LocationGpsPrivate *priv = GET_PRIVATE (self);
- g_return_val_if_fail (priv, LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
+ LocationGpsPrivate *priv = GET_PRIVATE(self);
+ g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
setting_retval_if_fail(VCONFKEY_LOCATION_ENABLED);
LocModGpsOps ops = priv->mod->ops;
- g_return_val_if_fail (priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (ops.get_last_position, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(ops.get_last_position, LOCATION_ERROR_NOT_AVAILABLE);
return ops.get_last_position(priv->mod->handler, position, velocity, accuracy);
}
static int
-location_gps_get_velocity (LocationGps *self,
- LocationVelocity **velocity,
- LocationAccuracy **accuracy)
+location_gps_get_velocity(LocationGps *self,
+ LocationVelocity **velocity,
+ LocationAccuracy **accuracy)
{
int ret = LOCATION_ERROR_NOT_AVAILABLE;
- LocationGpsPrivate *priv = GET_PRIVATE (self);
- g_return_val_if_fail (priv, LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
+ LocationGpsPrivate *priv = GET_PRIVATE(self);
+ g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
setting_retval_if_fail(VCONFKEY_LOCATION_ENABLED);
- g_return_val_if_fail (priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
if (__get_started(self) != TRUE) {
- LOCATION_LOGD("location is not started");
+ LOCATION_LOGE("location is not started");
return LOCATION_ERROR_NOT_AVAILABLE;
}
if (priv->vel) {
- *velocity = location_velocity_copy (priv->vel);
- if (priv->acc) *accuracy = location_accuracy_copy (priv->acc);
+ *velocity = location_velocity_copy(priv->vel);
+ if (priv->acc) *accuracy = location_accuracy_copy(priv->acc);
else *accuracy = location_accuracy_new(LOCATION_ACCURACY_LEVEL_NONE, 0.0, 0.0);
ret = LOCATION_ERROR_NONE;
}
}
static int
-location_gps_get_last_velocity (LocationGps *self,
- LocationVelocity **velocity,
- LocationAccuracy **accuracy)
+location_gps_get_last_velocity(LocationGps *self,
+ LocationVelocity **velocity,
+ LocationAccuracy **accuracy)
{
- LocationGpsPrivate *priv = GET_PRIVATE (self);
- g_return_val_if_fail (priv, LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
+ LocationGpsPrivate *priv = GET_PRIVATE(self);
+ g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
setting_retval_if_fail(VCONFKEY_LOCATION_ENABLED);
int ret = LOCATION_ERROR_NONE;
LocationPosition *_position = NULL;
LocModGpsOps ops = priv->mod->ops;
- g_return_val_if_fail (priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (ops.get_last_position, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(ops.get_last_position, LOCATION_ERROR_NOT_AVAILABLE);
ret = ops.get_last_position(priv->mod->handler, &_position, velocity, accuracy);
if (_position) location_position_free(_position);
{
LOCATION_LOGD("__single_location_timeout_cb");
LocationGps *self = (LocationGps *)data;
- LocationGpsPrivate* priv = GET_PRIVATE(self);
+ LocationGpsPrivate *priv = GET_PRIVATE(self);
g_return_val_if_fail(priv, FALSE);
LocationPosition *pos = location_position_new(0, 0.0, 0.0, 0.0, LOCATION_STATUS_NO_FIX);
if (priv->loc_timeout) g_source_remove(priv->loc_timeout);
priv->loc_timeout = 0;
- g_signal_emit(self, signals[LOCATION_UPDATED], LOCATION_ERROR_NOT_AVAILABLE, 0, pos, vel, acc);
+ g_signal_emit(self, signals[LOCATION_UPDATED], 0, LOCATION_ERROR_NOT_AVAILABLE, pos, vel, acc);
location_gps_stop(self);
return FALSE;
}
static void
-gps_single_location_cb (gboolean enabled,
- LocationPosition *pos,
- LocationVelocity *vel,
- LocationAccuracy *acc,
- gpointer self)
+gps_single_location_cb(gboolean enabled,
+ LocationPosition *pos,
+ LocationVelocity *vel,
+ LocationAccuracy *acc,
+ gpointer self)
{
LOCATION_LOGD("gps_single_location_cb");
g_return_if_fail(self);
g_return_if_fail(acc);
LocationGps *obj = (LocationGps *)self;
- LocationGpsPrivate* priv = GET_PRIVATE(obj);
+ LocationGpsPrivate *priv = GET_PRIVATE(obj);
g_return_if_fail(priv);
- g_signal_emit(self, signals[LOCATION_UPDATED], LOCATION_ERROR_NONE, 0, pos, vel, acc);
+ g_signal_emit(self, signals[LOCATION_UPDATED], 0, LOCATION_ERROR_NONE, pos, vel, acc);
if (priv->loc_timeout) {
g_source_remove(priv->loc_timeout);
priv->loc_timeout = 0;
}
static int
-location_gps_request_single_location (LocationGps *self, int timeout)
+location_gps_request_single_location(LocationGps *self, int timeout)
{
LOCATION_LOGD("location_gps_request_single_location");
- LocationGpsPrivate* priv = GET_PRIVATE(self);
- g_return_val_if_fail (priv, LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (priv->mod->ops.start, LOCATION_ERROR_NOT_AVAILABLE);
+ LocationGpsPrivate *priv = GET_PRIVATE(self);
+ g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(priv->mod->ops.start, LOCATION_ERROR_NOT_AVAILABLE);
if (__get_started(self) == TRUE) return LOCATION_ERROR_NONE;
int ret = LOCATION_ERROR_NONE;
__set_started(self, TRUE);
- ret = priv->mod->ops.start (priv->mod->handler, priv->pos_interval, gps_status_cb, gps_single_location_cb, NULL, self);
+ ret = priv->mod->ops.start(priv->mod->handler, priv->pos_interval, gps_status_cb, gps_single_location_cb, NULL, self);
if (ret != LOCATION_ERROR_NONE) {
LOCATION_LOGE("Fail to start request single. Error[%d]", ret);
__set_started(self, FALSE);
return ret;
} else {
- if(priv->loc_timeout != 0) {
- g_source_remove (priv->loc_timeout);
+ if (priv->loc_timeout != 0) {
+ g_source_remove(priv->loc_timeout);
}
priv->loc_timeout = g_timeout_add_seconds(timeout, __single_location_timeout_cb, self);
}
}
static int
-location_gps_get_batch (LocationGps *self,
- LocationBatch **batch)
+location_gps_get_nmea(LocationGps *self, char **nmea_data)
+{
+ int ret = LOCATION_ERROR_NOT_AVAILABLE;
+
+ LocationGpsPrivate *priv = GET_PRIVATE(self);
+ g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(priv->mod->ops.get_nmea, LOCATION_ERROR_NOT_AVAILABLE);
+ setting_retval_if_fail(VCONFKEY_LOCATION_ENABLED);
+
+ ret = priv->mod->ops.get_nmea(priv->mod->handler, nmea_data);
+ if (ret != LOCATION_ERROR_NONE) {
+ LOCATION_LOGE("Failed to get_nmea. Error[%d]", ret);
+ }
+
+ return ret;
+}
+
+static int
+location_gps_get_batch(LocationGps *self,
+ LocationBatch **batch)
{
int ret = LOCATION_ERROR_NOT_AVAILABLE;
- LocationGpsPrivate *priv = GET_PRIVATE (self);
- g_return_val_if_fail (priv, LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
+ LocationGpsPrivate *priv = GET_PRIVATE(self);
+ g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
setting_retval_if_fail(VCONFKEY_LOCATION_ENABLED);
if (__get_started(self) != TRUE) {
- LOCATION_LOGD("location is not started");
+ LOCATION_LOGE("location is not started");
return LOCATION_ERROR_NOT_AVAILABLE;
}
*batch = location_batch_copy(priv->batch);
ret = LOCATION_ERROR_NONE;
} else {
- LOCATION_LOGD("priv->batch is null");
+ LOCATION_LOGE("priv->batch is null");
+ ret = LOCATION_ERROR_NOT_AVAILABLE;
}
return ret;
}
static int
-location_gps_get_satellite (LocationGps *self,
- LocationSatellite **satellite)
+location_gps_get_satellite(LocationGps *self,
+ LocationSatellite **satellite)
{
int ret = LOCATION_ERROR_NOT_AVAILABLE;
- LocationGpsPrivate *priv = GET_PRIVATE (self);
- g_return_val_if_fail (priv, LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
+ LocationGpsPrivate *priv = GET_PRIVATE(self);
+ g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
setting_retval_if_fail(VCONFKEY_LOCATION_ENABLED);
if (__get_started(self) != TRUE) {
- LOCATION_LOGD("location is not started");
+ LOCATION_LOGE("location is not started");
return LOCATION_ERROR_NOT_AVAILABLE;
}
if (priv->sat) {
- *satellite = location_satellite_copy (priv->sat);
+ *satellite = location_satellite_copy(priv->sat);
ret = LOCATION_ERROR_NONE;
}
}
static int
-location_gps_get_last_satellite (LocationGps *self,
- LocationSatellite **satellite)
+location_gps_get_last_satellite(LocationGps *self,
+ LocationSatellite **satellite)
{
return location_gps_get_satellite(self, satellite);
}
static int
-location_gps_set_option (LocationGps *self, const char *option)
+location_gps_set_option(LocationGps *self, const char *option)
{
- LocationGpsPrivate* priv = GET_PRIVATE(self);
- g_return_val_if_fail (priv, LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (priv->mod->ops.set_option, LOCATION_ERROR_NOT_AVAILABLE);
+ LocationGpsPrivate *priv = GET_PRIVATE(self);
+ g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(priv->mod->ops.set_option, LOCATION_ERROR_NOT_AVAILABLE);
int ret = LOCATION_ERROR_NONE;
ret = priv->mod->ops.set_option(priv->mod->handler, option);
if (ret != LOCATION_ERROR_NONE) {
- LOCATION_LOGD("Failed to sst_option. Error[%d]", ret);
+ LOCATION_LOGE("Failed to set_option. Error[%d]", ret);
}
return ret;
}
static void
-location_ielement_interface_init (LocationIElementInterface *iface)
+location_ielement_interface_init(LocationIElementInterface *iface)
{
iface->start = (TYPE_START_FUNC)location_gps_start;
iface->stop = (TYPE_STOP_FUNC)location_gps_stop;
iface->get_satellite = (TYPE_GET_SATELLITE)location_gps_get_satellite;
iface->get_last_satellite = (TYPE_GET_SATELLITE)location_gps_get_last_satellite;
iface->set_option = (TYPE_SET_OPTION)location_gps_set_option;
- iface->request_single_location = (TYPE_REQUEST_SINGLE_LOCATION)location_gps_request_single_location;
iface->get_batch = (TYPE_GET_BATCH)location_gps_get_batch;
iface->start_batch = (TYPE_START_BATCH)location_gps_start_batch;
iface->stop_batch = (TYPE_STOP_BATCH)location_gps_stop_batch;
+
+ iface->request_single_location = (TYPE_REQUEST_SINGLE_LOCATION)location_gps_request_single_location;
+ iface->get_nmea = (TYPE_GET_NMEA)location_gps_get_nmea;
+
}
static void
-location_gps_init (LocationGps *self)
+location_gps_init(LocationGps *self)
{
LOCATION_LOGD("location_gps_init");
- LocationGpsPrivate* priv = GET_PRIVATE(self);
- g_return_if_fail (priv);
+ LocationGpsPrivate *priv = GET_PRIVATE(self);
+ g_return_if_fail(priv);
- priv->mod = (LocationGpsMod*)module_new("gps");
- if(!priv->mod) LOCATION_LOGW("module loading failed");
+ priv->mod = (LocationGpsMod *)module_new("gps");
+ if (!priv->mod) LOCATION_LOGW("module loading failed");
g_mutex_init(&priv->mutex);
priv->is_started = FALSE;
priv->set_noti = FALSE;
- priv->enabled= FALSE;
+ priv->enabled = FALSE;
+ priv->signal_type = 0;
priv->pos_interval = LOCATION_UPDATE_INTERVAL_DEFAULT;
priv->vel_interval = LOCATION_UPDATE_INTERVAL_DEFAULT;
priv->sat_interval = LOCATION_UPDATE_INTERVAL_DEFAULT;
- priv->batch_interval = LOCATION_UPDATE_INTERVAL_DEFAULT;
+ priv->loc_interval = LOCATION_UPDATE_INTERVAL_DEFAULT;
+ priv->batch_interval = LOCATION_UPDATE_INTERVAL_NONE;
priv->batch_period = LOCATION_BATCH_PERIOD_DEFAULT;
+ priv->min_interval = LOCATION_UPDATE_INTERVAL_NONE;
priv->pos_updated_timestamp = 0;
priv->vel_updated_timestamp = 0;
priv->sat_updated_timestamp = 0;
+ priv->loc_updated_timestamp = 0;
priv->pos = NULL;
priv->batch = NULL;
priv->sat = NULL;
priv->boundary_list = NULL;
+#ifdef TIZEN_PROFILE_MOBILE
priv->pos_searching_timer = 0;
priv->vel_searching_timer = 0;
+#endif
priv->loc_timeout = 0;
priv->app_type = location_get_app_type(NULL);
}
static void
-location_gps_class_init (LocationGpsClass *klass)
+location_gps_class_init(LocationGpsClass *klass)
{
LOCATION_LOGD("location_gps_class_init");
- GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+ GObjectClass *gobject_class = G_OBJECT_CLASS(klass);
gobject_class->set_property = location_gps_set_property;
gobject_class->get_property = location_gps_get_property;
gobject_class->dispose = location_gps_dispose;
gobject_class->finalize = location_gps_finalize;
- g_type_class_add_private (klass, sizeof (LocationGpsPrivate));
-
- signals[SERVICE_ENABLED] = g_signal_new ("service-enabled",
- G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_FIRST |
- G_SIGNAL_NO_RECURSE,
- G_STRUCT_OFFSET (LocationGpsClass, enabled),
- NULL, NULL,
- location_VOID__UINT,
- G_TYPE_NONE, 1,
- G_TYPE_UINT);
-
- signals[SERVICE_DISABLED] = g_signal_new ("service-disabled",
- G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_FIRST |
- G_SIGNAL_NO_RECURSE,
- G_STRUCT_OFFSET (LocationGpsClass, disabled),
- NULL, NULL,
- location_VOID__UINT,
- G_TYPE_NONE, 1,
- G_TYPE_UINT);
-
- signals[SERVICE_UPDATED] = g_signal_new ("service-updated",
- G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_FIRST |
- G_SIGNAL_NO_RECURSE,
- G_STRUCT_OFFSET (LocationGpsClass, updated),
- NULL, NULL,
- location_VOID__UINT_POINTER_POINTER,
- G_TYPE_NONE, 3,
- G_TYPE_UINT,
- G_TYPE_POINTER,
- G_TYPE_POINTER);
-
- signals[LOCATION_UPDATED] = g_signal_new ("location-updated",
- G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_FIRST |
- G_SIGNAL_NO_RECURSE,
- G_STRUCT_OFFSET (LocationGpsClass, location_update),
- NULL, NULL,
- location_VOID__INT_POINTER_POINTER_POINTER,
- G_TYPE_NONE, 4,
- G_TYPE_INT,
- G_TYPE_POINTER,
- G_TYPE_POINTER,
- G_TYPE_POINTER);
-
- signals[BATCH_UPDATED] = g_signal_new ("batch-updated",
- G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_FIRST |
- G_SIGNAL_NO_RECURSE,
- G_STRUCT_OFFSET (LocationGpsClass, batch_updated),
- NULL, NULL,
- location_VOID__UINT,
- G_TYPE_NONE, 1,
- G_TYPE_UINT);
-
- signals[ZONE_IN] = g_signal_new ("zone-in",
- G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_FIRST |
- G_SIGNAL_NO_RECURSE,
- G_STRUCT_OFFSET (LocationGpsClass, zone_in),
- NULL, NULL,
- location_VOID__POINTER_POINTER_POINTER,
- G_TYPE_NONE, 3,
- G_TYPE_POINTER,
- G_TYPE_POINTER,
- G_TYPE_POINTER);
-
- signals[ZONE_OUT] = g_signal_new ("zone-out",
- G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_FIRST |
- G_SIGNAL_NO_RECURSE,
- G_STRUCT_OFFSET (LocationGpsClass, zone_out),
- NULL, NULL,
- location_VOID__POINTER_POINTER_POINTER,
- G_TYPE_NONE, 3,
- G_TYPE_POINTER,
- G_TYPE_POINTER,
- G_TYPE_POINTER);
-
- properties[PROP_METHOD_TYPE] = g_param_spec_int ("method",
- "method type",
- "location method type name",
- LOCATION_METHOD_GPS,
- LOCATION_METHOD_GPS,
- LOCATION_METHOD_GPS,
- G_PARAM_READABLE);
-
- properties[PROP_IS_STARTED] = g_param_spec_boolean ("is_started",
- "gps is started prop",
- "gps is started status",
- FALSE,
- G_PARAM_READWRITE);
-
- properties[PROP_LAST_POSITION] = g_param_spec_boxed ("last-position",
- "gps last position prop",
- "gps last position data",
- LOCATION_TYPE_POSITION,
- G_PARAM_READABLE);
-
- properties[PROP_POS_INTERVAL] = g_param_spec_uint ("pos-interval",
- "gps position interval prop",
- "gps position interval data",
- LOCATION_UPDATE_INTERVAL_MIN,
- LOCATION_UPDATE_INTERVAL_MAX,
- LOCATION_UPDATE_INTERVAL_DEFAULT,
- G_PARAM_READWRITE);
-
- properties[PROP_VEL_INTERVAL] = g_param_spec_uint ("vel-interval",
- "gps velocity interval prop",
- "gps velocity interval data",
- LOCATION_UPDATE_INTERVAL_MIN,
- LOCATION_UPDATE_INTERVAL_MAX,
- LOCATION_UPDATE_INTERVAL_DEFAULT,
- G_PARAM_READWRITE);
-
- properties[PROP_SAT_INTERVAL] = g_param_spec_uint ("sat-interval",
- "gps satellite interval prop",
- "gps satellite interval data",
- LOCATION_UPDATE_INTERVAL_MIN,
- LOCATION_UPDATE_INTERVAL_MAX,
- LOCATION_UPDATE_INTERVAL_DEFAULT,
- G_PARAM_READWRITE);
-
- properties[PROP_BATCH_INTERVAL] = g_param_spec_uint ("batch-interval",
- "gps batch interval interval prop",
- "gps batch interval interval data",
- LOCATION_UPDATE_INTERVAL_MIN,
- LOCATION_UPDATE_INTERVAL_MAX,
- LOCATION_UPDATE_INTERVAL_DEFAULT,
- G_PARAM_READWRITE);
-
- properties[PROP_BATCH_PERIOD] = g_param_spec_uint ("batch-period",
- "gps batch period prop",
- "gps batch period data",
- LOCATION_BATCH_PERIOD_MIN,
- LOCATION_BATCH_PERIOD_MAX,
- LOCATION_BATCH_PERIOD_DEFAULT,
- G_PARAM_READWRITE);
-
- properties[PROP_BOUNDARY] = g_param_spec_pointer ("boundary",
- "gps boundary prop",
- "gps boundary data",
- G_PARAM_READWRITE);
+ g_type_class_add_private(klass, sizeof(LocationGpsPrivate));
+
+ signals[SERVICE_ENABLED] = g_signal_new("service-enabled",
+ G_TYPE_FROM_CLASS(klass),
+ G_SIGNAL_RUN_FIRST |
+ G_SIGNAL_NO_RECURSE,
+ G_STRUCT_OFFSET(LocationGpsClass, enabled),
+ NULL, NULL,
+ location_VOID__UINT,
+ G_TYPE_NONE, 1,
+ G_TYPE_UINT);
+
+ signals[SERVICE_DISABLED] = g_signal_new("service-disabled",
+ G_TYPE_FROM_CLASS(klass),
+ G_SIGNAL_RUN_FIRST |
+ G_SIGNAL_NO_RECURSE,
+ G_STRUCT_OFFSET(LocationGpsClass, disabled),
+ NULL, NULL,
+ location_VOID__UINT,
+ G_TYPE_NONE, 1,
+ G_TYPE_UINT);
+
+ signals[SERVICE_UPDATED] = g_signal_new("service-updated",
+ G_TYPE_FROM_CLASS(klass),
+ G_SIGNAL_RUN_FIRST |
+ G_SIGNAL_NO_RECURSE,
+ G_STRUCT_OFFSET(LocationGpsClass, updated),
+ NULL, NULL,
+ location_VOID__INT_POINTER_POINTER_POINTER,
+ G_TYPE_NONE, 4,
+ G_TYPE_INT,
+ G_TYPE_POINTER,
+ G_TYPE_POINTER,
+ G_TYPE_POINTER);
+
+ signals[LOCATION_UPDATED] = g_signal_new("location-updated",
+ G_TYPE_FROM_CLASS(klass),
+ G_SIGNAL_RUN_FIRST |
+ G_SIGNAL_NO_RECURSE,
+ G_STRUCT_OFFSET(LocationGpsClass, location_updated),
+ NULL, NULL,
+ location_VOID__INT_POINTER_POINTER_POINTER,
+ G_TYPE_NONE, 4,
+ G_TYPE_INT,
+ G_TYPE_POINTER,
+ G_TYPE_POINTER,
+ G_TYPE_POINTER);
+
+ signals[BATCH_UPDATED] = g_signal_new("batch-updated",
+ G_TYPE_FROM_CLASS(klass),
+ G_SIGNAL_RUN_FIRST |
+ G_SIGNAL_NO_RECURSE,
+ G_STRUCT_OFFSET(LocationGpsClass, batch_updated),
+ NULL, NULL,
+ location_VOID__UINT,
+ G_TYPE_NONE, 1,
+ G_TYPE_UINT);
+
+ signals[ZONE_IN] = g_signal_new("zone-in",
+ G_TYPE_FROM_CLASS(klass),
+ G_SIGNAL_RUN_FIRST |
+ G_SIGNAL_NO_RECURSE,
+ G_STRUCT_OFFSET(LocationGpsClass, zone_in),
+ NULL, NULL,
+ location_VOID__POINTER_POINTER_POINTER,
+ G_TYPE_NONE, 3,
+ G_TYPE_POINTER,
+ G_TYPE_POINTER,
+ G_TYPE_POINTER);
+
+ signals[ZONE_OUT] = g_signal_new("zone-out",
+ G_TYPE_FROM_CLASS(klass),
+ G_SIGNAL_RUN_FIRST |
+ G_SIGNAL_NO_RECURSE,
+ G_STRUCT_OFFSET(LocationGpsClass, zone_out),
+ NULL, NULL,
+ location_VOID__POINTER_POINTER_POINTER,
+ G_TYPE_NONE, 3,
+ G_TYPE_POINTER,
+ G_TYPE_POINTER,
+ G_TYPE_POINTER);
+
+ properties[PROP_METHOD_TYPE] = g_param_spec_int("method",
+ "method type",
+ "location method type name",
+ LOCATION_METHOD_GPS,
+ LOCATION_METHOD_GPS,
+ LOCATION_METHOD_GPS,
+ G_PARAM_READABLE);
+
+ properties[PROP_IS_STARTED] = g_param_spec_boolean("is_started",
+ "gps is started prop",
+ "gps is started status",
+ FALSE,
+ G_PARAM_READWRITE);
+
+ properties[PROP_LAST_POSITION] = g_param_spec_boxed("last-position",
+ "gps last position prop",
+ "gps last position data",
+ LOCATION_TYPE_POSITION,
+ G_PARAM_READABLE);
+
+ properties[PROP_POS_INTERVAL] = g_param_spec_uint("pos-interval",
+ "gps position interval prop",
+ "gps position interval data",
+ LOCATION_UPDATE_INTERVAL_MIN,
+ LOCATION_UPDATE_INTERVAL_MAX,
+ LOCATION_UPDATE_INTERVAL_DEFAULT,
+ G_PARAM_READWRITE);
+
+ properties[PROP_VEL_INTERVAL] = g_param_spec_uint("vel-interval",
+ "gps velocity interval prop",
+ "gps velocity interval data",
+ LOCATION_UPDATE_INTERVAL_MIN,
+ LOCATION_UPDATE_INTERVAL_MAX,
+ LOCATION_UPDATE_INTERVAL_DEFAULT,
+ G_PARAM_READWRITE);
+
+ properties[PROP_SAT_INTERVAL] = g_param_spec_uint("sat-interval",
+ "gps satellite interval prop",
+ "gps satellite interval data",
+ LOCATION_UPDATE_INTERVAL_MIN,
+ LOCATION_UPDATE_INTERVAL_MAX,
+ LOCATION_UPDATE_INTERVAL_DEFAULT,
+ G_PARAM_READWRITE);
+
+ properties[PROP_LOC_INTERVAL] = g_param_spec_uint("loc-interval",
+ "gps location interval prop",
+ "gps location interval data",
+ LOCATION_UPDATE_INTERVAL_MIN,
+ LOCATION_UPDATE_INTERVAL_MAX,
+ LOCATION_UPDATE_INTERVAL_DEFAULT,
+ G_PARAM_READWRITE);
+
+ properties[PROP_BATCH_INTERVAL] = g_param_spec_uint("batch-interval",
+ "gps batch interval interval prop",
+ "gps batch interval interval data",
+ LOCATION_UPDATE_INTERVAL_MIN,
+ LOCATION_UPDATE_INTERVAL_MAX,
+ LOCATION_UPDATE_INTERVAL_DEFAULT,
+ G_PARAM_READWRITE);
+
+ properties[PROP_BATCH_PERIOD] = g_param_spec_uint("batch-period",
+ "gps batch period prop",
+ "gps batch period data",
+ LOCATION_BATCH_PERIOD_MIN,
+ LOCATION_BATCH_PERIOD_MAX,
+ LOCATION_BATCH_PERIOD_DEFAULT,
+ G_PARAM_READWRITE);
+
+ properties[PROP_MIN_INTERVAL] = g_param_spec_uint("min-interval",
+ "gps distance-based interval prop",
+ "gps distance-based interval data",
+ LOCATION_MIN_INTERVAL_MIN,
+ LOCATION_MIN_INTERVAL_MAX,
+ LOCATION_MIN_INTERVAL_DEFAULT,
+ G_PARAM_READWRITE);
+
+ properties[PROP_MIN_DISTANCE] = g_param_spec_double("min-distance",
+ "gps distance-based distance prop",
+ "gps distance-based distance data",
+ LOCATION_MIN_DISTANCE_MIN,
+ LOCATION_MIN_DISTANCE_MAX,
+ LOCATION_MIN_DISTANCE_DEFAULT,
+ G_PARAM_READWRITE);
+
+ properties[PROP_BOUNDARY] = g_param_spec_pointer("boundary",
+ "gps boundary prop",
+ "gps boundary data",
+ G_PARAM_READWRITE);
properties[PROP_REMOVAL_BOUNDARY] = g_param_spec_boxed("removal-boundary",
- "gps removal boundary prop",
- "gps removal boundary data",
- LOCATION_TYPE_BOUNDARY,
- G_PARAM_READWRITE);
-
-
- properties[PROP_NMEA] = g_param_spec_string ("nmea",
- "gps NMEA name prop",
- "gps NMEA",
- NULL,
- G_PARAM_READABLE);
-
- properties[PROP_SATELLITE] = g_param_spec_boxed ("satellite",
- "gps satellite prop",
- "gps satellite data",
- LOCATION_TYPE_SATELLITE,
- G_PARAM_READABLE);
-
- g_object_class_install_properties (gobject_class,
- PROP_MAX,
- properties);
+ "gps removal boundary prop",
+ "gps removal boundary data",
+ LOCATION_TYPE_BOUNDARY,
+ G_PARAM_READWRITE);
+
+
+ properties[PROP_NMEA] = g_param_spec_string("nmea",
+ "gps NMEA name prop",
+ "gps NMEA",
+ NULL,
+ G_PARAM_READABLE);
+
+ properties[PROP_SATELLITE] = g_param_spec_boxed("satellite",
+ "gps satellite prop",
+ "gps satellite data",
+ LOCATION_TYPE_SATELLITE,
+ G_PARAM_READABLE);
+
+ g_object_class_install_properties(gobject_class,
+ PROP_MAX,
+ properties);
}
typedef struct _LocationGps LocationGps;
typedef struct _LocationGpsClass LocationGpsClass;
-struct _LocationGps
-{
+struct _LocationGps {
GObject parent_instance;
};
-struct _LocationGpsClass
-{
+struct _LocationGpsClass {
GObjectClass parent_class;
- void (* enabled) (guint type);
- void (* disabled) (guint type);
- void (* updated) (guint type, gpointer data, gpointer accuracy);
- void (* location_update) (gint error, gpointer position, gpointer velocity, gpointer accuracy);
- void (* batch_updated) (guint batch_interval, guint batch_period);
- void (* zone_in) (gpointer boundary, gpointer position, gpointer accuracy);
- void (* zone_out) (gpointer boundary, gpointer position, gpointer accuracy);
+ void (* enabled)(guint type);
+ void (* disabled)(guint type);
+ void (* updated)(gint type, gpointer data, gpointer velocity, gpointer accuracy);
+ void (* location_updated)(gint error, gpointer position, gpointer velocity, gpointer accuracy);
+ void (* batch_updated)(guint batch_interval, guint batch_period);
+ void (* zone_in)(gpointer boundary, gpointer position, gpointer accuracy);
+ void (* zone_out)(gpointer boundary, gpointer position, gpointer accuracy);
};
-GType location_gps_get_type (void);
+GType location_gps_get_type(void);
G_END_DECLS
--- /dev/null
+/*
+ * libslp-location
+ *
+ * Copyright (c) 2010-2013 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Youngae Kang <youngae.kang@samsung.com>, Minjune Kim <sena06.kim@samsung.com>
+ * Genie Kim <daejins.kim@samsung.com>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "location-setting.h"
+#include "location-log.h"
+
+#include "module-internal.h"
+
+#include "location-hybrid.h"
+#include "location-marshal.h"
+#include "location-ielement.h"
+#include "location-signaling-util.h"
+#include "location-common-util.h"
+
+#include "location-gps.h"
+#include "location-wps.h"
+
+typedef struct _LocationHybridPrivate {
+ gboolean gps_enabled;
+ gboolean wps_enabled;
+ gint signal_type;
+ guint pos_updated_timestamp;
+ guint pos_interval;
+ guint vel_updated_timestamp;
+ guint vel_interval;
+ guint sat_updated_timestamp;
+ guint sat_interval;
+ guint dist_updated_timestamp;
+ guint min_interval;
+ gdouble min_distance;
+ guint loc_updated_timestamp;
+ guint loc_interval;
+ LocationObject *gps;
+ LocationObject *wps;
+ gboolean enabled;
+ LocationMethod current_method;
+ LocationPosition *pos;
+ LocationVelocity *vel;
+ LocationAccuracy *acc;
+ LocationSatellite *sat;
+ GList *boundary_list;
+ gboolean set_noti;
+ guint pos_timer;
+ guint vel_timer;
+} LocationHybridPrivate;
+
+enum {
+ PROP_0,
+ PROP_METHOD_TYPE,
+ PROP_LAST_POSITION,
+ PROP_POS_INTERVAL,
+ PROP_VEL_INTERVAL,
+ PROP_SAT_INTERVAL,
+ PROP_LOC_INTERVAL,
+ PROP_BOUNDARY,
+ PROP_REMOVAL_BOUNDARY,
+ PROP_MIN_INTERVAL,
+ PROP_MIN_DISTANCE,
+ PROP_MAX
+};
+
+static guint32 signals[LAST_SIGNAL] = {0, };
+static GParamSpec *properties[PROP_MAX] = {NULL, };
+
+#define GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), LOCATION_TYPE_HYBRID, LocationHybridPrivate))
+
+static void location_ielement_interface_init(LocationIElementInterface *iface);
+
+G_DEFINE_TYPE_WITH_CODE(LocationHybrid, location_hybrid, G_TYPE_OBJECT,
+ G_IMPLEMENT_INTERFACE(LOCATION_TYPE_IELEMENT,
+ location_ielement_interface_init));
+
+static LocationMethod
+hybrid_get_current_method(LocationHybridPrivate *priv)
+{
+ g_return_val_if_fail(priv, LOCATION_METHOD_NONE);
+ LOCATION_LOGW("Current Method [%d]\n", priv->current_method);
+ return priv->current_method;
+}
+
+static gboolean
+hybrid_set_current_method(LocationHybridPrivate *priv, GType g_type)
+{
+ g_return_val_if_fail(priv, FALSE);
+
+ if (g_type == LOCATION_TYPE_GPS) {
+ priv->current_method = LOCATION_METHOD_GPS;
+ } else if (g_type == LOCATION_TYPE_WPS) {
+ priv->current_method = LOCATION_METHOD_WPS;
+ } else if (g_type == LOCATION_TYPE_HYBRID) {
+ priv->current_method = LOCATION_METHOD_HYBRID;
+ } else
+ return FALSE;
+
+ return TRUE;
+}
+
+
+static int
+hybrid_get_update_method(LocationHybridPrivate *priv)
+{
+ if (!priv->gps && !priv->wps) return -1;
+
+ if (priv->gps_enabled) {
+ hybrid_set_current_method(priv, LOCATION_TYPE_GPS);
+ } else if (priv->wps_enabled) {
+ hybrid_set_current_method(priv, LOCATION_TYPE_WPS);
+ } else {
+ hybrid_set_current_method(priv, LOCATION_TYPE_HYBRID);
+ }
+
+ return 0;
+}
+
+#if 0
+static LocationObject *
+hybrid_get_current_object(LocationHybridPrivate *priv)
+{
+ LocationMethod method = hybrid_get_current_method(priv);
+
+ LocationObject *obj = NULL;
+ switch (method) {
+ case LOCATION_METHOD_GPS:
+ obj = priv->gps;
+ break;
+ case LOCATION_METHOD_WPS:
+ obj = priv->wps;
+ break;
+ default:
+ break;
+ }
+
+ return obj;
+}
+#endif
+
+static gboolean /* True : Receive more accurate info. False : Receive less accurate info */
+hybrid_compare_g_type_method(LocationHybridPrivate *priv, GType g_type)
+{
+ if (g_type == LOCATION_TYPE_GPS) {
+ hybrid_set_current_method(priv, LOCATION_TYPE_GPS);
+ return TRUE;
+ } else if (g_type == LOCATION_TYPE_WPS && hybrid_get_current_method(priv) == LOCATION_METHOD_WPS) {
+ hybrid_set_current_method(priv, LOCATION_TYPE_WPS);
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static gboolean
+_location_timeout_cb(gpointer data)
+{
+ GObject *object = (GObject *)data;
+ if (!object) return FALSE;
+ LocationHybridPrivate *priv = GET_PRIVATE(object);
+ g_return_val_if_fail(priv, FALSE);
+
+ LocationPosition *pos = NULL;
+ LocationVelocity *vel = NULL;
+ LocationAccuracy *acc = NULL;
+
+ if (priv->pos) {
+ pos = location_position_copy(priv->pos);
+ } else {
+ pos = location_position_new(0, 0.0, 0.0, 0.0, LOCATION_STATUS_NO_FIX);
+ }
+
+ if (priv->vel) {
+ vel = location_velocity_copy(priv->vel);
+ } else {
+ vel = location_velocity_new(0, 0.0, 0.0, 0.0);
+ }
+
+ if (priv->acc) {
+ acc = location_accuracy_copy(priv->acc);
+ } else {
+ acc = location_accuracy_new(LOCATION_ACCURACY_LEVEL_NONE, 0.0, 0.0);
+ }
+
+ g_signal_emit(object, signals[SERVICE_UPDATED], 0, priv->signal_type, pos, vel, acc);
+ priv->signal_type = 0;
+
+ location_position_free(pos);
+ location_velocity_free(vel);
+ location_accuracy_free(acc);
+
+ return TRUE;
+}
+
+static gboolean
+_position_timeout_cb(gpointer data)
+{
+ GObject *object = (GObject *)data;
+ if (!object) return FALSE;
+ LocationHybridPrivate *priv = GET_PRIVATE(object);
+ g_return_val_if_fail(priv, FALSE);
+
+ if (priv->pos_interval == priv->vel_interval) {
+ priv->signal_type |= POSITION_UPDATED;
+ priv->signal_type |= VELOCITY_UPDATED;
+ } else {
+ priv->signal_type |= POSITION_UPDATED;
+ }
+ _location_timeout_cb(object);
+
+ return TRUE;
+}
+
+static gboolean
+_velocity_timeout_cb(gpointer data)
+{
+ GObject *object = (GObject *)data;
+ LocationHybridPrivate *priv = GET_PRIVATE(object);
+ g_return_val_if_fail(priv, FALSE);
+
+ if (priv->pos_interval != priv->vel_interval) {
+ priv->signal_type |= VELOCITY_UPDATED;
+ _location_timeout_cb(object);
+ }
+
+ return TRUE;
+}
+
+static void
+location_hybrid_gps_cb(keynode_t *key,
+ gpointer self)
+{
+ LOCATION_LOGD("location_hybrid_gps_cb");
+ g_return_if_fail(key);
+ g_return_if_fail(self);
+ LocationHybridPrivate *priv = GET_PRIVATE(self);
+ g_return_if_fail(priv);
+ g_return_if_fail(priv->wps);
+
+ gboolean wps_started = FALSE;
+ int ret = LOCATION_ERROR_NONE;
+ int onoff = 0;
+
+ onoff = location_setting_get_key_val(key);
+ if (0 == onoff) {
+ /* restart WPS when GPS stopped by setting */
+ g_object_get(priv->wps, "is_started", &wps_started, NULL);
+ if (wps_started == FALSE && 1 == location_setting_get_int(VCONFKEY_LOCATION_NETWORK_ENABLED)) {
+ LOCATION_LOGD("GPS stoped by setting, so restart WPS");
+ ret = location_start(priv->wps);
+ if (ret != LOCATION_ERROR_NONE) {
+ LOCATION_LOGW("Fail hyhrid/wps location_start : [%d]", ret);
+ return;
+ }
+ }
+ } else if (1 == onoff) {
+ LOCATION_LOGD("Hybrid GPS resumed by setting");
+
+ } else {
+ LOCATION_LOGD("Invalid Value[%d]", onoff);
+ }
+
+}
+
+static void
+hybrid_location_updated(GObject *obj,
+ guint error,
+ gpointer position,
+ gpointer velocity,
+ gpointer accuracy,
+ gpointer self)
+{
+ LocationPosition *pos = (LocationPosition *)position;
+ LocationVelocity *vel = (LocationVelocity *)velocity;
+ LocationAccuracy *acc = (LocationAccuracy *)accuracy;
+
+ LocationHybridPrivate *priv = GET_PRIVATE((LocationHybrid *)self);
+ g_return_if_fail(priv);
+
+ g_signal_emit(self, signals[LOCATION_UPDATED], 0, error, pos, vel, acc);
+}
+
+static void
+hybrid_service_updated(GObject *obj,
+ gint type,
+ gpointer data,
+ gpointer velocity,
+ gpointer accuracy,
+ gpointer self)
+{
+ LOCATION_LOGD("hybrid_service_updated");
+ LocationPosition *pos = NULL;
+ LocationVelocity *vel = NULL;
+ LocationAccuracy *acc = NULL;
+ LocationSatellite *sat = NULL;
+ gboolean wps_started = FALSE;
+ int ret = LOCATION_ERROR_NONE;
+
+ /* To discard invalid data in a hybrid */
+ if (type == SATELLITE_UPDATED) {
+ sat = (LocationSatellite *)data;
+ if (!sat->timestamp) return;
+ } else {
+ pos = (LocationPosition *)data;
+ vel = (LocationVelocity *)velocity;
+ acc = (LocationAccuracy *)accuracy;
+ if (!pos->timestamp) return;
+ if (!vel->timestamp) return;
+ }
+
+ LocationHybridPrivate *priv = GET_PRIVATE((LocationHybrid *)self);
+ g_return_if_fail(priv);
+
+ GType g_type = G_TYPE_FROM_INSTANCE(obj);
+ if (g_type == LOCATION_TYPE_GPS) {
+ if (type == SATELLITE_UPDATED) {
+ satellite_signaling(self, signals, &(priv->enabled), priv->sat_interval, TRUE, &(priv->sat_updated_timestamp), &(priv->sat), sat);
+ return;
+ } else if (location_setting_get_int(VCONFKEY_LOCATION_GPS_STATE) == VCONFKEY_LOCATION_GPS_SEARCHING) {
+ LOCATION_LOGD("Searching GPS");
+
+ /* restart WPS when GPS not available */
+ if (priv->wps) g_object_get(priv->wps, "is_started", &wps_started, NULL);
+ if (priv->wps && wps_started == FALSE) {
+ LOCATION_LOGD("Starting WPS");
+ ret = location_start(priv->wps);
+ if (ret != LOCATION_ERROR_NONE) {
+ LOCATION_LOGW("Fail hyhrid location_start : [%d]", ret);
+ return;
+ }
+ }
+ return;
+ }
+
+ } else if (g_type == LOCATION_TYPE_WPS && location_setting_get_int(VCONFKEY_LOCATION_WPS_STATE) == VCONFKEY_LOCATION_WPS_SEARCHING) {
+ LOCATION_LOGD("Searching WPS");
+ return;
+ } else if (g_type == LOCATION_TYPE_WPS) {
+ LOCATION_LOGD("g_type is LOCATION_TYPE_WPS");
+ }
+
+ if (hybrid_compare_g_type_method(priv, g_type)) {
+
+ if (priv->pos) location_position_free(priv->pos);
+ if (priv->vel) location_velocity_free(priv->vel);
+ if (priv->acc) location_accuracy_free(priv->acc);
+
+ if (pos) priv->pos = location_position_copy(pos);
+ if (vel) priv->vel = location_velocity_copy(vel);
+ if (acc) priv->acc = location_accuracy_copy(acc);
+
+ if (!priv->enabled && pos) {
+ enable_signaling(self, signals, &(priv->enabled), TRUE, pos->status);
+ }
+
+ if (type == DISTANCE_UPDATED) {
+ distance_based_position_signaling(self, signals, priv->enabled, pos, vel, acc,
+ priv->min_interval, priv->min_distance, &(priv->enabled),
+ &(priv->dist_updated_timestamp), &(priv->pos), &(priv->vel), &(priv->acc));
+ } else {
+ position_velocity_signaling(self, signals, priv->pos_interval, priv->vel_interval, priv->loc_interval,
+ &(priv->pos_updated_timestamp), &(priv->vel_updated_timestamp), &(priv->loc_updated_timestamp),
+ priv->boundary_list, pos, vel, acc);
+ }
+
+ /* if receive GPS position then stop WPS.. */
+ if (priv->wps) g_object_get(priv->wps, "is_started", &wps_started, NULL);
+ if (LOCATION_TYPE_GPS == g_type && wps_started == TRUE) {
+ ret = location_stop(priv->wps);
+ if (ret != LOCATION_ERROR_NONE) {
+ LOCATION_LOGW("Fail hybrid location_stop : [%d]", ret);
+ return;
+ }
+ }
+ } else if (g_type == LOCATION_TYPE_WPS && location_setting_get_int(VCONFKEY_LOCATION_GPS_STATE) == VCONFKEY_LOCATION_GPS_SEARCHING) {
+ hybrid_set_current_method(priv, g_type);
+
+ if (priv->pos) location_position_free(priv->pos);
+ if (priv->vel) location_velocity_free(priv->vel);
+ if (priv->acc) location_accuracy_free(priv->acc);
+
+ if (pos) priv->pos = location_position_copy(pos);
+ if (vel) priv->vel = location_velocity_copy(vel);
+ if (acc) priv->acc = location_accuracy_copy(acc);
+
+ if (!priv->enabled && pos) {
+ enable_signaling(self, signals, &(priv->enabled), TRUE, pos->status);
+ }
+
+ if (type == DISTANCE_UPDATED) {
+ distance_based_position_signaling(self, signals, priv->enabled, pos, vel, acc,
+ priv->min_interval, priv->min_distance, &(priv->enabled),
+ &(priv->dist_updated_timestamp), &(priv->pos), &(priv->vel), &(priv->acc));
+ } else {
+ LOCATION_LOGD("position_velocity_signaling");
+ position_velocity_signaling(self, signals, priv->pos_interval, priv->vel_interval, priv->loc_interval,
+ &(priv->pos_updated_timestamp), &(priv->vel_updated_timestamp), &(priv->loc_updated_timestamp),
+ priv->boundary_list, pos, vel, acc);
+ }
+ }
+}
+
+static void
+hybrid_service_enabled(GObject *obj,
+ guint status,
+ gpointer self)
+{
+ LOCATION_LOGD("hybrid_service_enabled");
+ LocationHybridPrivate *priv = GET_PRIVATE((LocationHybrid *)self);
+ g_return_if_fail(priv);
+ GType g_type = G_TYPE_FROM_INSTANCE(obj);
+ if (g_type == LOCATION_TYPE_GPS) {
+ priv->gps_enabled = TRUE;
+ } else if (g_type == LOCATION_TYPE_WPS) {
+ priv->wps_enabled = TRUE;
+ } else {
+ LOCATION_LOGW("Undefined GType enabled");
+ return;
+ }
+ hybrid_get_update_method(priv);
+}
+
+static void
+hybrid_service_disabled(GObject *obj,
+ guint status,
+ gpointer self)
+{
+ LOCATION_LOGD("hybrid_service_disabled");
+ LocationHybridPrivate *priv = GET_PRIVATE((LocationHybrid *)self);
+ g_return_if_fail(priv);
+ GType g_type = G_TYPE_FROM_INSTANCE(obj);
+ if (g_type == LOCATION_TYPE_GPS) {
+ priv->gps_enabled = FALSE;
+ } else if (g_type == LOCATION_TYPE_WPS) {
+ priv->wps_enabled = FALSE;
+ } else {
+ LOCATION_LOGW("Undefined GType disabled");
+ return;
+ }
+ hybrid_get_update_method(priv);
+ if (!priv->gps_enabled && !priv->wps_enabled)
+ enable_signaling(self, signals, &(priv->enabled), FALSE, status);
+
+}
+
+static int
+location_hybrid_start(LocationHybrid *self)
+{
+ LOCATION_LOGD("location_hybrid_start");
+
+ int ret_gps = LOCATION_ERROR_NONE;
+ int ret_wps = LOCATION_ERROR_NONE;
+ gboolean gps_started = FALSE;
+ gboolean wps_started = FALSE;
+
+ LocationHybridPrivate *priv = GET_PRIVATE(self);
+ g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
+ if (!priv->gps && !priv->wps) {
+ LOCATION_LOGE("GPS and WPS Object are not created.");
+ return LOCATION_ERROR_NOT_AVAILABLE;
+ }
+
+ if (priv->gps) g_object_get(priv->gps, "is_started", &gps_started, NULL);
+ if (priv->wps) g_object_get(priv->wps, "is_started", &wps_started, NULL);
+
+ if ((gps_started == TRUE) || (wps_started == TRUE)) {
+ LOCATION_LOGD("Already started");
+ return LOCATION_ERROR_NONE;
+ }
+
+ if (priv->gps) ret_gps = location_start(priv->gps);
+ if (priv->wps) ret_wps = location_start(priv->wps);
+
+ if ((ret_gps != LOCATION_ERROR_NONE) && (ret_wps != LOCATION_ERROR_NONE)) {
+ LOCATION_LOGD("ret_gps = %d, ret_wps = %d", ret_gps, ret_wps);
+ if (ret_gps == LOCATION_ERROR_SECURITY_DENIED || ret_wps == LOCATION_ERROR_SECURITY_DENIED) {
+ return LOCATION_ERROR_SECURITY_DENIED;
+ } else if (ret_gps == LOCATION_ERROR_SETTING_OFF || ret_wps == LOCATION_ERROR_SETTING_OFF) {
+ return LOCATION_ERROR_SETTING_OFF;
+ } else if (ret_gps == LOCATION_ERROR_NOT_ALLOWED || ret_wps == LOCATION_ERROR_NOT_ALLOWED) {
+ return LOCATION_ERROR_NOT_ALLOWED;
+ } else {
+ return LOCATION_ERROR_NOT_AVAILABLE;
+ }
+ }
+
+ if (priv->set_noti == FALSE) {
+ location_setting_add_notify(VCONFKEY_LOCATION_ENABLED, location_hybrid_gps_cb, self);
+ priv->set_noti = TRUE;
+ }
+
+ return LOCATION_ERROR_NONE;
+}
+
+static int
+location_hybrid_stop(LocationHybrid *self)
+{
+ LOCATION_LOGD("location_hybrid_stop");
+
+ LocationHybridPrivate *priv = GET_PRIVATE(self);
+ g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
+
+ LOCATION_LOGD("location_hybrid_stop started......!!!");
+
+ int ret_gps = LOCATION_ERROR_NOT_AVAILABLE;
+ int ret_wps = LOCATION_ERROR_NOT_AVAILABLE;
+ gboolean gps_started = FALSE;
+ gboolean wps_started = FALSE;
+
+ g_object_get(priv->gps, "is_started", &gps_started, NULL);
+ if (priv->wps) g_object_get(priv->wps, "is_started", &wps_started, NULL);
+
+ if ((gps_started == FALSE) && (wps_started == FALSE)) {
+ return LOCATION_ERROR_NONE;
+ }
+
+ if (priv->gps) ret_gps = location_stop(priv->gps);
+ if (priv->wps) ret_wps = location_stop(priv->wps);
+
+ if (ret_gps != LOCATION_ERROR_NONE && ret_wps != LOCATION_ERROR_NONE)
+ return LOCATION_ERROR_NOT_AVAILABLE;
+
+ if (priv->pos_timer) g_source_remove(priv->pos_timer);
+ if (priv->vel_timer) g_source_remove(priv->vel_timer);
+ priv->pos_timer = 0;
+ priv->vel_timer = 0;
+
+ if (priv->set_noti == TRUE) {
+ location_setting_ignore_notify(VCONFKEY_LOCATION_ENABLED, location_hybrid_gps_cb);
+ priv->set_noti = FALSE;
+ }
+
+ return LOCATION_ERROR_NONE;
+}
+
+static void
+location_hybrid_dispose(GObject *gobject)
+{
+ LOCATION_LOGD("location_hybrid_dispose");
+ LocationHybridPrivate *priv = GET_PRIVATE(gobject);
+ g_return_if_fail(priv);
+
+ if (priv->pos_timer) g_source_remove(priv->pos_timer);
+ if (priv->vel_timer) g_source_remove(priv->vel_timer);
+ priv->pos_timer = 0;
+ priv->vel_timer = 0;
+
+ if (priv->set_noti == TRUE) {
+ location_setting_ignore_notify(VCONFKEY_LOCATION_ENABLED, location_hybrid_gps_cb);
+ priv->set_noti = FALSE;
+ }
+
+ G_OBJECT_CLASS(location_hybrid_parent_class)->dispose(gobject);
+}
+
+static void
+location_hybrid_finalize(GObject *gobject)
+{
+ LOCATION_LOGD("location_hybrid_finalize");
+ LocationHybridPrivate *priv = GET_PRIVATE(gobject);
+ g_return_if_fail(priv);
+
+ if (priv->gps) {
+ g_signal_handlers_disconnect_by_func(priv->gps, G_CALLBACK(hybrid_service_enabled), gobject);
+ g_signal_handlers_disconnect_by_func(priv->gps, G_CALLBACK(hybrid_service_disabled), gobject);
+ g_signal_handlers_disconnect_by_func(priv->gps, G_CALLBACK(hybrid_service_updated), gobject);
+ g_signal_handlers_disconnect_by_func(priv->gps, G_CALLBACK(hybrid_location_updated), gobject);
+ location_free(priv->gps);
+ }
+ if (priv->wps) {
+ g_signal_handlers_disconnect_by_func(priv->wps, G_CALLBACK(hybrid_service_enabled), gobject);
+ g_signal_handlers_disconnect_by_func(priv->wps, G_CALLBACK(hybrid_service_disabled), gobject);
+ g_signal_handlers_disconnect_by_func(priv->wps, G_CALLBACK(hybrid_service_updated), gobject);
+ g_signal_handlers_disconnect_by_func(priv->wps, G_CALLBACK(hybrid_location_updated), gobject);
+ location_free(priv->wps);
+ }
+
+ if (priv->boundary_list) {
+ g_list_free_full(priv->boundary_list, free_boundary_list);
+ priv->boundary_list = NULL;
+ }
+
+ if (priv->pos) {
+ location_position_free(priv->pos);
+ priv->pos = NULL;
+ }
+
+ if (priv->vel) {
+ location_velocity_free(priv->vel);
+ priv->vel = NULL;
+ }
+
+ if (priv->acc) {
+ location_accuracy_free(priv->acc);
+ priv->acc = NULL;
+ }
+
+ if (priv->sat) {
+ location_satellite_free(priv->sat);
+ priv->sat = NULL;
+ }
+
+ G_OBJECT_CLASS(location_hybrid_parent_class)->finalize(gobject);
+}
+
+static void
+location_hybrid_set_property(GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ LocationHybridPrivate *priv = GET_PRIVATE(object);
+ g_return_if_fail(priv);
+ if (!priv->gps && !priv->wps) {
+ LOCATION_LOGW("Set property is not available now");
+ return;
+ }
+
+ int ret = 0;
+ switch (property_id) {
+ case PROP_BOUNDARY: {
+ GList *boundary_list = (GList *)g_list_copy(g_value_get_pointer(value));
+ ret = set_prop_boundary(&priv->boundary_list, boundary_list);
+ if (ret != 0) LOCATION_LOGD("Set boundary. Error[%d]", ret);
+ break;
+ }
+ case PROP_REMOVAL_BOUNDARY: {
+ LocationBoundary *req_boundary = (LocationBoundary *) g_value_dup_boxed(value);
+ ret = set_prop_removal_boundary(&priv->boundary_list, req_boundary);
+ if (ret != 0) LOCATION_LOGD("Removal boundary. Error[%d]", ret);
+ break;
+ }
+ case PROP_POS_INTERVAL: {
+ guint interval = g_value_get_uint(value);
+ LOCATION_LOGD("Set prop>> PROP_POS_INTERVAL: %u", interval);
+ if (interval > 0) {
+ if (interval < LOCATION_UPDATE_INTERVAL_MAX)
+ priv->pos_interval = interval;
+ else
+ priv->pos_interval = (guint) LOCATION_UPDATE_INTERVAL_MAX;
+ } else {
+ priv->pos_interval = LOCATION_UPDATE_INTERVAL_DEFAULT;
+ }
+
+ if (priv->pos_timer) {
+ g_source_remove(priv->pos_timer);
+ priv->pos_timer = g_timeout_add(priv->pos_interval * 1000, _position_timeout_cb, object);
+ }
+
+ if (priv->gps) g_object_set(priv->gps, "pos-interval", priv->pos_interval, NULL);
+ if (priv->wps) g_object_set(priv->wps, "pos-interval", priv->pos_interval, NULL);
+
+ break;
+ }
+ case PROP_VEL_INTERVAL: {
+ guint interval = g_value_get_uint(value);
+ LOCATION_LOGD("Set prop>> PROP_VEL_INTERVAL: %u", interval);
+ if (interval > 0) {
+ if (interval < LOCATION_UPDATE_INTERVAL_MAX)
+ priv->vel_interval = interval;
+ else
+ priv->vel_interval = (guint) LOCATION_UPDATE_INTERVAL_MAX;
+
+ } else
+ priv->vel_interval = LOCATION_UPDATE_INTERVAL_DEFAULT;
+
+ if (priv->vel_timer) {
+ g_source_remove(priv->vel_timer);
+ priv->vel_timer = g_timeout_add(priv->vel_interval * 1000, _velocity_timeout_cb, object);
+ }
+
+ if (priv->gps) g_object_set(priv->gps, "vel-interval", priv->vel_interval, NULL);
+ if (priv->wps) g_object_set(priv->wps, "vel-interval", priv->vel_interval, NULL);
+
+ break;
+ }
+ case PROP_SAT_INTERVAL: {
+ guint interval = g_value_get_uint(value);
+ LOCATION_LOGD("Set prop>> PROP_SAT_INTERVAL: %u", interval);
+ if (interval > 0) {
+ if (interval < LOCATION_UPDATE_INTERVAL_MAX)
+ priv->sat_interval = interval;
+ else
+ priv->sat_interval = (guint) LOCATION_UPDATE_INTERVAL_MAX;
+
+ } else
+ priv->sat_interval = LOCATION_UPDATE_INTERVAL_DEFAULT;
+
+ break;
+ }
+ case PROP_LOC_INTERVAL: {
+ guint interval = g_value_get_uint(value);
+ LOCATION_LOGD("Set prop>> PROP_LOC_INTERVAL: %u", interval);
+ if (interval > 0) {
+ if (interval < LOCATION_UPDATE_INTERVAL_MAX)
+ priv->loc_interval = interval;
+ else
+ priv->loc_interval = (guint)LOCATION_UPDATE_INTERVAL_MAX;
+ } else
+ priv->loc_interval = (guint)LOCATION_UPDATE_INTERVAL_DEFAULT;
+
+ if (priv->gps) g_object_set(priv->gps, "loc-interval", priv->loc_interval, NULL);
+ if (priv->wps) g_object_set(priv->wps, "loc-interval", priv->loc_interval, NULL);
+
+ break;
+ }
+ case PROP_MIN_INTERVAL: {
+ guint interval = g_value_get_uint(value);
+ LOCATION_LOGD("Set prop>> PROP_MIN_INTERVAL: %u", interval);
+ if (interval > 0) {
+ if (interval < LOCATION_MIN_INTERVAL_MAX)
+ priv->min_interval = interval;
+ else
+ priv->min_interval = (guint)LOCATION_MIN_INTERVAL_MAX;
+ } else
+ priv->min_interval = (guint)LOCATION_MIN_INTERVAL_DEFAULT;
+
+ if (priv->gps) g_object_set(priv->gps, "min-interval", priv->min_interval, NULL);
+ if (priv->wps) g_object_set(priv->wps, "min-interval", priv->min_interval, NULL);
+
+ break;
+ }
+ case PROP_MIN_DISTANCE: {
+ gdouble distance = g_value_get_double(value);
+ LOCATION_LOGD("Set prop>> PROP_MIN_DISTANCE: %u", distance);
+ if (distance > 0) {
+ if (distance < LOCATION_MIN_DISTANCE_MAX)
+ priv->min_distance = distance;
+ else
+ priv->min_distance = (gdouble)LOCATION_MIN_DISTANCE_MAX;
+ } else
+ priv->min_distance = (gdouble)LOCATION_MIN_DISTANCE_DEFAULT;
+
+ if (priv->gps) g_object_set(priv->gps, "min-distance", priv->min_distance, NULL);
+ if (priv->wps) g_object_set(priv->wps, "min-distance", priv->min_distance, NULL);
+
+ break;
+ }
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec);
+ break;
+ }
+}
+
+static void
+location_hybrid_get_property(GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ LocationHybridPrivate *priv = GET_PRIVATE(object);
+ g_return_if_fail(priv);
+ if (!priv->gps && !priv->wps) {
+ LOCATION_LOGW("Get property is not available now");
+ return;
+ }
+
+ LOCATION_LOGW("Get Propery ID[%d]", property_id);
+
+ switch (property_id) {
+ case PROP_METHOD_TYPE:
+ g_value_set_int(value, hybrid_get_current_method(priv));
+ break;
+ case PROP_LAST_POSITION:
+ g_value_set_boxed(value, priv->pos);
+ break;
+ case PROP_BOUNDARY:
+ g_value_set_pointer(value, g_list_first(priv->boundary_list));
+ break;
+ case PROP_POS_INTERVAL:
+ g_value_set_uint(value, priv->pos_interval);
+ break;
+ case PROP_VEL_INTERVAL:
+ g_value_set_uint(value, priv->vel_interval);
+ break;
+ case PROP_SAT_INTERVAL:
+ g_value_set_uint(value, priv->sat_interval);
+ break;
+ case PROP_LOC_INTERVAL:
+ g_value_set_uint(value, priv->loc_interval);
+ break;
+ case PROP_MIN_INTERVAL:
+ g_value_set_uint(value, priv->min_interval);
+ break;
+ case PROP_MIN_DISTANCE:
+ g_value_set_double(value, priv->min_distance);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec);
+ break;
+ }
+}
+
+static int
+location_hybrid_get_position(LocationHybrid *self,
+ LocationPosition **position,
+ LocationAccuracy **accuracy)
+{
+ int ret = LOCATION_ERROR_NOT_AVAILABLE;
+ LOCATION_LOGD("location_hybrid_get_position");
+ if (!location_setting_get_int(VCONFKEY_LOCATION_ENABLED) && !location_setting_get_int(VCONFKEY_LOCATION_NETWORK_ENABLED)) {
+ return LOCATION_ERROR_SETTING_OFF;
+ }
+
+ LocationHybridPrivate *priv = GET_PRIVATE(self);
+ g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
+
+ if (priv->pos) {
+ *position = location_position_copy(priv->pos);
+ ret = LOCATION_ERROR_NONE;
+ }
+
+ if (priv->acc) {
+ *accuracy = location_accuracy_copy(priv->acc);
+ }
+
+ return ret;
+}
+
+static int
+location_hybrid_get_position_ext(LocationHybrid *self,
+ LocationPosition **position,
+ LocationVelocity **velocity,
+ LocationAccuracy **accuracy)
+{
+ LOCATION_LOGD("location_hybrid_get_position_ext");
+ if (!location_setting_get_int(VCONFKEY_LOCATION_ENABLED) && !location_setting_get_int(VCONFKEY_LOCATION_NETWORK_ENABLED)) {
+ return LOCATION_ERROR_SETTING_OFF;
+ }
+
+ LocationHybridPrivate *priv = GET_PRIVATE(self);
+ g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
+
+ if (priv->pos && priv->vel) {
+ *position = location_position_copy(priv->pos);
+ *velocity = location_velocity_copy(priv->vel);
+ } else {
+ LOCATION_LOGE("There is invalid data.");
+ return LOCATION_ERROR_NOT_AVAILABLE;
+ }
+
+ if (priv->acc) {
+ *accuracy = location_accuracy_copy(priv->acc);
+ } else {
+ *accuracy = location_accuracy_new(LOCATION_ACCURACY_LEVEL_NONE, 0.0, 0.0);
+ }
+
+ return LOCATION_ERROR_NONE;
+}
+
+
+static int
+location_hybrid_get_last_position(LocationHybrid *self,
+ LocationPosition **position,
+ LocationAccuracy **accuracy)
+{
+ LOCATION_LOGD("location_hybrid_get_last_position");
+
+ int ret = LOCATION_ERROR_NONE;
+ LocationPosition *gps_pos = NULL, *wps_pos = NULL;
+ LocationAccuracy *gps_acc = NULL, *wps_acc = NULL;
+ LocationHybridPrivate *priv = GET_PRIVATE(self);
+ g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
+
+ if (priv->gps) location_get_last_position(priv->gps, &gps_pos, &gps_acc);
+ if (priv->wps) location_get_last_position(priv->wps, &wps_pos, &wps_acc);
+
+ if (gps_pos && wps_pos) {
+ if (wps_pos->timestamp > gps_pos->timestamp) {
+ *position = wps_pos;
+ *accuracy = wps_acc;
+ location_position_free(gps_pos);
+ location_accuracy_free(gps_acc);
+ } else {
+ *position = gps_pos;
+ *accuracy = gps_acc;
+ location_position_free(wps_pos);
+ location_accuracy_free(wps_acc);
+ }
+ } else if (gps_pos) {
+ *position = gps_pos;
+ *accuracy = gps_acc;
+ } else if (wps_pos) {
+ *position = wps_pos;
+ *accuracy = wps_acc;
+ } else {
+ ret = LOCATION_ERROR_NOT_AVAILABLE;
+ }
+
+ return ret;
+}
+
+static int
+location_hybrid_get_last_position_ext(LocationHybrid *self,
+ LocationPosition **position,
+ LocationVelocity **velocity,
+ LocationAccuracy **accuracy)
+{
+ LOCATION_LOGD("location_hybrid_get_last_position_ext");
+
+ int ret = LOCATION_ERROR_NONE;
+ LocationPosition *gps_pos = NULL, *wps_pos = NULL;
+ LocationVelocity *gps_vel = NULL, *wps_vel = NULL;
+ LocationAccuracy *gps_acc = NULL, *wps_acc = NULL;
+ LocationHybridPrivate *priv = GET_PRIVATE(self);
+ g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
+
+ if (priv->gps) location_get_last_position_ext(priv->gps, &gps_pos, &gps_vel, &gps_acc);
+ if (priv->wps) location_get_last_position_ext(priv->wps, &wps_pos, &wps_vel, &wps_acc);
+
+ if (gps_pos && wps_pos && gps_vel && wps_vel) {
+ if (wps_pos->timestamp > gps_pos->timestamp) {
+ *position = wps_pos;
+ *velocity = wps_vel;
+ *accuracy = wps_acc;
+ location_position_free(gps_pos);
+ location_velocity_free(gps_vel);
+ location_accuracy_free(gps_acc);
+ } else {
+ *position = gps_pos;
+ *velocity = gps_vel;
+ *accuracy = gps_acc;
+ location_position_free(wps_pos);
+ location_velocity_free(wps_vel);
+ location_accuracy_free(wps_acc);
+ }
+ } else if (gps_pos && gps_vel) {
+ *position = gps_pos;
+ *velocity = gps_vel;
+ *accuracy = gps_acc;
+ } else if (wps_pos && wps_vel) {
+ *position = wps_pos;
+ *velocity = wps_vel;
+ *accuracy = wps_acc;
+ } else {
+ ret = LOCATION_ERROR_NOT_AVAILABLE;
+ }
+
+ return ret;
+}
+
+static int
+location_hybrid_get_velocity(LocationHybrid *self,
+ LocationVelocity **velocity,
+ LocationAccuracy **accuracy)
+{
+ int ret = LOCATION_ERROR_NOT_AVAILABLE;
+ LOCATION_LOGD("location_hybrid_get_velocity");
+ if (!location_setting_get_int(VCONFKEY_LOCATION_ENABLED) && !location_setting_get_int(VCONFKEY_LOCATION_NETWORK_ENABLED)) {
+ return LOCATION_ERROR_SETTING_OFF;
+ }
+
+ LocationHybridPrivate *priv = GET_PRIVATE(self);
+ g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
+
+ if (priv->vel) {
+ *velocity = location_velocity_copy(priv->vel);
+ ret = LOCATION_ERROR_NONE;
+ }
+
+ if (priv->acc) {
+ *accuracy = location_accuracy_copy(priv->acc);
+ }
+
+ return ret;
+}
+
+static int
+location_hybrid_get_last_velocity(LocationHybrid *self,
+ LocationVelocity **velocity,
+ LocationAccuracy **accuracy)
+{
+ LOCATION_LOGD("location_hybrid_get_last_velocity");
+
+ int ret = LOCATION_ERROR_NONE;
+ LocationHybridPrivate *priv = GET_PRIVATE(self);
+ g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
+ LocationVelocity *gps_vel = NULL, *wps_vel = NULL;
+ LocationAccuracy *gps_acc = NULL, *wps_acc = NULL;
+
+ if (priv->gps) location_get_last_velocity(priv->gps, &gps_vel, &gps_acc);
+ if (priv->wps) location_get_last_velocity(priv->wps, &wps_vel, &wps_acc);
+
+ if (gps_vel && wps_vel) {
+ if (wps_vel->timestamp > gps_vel->timestamp) {
+ *velocity = wps_vel;
+ *accuracy = wps_acc;
+ location_velocity_free(gps_vel);
+ location_accuracy_free(gps_acc);
+ } else {
+ *velocity = gps_vel;
+ *accuracy = gps_acc;
+ location_velocity_free(wps_vel);
+ location_accuracy_free(wps_acc);
+ }
+ } else if (gps_vel) {
+ *velocity = gps_vel;
+ *accuracy = gps_acc;
+ } else if (wps_vel) {
+ *velocity = wps_vel;
+ *accuracy = wps_acc;
+ } else {
+ *velocity = NULL;
+ *accuracy = NULL;
+ ret = LOCATION_ERROR_NOT_AVAILABLE;
+ }
+
+ return ret;
+}
+
+static int
+location_hybrid_get_satellite(LocationHybrid *self,
+ LocationSatellite **satellite)
+{
+ int ret = LOCATION_ERROR_NOT_AVAILABLE;
+ LOCATION_LOGD("location_hybrid_get_satellite");
+ if (!location_setting_get_int(VCONFKEY_LOCATION_ENABLED) && !location_setting_get_int(VCONFKEY_LOCATION_NETWORK_ENABLED)) {
+ return LOCATION_ERROR_SETTING_OFF;
+ }
+
+ LocationHybridPrivate *priv = GET_PRIVATE(self);
+ g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
+ if (priv->sat) {
+ *satellite = location_satellite_copy(priv->sat);
+ ret = LOCATION_ERROR_NONE;
+ }
+
+ return ret;
+}
+
+static int
+location_hybrid_get_last_satellite(LocationHybrid *self,
+ LocationSatellite **satellite)
+{
+ LOCATION_LOGD("location_hybrid_get_last_satellite");
+
+ int ret = LOCATION_ERROR_NONE;
+ LocationHybridPrivate *priv = GET_PRIVATE(self);
+ g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
+
+ if (priv->gps) {
+ ret = location_get_last_satellite(priv->gps, satellite);
+ } else {
+ *satellite = NULL;
+ ret = LOCATION_ERROR_NOT_AVAILABLE;
+ }
+
+ return ret;
+}
+
+static int
+location_hybrid_set_option(LocationHybrid *self, const char *option)
+{
+ LOCATION_LOGD("location_hybrid_set_option");
+ LocationHybridPrivate *priv = GET_PRIVATE(self);
+ g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
+
+ int ret_gps = LOCATION_ERROR_NOT_AVAILABLE;
+ int ret_wps = LOCATION_ERROR_NOT_AVAILABLE;
+
+ if (priv->gps) ret_gps = location_set_option(priv->gps, option);
+ if (priv->wps) ret_wps = location_set_option(priv->wps, option);
+
+ if (ret_gps != LOCATION_ERROR_NONE && ret_wps != LOCATION_ERROR_NONE)
+ return LOCATION_ERROR_NOT_AVAILABLE;
+
+ return LOCATION_ERROR_NONE;
+}
+
+static int
+location_hybrid_request_single_location(LocationHybrid *self, int timeout)
+{
+ LOCATION_LOGD("location_hybrid_request_single_location");
+ LocationHybridPrivate *priv = GET_PRIVATE(self);
+ g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
+
+ int ret = LOCATION_ERROR_NONE;
+
+ if (priv->gps) {
+ ret = location_request_single_location(priv->gps, timeout);
+ } else {
+ ret = location_request_single_location(priv->wps, timeout);
+ }
+
+ return ret;
+}
+
+static int
+location_hybrid_get_nmea(LocationHybrid *self,
+ char **nmea_data)
+{
+ LOCATION_LOGD("location_hybrid_get_nmea");
+ LocationHybridPrivate *priv = GET_PRIVATE(self);
+ g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
+
+ int ret = LOCATION_ERROR_NOT_AVAILABLE;
+
+ if (priv->gps) ret = location_get_nmea(priv->gps, nmea_data);
+
+ if (ret != LOCATION_ERROR_NONE)
+ return LOCATION_ERROR_NOT_AVAILABLE;
+
+ return LOCATION_ERROR_NONE;
+}
+
+
+static void
+location_ielement_interface_init(LocationIElementInterface *iface)
+{
+ iface->start = (TYPE_START_FUNC)location_hybrid_start;
+ iface->stop = (TYPE_STOP_FUNC)location_hybrid_stop;
+ iface->get_position = (TYPE_GET_POSITION)location_hybrid_get_position;
+ iface->get_position_ext = (TYPE_GET_POSITION_EXT)location_hybrid_get_position_ext;
+ iface->get_last_position = (TYPE_GET_POSITION)location_hybrid_get_last_position;
+ iface->get_last_position_ext = (TYPE_GET_POSITION_EXT)location_hybrid_get_last_position_ext;
+ iface->get_velocity = (TYPE_GET_VELOCITY)location_hybrid_get_velocity;
+ iface->get_last_velocity = (TYPE_GET_VELOCITY)location_hybrid_get_last_velocity;
+ iface->get_satellite = (TYPE_GET_SATELLITE)location_hybrid_get_satellite;
+ iface->get_last_satellite = (TYPE_GET_SATELLITE)location_hybrid_get_last_satellite;
+ iface->set_option = (TYPE_SET_OPTION)location_hybrid_set_option;
+ iface->request_single_location = (TYPE_REQUEST_SINGLE_LOCATION)location_hybrid_request_single_location;
+ iface->get_nmea = (TYPE_GET_NMEA)location_hybrid_get_nmea;
+}
+
+static void
+location_hybrid_init(LocationHybrid *self)
+{
+ LOCATION_LOGD("location_hybrid_init");
+ LocationHybridPrivate *priv = GET_PRIVATE(self);
+ g_return_if_fail(priv);
+
+ priv->pos_interval = LOCATION_UPDATE_INTERVAL_NONE;
+ priv->vel_interval = LOCATION_UPDATE_INTERVAL_NONE;
+ priv->sat_interval = LOCATION_UPDATE_INTERVAL_NONE;
+ priv->loc_interval = LOCATION_UPDATE_INTERVAL_NONE;
+ priv->min_interval = LOCATION_UPDATE_INTERVAL_NONE;
+
+ priv->pos_updated_timestamp = 0;
+ priv->vel_updated_timestamp = 0;
+ priv->sat_updated_timestamp = 0;
+ priv->loc_updated_timestamp = 0;
+
+ priv->gps_enabled = FALSE;
+ priv->wps_enabled = FALSE;
+ priv->gps = NULL;
+ priv->wps = NULL;
+
+ priv->set_noti = FALSE;
+ priv->signal_type = 0;
+ priv->pos_timer = 0;
+ priv->vel_timer = 0;
+
+ if (location_is_supported_method(LOCATION_METHOD_GPS)) priv->gps = location_new(LOCATION_METHOD_GPS);
+ if (location_is_supported_method(LOCATION_METHOD_WPS)) priv->wps = location_new(LOCATION_METHOD_WPS);
+
+ if (priv->gps) {
+ g_signal_connect(priv->gps, "service-enabled", G_CALLBACK(hybrid_service_enabled), self);
+ g_signal_connect(priv->gps, "service-disabled", G_CALLBACK(hybrid_service_disabled), self);
+ g_signal_connect(priv->gps, "service-updated", G_CALLBACK(hybrid_service_updated), self);
+ g_signal_connect(priv->gps, "location-updated", G_CALLBACK(hybrid_location_updated), self);
+ }
+ if (priv->wps) {
+ g_signal_connect(priv->wps, "service-enabled", G_CALLBACK(hybrid_service_enabled), self);
+ g_signal_connect(priv->wps, "service-disabled", G_CALLBACK(hybrid_service_disabled), self);
+ g_signal_connect(priv->wps, "service-updated", G_CALLBACK(hybrid_service_updated), self);
+ g_signal_connect(priv->wps, "location-updated", G_CALLBACK(hybrid_location_updated), self);
+ }
+
+ hybrid_set_current_method(priv, LOCATION_TYPE_HYBRID);
+ priv->enabled = FALSE;
+
+ priv->pos = NULL;
+ priv->vel = NULL;
+ priv->acc = NULL;
+ priv->sat = NULL;
+
+ priv->boundary_list = NULL;
+}
+
+static void
+location_hybrid_class_init(LocationHybridClass *klass)
+{
+ LOCATION_LOGD("location_hybrid_class_init");
+ GObjectClass *gobject_class = G_OBJECT_CLASS(klass);
+
+ gobject_class->set_property = location_hybrid_set_property;
+ gobject_class->get_property = location_hybrid_get_property;
+
+ gobject_class->dispose = location_hybrid_dispose;
+ gobject_class->finalize = location_hybrid_finalize;
+
+ g_type_class_add_private(klass, sizeof(LocationHybridPrivate));
+
+ signals[SERVICE_ENABLED] = g_signal_new("service-enabled",
+ G_TYPE_FROM_CLASS(klass),
+ G_SIGNAL_RUN_FIRST |
+ G_SIGNAL_NO_RECURSE,
+ G_STRUCT_OFFSET(LocationHybridClass, enabled),
+ NULL, NULL,
+ location_VOID__UINT,
+ G_TYPE_NONE, 1,
+ G_TYPE_UINT);
+
+ signals[SERVICE_DISABLED] = g_signal_new("service-disabled",
+ G_TYPE_FROM_CLASS(klass),
+ G_SIGNAL_RUN_FIRST |
+ G_SIGNAL_NO_RECURSE,
+ G_STRUCT_OFFSET(LocationHybridClass, disabled),
+ NULL, NULL,
+ location_VOID__UINT,
+ G_TYPE_NONE, 1,
+ G_TYPE_UINT);
+
+ signals[SERVICE_UPDATED] = g_signal_new("service-updated",
+ G_TYPE_FROM_CLASS(klass),
+ G_SIGNAL_RUN_FIRST |
+ G_SIGNAL_NO_RECURSE,
+ G_STRUCT_OFFSET(LocationHybridClass, updated),
+ NULL, NULL,
+ location_VOID__INT_POINTER_POINTER_POINTER,
+ G_TYPE_NONE, 4,
+ G_TYPE_INT,
+ G_TYPE_POINTER,
+ G_TYPE_POINTER,
+ G_TYPE_POINTER);
+
+ signals[LOCATION_UPDATED] = g_signal_new("location-updated",
+ G_TYPE_FROM_CLASS(klass),
+ G_SIGNAL_RUN_FIRST |
+ G_SIGNAL_NO_RECURSE,
+ G_STRUCT_OFFSET(LocationHybridClass, location_updated),
+ NULL, NULL,
+ location_VOID__INT_POINTER_POINTER_POINTER,
+ G_TYPE_NONE, 4,
+ G_TYPE_INT,
+ G_TYPE_POINTER,
+ G_TYPE_POINTER,
+ G_TYPE_POINTER);
+
+ signals[ZONE_IN] = g_signal_new("zone-in",
+ G_TYPE_FROM_CLASS(klass),
+ G_SIGNAL_RUN_FIRST |
+ G_SIGNAL_NO_RECURSE,
+ G_STRUCT_OFFSET(LocationHybridClass, zone_in),
+ NULL, NULL,
+ location_VOID__POINTER_POINTER_POINTER,
+ G_TYPE_NONE, 3,
+ G_TYPE_POINTER,
+ G_TYPE_POINTER,
+ G_TYPE_POINTER);
+
+ signals[ZONE_OUT] = g_signal_new("zone-out",
+ G_TYPE_FROM_CLASS(klass),
+ G_SIGNAL_RUN_FIRST |
+ G_SIGNAL_NO_RECURSE,
+ G_STRUCT_OFFSET(LocationHybridClass, zone_out),
+ NULL, NULL,
+ location_VOID__POINTER_POINTER_POINTER,
+ G_TYPE_NONE, 3,
+ G_TYPE_POINTER,
+ G_TYPE_POINTER,
+ G_TYPE_POINTER);
+
+ properties[PROP_METHOD_TYPE] = g_param_spec_int("method",
+ "method type",
+ "location method type name",
+ LOCATION_METHOD_HYBRID,
+ LOCATION_METHOD_HYBRID,
+ LOCATION_METHOD_HYBRID,
+ G_PARAM_READABLE);
+
+ properties[PROP_LAST_POSITION] = g_param_spec_boxed("last-position",
+ "hybrid last position prop",
+ "hybrid last position data",
+ LOCATION_TYPE_POSITION,
+ G_PARAM_READABLE);
+
+ properties[PROP_POS_INTERVAL] = g_param_spec_uint("pos-interval",
+ "position interval prop",
+ "position interval data",
+ LOCATION_UPDATE_INTERVAL_MIN,
+ LOCATION_UPDATE_INTERVAL_MAX,
+ LOCATION_UPDATE_INTERVAL_DEFAULT,
+ G_PARAM_READWRITE);
+ properties[PROP_VEL_INTERVAL] = g_param_spec_uint("vel-interval",
+ "velocity interval prop",
+ "velocity interval data",
+ LOCATION_UPDATE_INTERVAL_MIN,
+ LOCATION_UPDATE_INTERVAL_MAX,
+ LOCATION_UPDATE_INTERVAL_DEFAULT,
+ G_PARAM_READWRITE);
+ properties[PROP_SAT_INTERVAL] = g_param_spec_uint("sat-interval",
+ "satellite interval prop",
+ "satellite interval data",
+ LOCATION_UPDATE_INTERVAL_MIN,
+ LOCATION_UPDATE_INTERVAL_MAX,
+ LOCATION_UPDATE_INTERVAL_DEFAULT,
+ G_PARAM_READWRITE);
+
+ properties[PROP_LOC_INTERVAL] = g_param_spec_uint("loc-interval",
+ "gps location interval prop",
+ "gps location interval data",
+ LOCATION_UPDATE_INTERVAL_MIN,
+ LOCATION_UPDATE_INTERVAL_MAX,
+ LOCATION_UPDATE_INTERVAL_DEFAULT,
+ G_PARAM_READWRITE);
+
+ properties[PROP_MIN_INTERVAL] = g_param_spec_uint("min-interval",
+ "gps distance-based interval prop",
+ "gps distance-based interval data",
+ LOCATION_MIN_INTERVAL_MIN,
+ LOCATION_MIN_INTERVAL_MAX,
+ LOCATION_MIN_INTERVAL_DEFAULT,
+ G_PARAM_READWRITE);
+
+ properties[PROP_MIN_DISTANCE] = g_param_spec_double("min-distance",
+ "gps distance-based distance prop",
+ "gps distance-based distance data",
+ LOCATION_MIN_DISTANCE_MIN,
+ LOCATION_MIN_DISTANCE_MAX,
+ LOCATION_MIN_DISTANCE_DEFAULT,
+ G_PARAM_READWRITE);
+
+ properties[PROP_BOUNDARY] = g_param_spec_pointer("boundary",
+ "hybrid boundary prop",
+ "hybrid boundary data",
+ G_PARAM_READWRITE);
+
+ properties[PROP_REMOVAL_BOUNDARY] = g_param_spec_boxed("removal-boundary",
+ "hybrid removal boundary prop",
+ "hybrid removal boundary data",
+ LOCATION_TYPE_BOUNDARY,
+ G_PARAM_READWRITE);
+
+ g_object_class_install_properties(gobject_class,
+ PROP_MAX,
+ properties);
+}
+++ /dev/null
-/*
- * libslp-location
- *
- * Copyright (c) 2010-2013 Samsung Electronics Co., Ltd. All rights reserved.
- *
- * Contact: Youngae Kang <youngae.kang@samsung.com>, Minjune Kim <sena06.kim@samsung.com>
- * Genie Kim <daejins.kim@samsung.com>
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "location-setting.h"
-#include "location-log.h"
-
-#include "module-internal.h"
-
-#include "location-hybrid.h"
-#include "location-marshal.h"
-#include "location-ielement.h"
-#include "location-signaling-util.h"
-#include "location-common-util.h"
-
-#include "location-gps.h"
-#include "location-wps.h"
-
-typedef struct _LocationHybridPrivate {
- gboolean gps_enabled;
- gboolean wps_enabled;
- guint pos_updated_timestamp;
- guint pos_interval;
- guint vel_updated_timestamp;
- guint vel_interval;
- guint sat_updated_timestamp;
- guint sat_interval;
- LocationObject *gps;
- LocationObject *wps;
- gboolean enabled;
- LocationMethod current_method;
- LocationPosition *pos;
- LocationVelocity *vel;
- LocationAccuracy *acc;
- LocationSatellite *sat;
- GList* boundary_list;
- gboolean set_noti;
- guint pos_timer;
- guint vel_timer;
-} LocationHybridPrivate;
-
-enum {
- PROP_0,
- PROP_METHOD_TYPE,
- PROP_LAST_POSITION,
- PROP_POS_INTERVAL,
- PROP_VEL_INTERVAL,
- PROP_SAT_INTERVAL,
- PROP_BOUNDARY,
- PROP_REMOVAL_BOUNDARY,
- PROP_MAX
-};
-
-static guint32 signals[LAST_SIGNAL] = {0, };
-static GParamSpec *properties[PROP_MAX] = {NULL, };
-
-#define GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), LOCATION_TYPE_HYBRID, LocationHybridPrivate))
-
-static void location_ielement_interface_init (LocationIElementInterface *iface);
-
-G_DEFINE_TYPE_WITH_CODE (LocationHybrid, location_hybrid, G_TYPE_OBJECT,
- G_IMPLEMENT_INTERFACE (LOCATION_TYPE_IELEMENT,
- location_ielement_interface_init));
-
-static LocationMethod
-hybrid_get_current_method(LocationHybridPrivate* priv)
-{
- g_return_val_if_fail (priv, LOCATION_METHOD_NONE);
- LOCATION_LOGW("Current Method [%d]\n", priv->current_method);
- return priv->current_method;
-}
-
-static gboolean
-hybrid_set_current_method (LocationHybridPrivate* priv, GType g_type)
-{
- g_return_val_if_fail (priv, FALSE);
-
- if (g_type == LOCATION_TYPE_GPS) {
- priv->current_method = LOCATION_METHOD_GPS;
-// LOCATION_LOGW("Set current Method [%d]\n", priv->current_method);
- } else if (g_type == LOCATION_TYPE_WPS) {
- priv->current_method = LOCATION_METHOD_WPS;
-// LOCATION_LOGW("Set current Method [%d]\n", priv->current_method);
- } else if (g_type == LOCATION_TYPE_HYBRID){
- priv->current_method = LOCATION_METHOD_HYBRID;
-// LOCATION_LOGW("Set current Method [%d]\n", priv->current_method);
- } else
- return FALSE;
-
- return TRUE;
-}
-
-
-static int
-hybrid_get_update_method (LocationHybridPrivate* priv)
-{
- if(!priv->gps && !priv->wps) return -1;
-
- if (priv->gps_enabled) {
- hybrid_set_current_method (priv, LOCATION_TYPE_GPS);
- } else if (priv->wps_enabled) {
- hybrid_set_current_method (priv, LOCATION_TYPE_WPS);
- } else {
- hybrid_set_current_method (priv,LOCATION_TYPE_HYBRID);
- }
-
- return 0;
-}
-
-#if 0
-static LocationObject *
-hybrid_get_current_object (LocationHybridPrivate* priv)
-{
- LocationMethod method = hybrid_get_current_method (priv);
-
- LocationObject *obj = NULL;
- switch (method) {
- case LOCATION_METHOD_GPS:
- obj = priv->gps;
- break;
- case LOCATION_METHOD_WPS:
- obj = priv->wps;
- break;
- default:
- break;
- }
-
- return obj;
-}
-#endif
-
-static gboolean /* True : Receive more accurate info. False : Receive less accurate info */
-hybrid_compare_g_type_method(LocationHybridPrivate *priv, GType g_type)
-{
- if (g_type == LOCATION_TYPE_GPS) {
- hybrid_set_current_method(priv, LOCATION_TYPE_GPS);
- return TRUE;
- } else if (g_type == LOCATION_TYPE_WPS && hybrid_get_current_method(priv) == LOCATION_METHOD_WPS) {
- hybrid_set_current_method(priv, LOCATION_TYPE_WPS);
- return TRUE;
- }
-
- return FALSE;
-}
-
-static gboolean
-_position_timeout_cb (gpointer data)
-{
- GObject *object = (GObject *)data;
- if (!object) return FALSE;
- LocationHybridPrivate *priv = GET_PRIVATE(object);
- g_return_val_if_fail(priv, FALSE);
-
- LocationPosition *pos = NULL;
- LocationAccuracy *acc = NULL;
-
- if (priv->pos) {
- pos = location_position_copy (priv->pos);
- }
- else {
- pos = location_position_new (0, 0.0, 0.0, 0.0, LOCATION_STATUS_NO_FIX);
- }
-
- if (priv->acc) {
- acc = location_accuracy_copy (priv->acc);
- }
- else {
- acc = location_accuracy_new (LOCATION_ACCURACY_LEVEL_NONE, 0.0, 0.0);
- }
-
- g_signal_emit(object, signals[SERVICE_UPDATED], 0, POSITION_UPDATED, pos, acc);
-
- location_position_free (pos);
- location_accuracy_free (acc);
-
- return TRUE;
-}
-
-static gboolean
-_velocity_timeout_cb (gpointer data)
-{
- GObject *object = (GObject *)data;
- LocationHybridPrivate *priv = GET_PRIVATE(object);
- g_return_val_if_fail(priv, FALSE);
-
- LocationVelocity *vel = NULL;
- LocationAccuracy *acc = NULL;
-
- if (priv->vel) {
- vel = location_velocity_copy(priv->vel);
- }
- else {
- vel = location_velocity_new (0, 0.0, 0.0, 0.0);
- }
-
- if (priv->acc) {
- acc = location_accuracy_copy (priv->acc);
- }
- else {
- acc = location_accuracy_new (LOCATION_ACCURACY_LEVEL_NONE, 0.0, 0.0);
- }
-
- g_signal_emit(object, signals[SERVICE_UPDATED], 0, VELOCITY_UPDATED, vel, acc);
-
- location_velocity_free (vel);
- location_accuracy_free (acc);
-
- return TRUE;
-}
-
-static void
-location_hybrid_state_cb (keynode_t *key, gpointer self)
-{
- LOCATION_LOGD("location_hybrid_state_cb");
- g_return_if_fail (key);
- g_return_if_fail (self);
- LocationHybridPrivate *priv = GET_PRIVATE(self);
- g_return_if_fail(priv);
-
- if (location_setting_get_key_val (key) == VCONFKEY_LOCATION_POSITION_SEARCHING) {
- if (!priv->pos_timer) priv->pos_timer = g_timeout_add (priv->pos_interval * 1000, _position_timeout_cb, self);
- if (!priv->vel_timer) priv->vel_timer = g_timeout_add (priv->vel_interval * 1000, _velocity_timeout_cb, self);
-
- }
- else {
- if (priv->pos_timer) g_source_remove (priv->pos_timer);
- if (priv->vel_timer) g_source_remove (priv->vel_timer);
-
- priv->pos_timer = 0;
- priv->vel_timer = 0;
- }
-}
-
-static void
-location_hybrid_gps_cb (keynode_t *key,
- gpointer self)
-{
- LOCATION_LOGD("location_hybrid_gps_cb");
- g_return_if_fail(key);
- g_return_if_fail(self);
- LocationHybridPrivate *priv = GET_PRIVATE(self);
- g_return_if_fail (priv);
- g_return_if_fail (priv->wps);
-
- gboolean wps_started = FALSE;
- int ret = LOCATION_ERROR_NONE;
- int onoff = 0;
-
- onoff = location_setting_get_key_val(key);
- if (0 == onoff) {
- /* restart WPS when GSP stopped by setting */
- g_object_get(priv->wps, "is_started", &wps_started, NULL);
- if (wps_started == FALSE && 1 == location_setting_get_int(VCONFKEY_LOCATION_NETWORK_ENABLED)) {
- LOCATION_LOGD ("GPS stoped by setting, so restart WPS");
- ret = location_start(priv->wps);
- if (ret != LOCATION_ERROR_NONE) {
- LOCATION_LOGW("Fail hyhrid/wps location_start : [%d]", ret);
- return;
- }
- }
- } else if (1 == onoff) {
- LOCATION_LOGD("Hybrid GPS resumed by setting");
-
- } else {
- LOCATION_LOGD("Invalid Value[%d]", onoff);
- }
-
-}
-
-static void
-hybrid_location_updated (GObject *obj,
- guint error,
- gpointer position,
- gpointer velocity,
- gpointer accuracy,
- gpointer self)
-{
- LocationPosition *pos = (LocationPosition*)position;
- LocationVelocity *vel = (LocationVelocity*)velocity;
- LocationAccuracy *acc = (LocationAccuracy*)accuracy;
-
- LocationHybridPrivate* priv = GET_PRIVATE((LocationHybrid*)self);
- g_return_if_fail(priv);
-
- g_signal_emit(self, signals[LOCATION_UPDATED], LOCATION_ERROR_NONE, 0, pos, vel, acc);
-}
-
-static void
-hybrid_service_updated (GObject *obj,
- guint type,
- gpointer data,
- gpointer accuracy,
- gpointer self)
-{
- LocationPosition *pos = NULL;
- LocationVelocity *vel = NULL;
- LocationSatellite *sat = NULL;
- gboolean wps_started = FALSE;
- int ret = LOCATION_ERROR_NONE;
-
- /* To discard invalid data in a hybrid */
- switch (type) {
- case POSITION_UPDATED: {
- pos = (LocationPosition *)data;
- if (!pos->timestamp) return;
- break;
- }
- case VELOCITY_UPDATED: {
- vel = (LocationVelocity *)data;
- if (!vel->timestamp) return;
- break;
- }
- case SATELLITE_UPDATED: {
- sat = (LocationSatellite *)data;
- if (!sat->timestamp) return;
- break;
- }
- }
-
- LocationHybridPrivate* priv = GET_PRIVATE((LocationHybrid*)self);
- g_return_if_fail(priv);
- GType g_type = G_TYPE_FROM_INSTANCE(obj);
- if (g_type == LOCATION_TYPE_GPS) {
- if (type == SATELLITE_UPDATED) {
- satellite_signaling(self, signals, &(priv->enabled), priv->sat_interval, TRUE, &(priv->sat_updated_timestamp), &(priv->sat), sat);
- return ;
- }
- else if (location_setting_get_int (VCONFKEY_LOCATION_GPS_STATE) == VCONFKEY_LOCATION_GPS_SEARCHING) {
- LOCATION_LOGD ("Searching GPS");
-
- /* restart WPS when GSP not available */
- g_object_get(priv->wps, "is_started", &wps_started, NULL);
- if (priv->wps && wps_started == FALSE) {
- ret = location_start(priv->wps);
- if (ret != LOCATION_ERROR_NONE) {
- LOCATION_LOGW("Fail hyhrid location_start : [%d]", ret);
- return;
- }
- }
- return;
- }
-
- }
- else if (g_type == LOCATION_TYPE_WPS && location_setting_get_int (VCONFKEY_LOCATION_WPS_STATE) == VCONFKEY_LOCATION_WPS_SEARCHING) {
- LOCATION_LOGD ("Searching WPS");
- return;
- }
-
- if (hybrid_compare_g_type_method(priv, g_type)) {
- LocationAccuracy *acc = (LocationAccuracy*)accuracy;
- if (type == POSITION_UPDATED) {
- if (priv->pos) location_position_free(priv->pos);
- if (priv->acc) location_accuracy_free(priv->acc);
- priv->pos = location_position_copy(pos);
- priv->acc = location_accuracy_copy(acc);
- if (!priv->enabled) {
- enable_signaling(self, signals, &(priv->enabled), TRUE, pos->status);
- }
- position_signaling(self, signals, priv->pos_interval, &(priv->pos_updated_timestamp), priv->boundary_list, pos, acc);
-
- /* if receive GPS position then stop WPS.. */
- g_object_get(priv->wps, "is_started", &wps_started, NULL);
- if (LOCATION_TYPE_GPS == g_type && wps_started == TRUE) {
- ret = location_stop(priv->wps);
- if (ret != LOCATION_ERROR_NONE) {
- LOCATION_LOGW("Fail hybrid location_stop : [%d]", ret);
- return;
- }
- }
-
- } else if (type == VELOCITY_UPDATED) {
- if (priv->vel) location_velocity_free(priv->vel);
- priv->vel = location_velocity_copy(vel);
- velocity_signaling(self, signals, priv->vel_interval, &(priv->vel_updated_timestamp), vel, acc);
- }
-
- } else if (type == POSITION_UPDATED && priv->pos) {
- if (pos->timestamp - priv->pos->timestamp > HYBRID_POSITION_EXPIRATION_TIME) {
- hybrid_set_current_method(priv, g_type);
- }
- }
-}
-
-static void
-hybrid_service_enabled (GObject *obj,
- guint status,
- gpointer self)
-{
- LOCATION_LOGD ("hybrid_service_enabled");
- LocationHybridPrivate* priv = GET_PRIVATE((LocationHybrid*)self);
- g_return_if_fail(priv);
- GType g_type = G_TYPE_FROM_INSTANCE(obj);
- if(g_type == LOCATION_TYPE_GPS) {
- priv->gps_enabled = TRUE;
- } else if(g_type == LOCATION_TYPE_WPS) {
- priv->wps_enabled = TRUE;
- } else {
- LOCATION_LOGW("Undefined GType enabled");
- return;
- }
- hybrid_get_update_method(priv);
-}
-
-static void
-hybrid_service_disabled (GObject *obj,
- guint status,
- gpointer self)
-{
- LOCATION_LOGD ("hybrid_service_disabled");
- LocationHybridPrivate* priv = GET_PRIVATE((LocationHybrid*)self);
- g_return_if_fail(priv);
- GType g_type = G_TYPE_FROM_INSTANCE(obj);
- if(g_type == LOCATION_TYPE_GPS) {
- priv->gps_enabled = FALSE;
- } else if(g_type == LOCATION_TYPE_WPS) {
- priv->wps_enabled = FALSE;
- } else {
- LOCATION_LOGW("Undefined GType disabled");
- return;
- }
- hybrid_get_update_method(priv);
- if(!priv->gps_enabled && !priv->wps_enabled)
- enable_signaling(self, signals, &(priv->enabled), FALSE, status);
-
-}
-
-static int
-location_hybrid_start (LocationHybrid *self)
-{
- LOCATION_LOGD("location_hybrid_start");
-
- int ret_gps = LOCATION_ERROR_NOT_AVAILABLE;
- int ret_wps = LOCATION_ERROR_NOT_AVAILABLE;
- gboolean gps_started = FALSE;
- gboolean wps_started = FALSE;
-
- LocationHybridPrivate* priv = GET_PRIVATE(self);
- g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
-
- g_object_get(priv->gps, "is_started", &gps_started, NULL);
- g_object_get(priv->wps, "is_started", &wps_started, NULL);
-
- if ((gps_started == TRUE) || (wps_started == TRUE)) {
- LOCATION_LOGD("Already started");
- return LOCATION_ERROR_NONE;
- }
-
- if (priv->gps) ret_gps = location_start(priv->gps);
- if (priv->wps) ret_wps = location_start(priv->wps);
-
- if (ret_gps != LOCATION_ERROR_NONE && ret_wps != LOCATION_ERROR_NONE) {
- if (ret_gps == LOCATION_ERROR_SECURITY_DENIED || ret_wps == LOCATION_ERROR_SECURITY_DENIED) {
- return LOCATION_ERROR_SECURITY_DENIED;
- } else if (ret_gps == LOCATION_ERROR_SETTING_OFF && ret_wps == LOCATION_ERROR_SETTING_OFF) {
- return LOCATION_ERROR_SETTING_OFF;
- } else if (ret_gps == LOCATION_ERROR_NOT_ALLOWED && ret_wps == LOCATION_ERROR_NOT_ALLOWED) {
- return LOCATION_ERROR_NOT_ALLOWED;
- } else {
- return LOCATION_ERROR_NOT_AVAILABLE;
- }
- }
-
- if (priv->set_noti == FALSE) {
- location_setting_add_notify (VCONFKEY_LOCATION_POSITION_STATE, location_hybrid_state_cb, self);
- location_setting_add_notify (VCONFKEY_LOCATION_ENABLED, location_hybrid_gps_cb, self);
- priv->set_noti = TRUE;
- }
-
- return LOCATION_ERROR_NONE;
-}
-
-static int
-location_hybrid_stop (LocationHybrid *self)
-{
- LOCATION_LOGD("location_hybrid_stop");
-
- LocationHybridPrivate* priv = GET_PRIVATE(self);
- g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
-
- int ret_gps = LOCATION_ERROR_NOT_AVAILABLE;
- int ret_wps = LOCATION_ERROR_NOT_AVAILABLE;
- gboolean gps_started = FALSE;
- gboolean wps_started = FALSE;
-
- g_object_get(priv->gps, "is_started", &gps_started, NULL);
- g_object_get(priv->wps, "is_started", &wps_started, NULL);
-
- if ((gps_started == FALSE) && (wps_started == FALSE)) {
- return LOCATION_ERROR_NONE;
- }
-
- if (priv->gps) ret_gps = location_stop(priv->gps);
- if (priv->wps) ret_wps = location_stop(priv->wps);
-
- if (ret_gps != LOCATION_ERROR_NONE && ret_wps != LOCATION_ERROR_NONE)
- return LOCATION_ERROR_NOT_AVAILABLE;
-
- if (priv->pos_timer) g_source_remove (priv->pos_timer);
- if (priv->vel_timer) g_source_remove (priv->vel_timer);
- priv->pos_timer = 0;
- priv->vel_timer = 0;
-
- if (priv->set_noti == TRUE) {
- location_setting_ignore_notify (VCONFKEY_LOCATION_POSITION_STATE, location_hybrid_state_cb);
- location_setting_ignore_notify (VCONFKEY_LOCATION_ENABLED, location_hybrid_gps_cb);
- priv->set_noti = FALSE;
- }
-
- return LOCATION_ERROR_NONE;
-}
-
-static void
-location_hybrid_dispose (GObject *gobject)
-{
- LOCATION_LOGD("location_hybrid_dispose");
- LocationHybridPrivate *priv = GET_PRIVATE(gobject);
- g_return_if_fail(priv);
-
- if (priv->pos_timer) g_source_remove (priv->pos_timer);
- if (priv->vel_timer) g_source_remove (priv->vel_timer);
- priv->pos_timer = 0;
- priv->vel_timer = 0;
-
- if (priv->set_noti == TRUE) {
- location_setting_ignore_notify (VCONFKEY_LOCATION_POSITION_STATE, location_hybrid_state_cb);
- location_setting_ignore_notify (VCONFKEY_LOCATION_ENABLED, location_hybrid_gps_cb);
- priv->set_noti = FALSE;
- }
-
- G_OBJECT_CLASS (location_hybrid_parent_class)->dispose (gobject);
-}
-
-static void
-location_hybrid_finalize (GObject *gobject)
-{
- LOCATION_LOGD("location_hybrid_finalize");
- LocationHybridPrivate* priv = GET_PRIVATE(gobject);
- g_return_if_fail(priv);
-
- if (priv->gps) {
- g_signal_handlers_disconnect_by_func(priv->gps, G_CALLBACK (hybrid_service_enabled), gobject);
- g_signal_handlers_disconnect_by_func(priv->gps, G_CALLBACK (hybrid_service_disabled), gobject);
- g_signal_handlers_disconnect_by_func(priv->gps, G_CALLBACK (hybrid_service_updated), gobject);
- g_signal_handlers_disconnect_by_func(priv->gps, G_CALLBACK (hybrid_location_updated), gobject);
- location_free(priv->gps);
- }
- if (priv->wps) {
- g_signal_handlers_disconnect_by_func(priv->wps, G_CALLBACK (hybrid_service_enabled), gobject);
- g_signal_handlers_disconnect_by_func(priv->wps, G_CALLBACK (hybrid_service_disabled), gobject);
- g_signal_handlers_disconnect_by_func(priv->wps, G_CALLBACK (hybrid_service_updated), gobject);
- g_signal_handlers_disconnect_by_func(priv->wps, G_CALLBACK (hybrid_location_updated), gobject);
- location_free(priv->wps);
- }
-
- if (priv->boundary_list) {
- g_list_free_full(priv->boundary_list, free_boundary_list);
- priv->boundary_list = NULL;
- }
-
- if (priv->pos) {
- location_position_free(priv->pos);
- priv->pos = NULL;
- }
-
- if (priv->vel) {
- location_velocity_free(priv->vel);
- priv->vel = NULL;
- }
-
- if (priv->acc) {
- location_accuracy_free(priv->acc);
- priv->acc = NULL;
- }
-
- if (priv->sat) {
- location_satellite_free(priv->sat);
- priv->sat = NULL;
- }
-
- G_OBJECT_CLASS (location_hybrid_parent_class)->finalize (gobject);
-}
-
-static void
-location_hybrid_set_property (GObject *object,
- guint property_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- LocationHybridPrivate* priv = GET_PRIVATE(object);
- g_return_if_fail(priv);
- if (!priv->gps && !priv->wps) {
- LOCATION_LOGW("Set property is not available now");
- return;
- }
-
- int ret = 0;
- switch (property_id){
- case PROP_BOUNDARY:{
- GList *boundary_list = (GList *)g_list_copy(g_value_get_pointer(value));
- ret = set_prop_boundary(&priv->boundary_list, boundary_list);
- if(ret != 0) LOCATION_LOGD("Set boundary. Error[%d]", ret);
- break;
- }
- case PROP_REMOVAL_BOUNDARY: {
- LocationBoundary *req_boundary = (LocationBoundary*) g_value_dup_boxed(value);
- ret = set_prop_removal_boundary(&priv->boundary_list, req_boundary);
- if(ret != 0) LOCATION_LOGD("Removal boundary. Error[%d]", ret);
- break;
- }
- case PROP_POS_INTERVAL: {
- guint interval = g_value_get_uint(value);
- if(interval > 0) {
- if(interval < LOCATION_UPDATE_INTERVAL_MAX)
- priv->pos_interval = interval;
- else
- priv->pos_interval = (guint) LOCATION_UPDATE_INTERVAL_MAX;
-
- }
- else {
- priv->pos_interval = LOCATION_UPDATE_INTERVAL_DEFAULT;
- }
-
- if (priv->pos_timer) {
- g_source_remove (priv->pos_timer);
- priv->pos_timer = g_timeout_add (priv->pos_interval * 1000, _position_timeout_cb, object);
- }
-
- if (priv->gps)
- g_object_set(priv->gps, "pos-interval", priv->pos_interval, NULL);
-
- if (priv->wps)
- g_object_set(priv->wps, "pos-interval", priv->pos_interval, NULL);
-
- break;
- }
- case PROP_VEL_INTERVAL: {
- guint interval = g_value_get_uint(value);
- if(interval > 0) {
- if(interval < LOCATION_UPDATE_INTERVAL_MAX)
- priv->vel_interval = interval;
- else
- priv->vel_interval = (guint) LOCATION_UPDATE_INTERVAL_MAX;
-
- }
- else
- priv->vel_interval = LOCATION_UPDATE_INTERVAL_DEFAULT;
-
- if (priv->vel_timer) {
- g_source_remove (priv->vel_timer);
- priv->vel_timer = g_timeout_add (priv->vel_interval * 1000, _velocity_timeout_cb, object);
- }
-
- break;
- }
- case PROP_SAT_INTERVAL: {
- guint interval = g_value_get_uint(value);
- if(interval > 0) {
- if(interval < LOCATION_UPDATE_INTERVAL_MAX)
- priv->sat_interval = interval;
- else
- priv->sat_interval = (guint) LOCATION_UPDATE_INTERVAL_MAX;
-
- }
- else
- priv->sat_interval = LOCATION_UPDATE_INTERVAL_DEFAULT;
-
- break;
- }
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
- break;
- }
-}
-
-static void
-location_hybrid_get_property (GObject *object,
- guint property_id,
- GValue *value,
- GParamSpec *pspec)
-{
- LocationHybridPrivate *priv = GET_PRIVATE (object);
- g_return_if_fail(priv);
- if(!priv->gps && !priv->wps){
- LOCATION_LOGW("Get property is not available now");
- return;
- }
-
- LOCATION_LOGW("Get Propery ID[%d]", property_id);
-
- switch (property_id){
- case PROP_METHOD_TYPE:
- g_value_set_int(value, hybrid_get_current_method (priv));
- break;
- case PROP_LAST_POSITION:
- g_value_set_boxed(value, priv->pos);
- break;
- case PROP_BOUNDARY:
- g_value_set_pointer(value, g_list_first(priv->boundary_list));
- break;
- case PROP_POS_INTERVAL:
- g_value_set_uint(value, priv->pos_interval);
- break;
- case PROP_VEL_INTERVAL:
- g_value_set_uint(value, priv->vel_interval);
- break;
- case PROP_SAT_INTERVAL:
- g_value_set_uint(value, priv->sat_interval);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
- break;
- }
-}
-
-static int
-location_hybrid_get_position (LocationHybrid *self,
- LocationPosition **position,
- LocationAccuracy **accuracy)
-{
- int ret = LOCATION_ERROR_NOT_AVAILABLE;
- LOCATION_LOGD("location_hybrid_get_position");
- if (!location_setting_get_int(VCONFKEY_LOCATION_ENABLED) && !location_setting_get_int(VCONFKEY_LOCATION_NETWORK_ENABLED)) {
- return LOCATION_ERROR_SETTING_OFF;
- }
-
- LocationHybridPrivate *priv = GET_PRIVATE (self);
- g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
-
- if (priv->pos) {
- *position = location_position_copy (priv->pos);
- ret = LOCATION_ERROR_NONE;
- }
-
- if (priv->acc) {
- *accuracy = location_accuracy_copy (priv->acc);
- }
-
- return ret;
-}
-
-static int
-location_hybrid_get_position_ext (LocationHybrid *self,
- LocationPosition **position,
- LocationVelocity **velocity,
- LocationAccuracy **accuracy)
-{
- LOCATION_LOGD("location_hybrid_get_position_ext");
- if (!location_setting_get_int(VCONFKEY_LOCATION_ENABLED) && !location_setting_get_int(VCONFKEY_LOCATION_NETWORK_ENABLED)) {
- return LOCATION_ERROR_SETTING_OFF;
- }
-
- LocationHybridPrivate *priv = GET_PRIVATE (self);
- g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
-
- if (priv->pos && priv->vel) {
- *position = location_position_copy (priv->pos);
- *velocity = location_velocity_copy (priv->vel);
- }
- else {
- LOCATION_LOGE("There is invalid data.");
- return LOCATION_ERROR_NOT_AVAILABLE;
- }
-
- if (priv->acc) {
- *accuracy = location_accuracy_copy (priv->acc);
- }
- else {
- *accuracy = location_accuracy_new (LOCATION_ACCURACY_LEVEL_NONE, 0.0, 0.0);
- }
-
- return LOCATION_ERROR_NONE;
-}
-
-
-static int
-location_hybrid_get_last_position (LocationHybrid *self,
- LocationPosition **position,
- LocationAccuracy **accuracy)
-{
- LOCATION_LOGD("location_hybrid_get_last_position");
-
- int ret = LOCATION_ERROR_NONE;
- LocationPosition *gps_pos = NULL, *wps_pos = NULL;
- LocationAccuracy *gps_acc = NULL, *wps_acc = NULL;
- LocationHybridPrivate *priv = GET_PRIVATE (self);
- g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
-
- if (priv->gps) location_get_last_position (priv->gps, &gps_pos, &gps_acc);
- if (priv->wps) location_get_last_position (priv->wps, &wps_pos, &wps_acc);
-
- if (gps_pos && wps_pos) {
- if (wps_pos->timestamp > gps_pos->timestamp) {
- *position = wps_pos;
- *accuracy = wps_acc;
- location_position_free (gps_pos);
- location_accuracy_free (gps_acc);
- }
- else {
- *position = gps_pos;
- *accuracy = gps_acc;
- location_position_free (wps_pos);
- location_accuracy_free (wps_acc);
- }
- } else if (gps_pos) {
- *position = gps_pos;
- *accuracy = gps_acc;
- } else if (wps_pos) {
- *position = wps_pos;
- *accuracy = wps_acc;
- } else {
- ret = LOCATION_ERROR_NOT_AVAILABLE;
- }
-
- return ret;
-}
-
-static int
-location_hybrid_get_last_position_ext (LocationHybrid *self,
- LocationPosition **position,
- LocationVelocity **velocity,
- LocationAccuracy **accuracy)
-{
- LOCATION_LOGD("location_hybrid_get_last_position_ext");
-
- int ret = LOCATION_ERROR_NONE;
- LocationPosition *gps_pos = NULL, *wps_pos = NULL;
- LocationVelocity *gps_vel = NULL, *wps_vel = NULL;
- LocationAccuracy *gps_acc = NULL, *wps_acc = NULL;
- LocationHybridPrivate *priv = GET_PRIVATE (self);
- g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
-
- if (priv->gps) location_get_last_position_ext (priv->gps, &gps_pos, &gps_vel, &gps_acc);
- if (priv->wps) location_get_last_position_ext (priv->wps, &wps_pos, &wps_vel, &wps_acc);
-
- if (gps_pos && wps_pos && gps_vel && wps_vel) {
- if (wps_pos->timestamp > gps_pos->timestamp) {
- *position = wps_pos;
- *velocity = wps_vel;
- *accuracy = wps_acc;
- location_position_free (gps_pos);
- location_velocity_free (gps_vel);
- location_accuracy_free (gps_acc);
- }
- else {
- *position = gps_pos;
- *velocity = gps_vel;
- *accuracy = gps_acc;
- location_position_free (wps_pos);
- location_velocity_free (wps_vel);
- location_accuracy_free (wps_acc);
- }
- } else if (gps_pos && gps_vel) {
- *position = gps_pos;
- *velocity = gps_vel;
- *accuracy = gps_acc;
- } else if (wps_pos && wps_vel) {
- *position = wps_pos;
- *velocity = wps_vel;
- *accuracy = wps_acc;
- } else {
- ret = LOCATION_ERROR_NOT_AVAILABLE;
- }
-
- return ret;
-}
-
-static int
-location_hybrid_get_velocity (LocationHybrid *self,
- LocationVelocity **velocity,
- LocationAccuracy **accuracy)
-{
- int ret = LOCATION_ERROR_NOT_AVAILABLE;
- LOCATION_LOGD("location_hybrid_get_velocity");
- if (!location_setting_get_int(VCONFKEY_LOCATION_ENABLED) && !location_setting_get_int(VCONFKEY_LOCATION_NETWORK_ENABLED)) {
- return LOCATION_ERROR_SETTING_OFF;
- }
-
- LocationHybridPrivate *priv = GET_PRIVATE (self);
- g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
-
- if (priv->vel) {
- *velocity = location_velocity_copy (priv->vel);
- ret = LOCATION_ERROR_NONE;
- }
-
- if (priv->acc) {
- *accuracy = location_accuracy_copy (priv->acc);
- }
-
- return ret;
-}
-
-static int
-location_hybrid_get_last_velocity (LocationHybrid *self,
- LocationVelocity **velocity,
- LocationAccuracy **accuracy)
-{
- LOCATION_LOGD("location_hybrid_get_last_velocity");
-
- int ret = LOCATION_ERROR_NONE;
- LocationHybridPrivate *priv = GET_PRIVATE (self);
- g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
- LocationVelocity *gps_vel = NULL, *wps_vel = NULL;
- LocationAccuracy *gps_acc = NULL, *wps_acc = NULL;
-
- if (priv->gps) location_get_last_velocity (priv->gps, &gps_vel, &gps_acc);
- if (priv->wps) location_get_last_velocity (priv->wps, &wps_vel, &wps_acc);
-
- if (gps_vel && wps_vel) {
- if (wps_vel->timestamp > gps_vel->timestamp) {
- *velocity = wps_vel;
- *accuracy = wps_acc;
- location_velocity_free (gps_vel);
- location_accuracy_free (gps_acc);
- } else {
- *velocity = gps_vel;
- *accuracy = gps_acc;
- location_velocity_free (wps_vel);
- location_accuracy_free (wps_acc);
- }
- }
- else if (gps_vel) {
- *velocity = gps_vel;
- *accuracy = gps_acc;
- } else if (wps_vel) {
- *velocity = wps_vel;
- *accuracy = wps_acc;
- } else {
- *velocity = NULL;
- *accuracy = NULL;
- ret = LOCATION_ERROR_NOT_AVAILABLE;
- }
-
- return ret;
-}
-
-static int
-location_hybrid_get_satellite (LocationHybrid *self,
- LocationSatellite **satellite)
-{
- int ret = LOCATION_ERROR_NOT_AVAILABLE;
- LOCATION_LOGD("location_hybrid_get_satellite");
- if (!location_setting_get_int(VCONFKEY_LOCATION_ENABLED) && !location_setting_get_int(VCONFKEY_LOCATION_NETWORK_ENABLED)) {
- return LOCATION_ERROR_SETTING_OFF;
- }
-
- LocationHybridPrivate *priv = GET_PRIVATE (self);
- g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
- if (priv->sat) {
- *satellite = location_satellite_copy (priv->sat);
- ret = LOCATION_ERROR_NONE;
- }
-
- return ret;
-}
-
-static int
-location_hybrid_get_last_satellite (LocationHybrid *self,
- LocationSatellite **satellite)
-{
- LOCATION_LOGD("location_hybrid_get_last_satellite");
-
- int ret = LOCATION_ERROR_NONE;
- LocationHybridPrivate *priv = GET_PRIVATE (self);
- g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
-
- if (priv->gps) {
- ret = location_get_last_satellite (priv->gps, satellite);
- } else {
- *satellite = NULL;
- ret = LOCATION_ERROR_NOT_AVAILABLE;
- }
-
- return ret;
-}
-
-static int
-location_hybrid_set_option (LocationHybrid *self, const char *option)
-{
- LOCATION_LOGD("location_hybrid_set_option");
- LocationHybridPrivate *priv = GET_PRIVATE (self);
- g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
-
- int ret_gps = LOCATION_ERROR_NOT_AVAILABLE;
- int ret_wps = LOCATION_ERROR_NOT_AVAILABLE;
-
- if (priv->gps) ret_gps = location_set_option(priv->gps, option);
- if (priv->wps) ret_wps = location_set_option(priv->wps, option);
-
- if (ret_gps != LOCATION_ERROR_NONE && ret_wps != LOCATION_ERROR_NONE)
- return LOCATION_ERROR_NOT_AVAILABLE;
-
- return LOCATION_ERROR_NONE;
-}
-
-static int
-location_hybrid_request_single_location (LocationHybrid *self, int timeout)
-{
- LOCATION_LOGD("location_hybrid_request_single_location");
- LocationHybridPrivate* priv = GET_PRIVATE(self);
- g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
-
- int ret = LOCATION_ERROR_NONE;
-
- if (priv->gps) {
- ret = location_request_single_location(priv->gps, timeout);
- } else {
- ret = location_request_single_location(priv->wps, timeout);
- }
-
- return ret;
-}
-
-static void
-location_ielement_interface_init (LocationIElementInterface *iface)
-{
- iface->start = (TYPE_START_FUNC)location_hybrid_start;
- iface->stop = (TYPE_STOP_FUNC)location_hybrid_stop;
- iface->get_position = (TYPE_GET_POSITION)location_hybrid_get_position;
- iface->get_position_ext = (TYPE_GET_POSITION_EXT)location_hybrid_get_position_ext;
- iface->get_last_position = (TYPE_GET_POSITION)location_hybrid_get_last_position;
- iface->get_last_position_ext = (TYPE_GET_POSITION_EXT)location_hybrid_get_last_position_ext;
- iface->get_velocity = (TYPE_GET_VELOCITY)location_hybrid_get_velocity;
- iface->get_last_velocity = (TYPE_GET_VELOCITY)location_hybrid_get_last_velocity;
- iface->get_satellite = (TYPE_GET_SATELLITE)location_hybrid_get_satellite;
- iface->get_last_satellite = (TYPE_GET_SATELLITE)location_hybrid_get_last_satellite;
- iface->set_option = (TYPE_SET_OPTION)location_hybrid_set_option;
- iface->request_single_location = (TYPE_REQUEST_SINGLE_LOCATION)location_hybrid_request_single_location;
-}
-
-static void
-location_hybrid_init (LocationHybrid *self)
-{
- LOCATION_LOGD("location_hybrid_init");
- LocationHybridPrivate* priv = GET_PRIVATE(self);
- g_return_if_fail(priv);
-
- priv->pos_interval = LOCATION_UPDATE_INTERVAL_DEFAULT;
- priv->vel_interval = LOCATION_UPDATE_INTERVAL_DEFAULT;
- priv->sat_interval = LOCATION_UPDATE_INTERVAL_DEFAULT;
-
- priv->pos_updated_timestamp = 0;
- priv->vel_updated_timestamp = 0;
- priv->sat_updated_timestamp = 0;
-
- priv->gps_enabled = FALSE;
- priv->wps_enabled = FALSE;
-
- priv->gps = NULL;
- priv->wps = NULL;
-
- priv->set_noti = FALSE;
-
- priv->pos_timer = 0;
- priv->vel_timer = 0;
-
- if(location_is_supported_method(LOCATION_METHOD_GPS)) priv->gps = location_new (LOCATION_METHOD_GPS);
- if(location_is_supported_method(LOCATION_METHOD_WPS)) priv->wps = location_new (LOCATION_METHOD_WPS);
-
- if(priv->gps){
- g_signal_connect (priv->gps, "service-enabled", G_CALLBACK(hybrid_service_enabled), self);
- g_signal_connect (priv->gps, "service-disabled", G_CALLBACK(hybrid_service_disabled), self);
- g_signal_connect (priv->gps, "service-updated", G_CALLBACK(hybrid_service_updated), self);
- g_signal_connect (priv->gps, "location-updated", G_CALLBACK(hybrid_location_updated), self);
- }
- if(priv->wps){
- g_signal_connect (priv->wps, "service-enabled", G_CALLBACK(hybrid_service_enabled), self);
- g_signal_connect (priv->wps, "service-disabled", G_CALLBACK(hybrid_service_disabled), self);
- g_signal_connect (priv->wps, "service-updated", G_CALLBACK(hybrid_service_updated), self);
- g_signal_connect (priv->wps, "location-updated", G_CALLBACK(hybrid_location_updated), self);
- }
-
- hybrid_set_current_method (priv, LOCATION_TYPE_HYBRID);
- priv->enabled= FALSE;
-
- priv->pos = NULL;
- priv->vel = NULL;
- priv->acc = NULL;
- priv->sat = NULL;
-
- priv->boundary_list = NULL;
-}
-
-static void
-location_hybrid_class_init (LocationHybridClass *klass)
-{
- LOCATION_LOGD("location_hybrid_class_init");
- GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
-
- gobject_class->set_property = location_hybrid_set_property;
- gobject_class->get_property = location_hybrid_get_property;
-
- gobject_class->dispose = location_hybrid_dispose;
- gobject_class->finalize = location_hybrid_finalize;
-
- g_type_class_add_private (klass, sizeof (LocationHybridPrivate));
-
- signals[SERVICE_ENABLED] = g_signal_new ("service-enabled",
- G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_FIRST |
- G_SIGNAL_NO_RECURSE,
- G_STRUCT_OFFSET (LocationHybridClass, enabled),
- NULL, NULL,
- location_VOID__UINT,
- G_TYPE_NONE, 1,
- G_TYPE_UINT);
-
- signals[SERVICE_DISABLED] = g_signal_new ("service-disabled",
- G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_FIRST |
- G_SIGNAL_NO_RECURSE,
- G_STRUCT_OFFSET (LocationHybridClass, disabled),
- NULL, NULL,
- location_VOID__UINT,
- G_TYPE_NONE, 1,
- G_TYPE_UINT);
-
- signals[SERVICE_UPDATED] = g_signal_new ("service-updated",
- G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_FIRST |
- G_SIGNAL_NO_RECURSE,
- G_STRUCT_OFFSET (LocationHybridClass, updated),
- NULL, NULL,
- location_VOID__UINT_POINTER_POINTER,
- G_TYPE_NONE, 3,
- G_TYPE_UINT,
- G_TYPE_POINTER,
- G_TYPE_POINTER);
-
- signals[LOCATION_UPDATED] = g_signal_new ("location-updated",
- G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_FIRST |
- G_SIGNAL_NO_RECURSE,
- G_STRUCT_OFFSET (LocationHybridClass, location_update),
- NULL, NULL,
- location_VOID__INT_POINTER_POINTER_POINTER,
- G_TYPE_NONE, 4,
- G_TYPE_INT,
- G_TYPE_POINTER,
- G_TYPE_POINTER,
- G_TYPE_POINTER);
-
- signals[ZONE_IN] = g_signal_new ("zone-in",
- G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_FIRST |
- G_SIGNAL_NO_RECURSE,
- G_STRUCT_OFFSET (LocationHybridClass, zone_in),
- NULL, NULL,
- location_VOID__POINTER_POINTER_POINTER,
- G_TYPE_NONE, 3,
- G_TYPE_POINTER,
- G_TYPE_POINTER,
- G_TYPE_POINTER);
-
- signals[ZONE_OUT] = g_signal_new ("zone-out",
- G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_FIRST |
- G_SIGNAL_NO_RECURSE,
- G_STRUCT_OFFSET (LocationHybridClass, zone_out),
- NULL, NULL,
- location_VOID__POINTER_POINTER_POINTER,
- G_TYPE_NONE, 3,
- G_TYPE_POINTER,
- G_TYPE_POINTER,
- G_TYPE_POINTER);
-
- properties[PROP_METHOD_TYPE] = g_param_spec_int ("method",
- "method type",
- "location method type name",
- LOCATION_METHOD_HYBRID,
- LOCATION_METHOD_HYBRID,
- LOCATION_METHOD_HYBRID,
- G_PARAM_READABLE);
-
- properties[PROP_LAST_POSITION] = g_param_spec_boxed ("last-position",
- "hybrid last position prop",
- "hybrid last position data",
- LOCATION_TYPE_POSITION,
- G_PARAM_READABLE);
-
- properties[PROP_POS_INTERVAL] = g_param_spec_uint ("pos-interval",
- "position interval prop",
- "position interval data",
- LOCATION_UPDATE_INTERVAL_MIN,
- LOCATION_UPDATE_INTERVAL_MAX,
- LOCATION_UPDATE_INTERVAL_DEFAULT,
- G_PARAM_READWRITE);
- properties[PROP_VEL_INTERVAL] = g_param_spec_uint ("vel-interval",
- "velocity interval prop",
- "velocity interval data",
- LOCATION_UPDATE_INTERVAL_MIN,
- LOCATION_UPDATE_INTERVAL_MAX,
- LOCATION_UPDATE_INTERVAL_DEFAULT,
- G_PARAM_READWRITE);
- properties[PROP_SAT_INTERVAL] = g_param_spec_uint ("sat-interval",
- "satellite interval prop",
- "satellite interval data",
- LOCATION_UPDATE_INTERVAL_MIN,
- LOCATION_UPDATE_INTERVAL_MAX,
- LOCATION_UPDATE_INTERVAL_DEFAULT,
- G_PARAM_READWRITE);
-
- properties[PROP_BOUNDARY] = g_param_spec_pointer ("boundary",
- "hybrid boundary prop",
- "hybrid boundary data",
- G_PARAM_READWRITE);
-
- properties[PROP_REMOVAL_BOUNDARY] = g_param_spec_boxed("removal-boundary",
- "hybrid removal boundary prop",
- "hybrid removal boundary data",
- LOCATION_TYPE_BOUNDARY,
- G_PARAM_READWRITE);
-
- g_object_class_install_properties (gobject_class,
- PROP_MAX,
- properties);
-}
* limitations under the License.
*/
-#ifndef __LOCATION_HYBRID_H__
-#define __LOCATION_HYBRID_H__
+#ifndef __LOCATION_HYBRID_MOBILE_H__
+#define __LOCATION_HYBRID_MOBILE_H__
#include <glib-object.h>
/**
- * @file location-hybrid.h
+ * @file location-hybrid-mobile.h
* @brief This file contains the internal definitions and structures related to Hybrid method.
*/
#define LOCATION_IS_HYBRID_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), LOCATION_TYPE_HYBRID))
#define LOCATION_HYBRID_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), LOCATION_TYPE_HYBRID, LocationHybridClass))
-struct _LocationHybrid
-{
+struct _LocationHybrid {
GObject parent_instance;
};
-struct _LocationHybridClass
-{
+struct _LocationHybridClass {
GObjectClass parent_class;
- void (* enabled) (guint type);
- void (* disabled) (guint type);
- void (* updated) (guint type, gpointer data, gpointer accuracy);
- void (* location_update) (gint error, gpointer position, gpointer velocity, gpointer accuracy);
- void (* zone_in) (gpointer boundary, gpointer position, gpointer accuracy);
- void (* zone_out) (gpointer boundary, gpointer position, gpointer accuracy);
+ void (* enabled)(guint type);
+ void (* disabled)(guint type);
+ void (* updated)(gint type, gpointer data, gpointer velocity, gpointer accuracy);
+ void (* location_updated)(gint error, gpointer position, gpointer velocity, gpointer accuracy);
+ void (* zone_in)(gpointer boundary, gpointer position, gpointer accuracy);
+ void (* zone_out)(gpointer boundary, gpointer position, gpointer accuracy);
};
-GType location_hybrid_get_type (void);
+GType location_hybrid_get_type(void);
#define HYBRID_POSITION_EXPIRATION_TIME 9
#include "location-ielement.h"
static void
-location_ielement_base_init (gpointer g_class)
+location_ielement_base_init(gpointer g_class)
{
static gboolean is_initialized = FALSE;
- if (is_initialized){
+ if (is_initialized) {
/* add properties and signals to the interface here */
is_initialized = TRUE;
}
GType
-location_ielement_get_type (void)
+location_ielement_get_type(void)
{
static GType iface_type = 0;
if (iface_type == 0) {
static const GTypeInfo info = {
- sizeof (LocationIElementInterface),
+ sizeof(LocationIElementInterface),
location_ielement_base_init, /* base_init */
NULL /* base_finalize */
};
- iface_type = g_type_register_static (G_TYPE_INTERFACE, "LocationIElement", &info, 0);
+ iface_type = g_type_register_static(G_TYPE_INTERFACE, "LocationIElement", &info, 0);
}
return iface_type;
}
int
-location_ielement_start (LocationIElement *self)
+location_ielement_start(LocationIElement *self)
{
- g_return_val_if_fail (LOCATION_IS_IELEMENT (self), LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (LOCATION_IELEMENT_GET_INTERFACE (self), LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (LOCATION_IELEMENT_GET_INTERFACE (self)->start, LOCATION_ERROR_NOT_AVAILABLE);
- return LOCATION_IELEMENT_GET_INTERFACE (self)->start (self);
+ g_return_val_if_fail(LOCATION_IS_IELEMENT(self), LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(LOCATION_IELEMENT_GET_INTERFACE(self), LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(LOCATION_IELEMENT_GET_INTERFACE(self)->start, LOCATION_ERROR_NOT_AVAILABLE);
+ return LOCATION_IELEMENT_GET_INTERFACE(self)->start(self);
}
int
-location_ielement_stop (LocationIElement *self)
+location_ielement_stop(LocationIElement *self)
{
- g_return_val_if_fail (LOCATION_IS_IELEMENT (self), LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (LOCATION_IELEMENT_GET_INTERFACE (self), LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (LOCATION_IELEMENT_GET_INTERFACE (self)->stop, LOCATION_ERROR_NOT_AVAILABLE);
- return LOCATION_IELEMENT_GET_INTERFACE (self)->stop (self);
+ g_return_val_if_fail(LOCATION_IS_IELEMENT(self), LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(LOCATION_IELEMENT_GET_INTERFACE(self), LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(LOCATION_IELEMENT_GET_INTERFACE(self)->stop, LOCATION_ERROR_NOT_AVAILABLE);
+ return LOCATION_IELEMENT_GET_INTERFACE(self)->stop(self);
}
int
-location_ielement_start_batch (LocationIElement *self)
+location_ielement_start_batch(LocationIElement *self)
{
- g_return_val_if_fail (LOCATION_IS_IELEMENT (self), LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (LOCATION_IELEMENT_GET_INTERFACE (self), LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (LOCATION_IELEMENT_GET_INTERFACE (self)->start_batch, LOCATION_ERROR_NOT_AVAILABLE);
- return LOCATION_IELEMENT_GET_INTERFACE (self)->start_batch (self);
+ g_return_val_if_fail(LOCATION_IS_IELEMENT(self), LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(LOCATION_IELEMENT_GET_INTERFACE(self), LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(LOCATION_IELEMENT_GET_INTERFACE(self)->start_batch, LOCATION_ERROR_NOT_AVAILABLE);
+ return LOCATION_IELEMENT_GET_INTERFACE(self)->start_batch(self);
}
int
-location_ielement_stop_batch (LocationIElement *self)
+location_ielement_stop_batch(LocationIElement *self)
{
- g_return_val_if_fail (LOCATION_IS_IELEMENT (self), LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (LOCATION_IELEMENT_GET_INTERFACE (self), LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (LOCATION_IELEMENT_GET_INTERFACE (self)->stop_batch, LOCATION_ERROR_NOT_AVAILABLE);
- return LOCATION_IELEMENT_GET_INTERFACE (self)->stop_batch (self);
+ g_return_val_if_fail(LOCATION_IS_IELEMENT(self), LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(LOCATION_IELEMENT_GET_INTERFACE(self), LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(LOCATION_IELEMENT_GET_INTERFACE(self)->stop_batch, LOCATION_ERROR_NOT_AVAILABLE);
+ return LOCATION_IELEMENT_GET_INTERFACE(self)->stop_batch(self);
}
int
-location_ielement_request_single_location (LocationIElement *self, int timeout)
+location_ielement_request_single_location(LocationIElement *self, int timeout)
{
- g_return_val_if_fail (LOCATION_IS_IELEMENT (self), LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (LOCATION_IELEMENT_GET_INTERFACE (self), LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (LOCATION_IELEMENT_GET_INTERFACE (self)->request_single_location, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(LOCATION_IS_IELEMENT(self), LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(LOCATION_IELEMENT_GET_INTERFACE(self), LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(LOCATION_IELEMENT_GET_INTERFACE(self)->request_single_location, LOCATION_ERROR_NOT_AVAILABLE);
- return LOCATION_IELEMENT_GET_INTERFACE (self)->request_single_location (self, timeout);
+ return LOCATION_IELEMENT_GET_INTERFACE(self)->request_single_location(self, timeout);
}
int
-location_ielement_get_position (LocationIElement *self,
- LocationPosition **position,
- LocationAccuracy **accuracy)
+location_ielement_get_position(LocationIElement *self,
+ LocationPosition **position,
+ LocationAccuracy **accuracy)
{
- g_return_val_if_fail (LOCATION_IS_IELEMENT (self), LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (position, LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (accuracy, LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (LOCATION_IELEMENT_GET_INTERFACE (self), LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (LOCATION_IELEMENT_GET_INTERFACE (self)->get_position, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(LOCATION_IS_IELEMENT(self), LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(position, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(accuracy, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(LOCATION_IELEMENT_GET_INTERFACE(self), LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(LOCATION_IELEMENT_GET_INTERFACE(self)->get_position, LOCATION_ERROR_NOT_AVAILABLE);
- return LOCATION_IELEMENT_GET_INTERFACE (self)->get_position (self, position, accuracy);
+ return LOCATION_IELEMENT_GET_INTERFACE(self)->get_position(self, position, accuracy);
}
int
-location_ielement_get_position_ext (LocationIElement *self,
- LocationPosition **position,
- LocationVelocity **velocity,
- LocationAccuracy **accuracy)
+location_ielement_get_position_ext(LocationIElement *self,
+ LocationPosition **position,
+ LocationVelocity **velocity,
+ LocationAccuracy **accuracy)
{
- g_return_val_if_fail (LOCATION_IS_IELEMENT (self), LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (position, LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (velocity, LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (accuracy, LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (LOCATION_IELEMENT_GET_INTERFACE (self), LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (LOCATION_IELEMENT_GET_INTERFACE (self)->get_position_ext, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(LOCATION_IS_IELEMENT(self), LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(position, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(velocity, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(accuracy, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(LOCATION_IELEMENT_GET_INTERFACE(self), LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(LOCATION_IELEMENT_GET_INTERFACE(self)->get_position_ext, LOCATION_ERROR_NOT_AVAILABLE);
- return LOCATION_IELEMENT_GET_INTERFACE (self)->get_position_ext (self, position, velocity, accuracy);
+ return LOCATION_IELEMENT_GET_INTERFACE(self)->get_position_ext(self, position, velocity, accuracy);
}
int
-location_ielement_get_last_position (LocationIElement *self,
- LocationPosition **position,
- LocationAccuracy **accuracy)
+location_ielement_get_last_position(LocationIElement *self,
+ LocationPosition **position,
+ LocationAccuracy **accuracy)
{
- g_return_val_if_fail (LOCATION_IS_IELEMENT (self), LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (position, LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (accuracy, LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (LOCATION_IELEMENT_GET_INTERFACE (self), LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (LOCATION_IELEMENT_GET_INTERFACE (self)->get_last_position, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(LOCATION_IS_IELEMENT(self), LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(position, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(accuracy, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(LOCATION_IELEMENT_GET_INTERFACE(self), LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(LOCATION_IELEMENT_GET_INTERFACE(self)->get_last_position, LOCATION_ERROR_NOT_AVAILABLE);
- return LOCATION_IELEMENT_GET_INTERFACE (self)->get_last_position (self, position, accuracy);
+ return LOCATION_IELEMENT_GET_INTERFACE(self)->get_last_position(self, position, accuracy);
}
int
-location_ielement_get_last_position_ext (LocationIElement *self,
- LocationPosition **position,
- LocationVelocity **velocity,
- LocationAccuracy **accuracy)
+location_ielement_get_last_position_ext(LocationIElement *self,
+ LocationPosition **position,
+ LocationVelocity **velocity,
+ LocationAccuracy **accuracy)
{
- g_return_val_if_fail (LOCATION_IS_IELEMENT (self), LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (position, LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (velocity, LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (accuracy, LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (LOCATION_IELEMENT_GET_INTERFACE (self), LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (LOCATION_IELEMENT_GET_INTERFACE (self)->get_last_position_ext, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(LOCATION_IS_IELEMENT(self), LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(position, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(velocity, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(accuracy, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(LOCATION_IELEMENT_GET_INTERFACE(self), LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(LOCATION_IELEMENT_GET_INTERFACE(self)->get_last_position_ext, LOCATION_ERROR_NOT_AVAILABLE);
- return LOCATION_IELEMENT_GET_INTERFACE (self)->get_last_position_ext (self, position, velocity, accuracy);
+ return LOCATION_IELEMENT_GET_INTERFACE(self)->get_last_position_ext(self, position, velocity, accuracy);
}
int
-location_ielement_get_batch (LocationIElement *self, LocationBatch **batch)
+location_ielement_get_batch(LocationIElement *self, LocationBatch **batch)
{
- g_return_val_if_fail (LOCATION_IS_IELEMENT (self), LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (batch, LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (LOCATION_IELEMENT_GET_INTERFACE (self), LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (LOCATION_IELEMENT_GET_INTERFACE (self)->get_batch, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(LOCATION_IS_IELEMENT(self), LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(batch, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(LOCATION_IELEMENT_GET_INTERFACE(self), LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(LOCATION_IELEMENT_GET_INTERFACE(self)->get_batch, LOCATION_ERROR_NOT_AVAILABLE);
- return LOCATION_IELEMENT_GET_INTERFACE (self)->get_batch (self, batch);
+ return LOCATION_IELEMENT_GET_INTERFACE(self)->get_batch(self, batch);
}
int
-location_ielement_get_satellite (LocationIElement *self,
- LocationSatellite **satellite)
+location_ielement_get_satellite(LocationIElement *self,
+ LocationSatellite **satellite)
{
- g_return_val_if_fail (LOCATION_IS_IELEMENT (self), LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (satellite, LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (LOCATION_IELEMENT_GET_INTERFACE (self), LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (LOCATION_IELEMENT_GET_INTERFACE (self)->get_satellite, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(LOCATION_IS_IELEMENT(self), LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(satellite, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(LOCATION_IELEMENT_GET_INTERFACE(self), LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(LOCATION_IELEMENT_GET_INTERFACE(self)->get_satellite, LOCATION_ERROR_NOT_AVAILABLE);
- return LOCATION_IELEMENT_GET_INTERFACE (self)->get_satellite (self, satellite);
+ return LOCATION_IELEMENT_GET_INTERFACE(self)->get_satellite(self, satellite);
}
int
-location_ielement_get_last_satellite (LocationIElement *self,
- LocationSatellite **satellite)
+location_ielement_get_last_satellite(LocationIElement *self,
+ LocationSatellite **satellite)
{
- g_return_val_if_fail (LOCATION_IS_IELEMENT (self), LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (satellite, LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (LOCATION_IELEMENT_GET_INTERFACE (self), LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (LOCATION_IELEMENT_GET_INTERFACE (self)->get_last_satellite, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(LOCATION_IS_IELEMENT(self), LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(satellite, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(LOCATION_IELEMENT_GET_INTERFACE(self), LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(LOCATION_IELEMENT_GET_INTERFACE(self)->get_last_satellite, LOCATION_ERROR_NOT_AVAILABLE);
- return LOCATION_IELEMENT_GET_INTERFACE (self)->get_last_satellite (self, satellite);
+ return LOCATION_IELEMENT_GET_INTERFACE(self)->get_last_satellite(self, satellite);
}
+int
+location_ielement_get_velocity(LocationIElement *self,
+ LocationVelocity **velocity,
+ LocationAccuracy **accuracy)
+{
+ g_return_val_if_fail(LOCATION_IS_IELEMENT(self), LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(velocity, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(LOCATION_IELEMENT_GET_INTERFACE(self), LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(LOCATION_IELEMENT_GET_INTERFACE(self)->get_velocity, LOCATION_ERROR_NOT_AVAILABLE);
+ return LOCATION_IELEMENT_GET_INTERFACE(self)->get_velocity(self, velocity, accuracy);
+}
int
-location_ielement_get_velocity (LocationIElement *self,
- LocationVelocity **velocity,
- LocationAccuracy **accuracy)
+location_ielement_get_last_velocity(LocationIElement *self,
+ LocationVelocity **velocity,
+ LocationAccuracy **accuracy)
{
- g_return_val_if_fail (LOCATION_IS_IELEMENT (self), LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (velocity, LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (LOCATION_IELEMENT_GET_INTERFACE (self), LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (LOCATION_IELEMENT_GET_INTERFACE (self)->get_velocity, LOCATION_ERROR_NOT_AVAILABLE);
- return LOCATION_IELEMENT_GET_INTERFACE (self)->get_velocity (self, velocity, accuracy);
+ g_return_val_if_fail(LOCATION_IS_IELEMENT(self), LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(velocity, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(LOCATION_IELEMENT_GET_INTERFACE(self), LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(LOCATION_IELEMENT_GET_INTERFACE(self)->get_last_velocity, LOCATION_ERROR_NOT_AVAILABLE);
+ return LOCATION_IELEMENT_GET_INTERFACE(self)->get_last_velocity(self, velocity, accuracy);
}
int
-location_ielement_get_last_velocity (LocationIElement *self,
- LocationVelocity **velocity,
- LocationAccuracy **accuracy)
+location_ielement_set_option(LocationIElement *self, const char *option)
{
- g_return_val_if_fail (LOCATION_IS_IELEMENT (self), LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (velocity, LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (LOCATION_IELEMENT_GET_INTERFACE (self), LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (LOCATION_IELEMENT_GET_INTERFACE (self)->get_last_velocity, LOCATION_ERROR_NOT_AVAILABLE);
- return LOCATION_IELEMENT_GET_INTERFACE (self)->get_last_velocity (self, velocity, accuracy);
+ g_return_val_if_fail(LOCATION_IS_IELEMENT(self), LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(LOCATION_IELEMENT_GET_INTERFACE(self), LOCATION_ERROR_NOT_AVAILABLE);
+ return LOCATION_IELEMENT_GET_INTERFACE(self)->set_option(self, option);
}
int
-location_ielement_set_option (LocationIElement *self, const char *option)
+location_ielement_get_nmea(LocationIElement *self,
+ char **nmea)
{
- g_return_val_if_fail (LOCATION_IS_IELEMENT (self), LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (LOCATION_IELEMENT_GET_INTERFACE (self), LOCATION_ERROR_NOT_AVAILABLE);
- return LOCATION_IELEMENT_GET_INTERFACE (self)->set_option (self, option);
-}
\ No newline at end of file
+ g_return_val_if_fail(LOCATION_IS_IELEMENT(self), LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(nmea, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(LOCATION_IELEMENT_GET_INTERFACE(self), LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(LOCATION_IELEMENT_GET_INTERFACE(self)->get_nmea, LOCATION_ERROR_NOT_AVAILABLE);
+
+ return LOCATION_IELEMENT_GET_INTERFACE(self)->get_nmea(self, nmea);
+}
G_BEGIN_DECLS
-enum {
- SERVICE_ENABLED,
- SERVICE_DISABLED,
- SERVICE_UPDATED,
- ZONE_IN,
- ZONE_OUT,
- LOCATION_UPDATED,
- BATCH_UPDATED,
- LAST_SIGNAL,
-};
+typedef struct _LocationIElement LocationIElement;
+typedef struct _LocationIElementInterface LocationIElementInterface;
#define LOCATION_TYPE_IELEMENT (location_ielement_get_type ())
#define LOCATION_IELEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), LOCATION_TYPE_IELEMENT, LocationIElement))
#define LOCATION_IS_IELEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), LOCATION_TYPE_IELEMENT))
#define LOCATION_IELEMENT_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), LOCATION_TYPE_IELEMENT, LocationIElementInterface))
-typedef struct _LocationIElement LocationIElement;
-typedef struct _LocationIElementInterface LocationIElementInterface;
+enum {
+ SERVICE_ENABLED,
+ SERVICE_DISABLED,
+ SERVICE_UPDATED,
+ ZONE_IN,
+ ZONE_OUT,
+ LOCATION_UPDATED,
+ BATCH_UPDATED,
+ LAST_SIGNAL,
+};
typedef int (*TYPE_START_FUNC)(LocationIElement *self);
typedef int (*TYPE_STOP_FUNC)(LocationIElement *self);
typedef int (*TYPE_GET_BATCH)(LocationIElement *self, LocationBatch **batch);
typedef int (*TYPE_START_BATCH)(LocationIElement *self);
typedef int (*TYPE_STOP_BATCH)(LocationIElement *self);
+typedef int (*TYPE_GET_NMEA)(LocationIElement *self, char **nmea);
-struct _LocationIElementInterface
-{
+
+struct _LocationIElementInterface {
GTypeInterface parent_iface;
TYPE_START_FUNC start;
TYPE_GET_BATCH get_batch;
TYPE_START_BATCH start_batch;
TYPE_STOP_BATCH stop_batch;
+ TYPE_GET_NMEA get_nmea;
};
-GType location_ielement_get_type (void);
+GType location_ielement_get_type(void);
-int location_ielement_start (LocationIElement *self);
+int location_ielement_start(LocationIElement *self);
int location_ielement_stop(LocationIElement *self);
-int location_ielement_get_position (LocationIElement *self, LocationPosition **position, LocationAccuracy **accuracy);
-int location_ielement_get_position_ext (LocationIElement *self, LocationPosition **position, LocationVelocity **velocity, LocationAccuracy **accuracy);
-int location_ielement_get_last_position (LocationIElement *self, LocationPosition **position, LocationAccuracy **accuracy);
-int location_ielement_get_last_position_ext (LocationIElement *self, LocationPosition **position, LocationVelocity **velocity, LocationAccuracy **accuracy);
-int location_ielement_get_velocity (LocationIElement *self, LocationVelocity **velocity, LocationAccuracy **accuracy);
-int location_ielement_get_last_velocity (LocationIElement *self, LocationVelocity **velocity, LocationAccuracy **accuracy);
-int location_ielement_get_satellite (LocationIElement *self, LocationSatellite **satellite);
-int location_ielement_get_last_satellite (LocationIElement *self, LocationSatellite **satellite);
-int location_ielement_set_option (LocationIElement *self, const char *option);
-int location_ielement_request_single_location (LocationIElement *self, int timeout);
-int location_ielement_get_batch (LocationIElement *self, LocationBatch **batch);
-int location_ielement_start_batch (LocationIElement *self);
-int location_ielement_stop_batch (LocationIElement *self);
+int location_ielement_get_position(LocationIElement *self, LocationPosition **position, LocationAccuracy **accuracy);
+int location_ielement_get_position_ext(LocationIElement *self, LocationPosition **position, LocationVelocity **velocity, LocationAccuracy **accuracy);
+int location_ielement_get_last_position(LocationIElement *self, LocationPosition **position, LocationAccuracy **accuracy);
+int location_ielement_get_last_position_ext(LocationIElement *self, LocationPosition **position, LocationVelocity **velocity, LocationAccuracy **accuracy);
+int location_ielement_get_velocity(LocationIElement *self, LocationVelocity **velocity, LocationAccuracy **accuracy);
+int location_ielement_get_last_velocity(LocationIElement *self, LocationVelocity **velocity, LocationAccuracy **accuracy);
+int location_ielement_get_satellite(LocationIElement *self, LocationSatellite **satellite);
+int location_ielement_get_last_satellite(LocationIElement *self, LocationSatellite **satellite);
+int location_ielement_set_option(LocationIElement *self, const char *option);
+int location_ielement_request_single_location(LocationIElement *self, int timeout);
+int location_ielement_get_batch(LocationIElement *self, LocationBatch **batch);
+int location_ielement_start_batch(LocationIElement *self);
+int location_ielement_stop_batch(LocationIElement *self);
+int location_ielement_get_nmea(LocationIElement *self, char **nmea);
+
G_END_DECLS
#define DEG2RAD(x) ((x) * M_PI / 180)
GType
-location_position_get_type (void)
+location_position_get_type(void)
{
static volatile gsize type_volatile = 0;
- if(g_once_init_enter(&type_volatile)) {
- GType type = g_boxed_type_register_static (
- g_intern_static_string ("LocationPosition"),
- (GBoxedCopyFunc) location_position_copy,
- (GBoxedFreeFunc) location_position_free);
+ if (g_once_init_enter(&type_volatile)) {
+ GType type = g_boxed_type_register_static(
+ g_intern_static_string("LocationPosition"),
+ (GBoxedCopyFunc) location_position_copy,
+ (GBoxedFreeFunc) location_position_free);
g_once_init_leave(&type_volatile, type);
}
return type_volatile;
}
EXPORT_API LocationPosition *
-location_position_new (guint timestamp,
- gdouble latitude,
- gdouble longitude,
- gdouble altitude,
- LocationStatus status)
+location_position_new(guint timestamp,
+ gdouble latitude,
+ gdouble longitude,
+ gdouble altitude,
+ LocationStatus status)
{
if (latitude < -90 || latitude > 90) return NULL;
if (longitude < -180 || longitude > 180) return NULL;
- LocationPosition* position = g_slice_new0(LocationPosition);
+ LocationPosition *position = g_slice_new0(LocationPosition);
g_return_val_if_fail(position, NULL);
position->timestamp = timestamp;
}
EXPORT_API void
-location_position_free (LocationPosition* position)
+location_position_free(LocationPosition *position)
{
g_return_if_fail(position);
g_slice_free(LocationPosition, position);
}
EXPORT_API gboolean
-location_position_equal (const LocationPosition *position1, const LocationPosition *position2)
+location_position_equal(const LocationPosition *position1, const LocationPosition *position2)
{
g_return_val_if_fail(position1, FALSE);
g_return_val_if_fail(position2, FALSE);
if (position1->latitude == position2->latitude &&
- position1->longitude == position2->longitude &&
- position1->altitude == position2->altitude)
+ position1->longitude == position2->longitude &&
+ position1->altitude == position2->altitude)
return TRUE;
return FALSE;
}
-EXPORT_API LocationPosition*
-location_position_copy (const LocationPosition *position)
+EXPORT_API LocationPosition *
+location_position_copy(const LocationPosition *position)
{
g_return_val_if_fail(position, NULL);
LocationPosition *new_position = NULL;
- new_position = location_position_new (position->timestamp,
- position->latitude,
- position->longitude,
- position->altitude,
- position->status);
+ new_position = location_position_new(position->timestamp,
+ position->latitude,
+ position->longitude,
+ position->altitude,
+ position->status);
return new_position;
*distance = 0;
- const double a = 6378137.0, b = 6356752.314245, f = 1/298.257223563;
- double delta_lon = DEG2RAD(pos2->longitude-pos1->longitude);
- double u_1 = atan((1-f) * tan(DEG2RAD(pos1->latitude)));
- double u_2 = atan((1-f) * tan(DEG2RAD(pos2->latitude)));
+ const double a = 6378137.0, b = 6356752.314245, f = 1 / 298.257223563;
+ double delta_lon = DEG2RAD(pos2->longitude - pos1->longitude);
+ double u_1 = atan((1 - f) * tan(DEG2RAD(pos1->latitude)));
+ double u_2 = atan((1 - f) * tan(DEG2RAD(pos2->latitude)));
double lambdaP, iter_limit = 100.0;
double lambda = delta_lon;
sin_lambda = sin(lambda);
cos_lambda = cos(lambda);
- sin_sigma = sqrt((cos_u2*sin_lambda)*(cos_u2*sin_lambda) + \
- (cos_u1*sin_u2-sin_u1*cos_u2*cos_lambda) * \
- (cos_u1*sin_u2-sin_u1*cos_u2*cos_lambda));
+ sin_sigma = sqrt((cos_u2 * sin_lambda) * (cos_u2 * sin_lambda) + \
+ (cos_u1 * sin_u2 - sin_u1 * cos_u2 * cos_lambda) * \
+ (cos_u1 * sin_u2 - sin_u1 * cos_u2 * cos_lambda));
- if (sin_sigma ==0)
- return LOCATION_ERROR_NONE; // co-incident points
+ if (sin_sigma == 0)
+ return LOCATION_ERROR_NONE; /* co-incident points */
- cos_sigma = sin_u1*sin_u2 + cos_u1*cos_u2*cos_lambda;
+ cos_sigma = sin_u1 * sin_u2 + cos_u1 * cos_u2 * cos_lambda;
sigma = atan2(sin_sigma, cos_sigma);
sin_alpha = cos_u1 * cos_u2 * sin_lambda / sin_sigma;
- sq_cos_alpha = 1.0 - sin_alpha*sin_alpha;
- cos_2sigma = cos_sigma - 2.0*sin_u1*sin_u2/sq_cos_alpha;
+ sq_cos_alpha = 1.0 - sin_alpha * sin_alpha;
+ cos_2sigma = cos_sigma - 2.0 * sin_u1 * sin_u2 / sq_cos_alpha;
if (isnan(cos_2sigma))
cos_2sigma = 0;
- C = f/16.0*sq_cos_alpha*(4.0+f*(4.0-3.0*sq_cos_alpha));
+ C = f / 16.0 * sq_cos_alpha * (4.0 + f * (4.0 - 3.0 * sq_cos_alpha));
lambdaP = lambda;
- lambda = delta_lon + (1.0-C) * f * sin_alpha * \
- (sigma + C*sin_sigma*(cos_2sigma+C*cos_sigma*(-1.0+2.0*cos_2sigma*cos_2sigma)));
+ lambda = delta_lon + (1.0 - C) * f * sin_alpha * \
+ (sigma + C * sin_sigma * (cos_2sigma + C * cos_sigma * (-1.0 + 2.0 * cos_2sigma * cos_2sigma)));
- } while (abs(lambda-lambdaP) > 1e-12 && --iter_limit>0);
+ } while (abs(lambda - lambdaP) > 1e-12 && --iter_limit > 0);
- if (iter_limit==0) return LOCATION_ERROR_UNKNOWN;
+ if (iter_limit == 0) return LOCATION_ERROR_UNKNOWN;
- sq_u = sq_cos_alpha * (a*a - b*b) / (b*b);
+ sq_u = sq_cos_alpha * (a * a - b * b) / (b * b);
- cal1 = 1.0 + sq_u/16384.0*(4096.0+sq_u*(-768.0+sq_u*(320.0-175.0*sq_u)));
- cal2 = sq_u/1024.0 * (256.0+sq_u*(-128.0+sq_u*(74.0-47.0*sq_u)));
+ cal1 = 1.0 + sq_u / 16384.0 * (4096.0 + sq_u * (-768.0 + sq_u * (320.0 - 175.0 * sq_u)));
+ cal2 = sq_u / 1024.0 * (256.0 + sq_u * (-128.0 + sq_u * (74.0 - 47.0 * sq_u)));
- delta_sigma = cal2*sin_sigma*(cos_2sigma+cal2/4.0*(cos_sigma*(-1.0+2.0*cos_2sigma*cos_2sigma)- \
- cal2/6.0*cos_2sigma*(-3.0+4.0*sin_sigma*sin_sigma)*(-3.0+4.0*cos_2sigma*cos_2sigma)));
- cal_dist = b*cal1*(sigma-delta_sigma);
+ delta_sigma = cal2 * sin_sigma * (cos_2sigma + cal2 / 4.0 * (cos_sigma * (-1.0 + 2.0 * cos_2sigma * cos_2sigma) - \
+ cal2 / 6.0 * cos_2sigma * (-3.0 + 4.0 * sin_sigma * sin_sigma) * (-3.0 + 4.0 * cos_2sigma * cos_2sigma)));
+ cal_dist = b * cal1 * (sigma - delta_sigma);
*distance = (gulong) cal_dist;
G_BEGIN_DECLS
-GType location_position_get_type (void);
+GType location_position_get_type(void);
#define LOCATION_TYPE_POSITION (location_position_get_type ())
/**
/**
* @brief This represents the various fix states.
*/
-typedef enum
-{
- LOCATION_STATUS_NO_FIX = 0, ///< No fix status.
- LOCATION_STATUS_2D_FIX, ///< 2D fix status (latitude/longitude/speed/direction).
- LOCATION_STATUS_3D_FIX ///< 3D fix status (altitude/climb as well).
+typedef enum {
+ LOCATION_STATUS_NO_FIX = 0, /*/< No fix status. */
+ LOCATION_STATUS_2D_FIX, /*/< 2D fix status (latitude/longitude/speed/direction). */
+ LOCATION_STATUS_3D_FIX /*/< 3D fix status (altitude/climb as well). */
} LocationStatus;
/**
* @brief This represents position information such as latitude-longitude-altitude values and timestamp.
*/
-struct _LocationPosition
-{
- guint timestamp; ///< Time stamp.
- gdouble latitude; ///< Latitude data.
- gdouble longitude; ///< Longitude data.
- gdouble altitude; ///< Altitude data.
- LocationStatus status; ///< Fix states.
+struct _LocationPosition {
+ guint timestamp; /*/< Time stamp. */
+ gdouble latitude; /*/< Latitude data. */
+ gdouble longitude; /*/< Longitude data. */
+ gdouble altitude; /*/< Altitude data. */
+ LocationStatus status; /*/< Fix states. */
};
/**
* @brief This represents last known position information such as latitude-longitude values and accuracy.
*/
-struct _LocationLastPosition
-{
- LocationMethod method; ///< Location Method.
- guint timestamp; ///< Time stamp.
- gdouble latitude; ///< Latitude data.
- gdouble longitude; ///< Longitude data.
- gdouble altitude; ///< Altitude data.
- gdouble horizontal_accuracy; ///< Horizontal accuracy data.
- gdouble vertical_accuracy; ///< Vertical accuracy data.
+struct _LocationLastPosition {
+ LocationMethod method; /*/< Location Method. */
+ guint timestamp; /*/< Time stamp. */
+ gdouble latitude; /*/< Latitude data. */
+ gdouble longitude; /*/< Longitude data. */
+ gdouble altitude; /*/< Altitude data. */
+ gdouble horizontal_accuracy; /*/< Horizontal accuracy data. */
+ gdouble vertical_accuracy; /*/< Vertical accuracy data. */
};
/**
* @return a new #LocationPosition
* @retval NULL if error occured
*/
-LocationPosition *location_position_new (guint timestamp, gdouble latitude, gdouble longitude, gdouble altitude, LocationStatus status);
+LocationPosition *location_position_new(guint timestamp, gdouble latitude, gdouble longitude, gdouble altitude, LocationStatus status);
/**
* @brief Free a #LocationPosition.
* @param [in] position - a #LocationPosition.
* @return None.
*/
-void location_position_free (LocationPosition *position);
+void location_position_free(LocationPosition *position);
/**
* @brief Compares two positions for equality, returning TRUE if they are equal.
* TRUE - if equal\n
* FALSE - if not equal\n
*/
-gboolean location_position_equal (const LocationPosition *position1, const LocationPosition *position2);
+gboolean location_position_equal(const LocationPosition *position1, const LocationPosition *position2);
/**
* @brief Makes a copy of #LocationPosition
* @return a new #LocationPosition
* @retval NULL if error occured
*/
-LocationPosition *location_position_copy (const LocationPosition *position);
+LocationPosition *location_position_copy(const LocationPosition *position);
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
/* Vincenty Inverse Solution of Geodesics on the Ellipsoid (c) Chris Veness 2002-2010 */
bool found;
} location_privilege_s;
-int
-location_get_app_type(char *target_app_id)
-{
- int ret = 0;
- pid_t pid = 0;
- char *app_id = NULL;
- app_info_h app_info;
- char *type = NULL;
-
- if (target_app_id == NULL) {
- pid = getpid();
- ret = app_manager_get_app_id(pid, &app_id);
- if (ret != APP_MANAGER_ERROR_NONE) {
- LOCATION_LOGE("Fail to get app_id. Err[%d]", ret);
- return LOCATION_ERROR_NONE;
- }
- }
- else {
- app_id = g_strdup(target_app_id);
- }
- ret = app_info_create(app_id, &app_info);
- if (ret != APP_MANAGER_ERROR_NONE) {
- LOCATION_LOGE("Fail to get app_id. Err[%d]", ret);
- g_free(app_id);
- return 0;
- }
-
- ret = app_info_get_type(app_info, &type);
- if (ret != APP_MANAGER_ERROR_NONE) {
- LOCATION_LOGE ("Fail to get type. Err[%d]", ret);
- g_free(app_id);
- app_info_destroy(app_info);
- return 0;
- }
-
- if (strcmp(type,"c++app") == 0) {
- ret = CPPAPP;
- } else if (strcmp(type,"webapp") == 0) {
- ret = WEBAPP;
- } else {
- ret = CAPP;
- }
-
- g_free(type);
- g_free(app_id);
- app_info_destroy(app_info);
-
- return ret;
-}
-
-int _privilege_list_cb(const char *privilege_name, void *user_data)
-{
- g_return_val_if_fail((privilege_name != NULL), -1);
- location_privilege_s *requested_privilege = (location_privilege_s *)user_data;
-
- if (g_strcmp0(privilege_name, requested_privilege->name) == 0) {
- LOCATION_LOGD("[%s] is in privileges", requested_privilege->name);
- requested_privilege->found = 1;
- return -1;
- }
- return 0;
-}
-
-#ifdef TIZEN_WERABLE
-int
-location_get_webapp_privilege(const char *package_id, const char *privilege_name)
-{
- g_return_val_if_fail((privilege_name != NULL), FALSE);
-
- int is_found = -1;
- int ret = 0;
- pkgmgrinfo_pkginfo_h handle;
-
- location_privilege_s *requested_privilege;
- requested_privilege = g_new0(location_privilege_s, sizeof(location_privilege_s));
- if (requested_privilege == NULL) {
- LOCATION_SECLOG("Can't allocate memory");
- return FALSE;
- }
- requested_privilege->name = g_strdup(privilege_name);
- requested_privilege->found = 0;
-
- ret = pkgmgrinfo_pkginfo_get_pkginfo(package_id, &handle);
- if (ret != PMINFO_R_OK) {
- LOCATION_SECLOG("Fail to get pkginfo of package_id[%s]", package_id);
- g_free(requested_privilege->name);
- g_free(requested_privilege);
- return FALSE;
- }
-
- ret = pkgmgrinfo_pkginfo_foreach_privilege(handle, _privilege_list_cb, requested_privilege);
- if (!requested_privilege->found) {
- LOCATION_LOGI("Do not have location privilege");
- } else {
- LOCATION_LOGE("There is [%s]", privilege_name);
- }
- is_found = requested_privilege->found;
-
- g_free(requested_privilege->name);
- g_free(requested_privilege);
- pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
-
- return is_found;
-}
-#endif
void
location_privacy_initialize(void)
}
ret = privacy_checker_initialize(package_id);
- if(ret != PRIV_MGR_ERROR_SUCCESS)
- {
+ if (ret != PRIV_MGR_ERROR_SUCCESS) {
LOCATION_LOGE("Fail to initialize privacy checker. err[%d]", ret);
pkgmgrinfo_appinfo_destroy_appinfo(pkgmgrinfo_appinfo);
free(app_id);
{
int ret = 0;
ret = privacy_checker_finalize();
- if(ret != PRIV_MGR_ERROR_SUCCESS)
- {
+ if (ret != PRIV_MGR_ERROR_SUCCESS) {
LOCATION_LOGE("Fail to finalize privacy_cehecker. Err[%d]", ret);
return;
}
return LOCATION_ERROR_NOT_ALLOWED;
}
-#ifdef TIZEN_WERABLE
+#ifdef TIZEN_PROFILE_WERABLE
if (app_type == WEBAPP) {
- LOCATION_LOGE("WEBAPP use location");
+ LOCATION_LOGI("WEBAPP use location");
if (location_get_webapp_privilege(package_id, privilege_name) == 0) {
g_free(package_id);
g_free(app_id);
#endif
ret = privacy_checker_initialize(package_id);
- if(ret != PRIV_MGR_ERROR_SUCCESS)
- {
+ if (ret != PRIV_MGR_ERROR_SUCCESS) {
LOCATION_LOGE("Fail to initialize privacy checker. err[%d]", ret);
pkgmgrinfo_appinfo_destroy_appinfo(pkgmgrinfo_appinfo);
g_free(app_id);
g_free(app_id);
ret = privacy_checker_finalize();
- if(ret != PRIV_MGR_ERROR_SUCCESS)
- {
+ if (ret != PRIV_MGR_ERROR_SUCCESS) {
LOCATION_LOGE("Fail to finalize privacy_cehecker. Err[%d]", ret);
return LOCATION_ERROR_NOT_ALLOWED;
}
void location_privacy_initialize(void);
void location_privacy_finalize(void);
-int location_get_app_type(char *app_id);
int location_get_privacy(const char *privilege_name);
int location_check_privilege(const char *privilege_name);
#include "location-log.h"
GType
-location_satellite_get_type (void)
+location_satellite_get_type(void)
{
static volatile gsize type_volatile = 0;
- if(g_once_init_enter(&type_volatile)) {
- GType type = g_boxed_type_register_static (
- g_intern_static_string ("LocationSatellite"),
- (GBoxedCopyFunc) location_satellite_copy,
- (GBoxedFreeFunc) location_satellite_free);
+ if (g_once_init_enter(&type_volatile)) {
+ GType type = g_boxed_type_register_static(
+ g_intern_static_string("LocationSatellite"),
+ (GBoxedCopyFunc) location_satellite_copy,
+ (GBoxedFreeFunc) location_satellite_free);
g_once_init_leave(&type_volatile, type);
}
return type_volatile;
}
static void
-update_num_of_used (LocationSatellite *satellite)
+update_num_of_used(LocationSatellite *satellite)
{
g_return_if_fail(satellite);
satellite->num_of_sat_used = 0;
if (satellite->num_of_sat_inview > 0 && satellite->sat_inview) {
int i = 0;
for (i = 0 ; i < satellite->num_of_sat_inview ; i++)
- if(satellite->sat_inview[i].used) (satellite->num_of_sat_used)++;
+ if (satellite->sat_inview[i].used)(satellite->num_of_sat_used)++;
}
}
-EXPORT_API LocationSatellite*
-location_satellite_new (int num_of_sat_inview)
+EXPORT_API LocationSatellite *
+location_satellite_new(int num_of_sat_inview)
{
- LocationSatellite* satellite = g_slice_new0(LocationSatellite);
+ LocationSatellite *satellite = g_slice_new0(LocationSatellite);
g_return_val_if_fail(satellite, NULL);
satellite->num_of_sat_inview = num_of_sat_inview;
}
EXPORT_API void
-location_satellite_free (LocationSatellite* satellite)
+location_satellite_free(LocationSatellite *satellite)
{
g_return_if_fail(satellite);
g_free(satellite->sat_inview);
g_slice_free(LocationSatellite, satellite);
}
-EXPORT_API LocationSatellite*
-location_satellite_copy (const LocationSatellite *satellite)
+EXPORT_API LocationSatellite *
+location_satellite_copy(const LocationSatellite *satellite)
{
g_return_val_if_fail(satellite, NULL);
- LocationSatellite* satellite_dup = location_satellite_new(satellite->num_of_sat_inview);
+ LocationSatellite *satellite_dup = location_satellite_new(satellite->num_of_sat_inview);
satellite_dup->timestamp = satellite->timestamp;
satellite_dup->num_of_sat_used = satellite->num_of_sat_used;
int i = 0;
for (i = 0 ; i < satellite_dup->num_of_sat_inview ; i++)
location_satellite_set_satellite_details(satellite_dup, i,
- satellite->sat_inview[i].prn,
- satellite->sat_inview[i].used,
- satellite->sat_inview[i].elevation,
- satellite->sat_inview[i].azimuth,
- satellite->sat_inview[i].snr);
+ satellite->sat_inview[i].prn,
+ satellite->sat_inview[i].used,
+ satellite->sat_inview[i].elevation,
+ satellite->sat_inview[i].azimuth,
+ satellite->sat_inview[i].snr);
return satellite_dup;
}
EXPORT_API gboolean
-location_satellite_get_satellite_details (const LocationSatellite *satellite,
- guint index,
- guint* prn,
- gboolean* used,
- guint* elevation,
- guint* azimuth,
- gint* snr)
+location_satellite_get_satellite_details(const LocationSatellite *satellite,
+ guint index,
+ guint *prn,
+ gboolean *used,
+ guint *elevation,
+ guint *azimuth,
+ gint *snr)
{
g_return_val_if_fail(satellite, FALSE);
g_return_val_if_fail(prn, FALSE);
}
EXPORT_API gboolean
-location_satellite_set_satellite_details (LocationSatellite *satellite,
- guint index,
- guint prn,
- gboolean used,
- guint elevation,
- guint azimuth,
- gint snr)
+location_satellite_set_satellite_details(LocationSatellite *satellite,
+ guint index,
+ guint prn,
+ gboolean used,
+ guint elevation,
+ guint azimuth,
+ gint snr)
{
g_return_val_if_fail(satellite, FALSE);
g_return_val_if_fail(satellite->sat_inview, FALSE);
g_return_val_if_fail(index < satellite->num_of_sat_inview, FALSE);
- satellite->sat_inview[index].prn= prn;
- satellite->sat_inview[index].used= used;
- satellite->sat_inview[index].elevation= elevation;
- satellite->sat_inview[index].azimuth= azimuth;
- satellite->sat_inview[index].snr= snr;
- update_num_of_used (satellite);
+ satellite->sat_inview[index].prn = prn;
+ satellite->sat_inview[index].used = used;
+ satellite->sat_inview[index].elevation = elevation;
+ satellite->sat_inview[index].azimuth = azimuth;
+ satellite->sat_inview[index].snr = snr;
+ update_num_of_used(satellite);
return TRUE;
}
G_BEGIN_DECLS
-GType location_satellite_get_type (void);
+GType location_satellite_get_type(void);
#define LOCATION_TYPE_SATELLITE (location_satellite_get_type ())
/**
* @brief This represents one satellite information in view.
*/
typedef struct {
- guint prn; ///< The PRNs(Pseudo-Random Noise code) of a satellite.
- gboolean used; ///< TRUE if currently used satellite.
- guint elevation; ///< The elevation of a satellite.
- guint azimuth; ///< The degree from true north 000 to 359 of a satellite.
- gint snr; ///< The signal-to-noise ratio, dB of a satellite.
+ guint prn; /*/< The PRNs(Pseudo-Random Noise code) of a satellite. */
+ gboolean used; /*/< TRUE if currently used satellite. */
+ guint elevation; /*/< The elevation of a satellite. */
+ guint azimuth; /*/< The degree from true north 000 to 359 of a satellite. */
+ gint snr; /*/< The signal-to-noise ratio, dB of a satellite. */
} LocationSatelliteDetail;
/**
* @brief This represents position information such as number of satellites in used or in view.
*/
-struct _LocationSatellite
-{
- guint timestamp; ///< Time stamp.
- guint num_of_sat_inview; ///< The number of satellites in view.
- guint num_of_sat_used; ///< The number of satellites in used.
- LocationSatelliteDetail* sat_inview; ///< The information of satellites in view .
+struct _LocationSatellite {
+ guint timestamp; /*/< Time stamp. */
+ guint num_of_sat_inview; /*/< The number of satellites in view. */
+ guint num_of_sat_used; /*/< The number of satellites in used. */
+ LocationSatelliteDetail *sat_inview; /*/< The information of satellites in view . */
};
/**
* @return a new #LocationSatellite
* @retval NULL if error occured
*/
-LocationSatellite *location_satellite_new (int num_of_sat_inview);
+LocationSatellite *location_satellite_new(int num_of_sat_inview);
/**
* @brief Free a #LocationSatellite.
* @param [in] satellite - a #LocationSatellite.
* @return None.
*/
-void location_satellite_free (LocationSatellite *satellite);
+void location_satellite_free(LocationSatellite *satellite);
/**
* @brief Makes a copy of #LocationSatellite
* @return a new #LocationSatellite
* @retval NULL if error occured
*/
-LocationSatellite *location_satellite_copy (const LocationSatellite *satellite);
+LocationSatellite *location_satellite_copy(const LocationSatellite *satellite);
/**
* @brief Get elements of #LocationSatelliteDetail with given index in #LocationSatellite.
* TRUE - if success\n
* FALSE - if error occured\n
*/
-gboolean location_satellite_get_satellite_details (const LocationSatellite *satellite, guint index, guint *prn, gboolean *used, guint *elevation, guint *azimuth, gint *snr);
+gboolean location_satellite_get_satellite_details(const LocationSatellite *satellite, guint index, guint *prn, gboolean *used, guint *elevation, guint *azimuth, gint *snr);
/**
* @brief Set elements of #LocationSatelliteDetail with given index in #LocationSatellite.
* TRUE - if success\n
* FALSE - if error occured\n
*/
-gboolean location_satellite_set_satellite_details( LocationSatellite *satellite, guint index, guint prn, gboolean used, guint elevation, guint azimuth, gint snr);
+gboolean location_satellite_set_satellite_details(LocationSatellite *satellite, guint index, guint prn, gboolean used, guint elevation, guint azimuth, gint snr);
/**
* @} @}
#endif
#include <glib.h>
+#include <bundle_internal.h>
+#include <eventsystem.h>
#include "location-log.h"
#include "location-setting.h"
+static unsigned int g_event_req_id;
+
gint location_setting_get_key_val(keynode_t *key)
{
g_return_val_if_fail(key, -1);
int val = -1;
- switch(vconf_keynode_get_type(key))
- {
+ switch (vconf_keynode_get_type(key)) {
case VCONF_TYPE_INT:
val = vconf_keynode_get_int(key);
- LOCATION_SECLOG("Setting changed [%s]:[%d]", vconf_keynode_get_name(key), val);
+ LOCATION_SECLOG("changed [%s]:[%d]", vconf_keynode_get_name(key), val);
break;
default:
LOCATION_LOGW("Unused type(%d)", vconf_keynode_get_type(key));
return val;
}
-gint location_setting_get_int(const gchar* path)
+gint location_setting_get_int(const gchar *path)
{
- g_return_val_if_fail(path, -1);
- int val = -1;
- if(vconf_get_int(path, &val)){
- LOCATION_SECLOG("vconf_get_int: failed [%s]", path);
- } else if (val == 0)
- LOCATION_SECLOG("vconf_get_int: [%s]:[%d]", path, val);
+ g_return_val_if_fail(path, 0);
+ int val = 0;
+ if (vconf_get_int(path, &val)) {
+ LOCATION_SECLOG("failed [%s]", path);
+ }
return val;
}
-gboolean location_setting_get_bool(const gchar* path)
+gboolean location_setting_get_bool(const gchar *path)
{
- g_return_val_if_fail(path, -1);
+ g_return_val_if_fail(path, FALSE);
gboolean val = FALSE;
- if(vconf_get_bool(path, &val)){
- LOCATION_SECLOG("vconf_get_int: failed [%s]", path);
+ if (vconf_get_bool(path, &val)) {
+ LOCATION_SECLOG("failed [%s]", path);
}
return val;
}
-gchar *location_setting_get_string(const gchar* path)
+gchar *location_setting_get_string(const gchar *path)
{
g_return_val_if_fail(path, NULL);
return vconf_get_str(path);
}
-gint location_setting_add_notify(const gchar* path, SettingCB setting_cb, gpointer self)
+static char *__convert_event_from_vconf(const char *vconf)
+{
+ char *event = NULL;
+ if (g_strcmp0(vconf, VCONFKEY_LOCATION_USE_MY_LOCATION) == 0) {
+ event = g_strdup(SYS_EVENT_LOCATION_ENABLE_STATE);
+ } else if (g_strcmp0(vconf, VCONFKEY_LOCATION_ENABLED) == 0) {
+ event = g_strdup(SYS_EVENT_GPS_ENABLE_STATE);
+ } else if (g_strcmp0(vconf, VCONFKEY_LOCATION_NETWORK_ENABLED) == 0) {
+ event = g_strdup(SYS_EVENT_NPS_ENABLE_STATE);
+ }
+
+ return event;
+}
+
+static char *__convert_key_from_event(const char *event)
+{
+ char *key = NULL;
+ if (g_strcmp0(event, SYS_EVENT_LOCATION_ENABLE_STATE) == 0) {
+ key = g_strdup(EVT_KEY_LOCATION_ENABLE_STATE);
+ } else if (g_strcmp0(event, SYS_EVENT_GPS_ENABLE_STATE) == 0) {
+ key = g_strdup(EVT_KEY_GPS_ENABLE_STATE);
+ } else if (g_strcmp0(event, SYS_EVENT_NPS_ENABLE_STATE) == 0) {
+ key = g_strdup(EVT_KEY_NPS_ENABLE_STATE);
+ }
+ return key;
+}
+
+static char *__convert_event_value(const int val)
+{
+ char *value = NULL;
+ if (val == 1) {
+ value = g_strdup(EVT_VAL_GPS_ENABLED);
+ } else {
+ value = g_strdup(EVT_VAL_GPS_DISABLED);
+ }
+ return value;
+}
+
+gint location_setting_send_system_event(const char *path, const int val)
+{
+ g_return_val_if_fail(path, -1);
+
+ int ret = 0;
+ char *event = NULL;
+ char *key = NULL;
+ char *value = NULL;
+ bundle *b = NULL;
+
+ event = __convert_event_from_vconf(path);
+ key = __convert_key_from_event(event);
+ value = __convert_event_value(val);
+
+ b = bundle_create();
+ bundle_add_str(b, key, value);
+ ret = eventsystem_request_sending_system_event(event, b);
+ bundle_free(b);
+
+ LOCATION_SECLOG("[%s: %s]", key, value);
+
+ g_free(event);
+ g_free(key);
+ g_free(value);
+ return ret;
+}
+
+static void __event_handler(const char *event_name, bundle *data, void *self)
+{
+ const char *value = NULL;
+
+ if (g_strcmp0(event_name, SYS_EVENT_LOCATION_ENABLE_STATE) == 0) {
+ value = bundle_get_val(data, EVT_KEY_LOCATION_ENABLE_STATE);
+ } else if (g_strcmp0(event_name, SYS_EVENT_GPS_ENABLE_STATE) == 0) {
+ value = bundle_get_val(data, EVT_KEY_GPS_ENABLE_STATE);
+ } else if (g_strcmp0(event_name, SYS_EVENT_NPS_ENABLE_STATE) == 0) {
+ value = bundle_get_val(data, EVT_KEY_NPS_ENABLE_STATE);
+ }
+
+ LOCATION_SECLOG("[%s: %s]", event_name, value);
+}
+
+gint location_setting_add_notify(const gchar *path, SettingCB setting_cb, gpointer self)
+{
+ g_return_val_if_fail(path, -1);
+ g_return_val_if_fail(self, -1);
+
+ const char *event_name = NULL;
+ event_name = __convert_event_from_vconf(path);
+
+ if (eventsystem_register_event(event_name,
+ &g_event_req_id,
+ (eventsystem_handler) __event_handler, NULL) != ES_R_OK) {
+
+ LOCATION_SECLOG("eventsystem_register_event failed");
+ return -1;
+ }
+
+ if (vconf_notify_key_changed(path, setting_cb, self)) {
+ LOCATION_SECLOG("vconf notify add failed [%s]", path);
+ return -1;
+ }
+ LOCATION_SECLOG("vconf notify added [%s]", path);
+ return 0;
+}
+
+gint location_setting_ignore_notify(const gchar *path, SettingCB setting_cb)
+{
+ g_return_val_if_fail(path, -1);
+ g_return_val_if_fail(setting_cb, -1);
+
+ if (eventsystem_unregister_event(g_event_req_id) != ES_R_OK) {
+ LOCATION_SECLOG("eventsystem_unregister_event failed");
+ return -1;
+ }
+
+ if (vconf_ignore_key_changed(path, setting_cb)) {
+ LOCATION_SECLOG("vconf notify remove failed [%s]", path);
+ return -1;
+ }
+ LOCATION_SECLOG("vconf notify removed [%s]", path);
+ return 0;
+}
+
+gint location_state_add_notify(const gchar *path, SettingCB setting_cb, gpointer self)
{
g_return_val_if_fail(path, -1);
g_return_val_if_fail(self, -1);
- if(vconf_notify_key_changed(path, setting_cb, self)){
+ if (vconf_notify_key_changed(path, setting_cb, self)) {
LOCATION_SECLOG("vconf notify add failed [%s]", path);
return -1;
}
return 0;
}
-gint location_setting_ignore_notify(const gchar* path, SettingCB setting_cb)
+gint location_state_ignore_notify(const gchar *path, SettingCB setting_cb)
{
g_return_val_if_fail(path, -1);
g_return_val_if_fail(setting_cb, -1);
- if(vconf_ignore_key_changed(path, setting_cb)){
+ if (vconf_ignore_key_changed(path, setting_cb)) {
LOCATION_SECLOG("vconf notify remove failed [%s]", path);
return -1;
}
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
+ * See the License for the specific language governing permissions and "1
* limitations under the License.
*/
* @brief This file contains the definitions and functions for setting.
*/
+#define LOCATION_UPDATE_INTERVAL_NONE 0
#define LOCATION_UPDATE_INTERVAL_MIN 1
#define LOCATION_UPDATE_INTERVAL_MAX 120
#define LOCATION_UPDATE_INTERVAL_DEFAULT LOCATION_UPDATE_INTERVAL_MIN
#define LOCATION_BATCH_PERIOD_MIN 120
#define LOCATION_BATCH_PERIOD_MAX 600
#define LOCATION_BATCH_PERIOD_DEFAULT LOCATION_BATCH_PERIOD_MIN
+#define LOCATION_MIN_INTERVAL_MIN 1
+#define LOCATION_MIN_INTERVAL_MAX 120
+#define LOCATION_MIN_INTERVAL_DEFAULT LOCATION_MIN_INTERVAL_MIN
+#define LOCATION_MIN_DISTANCE_MIN 1.0
+#define LOCATION_MIN_DISTANCE_MAX 120.0
+#define LOCATION_MIN_DISTANCE_DEFAULT LOCATION_MIN_DISTANCE_MIN
typedef void (*SettingCB)(keynode_t *key, gpointer data);
+
+gint location_setting_send_system_event(const char *path, const int val);
gint location_setting_get_key_val(keynode_t *key);
-gint location_setting_get_int(const gchar* path);
-gboolean location_setting_get_bool(const gchar* path);
-gchar *location_setting_get_string(const gchar* path);
-gint location_setting_add_notify(const gchar* path, SettingCB setting_cb, gpointer self);
-gint location_setting_ignore_notify(const gchar* path, SettingCB setting_cb);
+gint location_setting_get_int(const gchar *path);
+gboolean location_setting_get_bool(const gchar *path);
+gchar *location_setting_get_string(const gchar *path);
+gint location_setting_add_notify(const gchar *path, SettingCB setting_cb, gpointer self);
+gint location_setting_ignore_notify(const gchar *path, SettingCB setting_cb);
+gint location_state_add_notify(const gchar *path, SettingCB setting_cb, gpointer self);
+gint location_state_ignore_notify(const gchar *path, SettingCB setting_cb);
+
#define setting_retval_if_fail(path) {\
- int val = location_setting_get_int(path);\
- if (val == -1){\
- return LOCATION_ERROR_UNKNOWN;\
- } else if (val == 0) {\
- return LOCATION_ERROR_SETTING_OFF;\
- }\
-}
+ int val = location_setting_get_int(path);\
+ if (val == -1){\
+ return LOCATION_ERROR_UNKNOWN;\
+ } else if (val == 0) {\
+ return LOCATION_ERROR_SETTING_OFF;\
+ }\
+ }
#endif
#include "location-signaling-util.h"
#include "location-common-util.h"
#include "location-log.h"
+#include "location-position.h"
-#ifdef TIZEN_WERABLE
-typedef enum {
- _ERR_TIMEOUT = -100,
- _ERR_OUT_OF_SERVICE = -101,
- _ERR_LOCATION_SETTING_OFF = -102, /**< host device's location setting off */
- _ERR_UNKNOWN = -999, /*Unknown error */
-} timestamp_error_t;
void
-error_signaling (LocationObject *obj,
- guint32 signals[LAST_SIGNAL],
- int error_code)
-{
- g_return_if_fail(obj);
- g_return_if_fail(signals);
-
- switch (error_code) {
- case _ERR_LOCATION_SETTING_OFF:{
- LOCATION_LOGD("Signal emit: HOST_SETTING_OFF");
- g_signal_emit (obj, signals[ERROR_EMITTED], 0, LOCATION_ERROR_SETTING_OFF);
- break;
- }
- default: {
- LOCATION_LOGD("Unhandled error.");
- break;
- }
- }
-}
-#endif
-
-void
-enable_signaling (LocationObject *obj,
- guint32 signals[LAST_SIGNAL],
- gboolean *prev_enabled,
- gboolean enabled,
- LocationStatus status)
+enable_signaling(LocationObject *obj,
+ guint32 signals[LAST_SIGNAL],
+ gboolean *prev_enabled,
+ gboolean enabled,
+ LocationStatus status)
{
g_return_if_fail(obj);
g_return_if_fail(signals);
if (*prev_enabled == TRUE && enabled == FALSE) {
*prev_enabled = FALSE;
LOCATION_LOGD("Signal emit: SERVICE_DISABLED");
- g_signal_emit (obj, signals[SERVICE_DISABLED], 0, LOCATION_STATUS_NO_FIX);
- } else if (*prev_enabled == FALSE && enabled == TRUE){
+ g_signal_emit(obj, signals[SERVICE_DISABLED], 0, LOCATION_STATUS_NO_FIX);
+ } else if (*prev_enabled == FALSE && enabled == TRUE) {
*prev_enabled = TRUE;
LOCATION_LOGD("Signal emit: SERVICE_ENABLED");
- g_signal_emit (obj, signals[SERVICE_ENABLED], 0, status);
+ g_signal_emit(obj, signals[SERVICE_ENABLED], 0, status);
}
}
void
-position_signaling (LocationObject *obj,
- guint32 signals[LAST_SIGNAL],
- guint interval,
- guint *updated_timestamp,
- GList *prev_bound,
- LocationPosition *pos,
- LocationAccuracy *acc)
+position_velocity_signaling(LocationObject *obj,
+ guint32 signals[LAST_SIGNAL],
+ guint pos_interval,
+ guint vel_interval,
+ guint loc_interval,
+ guint *pos_updated_timestamp,
+ guint *vel_updated_timestamp,
+ guint *loc_updated_timestamp,
+ GList *prev_bound,
+ LocationPosition *pos,
+ LocationVelocity *vel,
+ LocationAccuracy *acc)
{
- g_return_if_fail(pos);
- g_return_if_fail(acc);
g_return_if_fail(obj);
g_return_if_fail(signals);
+ g_return_if_fail(pos);
int index = 0;
+ int signal_type = 0;
gboolean is_inside = FALSE;
GList *boundary_list = prev_bound;
LocationBoundaryPrivate *priv = NULL;
- if (!pos->timestamp) return;
+ if (!pos->timestamp) return;
- if (pos->timestamp - *updated_timestamp >= interval) {
- g_signal_emit(obj, signals[SERVICE_UPDATED], 0, POSITION_UPDATED, pos, acc);
- *updated_timestamp = pos->timestamp;
+ if (pos_interval > 0) {
+ if (pos->timestamp - *pos_updated_timestamp >= pos_interval) {
+ signal_type |= POSITION_UPDATED;
+ *pos_updated_timestamp = pos->timestamp;
+ }
}
- if(boundary_list) {
- while((priv = (LocationBoundaryPrivate *)g_list_nth_data(boundary_list, index)) != NULL) {
+ if (vel_interval > 0) {
+ if (vel->timestamp - *vel_updated_timestamp >= vel_interval) {
+ signal_type |= VELOCITY_UPDATED;
+ *vel_updated_timestamp = vel->timestamp;
+ }
+ }
+
+ if (loc_interval > 0) {
+ if (pos->timestamp - *loc_updated_timestamp >= loc_interval) {
+ signal_type |= LOCATION_CHANGED;
+ *loc_updated_timestamp = pos->timestamp;
+ }
+ }
+
+ if (signal_type != 0) {
+ g_signal_emit(obj, signals[SERVICE_UPDATED], 0, signal_type, pos, vel, acc);
+ }
+
+ if (boundary_list) {
+ while ((priv = (LocationBoundaryPrivate *)g_list_nth_data(boundary_list, index)) != NULL) {
is_inside = location_boundary_if_inside(priv->boundary, pos);
- if(is_inside) {
- if(priv->zone_status != ZONE_STATUS_IN) {
+ if (is_inside) {
+ if (priv->zone_status != ZONE_STATUS_IN) {
LOCATION_LOGD("Signal emit: ZONE IN");
g_signal_emit(obj, signals[ZONE_IN], 0, priv->boundary, pos, acc);
priv->zone_status = ZONE_STATUS_IN;
}
void
-velocity_signaling (LocationObject *obj,
- guint32 signals[LAST_SIGNAL],
- int interval,
- guint *updated_timestamp,
- LocationVelocity *vel,
- LocationAccuracy *acc)
+distance_based_position_signaling(LocationObject *obj,
+ guint32 signals[LAST_SIGNAL],
+ gboolean enabled,
+ LocationPosition *cur_pos,
+ LocationVelocity *cur_vel,
+ LocationAccuracy *cur_acc,
+ guint min_interval,
+ gdouble min_distance,
+ gboolean *prev_enabled,
+ guint *prev_dist_timestamp,
+ LocationPosition **prev_pos, /* prev : keeping lastest info. */
+ LocationVelocity **prev_vel,
+ LocationAccuracy **prev_acc)
{
- g_return_if_fail(obj);
- g_return_if_fail(signals);
- g_return_if_fail(vel);
+ if (!cur_pos->timestamp) {
+ LOCATION_LOGE("Invalid location with timestamp, 0");
+ return;
+ }
+
+ enable_signaling(obj, signals, prev_enabled, enabled, cur_pos->status);
- if (!vel->timestamp) return;
+ if (cur_pos->timestamp - *prev_dist_timestamp >= min_interval) {
+ g_signal_emit(obj, signals[SERVICE_UPDATED], 0, DISTANCE_UPDATED, cur_pos, cur_vel, cur_acc);
+ *prev_dist_timestamp = cur_pos->timestamp;
- if (vel->timestamp - *updated_timestamp >= interval) {
- g_signal_emit(obj, signals[SERVICE_UPDATED], 0, VELOCITY_UPDATED, vel, acc);
- *updated_timestamp = vel->timestamp;
+ if (*prev_pos) location_position_free(*prev_pos);
+ *prev_pos = location_position_copy(cur_pos);
+
+ } else {
+ gulong distance;
+ int ret = location_get_distance(*prev_pos, cur_pos, &distance);
+ if (ret != LOCATION_ERROR_NONE) {
+ LOCATION_LOGE("Fail to get distance");
+ return;
+ }
+
+ if (distance > min_distance) {
+ g_signal_emit(obj, signals[SERVICE_UPDATED], 0, DISTANCE_UPDATED, cur_pos, cur_vel, cur_acc);
+ *prev_dist_timestamp = cur_pos->timestamp;
+
+ if (*prev_pos) location_position_free(*prev_pos);
+ *prev_pos = location_position_copy(cur_pos);
+ }
}
}
void
-location_signaling (LocationObject *obj,
- guint32 signals[LAST_SIGNAL],
- gboolean enabled,
- GList *boundary_list,
- LocationPosition *cur_pos,
- LocationVelocity *cur_vel,
- LocationAccuracy *cur_acc,
- guint pos_interval, // interval : support an update interval
- guint vel_interval,
- gboolean *prev_enabled,
- guint *prev_pos_timestamp,
- guint *prev_vel_timestamp,
- LocationPosition **prev_pos, // prev : keeping lastest info.
- LocationVelocity **prev_vel,
- LocationAccuracy **prev_acc)
+location_signaling(LocationObject *obj,
+ guint32 signals[LAST_SIGNAL],
+ gboolean enabled,
+ GList *boundary_list,
+ LocationPosition *cur_pos,
+ LocationVelocity *cur_vel,
+ LocationAccuracy *cur_acc,
+ guint pos_interval, /* interval : support an update interval */
+ guint vel_interval,
+ guint loc_interval,
+ gboolean *prev_enabled,
+ guint *prev_pos_timestamp,
+ guint *prev_vel_timestamp,
+ guint *prev_loc_timestamp,
+ LocationPosition **prev_pos, /* prev : keeping lastest info. */
+ LocationVelocity **prev_vel,
+ LocationAccuracy **prev_acc)
{
if (!cur_pos->timestamp) {
LOCATION_LOGD("Invalid location with timestamp, 0");
return;
}
-#ifdef TIZEN_WERABLE
- if ((int)cur_pos->timestamp < 0) {
- LOCATION_LOGD("error transferred via timestamp [%d]", cur_pos->timestamp);
- error_signaling(obj, signals, cur_pos->timestamp);
- return;
- }
-#endif
-
if (*prev_pos) location_position_free(*prev_pos);
if (*prev_vel) location_velocity_free(*prev_vel);
if (*prev_acc) location_accuracy_free(*prev_acc);
- *prev_pos = location_position_copy (cur_pos);
- *prev_vel = location_velocity_copy (cur_vel);
- *prev_acc = location_accuracy_copy (cur_acc);
+ *prev_pos = location_position_copy(cur_pos);
+ *prev_vel = location_velocity_copy(cur_vel);
+ *prev_acc = location_accuracy_copy(cur_acc);
- enable_signaling (obj, signals, prev_enabled, enabled, cur_pos->status);
- position_signaling (obj, signals, pos_interval, prev_pos_timestamp, boundary_list, cur_pos, cur_acc);
- velocity_signaling (obj, signals, vel_interval, prev_vel_timestamp, cur_vel, cur_acc);
+ enable_signaling(obj, signals, prev_enabled, enabled, cur_pos->status);
+ position_velocity_signaling(obj, signals, pos_interval, vel_interval, loc_interval, prev_pos_timestamp, prev_vel_timestamp, prev_loc_timestamp, boundary_list, cur_pos, cur_vel, cur_acc);
}
void
satellite_signaling(LocationObject *obj,
- guint32 signals[LAST_SIGNAL],
- gboolean *prev_enabled,
- int interval,
- gboolean emit,
- guint *updated_timestamp,
- LocationSatellite **prev_sat,
- LocationSatellite *sat)
+ guint32 signals[LAST_SIGNAL],
+ gboolean *prev_enabled,
+ int interval,
+ gboolean emit,
+ guint *updated_timestamp,
+ LocationSatellite **prev_sat,
+ LocationSatellite *sat)
{
g_return_if_fail(obj);
g_return_if_fail(signals);
if (!sat->timestamp) return;
- if (*prev_sat) location_satellite_free (*prev_sat);
- *prev_sat = location_satellite_copy (sat);
+ if (*prev_sat) location_satellite_free(*prev_sat);
+ *prev_sat = location_satellite_copy(sat);
if (emit && sat->timestamp - *updated_timestamp >= interval) {
- g_signal_emit(obj, signals[SERVICE_UPDATED], 0, SATELLITE_UPDATED, sat, NULL);
+ g_signal_emit(obj, signals[SERVICE_UPDATED], 0, SATELLITE_UPDATED, sat, NULL, NULL);
*updated_timestamp = sat->timestamp;
}
}
G_BEGIN_DECLS
-void enable_signaling (LocationObject *obj, guint32 signals[LAST_SIGNAL], gboolean *prev_enabled, gboolean enabled, LocationStatus status);
+void enable_signaling(LocationObject *obj, guint32 signals[LAST_SIGNAL], gboolean *prev_enabled, gboolean enabled, LocationStatus status);
-void position_signaling (LocationObject *obj, guint32 signals[LAST_SIGNAL],
- guint interval, guint *updated_interval,
- GList *prev_bound, LocationPosition *pos, LocationAccuracy *acc);
-
-void velocity_signaling (LocationObject* obj, guint32 signals[LAST_SIGNAL],
- int interval, guint *updated_timestamp,
- LocationVelocity *vel, LocationAccuracy *acc);
+void position_velocity_signaling(LocationObject *obj, guint32 signals[LAST_SIGNAL],
+ guint pos_interval, guint vel_interval, guint loc_interval,
+ guint *pos_updated_timestamp, guint *vel_updated_timestamp, guint *loc_updated_timestamp,
+ GList *prev_bound, LocationPosition *pos, LocationVelocity *vel, LocationAccuracy *acc);
void satellite_signaling(LocationObject *obj, guint32 signals[LAST_SIGNAL],
- gboolean *prev_enabled, int interval, gboolean emit,
- guint *updated_timestamp, LocationSatellite **pre_sat,
- LocationSatellite *sat);
-
-void location_signaling (LocationObject *obj, guint32 signals[LAST_SIGNAL],
- gboolean enabled, GList *boundary_list,
- LocationPosition *cur_pos, LocationVelocity *cur_vel, LocationAccuracy *cur_acc,
- guint pos_interval, guint vel_interval,
- gboolean *prev_enabled, guint *prev_pos_timestamp, guint *prev_vel_timestamp,
- LocationPosition **prev_pos, LocationVelocity **prev_vel, LocationAccuracy **prev_acc);
+ gboolean *prev_enabled, int interval, gboolean emit,
+ guint *updated_timestamp, LocationSatellite **pre_sat,
+ LocationSatellite *sat);
+
+void location_signaling(LocationObject *obj, guint32 signals[LAST_SIGNAL],
+ gboolean enabled, GList *boundary_list,
+ LocationPosition *cur_pos, LocationVelocity *cur_vel, LocationAccuracy *cur_acc,
+ guint pos_interval, guint vel_interval, guint loc_interval,
+ gboolean *prev_enabled, guint *prev_pos_timestamp, guint *prev_vel_timestamp, guint *prev_loc_timestamp,
+ LocationPosition **prev_pos, LocationVelocity **prev_vel, LocationAccuracy **prev_acc);
+
+void distance_based_position_signaling(LocationObject *obj, guint32 signals[LAST_SIGNAL],
+ gboolean enabled,
+ LocationPosition *cur_pos, LocationVelocity *cur_vel, LocationAccuracy *cur_acc,
+ guint min_interval, gdouble min_distance, gboolean *prev_enabled, guint *prev_dist_timestamp,
+ LocationPosition **prev_pos, LocationVelocity **prev_vel, LocationAccuracy **prev_acc);
G_END_DECLS
#include "location-log.h"
GType
-location_velocity_get_type (void)
+location_velocity_get_type(void)
{
static volatile gsize type_volatile = 0;
- if(g_once_init_enter(&type_volatile)) {
- GType type = g_boxed_type_register_static (
- g_intern_static_string ("LocationVelocity"),
- (GBoxedCopyFunc) location_velocity_copy,
- (GBoxedFreeFunc) location_velocity_free);
+ if (g_once_init_enter(&type_volatile)) {
+ GType type = g_boxed_type_register_static(
+ g_intern_static_string("LocationVelocity"),
+ (GBoxedCopyFunc) location_velocity_copy,
+ (GBoxedFreeFunc) location_velocity_free);
g_once_init_leave(&type_volatile, type);
}
return type_volatile;
}
-EXPORT_API LocationVelocity*
-location_velocity_new (guint timestamp,
- gdouble speed,
- gdouble direction,
- gdouble climb)
+EXPORT_API LocationVelocity *
+location_velocity_new(guint timestamp,
+ gdouble speed,
+ gdouble direction,
+ gdouble climb)
{
- LocationVelocity* velocity = g_slice_new0(LocationVelocity);
+ LocationVelocity *velocity = g_slice_new0(LocationVelocity);
g_return_val_if_fail(velocity, NULL);
velocity->timestamp = timestamp;
}
EXPORT_API void
-location_velocity_free (LocationVelocity* velocity)
+location_velocity_free(LocationVelocity *velocity)
{
g_return_if_fail(velocity);
g_slice_free(LocationVelocity, velocity);
}
EXPORT_API gboolean
-location_velocity_equal (const LocationVelocity *velocity1, const LocationVelocity *velocity2)
+location_velocity_equal(const LocationVelocity *velocity1, const LocationVelocity *velocity2)
{
g_return_val_if_fail(velocity1, FALSE);
g_return_val_if_fail(velocity2, FALSE);
if (velocity1->timestamp == velocity2->timestamp &&
- velocity1->speed == velocity2->speed &&
- velocity1->direction == velocity2->direction &&
- velocity1->climb == velocity2->climb)
+ velocity1->speed == velocity2->speed &&
+ velocity1->direction == velocity2->direction &&
+ velocity1->climb == velocity2->climb)
return TRUE;
return FALSE;
}
-EXPORT_API LocationVelocity*
-location_velocity_copy (const LocationVelocity *velocity)
+EXPORT_API LocationVelocity *
+location_velocity_copy(const LocationVelocity *velocity)
{
g_return_val_if_fail(velocity, NULL);
LocationVelocity *new_velocity = NULL;
new_velocity = location_velocity_new(velocity->timestamp,
- velocity->speed,
- velocity->direction,
- velocity->climb);
+ velocity->speed,
+ velocity->direction,
+ velocity->climb);
return new_velocity;
}
G_BEGIN_DECLS
-GType location_velocity_get_type (void);
+GType location_velocity_get_type(void);
#define LOCATION_TYPE_VELOCITY (location_velocity_get_type ())
/**
/**
* @brief This represents velocity information such as as speed, direction, climb.
*/
-struct _LocationVelocity
-{
- guint timestamp; ///< Time stamp.
- gdouble speed; ///< The speed over ground. (km/h)
- gdouble direction; ///< The course made in degrees relative to true north. The value is always in the range [0.0, 360.0] degree.
- gdouble climb; ///< The vertical speed. (km/h)
+struct _LocationVelocity {
+ guint timestamp; /*/< Time stamp. */
+ gdouble speed; /*/< The speed over ground. (km/h) */
+ gdouble direction; /*/< The course made in degrees relative to true north. The value is always in the range [0.0, 360.0] degree. */
+ gdouble climb; /*/< The vertical speed. (km/h) */
};
/**
* @return a new #LocationVelocity
* @retval NULL if error occured
*/
-LocationVelocity *location_velocity_new (guint timestamp, gdouble speed, gdouble direction, gdouble climb);
+LocationVelocity *location_velocity_new(guint timestamp, gdouble speed, gdouble direction, gdouble climb);
/**
* @brief Free a #LocationVelocity.
* @param [in] velocity - a #LocationVelocity.
* @return None.
*/
-void location_velocity_free (LocationVelocity *velocity);
+void location_velocity_free(LocationVelocity *velocity);
/**
* @brief Compares two velocities for equality, returning TRUE if they are equal.
* TRUE - if equal\n
* FALSE - if not equal\n
*/
-gboolean location_velocity_equal (const LocationVelocity *velocity1, const LocationVelocity *velocity2);
+gboolean location_velocity_equal(const LocationVelocity *velocity1, const LocationVelocity *velocity2);
/**
* @brief Makes a copy of #LocationVelocity
* @return a new #LocationVelocity
* @retval NULL if error occured
*/
-LocationVelocity *location_velocity_copy (const LocationVelocity *velocity);
+LocationVelocity *location_velocity_copy(const LocationVelocity *velocity);
/**
* @} @}
typedef struct _LocationWpsPrivate {
LocationWpsMod *mod;
- GMutex mutex;
- gboolean is_started;
- guint app_type;
- gboolean set_noti;
- gboolean enabled;
- guint pos_updated_timestamp;
- guint pos_interval;
- guint vel_updated_timestamp;
- guint vel_interval;
- guint loc_timeout;
+ GMutex mutex;
+ gboolean is_started;
+ guint app_type;
+ gboolean set_noti;
+ gboolean enabled;
+ guint pos_updated_timestamp;
+ guint pos_interval;
+ guint vel_updated_timestamp;
+ guint vel_interval;
+ guint loc_updated_timestamp;
+ guint loc_interval;
+ guint loc_timeout;
+ guint dist_updated_timestamp;
+ guint min_interval;
+ gdouble min_distance;
LocationPosition *pos;
LocationVelocity *vel;
LocationAccuracy *acc;
- GList *boundary_list;
+ GList *boundary_list;
} LocationWpsPrivate;
enum {
- PROP_0,
- PROP_METHOD_TYPE,
- PROP_IS_STARTED,
- PROP_LAST_POSITION,
- PROP_POS_INTERVAL,
- PROP_VEL_INTERVAL,
- PROP_BOUNDARY,
- PROP_REMOVAL_BOUNDARY,
- PROP_MAX
+ PROP_0,
+ PROP_METHOD_TYPE,
+ PROP_IS_STARTED,
+ PROP_LAST_POSITION,
+ PROP_POS_INTERVAL,
+ PROP_VEL_INTERVAL,
+ PROP_LOC_INTERVAL,
+ PROP_BOUNDARY,
+ PROP_REMOVAL_BOUNDARY,
+ PROP_MIN_INTERVAL,
+ PROP_MIN_DISTANCE,
+ PROP_MAX
};
static guint32 signals[LAST_SIGNAL] = {0, };
#define GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), LOCATION_TYPE_WPS, LocationWpsPrivate))
-static void location_ielement_interface_init (LocationIElementInterface *iface);
+static void location_ielement_interface_init(LocationIElementInterface *iface);
-G_DEFINE_TYPE_WITH_CODE (LocationWps, location_wps, G_TYPE_OBJECT,
- G_IMPLEMENT_INTERFACE (LOCATION_TYPE_IELEMENT,
- location_ielement_interface_init));
+G_DEFINE_TYPE_WITH_CODE(LocationWps, location_wps, G_TYPE_OBJECT,
+ G_IMPLEMENT_INTERFACE(LOCATION_TYPE_IELEMENT,
+ location_ielement_interface_init));
static void
__reset_pos_data_from_priv(LocationWpsPrivate *priv)
}
static gboolean
-__get_started (gpointer self)
+__get_started(gpointer self)
{
- LocationWpsPrivate* priv = GET_PRIVATE(self);
- g_return_val_if_fail (priv, FALSE);
+ LocationWpsPrivate *priv = GET_PRIVATE(self);
+ g_return_val_if_fail(priv, FALSE);
return priv->is_started;
}
static int
-__set_started (gpointer self, gboolean started)
+__set_started(gpointer self, gboolean started)
{
- LocationWpsPrivate* priv = GET_PRIVATE(self);
- g_return_val_if_fail (priv, -1);
+ LocationWpsPrivate *priv = GET_PRIVATE(self);
+ g_return_val_if_fail(priv, -1);
if (priv->is_started != started) {
- g_mutex_lock (&priv->mutex);
+ g_mutex_lock(&priv->mutex);
priv->is_started = started;
- g_mutex_unlock (&priv->mutex);
+ g_mutex_unlock(&priv->mutex);
}
return 0;
}
static void
-wps_status_cb (gboolean enabled,
- LocationStatus status,
- gpointer self)
+wps_status_cb(gboolean enabled,
+ LocationStatus status,
+ gpointer self)
{
LOCATION_LOGD("wps_status_cb");
g_return_if_fail(self);
- LocationWpsPrivate* priv = GET_PRIVATE(self);
+ LocationWpsPrivate *priv = GET_PRIVATE(self);
g_return_if_fail(priv);
if (priv->enabled == TRUE && enabled == FALSE) {
__set_started(self, FALSE);
}
static void
-wps_location_cb (gboolean enabled,
- LocationPosition *pos,
- LocationVelocity *vel,
- LocationAccuracy *acc,
- gpointer self)
+wps_location_cb(gboolean enabled,
+ LocationPosition *pos,
+ LocationVelocity *vel,
+ LocationAccuracy *acc,
+ gpointer self)
{
g_return_if_fail(self);
g_return_if_fail(pos);
g_return_if_fail(vel);
g_return_if_fail(acc);
- LocationWpsPrivate* priv = GET_PRIVATE(self);
+ LocationWpsPrivate *priv = GET_PRIVATE(self);
g_return_if_fail(priv);
+ if (priv->min_interval != LOCATION_UPDATE_INTERVAL_NONE) {
+ distance_based_position_signaling(self,
+ signals,
+ enabled,
+ pos,
+ vel,
+ acc,
+ priv->min_interval,
+ priv->min_distance,
+ &(priv->enabled),
+ &(priv->dist_updated_timestamp),
+ &(priv->pos),
+ &(priv->vel),
+ &(priv->acc));
+ }
location_signaling(self,
- signals,
- enabled,
- priv->boundary_list,
- pos,
- vel,
- acc,
- priv->pos_interval,
- priv->vel_interval,
- &(priv->enabled),
- &(priv->pos_updated_timestamp),
- &(priv->vel_updated_timestamp),
- &(priv->pos),
- &(priv->vel),
- &(priv->acc));
+ signals,
+ enabled,
+ priv->boundary_list,
+ pos,
+ vel,
+ acc,
+ priv->pos_interval,
+ priv->vel_interval,
+ priv->loc_interval,
+ &(priv->enabled),
+ &(priv->pos_updated_timestamp),
+ &(priv->vel_updated_timestamp),
+ &(priv->loc_updated_timestamp),
+ &(priv->pos),
+ &(priv->vel),
+ &(priv->acc));
}
static void
location_setting_wps_cb(keynode_t *key,
- gpointer self)
+ gpointer self)
{
LOCATION_LOGD("location_setting_wps_cb");
g_return_if_fail(key);
g_return_if_fail(self);
- LocationWpsPrivate* priv = GET_PRIVATE(self);
+ LocationWpsPrivate *priv = GET_PRIVATE(self);
g_return_if_fail(priv);
g_return_if_fail(priv->mod);
g_return_if_fail(priv->mod->handler);
if (1 == location_setting_get_int(VCONFKEY_LOCATION_NETWORK_ENABLED) && priv->mod->ops.start && !__get_started(self)) {
LOCATION_LOGD("location resumed by setting");
__set_started(self, TRUE);
- ret = priv->mod->ops.start (priv->mod->handler, wps_status_cb, wps_location_cb, NULL, self);
+ ret = priv->mod->ops.start(priv->mod->handler, wps_status_cb, wps_location_cb, NULL, self);
if (ret != LOCATION_ERROR_NONE) {
__set_started(self, FALSE);
LOCATION_LOGD("Fail to start. Error[%d]", ret);
}
static int
-location_wps_start (LocationWps *self)
+location_wps_start(LocationWps *self)
{
LOCATION_LOGD("location_wps_start");
- LocationWpsPrivate* priv = GET_PRIVATE(self);
+ LocationWpsPrivate *priv = GET_PRIVATE(self);
g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
g_return_val_if_fail(priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
g_return_val_if_fail(priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
ret = LOCATION_ERROR_SETTING_OFF;
} else {
__set_started(self, TRUE);
- ret = priv->mod->ops.start (priv->mod->handler, wps_status_cb, wps_location_cb, NULL, self);
+ ret = priv->mod->ops.start(priv->mod->handler, wps_status_cb, wps_location_cb, NULL, self);
if (ret != LOCATION_ERROR_NONE) {
__set_started(self, FALSE);
LOCATION_LOGE("Fail to start wps. Error[%d]", ret);
}
if (priv->app_type != CPPAPP && priv->set_noti == FALSE) {
- location_setting_add_notify (VCONFKEY_LOCATION_NETWORK_ENABLED, location_setting_wps_cb, self);
+ location_setting_add_notify(VCONFKEY_LOCATION_NETWORK_ENABLED, location_setting_wps_cb, self);
priv->set_noti = TRUE;
}
}
static int
-location_wps_stop (LocationWps *self)
+location_wps_stop(LocationWps *self)
{
LOCATION_LOGD("location_wps_stop");
- LocationWpsPrivate* priv = GET_PRIVATE(self);
+ LocationWpsPrivate *priv = GET_PRIVATE(self);
g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
g_return_val_if_fail(priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
g_return_val_if_fail(priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
if (__get_started(self) == TRUE) {
__set_started(self, FALSE);
- ret = priv->mod->ops.stop (priv->mod->handler);
+ ret = priv->mod->ops.stop(priv->mod->handler);
if (ret != LOCATION_ERROR_NONE) {
LOCATION_LOGD("Failed to stop. Error[%d]", ret);
}
}
if (priv->app_type != CPPAPP && priv->set_noti == TRUE) {
- location_setting_ignore_notify (VCONFKEY_LOCATION_NETWORK_ENABLED, location_setting_wps_cb);
+ location_setting_ignore_notify(VCONFKEY_LOCATION_NETWORK_ENABLED, location_setting_wps_cb);
priv->set_noti = FALSE;
}
}
static void
-location_wps_dispose (GObject *gobject)
+location_wps_dispose(GObject *gobject)
{
LOCATION_LOGD("location_wps_dispose");
- LocationWpsPrivate* priv = GET_PRIVATE(gobject);
+ LocationWpsPrivate *priv = GET_PRIVATE(gobject);
g_return_if_fail(priv);
g_mutex_clear(&priv->mutex);
if (priv->app_type != CPPAPP && priv->set_noti == TRUE) {
- location_setting_ignore_notify (VCONFKEY_LOCATION_NETWORK_ENABLED, location_setting_wps_cb);
+ location_setting_ignore_notify(VCONFKEY_LOCATION_NETWORK_ENABLED, location_setting_wps_cb);
priv->set_noti = FALSE;
}
- G_OBJECT_CLASS (location_wps_parent_class)->dispose (gobject);
+ G_OBJECT_CLASS(location_wps_parent_class)->dispose(gobject);
}
static void
-location_wps_finalize (GObject *gobject)
+location_wps_finalize(GObject *gobject)
{
LOCATION_LOGD("location_wps_finalize");
- LocationWpsPrivate* priv = GET_PRIVATE(gobject);
+ LocationWpsPrivate *priv = GET_PRIVATE(gobject);
g_return_if_fail(priv);
module_free(priv->mod, "wps");
if (priv->boundary_list) {
- g_list_free_full (priv->boundary_list, free_boundary_list);
+ g_list_free_full(priv->boundary_list, free_boundary_list);
priv->boundary_list = NULL;
}
location_accuracy_free(priv->acc);
priv->acc = NULL;
}
- G_OBJECT_CLASS (location_wps_parent_class)->finalize (gobject);
+ G_OBJECT_CLASS(location_wps_parent_class)->finalize(gobject);
}
static void
-location_wps_set_property (GObject *object,
- guint property_id,
- const GValue *value,
- GParamSpec *pspec)
+location_wps_set_property(GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec)
{
- LocationWpsPrivate* priv = GET_PRIVATE(object);
+ LocationWpsPrivate *priv = GET_PRIVATE(object);
g_return_if_fail(priv);
int ret = 0;
- switch (property_id){
- case PROP_BOUNDARY:{
- GList *boundary_list = (GList *)g_list_copy(g_value_get_pointer(value));
- ret = set_prop_boundary(&priv->boundary_list, boundary_list);
- if(ret != 0) LOCATION_LOGD("Set boundary. Error[%d]", ret);
- if (boundary_list) g_list_free(boundary_list);
- break;
- }
+ switch (property_id) {
+ case PROP_BOUNDARY: {
+ GList *boundary_list = (GList *)g_list_copy(g_value_get_pointer(value));
+ ret = set_prop_boundary(&priv->boundary_list, boundary_list);
+ if (ret != LOCATION_ERROR_NONE) LOCATION_LOGE("Set boundary. Error[%d]", ret);
+ if (boundary_list) g_list_free(boundary_list);
+ break;
+ }
case PROP_REMOVAL_BOUNDARY: {
- LocationBoundary *req_boundary = (LocationBoundary*) g_value_dup_boxed(value);
- ret = set_prop_removal_boundary(&priv->boundary_list, req_boundary);
- if(ret != 0) LOCATION_LOGD("Set removal boundary. Error[%d]", ret);
- break;
- }
+ LocationBoundary *req_boundary = (LocationBoundary *) g_value_dup_boxed(value);
+ ret = set_prop_removal_boundary(&priv->boundary_list, req_boundary);
+ if (ret != 0) LOCATION_LOGD("Set removal boundary. Error[%d]", ret);
+ break;
+ }
case PROP_POS_INTERVAL: {
- guint interval = g_value_get_uint(value);
- if(interval > 0) {
- if(interval < LOCATION_UPDATE_INTERVAL_MAX)
- priv->pos_interval = interval;
- else
- priv->pos_interval = (guint)LOCATION_UPDATE_INTERVAL_MAX;
+ guint interval = g_value_get_uint(value);
+ if (interval > 0) {
+ if (interval < LOCATION_UPDATE_INTERVAL_MAX)
+ priv->pos_interval = interval;
+ else
+ priv->pos_interval = (guint)LOCATION_UPDATE_INTERVAL_MAX;
+ } else
+ priv->pos_interval = (guint)LOCATION_UPDATE_INTERVAL_DEFAULT;
+
+ break;
}
- else
- priv->pos_interval = (guint)LOCATION_UPDATE_INTERVAL_DEFAULT;
-
- break;
- }
case PROP_VEL_INTERVAL: {
- guint interval = g_value_get_uint(value);
- if(interval > 0) {
- if(interval < LOCATION_UPDATE_INTERVAL_MAX)
- priv->vel_interval = interval;
- else
- priv->vel_interval = (guint)LOCATION_UPDATE_INTERVAL_MAX;
+ guint interval = g_value_get_uint(value);
+ if (interval > 0) {
+ if (interval < LOCATION_UPDATE_INTERVAL_MAX)
+ priv->vel_interval = interval;
+ else
+ priv->vel_interval = (guint)LOCATION_UPDATE_INTERVAL_MAX;
+ } else {
+ priv->vel_interval = (guint)LOCATION_UPDATE_INTERVAL_DEFAULT;
+ }
+ break;
}
- else {
- priv->vel_interval = (guint)LOCATION_UPDATE_INTERVAL_DEFAULT;
+ case PROP_LOC_INTERVAL: {
+ guint interval = g_value_get_uint(value);
+ LOCATION_LOGD("Set prop>> PROP_LOC_INTERVAL: %u", interval);
+ if (interval > 0) {
+ if (interval < LOCATION_UPDATE_INTERVAL_MAX)
+ priv->loc_interval = interval;
+ else
+ priv->loc_interval = (guint)LOCATION_UPDATE_INTERVAL_MAX;
+ } else
+ priv->loc_interval = (guint)LOCATION_UPDATE_INTERVAL_DEFAULT;
+
+ break;
+ }
+ case PROP_MIN_INTERVAL: {
+ guint interval = g_value_get_uint(value);
+ LOCATION_LOGD("Set prop>> update-min-interval: %u", interval);
+ if (interval > 0) {
+ if (interval < LOCATION_MIN_INTERVAL_MAX)
+ priv->min_interval = interval;
+ else
+ priv->min_interval = (guint)LOCATION_MIN_INTERVAL_MAX;
+ } else
+ priv->min_interval = (guint)LOCATION_MIN_INTERVAL_DEFAULT;
+
+ break;
+ }
+ case PROP_MIN_DISTANCE: {
+ gdouble distance = g_value_get_double(value);
+ LOCATION_LOGD("Set prop>> update-min-distance: %u", distance);
+ if (distance > 0) {
+ if (distance < LOCATION_MIN_DISTANCE_MAX)
+ priv->min_distance = distance;
+ else
+ priv->min_distance = (gdouble)LOCATION_MIN_DISTANCE_MAX;
+ } else
+ priv->min_distance = (gdouble)LOCATION_MIN_DISTANCE_DEFAULT;
+
+ break;
}
- break;
- }
default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec);
break;
}
}
static void
-location_wps_get_property (GObject *object,
- guint property_id,
- GValue *value,
- GParamSpec *pspec)
+location_wps_get_property(GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec)
{
- LocationWpsPrivate *priv = GET_PRIVATE (object);
+ LocationWpsPrivate *priv = GET_PRIVATE(object);
g_return_if_fail(priv);
- switch (property_id){
+ switch (property_id) {
case PROP_METHOD_TYPE:
g_value_set_int(value, LOCATION_METHOD_WPS);
break;
g_value_set_boolean(value, __get_started(object));
break;
case PROP_LAST_POSITION:
- g_value_set_boxed (value, priv->pos);
+ g_value_set_boxed(value, priv->pos);
break;
case PROP_BOUNDARY:
g_value_set_pointer(value, g_list_first(priv->boundary_list));
case PROP_VEL_INTERVAL:
g_value_set_uint(value, priv->vel_interval);
break;
+ case PROP_LOC_INTERVAL:
+ g_value_set_uint(value, priv->loc_interval);
+ break;
+ case PROP_MIN_INTERVAL:
+ g_value_set_uint(value, priv->min_interval);
+ break;
+ case PROP_MIN_DISTANCE:
+ g_value_set_double(value, priv->min_distance);
+ break;
default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec);
break;
}
}
static int
-location_wps_get_position (LocationWps *self,
- LocationPosition **position,
- LocationAccuracy **accuracy)
+location_wps_get_position(LocationWps *self,
+ LocationPosition **position,
+ LocationAccuracy **accuracy)
{
int ret = LOCATION_ERROR_NOT_AVAILABLE;
- LocationWpsPrivate *priv = GET_PRIVATE (self);
+ LocationWpsPrivate *priv = GET_PRIVATE(self);
g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
g_return_val_if_fail(priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
setting_retval_if_fail(VCONFKEY_LOCATION_NETWORK_ENABLED);
if (__get_started(self) != TRUE) {
- LOCATION_LOGD("location is not started");
+ LOCATION_LOGE("location is not started");
return LOCATION_ERROR_NOT_AVAILABLE;
}
if (priv->pos) {
- *position = location_position_copy (priv->pos);
+ *position = location_position_copy(priv->pos);
if (priv->acc) *accuracy = location_accuracy_copy(priv->acc);
else *accuracy = location_accuracy_new(LOCATION_ACCURACY_LEVEL_NONE, 0.0, 0.0);
ret = LOCATION_ERROR_NONE;
}
static int
-location_wps_get_position_ext (LocationWps *self,
- LocationPosition **position,
- LocationVelocity **velocity,
- LocationAccuracy **accuracy)
+location_wps_get_position_ext(LocationWps *self,
+ LocationPosition **position,
+ LocationVelocity **velocity,
+ LocationAccuracy **accuracy)
{
int ret = LOCATION_ERROR_NOT_AVAILABLE;
- LocationWpsPrivate *priv = GET_PRIVATE (self);
+ LocationWpsPrivate *priv = GET_PRIVATE(self);
g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
g_return_val_if_fail(priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
setting_retval_if_fail(VCONFKEY_LOCATION_NETWORK_ENABLED);
if (__get_started(self) != TRUE) {
- LOCATION_LOGD("location is not started");
+ LOCATION_LOGE("location is not started");
return LOCATION_ERROR_NOT_AVAILABLE;
}
if (priv->pos && priv->vel) {
- *position = location_position_copy (priv->pos);
- *velocity = location_velocity_copy (priv->vel);
+ *position = location_position_copy(priv->pos);
+ *velocity = location_velocity_copy(priv->vel);
if (priv->acc) *accuracy = location_accuracy_copy(priv->acc);
else *accuracy = location_accuracy_new(LOCATION_ACCURACY_LEVEL_NONE, 0.0, 0.0);
ret = LOCATION_ERROR_NONE;
static int
-location_wps_get_last_position (LocationWps *self,
- LocationPosition **position,
- LocationAccuracy **accuracy)
+location_wps_get_last_position(LocationWps *self,
+ LocationPosition **position,
+ LocationAccuracy **accuracy)
{
- LocationWpsPrivate *priv = GET_PRIVATE (self);
+ LocationWpsPrivate *priv = GET_PRIVATE(self);
g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
g_return_val_if_fail(priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
setting_retval_if_fail(VCONFKEY_LOCATION_NETWORK_ENABLED);
LocationVelocity *_velocity = NULL;
LocModWpsOps ops = priv->mod->ops;
- g_return_val_if_fail (priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (ops.get_last_position, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(ops.get_last_position, LOCATION_ERROR_NOT_AVAILABLE);
ret = ops.get_last_position(priv->mod->handler, position, &_velocity, accuracy);
if (_velocity) location_velocity_free(_velocity);
}
static int
-location_wps_get_last_position_ext (LocationWps *self,
- LocationPosition **position,
- LocationVelocity **velocity,
- LocationAccuracy **accuracy)
+location_wps_get_last_position_ext(LocationWps *self,
+ LocationPosition **position,
+ LocationVelocity **velocity,
+ LocationAccuracy **accuracy)
{
- LocationWpsPrivate *priv = GET_PRIVATE (self);
- g_return_val_if_fail (priv, LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
+ LocationWpsPrivate *priv = GET_PRIVATE(self);
+ g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
setting_retval_if_fail(VCONFKEY_LOCATION_NETWORK_ENABLED);
LocModWpsOps ops = priv->mod->ops;
- g_return_val_if_fail (priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (ops.get_last_position, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(ops.get_last_position, LOCATION_ERROR_NOT_AVAILABLE);
return ops.get_last_position(priv->mod->handler, position, velocity, accuracy);
}
static int
-location_wps_get_velocity (LocationWps *self,
- LocationVelocity **velocity,
- LocationAccuracy **accuracy)
+location_wps_get_velocity(LocationWps *self,
+ LocationVelocity **velocity,
+ LocationAccuracy **accuracy)
{
int ret = LOCATION_ERROR_NOT_AVAILABLE;
- LocationWpsPrivate *priv = GET_PRIVATE (self);
+ LocationWpsPrivate *priv = GET_PRIVATE(self);
g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
g_return_val_if_fail(priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
setting_retval_if_fail(VCONFKEY_LOCATION_NETWORK_ENABLED);
if (__get_started(self) != TRUE) {
- LOCATION_LOGD("location is not started");
+ LOCATION_LOGE("location is not started");
return LOCATION_ERROR_NOT_AVAILABLE;
}
if (priv->vel) {
- *velocity = location_velocity_copy (priv->vel);
+ *velocity = location_velocity_copy(priv->vel);
if (priv->acc) *accuracy = location_accuracy_copy(priv->acc);
else *accuracy = location_accuracy_new(LOCATION_ACCURACY_LEVEL_NONE, 0.0, 0.0);
ret = LOCATION_ERROR_NONE;
}
static int
-location_wps_get_last_velocity (LocationWps *self,
- LocationVelocity **velocity,
- LocationAccuracy **accuracy)
+location_wps_get_last_velocity(LocationWps *self,
+ LocationVelocity **velocity,
+ LocationAccuracy **accuracy)
{
- LocationWpsPrivate *priv = GET_PRIVATE (self);
+ LocationWpsPrivate *priv = GET_PRIVATE(self);
g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
g_return_val_if_fail(priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
setting_retval_if_fail(VCONFKEY_LOCATION_NETWORK_ENABLED);
LocationPosition *_position = NULL;
LocModWpsOps ops = priv->mod->ops;
- g_return_val_if_fail (priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
ret = ops.get_last_position(priv->mod->handler, &_position, velocity, accuracy);
if (!_position) location_position_free(_position);
{
LOCATION_LOGD("__single_location_timeout_cb");
LocationWps *self = (LocationWps *)data;
- LocationWpsPrivate* priv = GET_PRIVATE(self);
+ LocationWpsPrivate *priv = GET_PRIVATE(self);
g_return_val_if_fail(priv, FALSE);
LocationPosition *pos = location_position_new(0, 0.0, 0.0, 0.0, LOCATION_STATUS_NO_FIX);
if (priv->loc_timeout) g_source_remove(priv->loc_timeout);
priv->loc_timeout = 0;
- g_signal_emit(self, signals[LOCATION_UPDATED], LOCATION_ERROR_NOT_AVAILABLE, 0, pos, vel, acc);
+ g_signal_emit(self, signals[LOCATION_UPDATED], 0, LOCATION_ERROR_NOT_AVAILABLE, pos, vel, acc);
location_wps_stop(self);
return FALSE;
}
+
static void
-wps_single_location_cb (gboolean enabled,
- LocationPosition *pos,
- LocationVelocity *vel,
- LocationAccuracy *acc,
- gpointer self)
+wps_single_location_cb(gboolean enabled,
+ LocationPosition *pos,
+ LocationVelocity *vel,
+ LocationAccuracy *acc,
+ gpointer self)
{
LOCATION_LOGD("wps_single_location_cb");
g_return_if_fail(self);
g_return_if_fail(vel);
g_return_if_fail(acc);
- LocationWpsPrivate* priv = GET_PRIVATE(self);
+ LocationWpsPrivate *priv = GET_PRIVATE(self);
g_return_if_fail(priv);
- g_signal_emit(self, signals[LOCATION_UPDATED], LOCATION_ERROR_NONE, 0, pos, vel, acc);
+ g_signal_emit(self, signals[LOCATION_UPDATED], 0, LOCATION_ERROR_NONE, pos, vel, acc);
if (priv->loc_timeout) {
g_source_remove(priv->loc_timeout);
priv->loc_timeout = 0;
}
static int
-location_wps_request_single_location (LocationWps *self, int timeout)
+location_wps_request_single_location(LocationWps *self, int timeout)
{
LOCATION_LOGD("location_wps_request_single_location");
- LocationWpsPrivate* priv = GET_PRIVATE(self);
- g_return_val_if_fail (priv, LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
- g_return_val_if_fail (priv->mod->ops.start, LOCATION_ERROR_NOT_AVAILABLE);
+ LocationWpsPrivate *priv = GET_PRIVATE(self);
+ g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
+ g_return_val_if_fail(priv->mod->ops.start, LOCATION_ERROR_NOT_AVAILABLE);
if (__get_started(self) == TRUE) return LOCATION_ERROR_NONE;
int ret = LOCATION_ERROR_NONE;
__set_started(self, TRUE);
- ret = priv->mod->ops.start (priv->mod->handler, wps_status_cb, wps_single_location_cb, NULL, self);
+ ret = priv->mod->ops.start(priv->mod->handler, wps_status_cb, wps_single_location_cb, NULL, self);
if (ret != LOCATION_ERROR_NONE) {
LOCATION_LOGE("Fail to start request single. Error[%d]", ret);
__set_started(self, FALSE);
return ret;
} else {
- if(priv->loc_timeout != 0) {
- g_source_remove (priv->loc_timeout);
+ if (priv->loc_timeout != 0) {
+ g_source_remove(priv->loc_timeout);
}
priv->loc_timeout = g_timeout_add_seconds(timeout, __single_location_timeout_cb, self);
}
}
static int
-location_wps_get_satellite (LocationWps *self,
- LocationSatellite **satellite)
+location_wps_get_satellite(LocationWps *self,
+ LocationSatellite **satellite)
{
return LOCATION_ERROR_NOT_SUPPORTED;
}
static int
-location_wps_get_last_satellite (LocationWps *self,
- LocationSatellite **satellite)
+location_wps_get_last_satellite(LocationWps *self,
+ LocationSatellite **satellite)
{
return LOCATION_ERROR_NOT_SUPPORTED;
}
static int
-location_wps_set_option (LocationWps *self, const char *option)
+location_wps_set_option(LocationWps *self, const char *option)
{
- LocationWpsPrivate* priv = GET_PRIVATE(self);
+ LocationWpsPrivate *priv = GET_PRIVATE(self);
g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
g_return_val_if_fail(priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
g_return_val_if_fail(priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
return LOCATION_ERROR_NONE;
}
+static int
+location_wps_get_nmea(LocationWps *self,
+ char **nmea_data)
+{
+ return LOCATION_ERROR_NOT_SUPPORTED;
+}
+
static void
-location_ielement_interface_init (LocationIElementInterface *iface)
+location_ielement_interface_init(LocationIElementInterface *iface)
{
iface->start = (TYPE_START_FUNC)location_wps_start;
iface->stop = (TYPE_STOP_FUNC)location_wps_stop;
iface->get_last_satellite = (TYPE_GET_SATELLITE)location_wps_get_last_satellite;
iface->set_option = (TYPE_SET_OPTION)location_wps_set_option;
iface->request_single_location = (TYPE_REQUEST_SINGLE_LOCATION)location_wps_request_single_location;
+ iface->get_nmea = (TYPE_GET_NMEA)location_wps_get_nmea;
}
static void
-location_wps_init (LocationWps *self)
+location_wps_init(LocationWps *self)
{
LOCATION_LOGD("location_wps_init");
- LocationWpsPrivate* priv = GET_PRIVATE(self);
+ LocationWpsPrivate *priv = GET_PRIVATE(self);
g_return_if_fail(priv);
- priv->mod = (LocationWpsMod*)module_new("wps");
- if(!priv->mod) LOCATION_LOGW("module loading failed");
+ priv->mod = (LocationWpsMod *)module_new("wps");
+ if (!priv->mod) LOCATION_LOGW("module loading failed");
g_mutex_init(&priv->mutex);
priv->is_started = FALSE;
priv->set_noti = FALSE;
- priv->enabled= FALSE;
+ priv->enabled = FALSE;
priv->pos_interval = LOCATION_UPDATE_INTERVAL_DEFAULT;
priv->vel_interval = LOCATION_UPDATE_INTERVAL_DEFAULT;
+ priv->loc_interval = LOCATION_UPDATE_INTERVAL_DEFAULT;
+ priv->min_interval = LOCATION_UPDATE_INTERVAL_NONE;
priv->pos_updated_timestamp = 0;
priv->vel_updated_timestamp = 0;
+ priv->loc_updated_timestamp = 0;
priv->pos = NULL;
priv->vel = NULL;
}
static void
-location_wps_class_init (LocationWpsClass *klass)
+location_wps_class_init(LocationWpsClass *klass)
{
LOCATION_LOGD("location_wps_class_init");
- GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+ GObjectClass *gobject_class = G_OBJECT_CLASS(klass);
gobject_class->set_property = location_wps_set_property;
gobject_class->get_property = location_wps_get_property;
gobject_class->dispose = location_wps_dispose;
gobject_class->finalize = location_wps_finalize;
- g_type_class_add_private (klass, sizeof (LocationWpsPrivate));
-
- signals[SERVICE_ENABLED] = g_signal_new ("service-enabled",
- G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_FIRST |
- G_SIGNAL_NO_RECURSE,
- G_STRUCT_OFFSET (LocationWpsClass, enabled),
- NULL, NULL,
- location_VOID__UINT,
- G_TYPE_NONE, 1,
- G_TYPE_UINT);
-
- signals[SERVICE_DISABLED] = g_signal_new ("service-disabled",
- G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_FIRST |
- G_SIGNAL_NO_RECURSE,
- G_STRUCT_OFFSET (LocationWpsClass, disabled),
- NULL, NULL,
- location_VOID__UINT,
- G_TYPE_NONE, 1,
- G_TYPE_UINT);
-
- signals[SERVICE_UPDATED] = g_signal_new ("service-updated",
- G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_FIRST |
- G_SIGNAL_NO_RECURSE,
- G_STRUCT_OFFSET (LocationWpsClass, updated),
- NULL, NULL,
- location_VOID__UINT_POINTER_POINTER,
- G_TYPE_NONE, 3,
- G_TYPE_UINT,
- G_TYPE_POINTER,
- G_TYPE_POINTER);
-
- signals[LOCATION_UPDATED] = g_signal_new ("location-updated",
- G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_FIRST |
- G_SIGNAL_NO_RECURSE,
- G_STRUCT_OFFSET (LocationWpsClass, location_update),
- NULL, NULL,
- location_VOID__INT_POINTER_POINTER_POINTER,
- G_TYPE_NONE, 4,
- G_TYPE_INT,
- G_TYPE_POINTER,
- G_TYPE_POINTER,
- G_TYPE_POINTER);
-
- signals[ZONE_IN] = g_signal_new ("zone-in",
- G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_FIRST |
- G_SIGNAL_NO_RECURSE,
- G_STRUCT_OFFSET (LocationWpsClass, zone_in),
- NULL, NULL,
- location_VOID__POINTER_POINTER_POINTER,
- G_TYPE_NONE, 3,
- G_TYPE_POINTER,
- G_TYPE_POINTER,
- G_TYPE_POINTER);
-
- signals[ZONE_OUT] = g_signal_new ("zone-out",
- G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_FIRST |
- G_SIGNAL_NO_RECURSE,
- G_STRUCT_OFFSET (LocationWpsClass, zone_out),
- NULL, NULL,
- location_VOID__POINTER_POINTER_POINTER,
- G_TYPE_NONE, 3,
- G_TYPE_POINTER,
- G_TYPE_POINTER,
- G_TYPE_POINTER);
-
- properties[PROP_METHOD_TYPE] = g_param_spec_int ("method",
- "method type",
- "location method type name",
- LOCATION_METHOD_WPS,
- LOCATION_METHOD_WPS,
- LOCATION_METHOD_WPS,
- G_PARAM_READABLE);
-
- properties[PROP_IS_STARTED] = g_param_spec_boolean ("is_started",
- "wps is started prop",
- "wps is started status",
- FALSE,
- G_PARAM_READWRITE);
-
- properties[PROP_LAST_POSITION] = g_param_spec_boxed ("last-position",
- "wps last position prop",
- "wps last position data",
- LOCATION_TYPE_POSITION,
- G_PARAM_READABLE);
-
- properties[PROP_POS_INTERVAL] = g_param_spec_uint ("pos-interval",
- "wps position interval prop",
- "wps position interval data",
- LOCATION_UPDATE_INTERVAL_MIN,
- LOCATION_UPDATE_INTERVAL_MAX,
- LOCATION_UPDATE_INTERVAL_DEFAULT,
- G_PARAM_READWRITE);
-
- properties[PROP_VEL_INTERVAL] = g_param_spec_uint ("vel-interval",
- "wps velocity interval prop",
- "wps velocity interval data",
- LOCATION_UPDATE_INTERVAL_MIN,
- LOCATION_UPDATE_INTERVAL_MAX,
- LOCATION_UPDATE_INTERVAL_DEFAULT,
- G_PARAM_READWRITE);
-
- properties[PROP_BOUNDARY] = g_param_spec_pointer ("boundary",
- "wps boundary prop",
- "wps boundary data",
- G_PARAM_READWRITE);
+ g_type_class_add_private(klass, sizeof(LocationWpsPrivate));
+
+ signals[SERVICE_ENABLED] = g_signal_new("service-enabled",
+ G_TYPE_FROM_CLASS(klass),
+ G_SIGNAL_RUN_FIRST |
+ G_SIGNAL_NO_RECURSE,
+ G_STRUCT_OFFSET(LocationWpsClass, enabled),
+ NULL, NULL,
+ location_VOID__UINT,
+ G_TYPE_NONE, 1,
+ G_TYPE_UINT);
+
+ signals[SERVICE_DISABLED] = g_signal_new("service-disabled",
+ G_TYPE_FROM_CLASS(klass),
+ G_SIGNAL_RUN_FIRST |
+ G_SIGNAL_NO_RECURSE,
+ G_STRUCT_OFFSET(LocationWpsClass, disabled),
+ NULL, NULL,
+ location_VOID__UINT,
+ G_TYPE_NONE, 1,
+ G_TYPE_UINT);
+
+ signals[SERVICE_UPDATED] = g_signal_new("service-updated",
+ G_TYPE_FROM_CLASS(klass),
+ G_SIGNAL_RUN_FIRST |
+ G_SIGNAL_NO_RECURSE,
+ G_STRUCT_OFFSET(LocationWpsClass, updated),
+ NULL, NULL,
+ location_VOID__INT_POINTER_POINTER_POINTER,
+ G_TYPE_NONE, 4,
+ G_TYPE_INT,
+ G_TYPE_POINTER,
+ G_TYPE_POINTER,
+ G_TYPE_POINTER);
+
+ signals[LOCATION_UPDATED] = g_signal_new("location-updated",
+ G_TYPE_FROM_CLASS(klass),
+ G_SIGNAL_RUN_FIRST |
+ G_SIGNAL_NO_RECURSE,
+ G_STRUCT_OFFSET(LocationWpsClass, location_updated),
+ NULL, NULL,
+ location_VOID__INT_POINTER_POINTER_POINTER,
+ G_TYPE_NONE, 4,
+ G_TYPE_INT,
+ G_TYPE_POINTER,
+ G_TYPE_POINTER,
+ G_TYPE_POINTER);
+
+ signals[ZONE_IN] = g_signal_new("zone-in",
+ G_TYPE_FROM_CLASS(klass),
+ G_SIGNAL_RUN_FIRST |
+ G_SIGNAL_NO_RECURSE,
+ G_STRUCT_OFFSET(LocationWpsClass, zone_in),
+ NULL, NULL,
+ location_VOID__POINTER_POINTER_POINTER,
+ G_TYPE_NONE, 3,
+ G_TYPE_POINTER,
+ G_TYPE_POINTER,
+ G_TYPE_POINTER);
+
+ signals[ZONE_OUT] = g_signal_new("zone-out",
+ G_TYPE_FROM_CLASS(klass),
+ G_SIGNAL_RUN_FIRST |
+ G_SIGNAL_NO_RECURSE,
+ G_STRUCT_OFFSET(LocationWpsClass, zone_out),
+ NULL, NULL,
+ location_VOID__POINTER_POINTER_POINTER,
+ G_TYPE_NONE, 3,
+ G_TYPE_POINTER,
+ G_TYPE_POINTER,
+ G_TYPE_POINTER);
+
+ properties[PROP_METHOD_TYPE] = g_param_spec_int("method",
+ "method type",
+ "location method type name",
+ LOCATION_METHOD_WPS,
+ LOCATION_METHOD_WPS,
+ LOCATION_METHOD_WPS,
+ G_PARAM_READABLE);
+
+ properties[PROP_IS_STARTED] = g_param_spec_boolean("is_started",
+ "wps is started prop",
+ "wps is started status",
+ FALSE,
+ G_PARAM_READWRITE);
+
+ properties[PROP_LAST_POSITION] = g_param_spec_boxed("last-position",
+ "wps last position prop",
+ "wps last position data",
+ LOCATION_TYPE_POSITION,
+ G_PARAM_READABLE);
+
+ properties[PROP_POS_INTERVAL] = g_param_spec_uint("pos-interval",
+ "wps position interval prop",
+ "wps position interval data",
+ LOCATION_UPDATE_INTERVAL_MIN,
+ LOCATION_UPDATE_INTERVAL_MAX,
+ LOCATION_UPDATE_INTERVAL_DEFAULT,
+ G_PARAM_READWRITE);
+
+ properties[PROP_VEL_INTERVAL] = g_param_spec_uint("vel-interval",
+ "wps velocity interval prop",
+ "wps velocity interval data",
+ LOCATION_UPDATE_INTERVAL_MIN,
+ LOCATION_UPDATE_INTERVAL_MAX,
+ LOCATION_UPDATE_INTERVAL_DEFAULT,
+ G_PARAM_READWRITE);
+
+ properties[PROP_LOC_INTERVAL] = g_param_spec_uint("loc-interval",
+ "gps location interval prop",
+ "gps location interval data",
+ LOCATION_UPDATE_INTERVAL_MIN,
+ LOCATION_UPDATE_INTERVAL_MAX,
+ LOCATION_UPDATE_INTERVAL_DEFAULT,
+ G_PARAM_READWRITE);
+
+ properties[PROP_MIN_INTERVAL] = g_param_spec_uint("min-interval",
+ "wps distance-based interval prop",
+ "wps distance-based interval data",
+ LOCATION_MIN_INTERVAL_MIN,
+ LOCATION_MIN_INTERVAL_MAX,
+ LOCATION_MIN_INTERVAL_DEFAULT,
+ G_PARAM_READWRITE);
+
+ properties[PROP_MIN_DISTANCE] = g_param_spec_double("min-distance",
+ "wps distance-based distance prop",
+ "wps distance-based distance data",
+ LOCATION_MIN_DISTANCE_MIN,
+ LOCATION_MIN_DISTANCE_MAX,
+ LOCATION_MIN_DISTANCE_DEFAULT,
+ G_PARAM_READWRITE);
+
+ properties[PROP_BOUNDARY] = g_param_spec_pointer("boundary",
+ "wps boundary prop",
+ "wps boundary data",
+ G_PARAM_READWRITE);
properties[PROP_REMOVAL_BOUNDARY] = g_param_spec_boxed("removal-boundary",
- "wps removal boundary prop",
- "wps removal boundary data",
- LOCATION_TYPE_BOUNDARY,
- G_PARAM_READWRITE);
-
- g_object_class_install_properties (gobject_class,
- PROP_MAX,
- properties);
+ "wps removal boundary prop",
+ "wps removal boundary data",
+ LOCATION_TYPE_BOUNDARY,
+ G_PARAM_READWRITE);
+
+ g_object_class_install_properties(gobject_class,
+ PROP_MAX,
+ properties);
}
typedef struct _LocationWps LocationWps;
typedef struct _LocationWpsClass LocationWpsClass;
-struct _LocationWps
-{
+struct _LocationWps {
GObject parent_instance;
};
-struct _LocationWpsClass
-{
+struct _LocationWpsClass {
GObjectClass parent_class;
- void (* enabled) (guint type);
- void (* disabled) (guint type);
- void (* updated) (guint type, gpointer data, gpointer accuracy);
- void (* location_update) (gint error, gpointer position, gpointer velocity, gpointer accuracy);
- void (* zone_in) (gpointer boundary, gpointer position, gpointer accuracy);
- void (* zone_out) (gpointer boundary, gpointer position, gpointer accuracy);
+ void (* enabled)(guint type);
+ void (* disabled)(guint type);
+ void (* updated)(gint type, gpointer data, gpointer velocity, gpointer accuracy);
+ void (* location_updated)(gint error, gpointer position, gpointer velocity, gpointer accuracy);
+ void (* zone_in)(gpointer boundary, gpointer position, gpointer accuracy);
+ void (* zone_out)(gpointer boundary, gpointer position, gpointer accuracy);
};
-GType location_wps_get_type (void);
+GType location_wps_get_type(void);
G_END_DECLS
#include <pthread.h>
#include <vconf.h>
-#ifdef TIZEN_WERABLE
-#include <app_manager.h>
-#endif
-
#include "location.h"
#include "location-log.h"
#include "location-setting.h"
#include "location-gps.h"
#include "location-wps.h"
#include "location-position.h"
-#include "location-privacy.h"
#include "module-internal.h"
#include "location-common-util.h"
+#ifndef TIZEN_PROFILE_TV
+#include "location-privacy.h"
+#endif
#define LOCATION_PRIVILEGE "http://tizen.org/privilege/location"
#define LOCATION_ENABLE_PRIVILEGE "http://tizen.org/privilege/location.enable"
static char *__convert_setting_key(LocationMethod method)
{
char *key = NULL;
- switch(method) {
+ switch (method) {
case LOCATION_METHOD_HYBRID:
key = g_strdup(VCONFKEY_LOCATION_USE_MY_LOCATION);
break;
}
EXPORT_API
-int location_init (void)
+int location_init(void)
{
- g_type_init ();
+#if !GLIB_CHECK_VERSION (2, 35, 0)
+ g_type_init();
+#endif
#if !GLIB_CHECK_VERSION (2, 31, 0)
- if (!g_thread_supported()) g_thread_init (NULL);
+ if (!g_thread_supported()) g_thread_init(NULL);
#endif
- if( FALSE == module_init() )
+ if (FALSE == module_init())
return LOCATION_ERROR_NOT_AVAILABLE;
+#ifndef TIZEN_PROFILE_TV
location_privacy_initialize();
+#endif
return LOCATION_ERROR_NONE;
}
-EXPORT_API LocationObject*
-location_new (LocationMethod method)
+EXPORT_API LocationObject *
+location_new(LocationMethod method)
{
LocationObject *self = NULL;
LOCATION_LOGD("method: %d", method);
switch (method) {
case LOCATION_METHOD_HYBRID:
- self = g_object_new (LOCATION_TYPE_HYBRID, NULL);
+ self = g_object_new(LOCATION_TYPE_HYBRID, NULL);
break;
case LOCATION_METHOD_GPS:
- self = g_object_new (LOCATION_TYPE_GPS, NULL);
+ self = g_object_new(LOCATION_TYPE_GPS, NULL);
break;
case LOCATION_METHOD_WPS:
- self = g_object_new (LOCATION_TYPE_WPS, NULL);
+ self = g_object_new(LOCATION_TYPE_WPS, NULL);
break;
default:
break;
}
- if (!self) LOCATION_LOGD("Fail to create location object. Method [%d]", method);
+ if (!self) LOCATION_LOGE("Fail to create location object. Method [%d]", method);
return self;
}
EXPORT_API int
-location_free (LocationObject *obj)
+location_free(LocationObject *obj)
{
- g_return_val_if_fail (obj, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(obj, LOCATION_ERROR_PARAMETER);
+
+#ifndef TIZEN_PROFILE_TV
location_privacy_finalize();
- g_object_unref (obj);
+#endif
+ g_object_unref(obj);
return LOCATION_ERROR_NONE;
}
EXPORT_API int
location_request_single_location(LocationObject *obj, int timeout)
{
- g_return_val_if_fail (obj, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(obj, LOCATION_ERROR_PARAMETER);
int ret = LOCATION_ERROR_NONE;
+
+#ifndef TIZEN_PROFILE_TV
ret = location_get_privacy(LOCATION_PRIVILEGE);
if (ret != LOCATION_ERROR_NONE) {
LOCATION_LOGE("Cannot use location service for privacy[%d]", ret);
return LOCATION_ERROR_NOT_ALLOWED;
}
+#endif
ret = location_ielement_request_single_location(LOCATION_IELEMENT(obj), timeout);
- if (ret != LOCATION_ERROR_NONE) LOCATION_LOGD("Fail to request single location. Error [%d]", ret);
+ if (ret != LOCATION_ERROR_NONE) LOCATION_LOGE("Fail to request single location. Error [%d]", ret);
return ret;
}
EXPORT_API int
-location_start (LocationObject *obj)
+location_start(LocationObject *obj)
{
- g_return_val_if_fail (obj, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(obj, LOCATION_ERROR_PARAMETER);
int ret = LOCATION_ERROR_NONE;
+
+#ifndef TIZEN_PROFILE_TV
ret = location_get_privacy(LOCATION_PRIVILEGE);
if (ret != LOCATION_ERROR_NONE) {
LOCATION_LOGE("Cannot use location service for privacy[%d]", ret);
return LOCATION_ERROR_NOT_ALLOWED;
}
+#endif
- ret = location_ielement_start (LOCATION_IELEMENT(obj));
- if (ret != LOCATION_ERROR_NONE) LOCATION_LOGD("Fail to start. Error [%d]", ret);
+ ret = location_ielement_start(LOCATION_IELEMENT(obj));
+ if (ret != LOCATION_ERROR_NONE) LOCATION_LOGE("Fail to start. Error [%d]", ret);
return ret;
}
EXPORT_API int
-location_stop (LocationObject *obj)
+location_stop(LocationObject *obj)
{
- g_return_val_if_fail (obj, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(obj, LOCATION_ERROR_PARAMETER);
int ret = LOCATION_ERROR_NONE;
+
+#ifndef TIZEN_PROFILE_TV
ret = location_get_privacy(LOCATION_PRIVILEGE);
if (ret != LOCATION_ERROR_NONE) {
LOCATION_LOGE("Cannot use location service for privacy[%d]", ret);
return LOCATION_ERROR_NOT_ALLOWED;
}
+#endif
- ret = location_ielement_stop (LOCATION_IELEMENT(obj));
- if (ret != LOCATION_ERROR_NONE) LOCATION_LOGD("Fail to stop. Error [%d]", ret);
+ ret = location_ielement_stop(LOCATION_IELEMENT(obj));
+ if (ret != LOCATION_ERROR_NONE) LOCATION_LOGE("Fail to stop. Error [%d]", ret);
return ret;
}
EXPORT_API int
-location_start_batch (LocationObject *obj)
+location_start_batch(LocationObject *obj)
{
- g_return_val_if_fail (obj, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(obj, LOCATION_ERROR_PARAMETER);
int ret = LOCATION_ERROR_NONE;
+
+#ifndef TIZEN_PROFILE_TV
ret = location_get_privacy(LOCATION_PRIVILEGE);
if (ret != LOCATION_ERROR_NONE) {
LOCATION_LOGE("Cannot use location service for privacy[%d]", ret);
return LOCATION_ERROR_NOT_ALLOWED;
}
+#endif
ret = location_ielement_start_batch(LOCATION_IELEMENT(obj));
- if (ret != LOCATION_ERROR_NONE) LOCATION_LOGD("Fail to Batch start. Error [%d]", ret);
+ if (ret != LOCATION_ERROR_NONE) LOCATION_LOGE("Fail to Batch start. Error [%d]", ret);
return ret;
}
EXPORT_API int
-location_stop_batch (LocationObject *obj)
+location_stop_batch(LocationObject *obj)
{
- g_return_val_if_fail (obj, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(obj, LOCATION_ERROR_PARAMETER);
int ret = LOCATION_ERROR_NONE;
+#ifndef TIZEN_PROFILE_TV
ret = location_get_privacy(LOCATION_PRIVILEGE);
if (ret != LOCATION_ERROR_NONE) {
LOCATION_LOGE("Cannot use location service for privacy[%d]", ret);
return LOCATION_ERROR_NOT_ALLOWED;
}
+#endif
- ret = location_ielement_stop_batch (LOCATION_IELEMENT(obj));
- if (ret != LOCATION_ERROR_NONE) LOCATION_LOGD("Fail to Batch stop. Error [%d]", ret);
+ ret = location_ielement_stop_batch(LOCATION_IELEMENT(obj));
+ if (ret != LOCATION_ERROR_NONE) LOCATION_LOGE("Fail to Batch stop. Error [%d]", ret);
return ret;
}
{
gboolean is_supported = FALSE;
- switch(method) {
- case LOCATION_METHOD_HYBRID:
- if(module_is_supported("gps") || module_is_supported("wps"))
- is_supported = TRUE;
- break;
- case LOCATION_METHOD_GPS:
- is_supported = module_is_supported("gps");
- break;
- case LOCATION_METHOD_WPS:
- is_supported = module_is_supported("wps");
- break;
- default:
- break;
+ switch (method) {
+ case LOCATION_METHOD_HYBRID:
+ if (module_is_supported("gps") || module_is_supported("wps"))
+ is_supported = TRUE;
+ break;
+ case LOCATION_METHOD_GPS:
+ is_supported = module_is_supported("gps");
+ break;
+ case LOCATION_METHOD_WPS:
+ is_supported = module_is_supported("wps");
+ break;
+ default:
+ break;
}
return is_supported;
vconf_ret = vconf_get_int(_key, &vconf_val);
if (vconf_ret != VCONF_OK) {
- LOCATION_SECLOG("vconf_get_int failed [%s], error [%d]", _key, vconf_ret);
+ LOCATION_SECLOG("failed [%s], error [%d]", _key, vconf_ret);
+ g_free(_key);
return LOCATION_ERROR_NOT_AVAILABLE;
} else {
- LOCATION_SECLOG("vconf_get_int: [%s]:[%d]", _key, vconf_val);
+ LOCATION_SECLOG("[%s]:[%d]", _key, vconf_val);
}
*is_enabled = vconf_val;
location_enable_method(const LocationMethod method, const int enable)
{
int ret = 0;
- int i = 0;
char *_key = NULL;
+
+#ifndef TIZEN_PROFILE_TV
ret = location_check_privilege(LOCATION_ENABLE_PRIVILEGE);
if (ret != LOCATION_ERROR_NONE) {
LOCATION_LOGE("Cannot use location service for privacy[%d]", ret);
return LOCATION_ERROR_NOT_ALLOWED;
}
+#endif
- if (method == LOCATION_METHOD_HYBRID) {
- for (i = LOCATION_METHOD_HYBRID; i < LOCATION_METHOD_MAX; i++) {
- _key = __convert_setting_key(i);
- if (!_key) {
- LOCATION_LOGE("Invalid method[%d]", method);
- return LOCATION_ERROR_NOT_SUPPORTED;
- }
-
- ret = vconf_set_int(_key, enable);
- if (ret != VCONF_OK) {
- LOCATION_SECLOG("vconf_set_int failed [%s], error [%d]", _key, ret);
- return LOCATION_ERROR_NOT_ALLOWED;
- } else {
- LOCATION_SECLOG("vconf_set_int: [%s]:[%d]", _key, ret);
- }
+ /* for itself */
+ _key = __convert_setting_key(method);
+ if (!_key) {
+ LOCATION_LOGE("Invalid method[%d]", method);
+ return LOCATION_ERROR_NOT_SUPPORTED;
+ }
+ ret = vconf_set_int(_key, enable);
+ if (ret != VCONF_OK) {
+ LOCATION_SECLOG("vconf_set_int failed [%s], ret=[%d]", _key, ret);
+ g_free(_key);
+ return LOCATION_ERROR_NOT_ALLOWED;
+ } else {
+ ret = location_setting_send_system_event(_key, enable);
+ if (ret != LOCATION_ERROR_NONE) {
+ LOCATION_SECLOG("Fail to send system event [%s], ret=[%d]", _key, ret);
g_free(_key);
+ return LOCATION_ERROR_NOT_ALLOWED;
}
}
- else {
- _key = __convert_setting_key(method);
- if (!_key) {
- LOCATION_LOGE("Invalid method[%d]", method);
- return LOCATION_ERROR_NOT_SUPPORTED;
- }
+ g_free(_key);
+
+ /* for hybrid */
+ _key = __convert_setting_key(LOCATION_METHOD_HYBRID);
+ if (!_key) {
+ LOCATION_LOGE("Invalid method[%d]", LOCATION_METHOD_HYBRID);
+ return LOCATION_ERROR_NOT_SUPPORTED;
+ }
+
+ if (enable) {
ret = vconf_set_int(_key, enable);
if (ret != VCONF_OK) {
- LOCATION_SECLOG("vconf_set_int failed [%s], error [%d]", _key, ret);
+ LOCATION_SECLOG("vconf_set_int failed [%s], ret=[%d]", _key, ret);
+ g_free(_key);
return LOCATION_ERROR_NOT_ALLOWED;
} else {
- LOCATION_SECLOG("vconf_set_int: [%s]:[%d]", _key, ret);
+ ret = location_setting_send_system_event(_key, enable);
+ if (ret != LOCATION_ERROR_NONE) {
+ LOCATION_SECLOG("Fail to send system event [%s], ret=[%d]", _key, ret);
+ g_free(_key);
+ return LOCATION_ERROR_NOT_ALLOWED;
+ }
}
- g_free(_key);
+ }
+ else {
+ int i = 0;
+ int enabled_state = 0;
- _key = __convert_setting_key(LOCATION_METHOD_HYBRID);
- if (!_key) {
- LOCATION_LOGE("Invalid method[%d]", LOCATION_METHOD_HYBRID);
- return LOCATION_ERROR_NOT_SUPPORTED;
+ for (i = LOCATION_METHOD_GPS; i < LOCATION_METHOD_MAX; i++) {
+ _key = __convert_setting_key(i);
+ enabled_state |= location_setting_get_int(_key);
+ g_free(_key);
}
- ret = vconf_set_int(_key, enable);
- if (ret != VCONF_OK) {
- LOCATION_SECLOG("vconf_set_int failed [%s], error [%d]", _key, ret);
- return LOCATION_ERROR_NOT_ALLOWED;
- } else {
- LOCATION_SECLOG("vconf_set_int: [%s]:[%d]", _key, ret);
+ if (!enabled_state) {
+ _key = __convert_setting_key(LOCATION_METHOD_HYBRID);
+ ret = vconf_set_int(_key, enable);
+ if (ret != VCONF_OK) {
+ LOCATION_SECLOG("vconf_set_int failed [%s], error [%d]", _key, ret);
+ g_free(_key);
+ return LOCATION_ERROR_NOT_ALLOWED;
+ } else {
+ LOCATION_SECLOG("[%s]:[%d]", _key, ret);
+ ret = location_setting_send_system_event(_key, enable);
+ if (ret != LOCATION_ERROR_NONE) {
+ g_free(_key);
+ LOCATION_SECLOG("Fail to send system event [%s], error [%d]", _key, ret);
+ return LOCATION_ERROR_NOT_ALLOWED;
+ }
+ }
+ g_free(_key);
}
- g_free(_key);
}
return ret;
EXPORT_API int
-location_get_position (LocationObject *obj,
- LocationPosition **position,
- LocationAccuracy **accuracy)
+location_get_position(LocationObject *obj,
+ LocationPosition **position,
+ LocationAccuracy **accuracy)
{
- g_return_val_if_fail (obj, LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (position, LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (accuracy, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(obj, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(position, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(accuracy, LOCATION_ERROR_PARAMETER);
int ret = LOCATION_ERROR_NONE;
+
+#ifndef TIZEN_PROFILE_TV
ret = location_get_privacy(LOCATION_PRIVILEGE);
if (ret != LOCATION_ERROR_NONE) {
LOCATION_LOGE("Cannot use location service for privacy[%d]", ret);
return LOCATION_ERROR_NOT_ALLOWED;
}
+#endif
- ret = location_ielement_get_position (LOCATION_IELEMENT(obj), position, accuracy);
- if (ret != LOCATION_ERROR_NONE) LOCATION_LOGD("Fail to get_position. Error [%d]", ret);
+ ret = location_ielement_get_position(LOCATION_IELEMENT(obj), position, accuracy);
+ if (ret != LOCATION_ERROR_NONE) LOCATION_LOGE("Fail to get_position. Error [%d]", ret);
return ret;
}
EXPORT_API int
-location_get_position_ext (LocationObject *obj,
- LocationPosition **position,
- LocationVelocity **velocity,
- LocationAccuracy **accuracy)
+location_get_position_ext(LocationObject *obj,
+ LocationPosition **position,
+ LocationVelocity **velocity,
+ LocationAccuracy **accuracy)
{
- g_return_val_if_fail (obj, LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (position, LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (velocity, LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (accuracy, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(obj, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(position, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(velocity, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(accuracy, LOCATION_ERROR_PARAMETER);
int ret = LOCATION_ERROR_NONE;
+
+#ifndef TIZEN_PROFILE_TV
ret = location_get_privacy(LOCATION_PRIVILEGE);
if (ret != LOCATION_ERROR_NONE) {
LOCATION_LOGE("Cannot use location service for privacy[%d]", ret);
return LOCATION_ERROR_NOT_ALLOWED;
}
+#endif
- ret = location_ielement_get_position_ext (LOCATION_IELEMENT(obj), position, velocity, accuracy);
- if (ret != LOCATION_ERROR_NONE) LOCATION_LOGD("Fail to get_position_ext. Error [%d]", ret);
+ ret = location_ielement_get_position_ext(LOCATION_IELEMENT(obj), position, velocity, accuracy);
+ if (ret != LOCATION_ERROR_NONE) LOCATION_LOGE("Fail to get_position_ext. Error [%d]", ret);
return ret;
}
EXPORT_API int
-location_get_last_position (LocationObject *obj,
- LocationPosition **position,
- LocationAccuracy **accuracy)
+location_get_last_position(LocationObject *obj,
+ LocationPosition **position,
+ LocationAccuracy **accuracy)
{
- g_return_val_if_fail (obj, LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (position, LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (accuracy, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(obj, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(position, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(accuracy, LOCATION_ERROR_PARAMETER);
int ret = LOCATION_ERROR_NONE;
+
+#ifndef TIZEN_PROFILE_TV
ret = location_get_privacy(LOCATION_PRIVILEGE);
if (ret != LOCATION_ERROR_NONE) {
LOCATION_LOGE("Cannot use location service for privacy[%d]", ret);
return LOCATION_ERROR_NOT_ALLOWED;
}
+#endif
- ret = location_ielement_get_last_position (LOCATION_IELEMENT(obj), position, accuracy);
- if (ret != LOCATION_ERROR_NONE) LOCATION_LOGD("Fail to get_last_position. Error [%d]", ret);
+ ret = location_ielement_get_last_position(LOCATION_IELEMENT(obj), position, accuracy);
+ if (ret != LOCATION_ERROR_NONE) LOCATION_LOGE("Fail to get_last_position. Error [%d]", ret);
return ret;
}
EXPORT_API int
-location_get_last_position_ext (LocationObject *obj,
- LocationPosition **position,
- LocationVelocity **velocity,
- LocationAccuracy **accuracy)
+location_get_last_position_ext(LocationObject *obj,
+ LocationPosition **position,
+ LocationVelocity **velocity,
+ LocationAccuracy **accuracy)
{
- g_return_val_if_fail (obj, LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (position, LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (velocity, LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (accuracy, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(obj, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(position, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(velocity, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(accuracy, LOCATION_ERROR_PARAMETER);
int ret = LOCATION_ERROR_NONE;
+#ifndef TIZEN_PROFILE_TV
ret = location_get_privacy(LOCATION_PRIVILEGE);
if (ret != LOCATION_ERROR_NONE) {
LOCATION_LOGE("Cannot use location service for privacy[%d]", ret);
return LOCATION_ERROR_NOT_ALLOWED;
}
+#endif
- ret = location_ielement_get_last_position_ext (LOCATION_IELEMENT(obj), position, velocity, accuracy);
- if (ret != LOCATION_ERROR_NONE) LOCATION_LOGD("Fail to get_last_position_ext. Error [%d]", ret);
+ ret = location_ielement_get_last_position_ext(LOCATION_IELEMENT(obj), position, velocity, accuracy);
+ if (ret != LOCATION_ERROR_NONE) LOCATION_LOGE("Fail to get_last_position_ext. Error [%d]", ret);
return ret;
}
EXPORT_API int
-location_get_satellite (LocationObject *obj, LocationSatellite **satellite)
+location_get_nmea(LocationObject *obj, char **nmea)
{
- g_return_val_if_fail (obj, LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (satellite, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(obj, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(nmea, LOCATION_ERROR_PARAMETER);
int ret = LOCATION_ERROR_NONE;
+#ifndef TIZEN_PROFILE_TV
ret = location_get_privacy(LOCATION_PRIVILEGE);
if (ret != LOCATION_ERROR_NONE) {
LOCATION_LOGE("Cannot use location service for privacy[%d]", ret);
return LOCATION_ERROR_NOT_ALLOWED;
}
- ret = location_ielement_get_satellite (LOCATION_IELEMENT(obj), satellite);
- if (ret != LOCATION_ERROR_NONE) LOCATION_LOGD("Fail to get_satellite. Error [%d]", ret);
+#endif
+
+ ret = location_ielement_get_nmea(LOCATION_IELEMENT(obj), nmea);
+ if (ret != LOCATION_ERROR_NONE) LOCATION_LOGE("Fail to get_nmea. Error [%d]", ret);
return ret;
}
+
EXPORT_API int
-location_get_batch (LocationObject *obj, LocationBatch **batch)
+location_get_satellite(LocationObject *obj, LocationSatellite **satellite)
{
- g_return_val_if_fail (obj, LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (batch, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(obj, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(satellite, LOCATION_ERROR_PARAMETER);
int ret = LOCATION_ERROR_NONE;
+#ifndef TIZEN_PROFILE_TV
ret = location_get_privacy(LOCATION_PRIVILEGE);
if (ret != LOCATION_ERROR_NONE) {
LOCATION_LOGE("Cannot use location service for privacy[%d]", ret);
return LOCATION_ERROR_NOT_ALLOWED;
}
- ret = location_ielement_get_batch (LOCATION_IELEMENT(obj), batch);
- if (ret != LOCATION_ERROR_NONE) LOCATION_LOGD("Fail to get_batch. Error [%d]", ret);
+#endif
+
+ ret = location_ielement_get_satellite(LOCATION_IELEMENT(obj), satellite);
+ if (ret != LOCATION_ERROR_NONE) LOCATION_LOGE("Fail to get_satellite. Error [%d]", ret);
return ret;
}
EXPORT_API int
-location_get_last_satellite (LocationObject *obj, LocationSatellite **satellite)
+location_get_batch(LocationObject *obj, LocationBatch **batch)
{
- g_return_val_if_fail (obj, LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (satellite, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(obj, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(batch, LOCATION_ERROR_PARAMETER);
int ret = LOCATION_ERROR_NONE;
+#ifndef TIZEN_PROFILE_TV
ret = location_get_privacy(LOCATION_PRIVILEGE);
if (ret != LOCATION_ERROR_NONE) {
LOCATION_LOGE("Cannot use location service for privacy[%d]", ret);
return LOCATION_ERROR_NOT_ALLOWED;
}
- ret = location_ielement_get_last_satellite (LOCATION_IELEMENT(obj), satellite);
- if (ret != LOCATION_ERROR_NONE) LOCATION_LOGD("Fail to get_last_satellite. Error [%d]", ret);
+#endif
+
+ ret = location_ielement_get_batch(LOCATION_IELEMENT(obj), batch);
+ if (ret != LOCATION_ERROR_NONE) LOCATION_LOGE("Fail to get_batch. Error [%d]", ret);
return ret;
}
EXPORT_API int
-location_get_velocity (LocationObject *obj,
- LocationVelocity **velocity,
- LocationAccuracy **accuracy)
+location_get_last_satellite(LocationObject *obj, LocationSatellite **satellite)
{
- g_return_val_if_fail (obj, LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (velocity, LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (accuracy, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(obj, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(satellite, LOCATION_ERROR_PARAMETER);
int ret = LOCATION_ERROR_NONE;
+#ifndef TIZEN_PROFILE_TV
ret = location_get_privacy(LOCATION_PRIVILEGE);
if (ret != LOCATION_ERROR_NONE) {
LOCATION_LOGE("Cannot use location service for privacy[%d]", ret);
return LOCATION_ERROR_NOT_ALLOWED;
}
- ret = location_ielement_get_velocity (LOCATION_IELEMENT(obj), velocity, accuracy);
- if (ret != LOCATION_ERROR_NONE) LOCATION_LOGD("Fail to get_velocity. Error [%d]", ret);
+#endif
+
+ ret = location_ielement_get_last_satellite(LOCATION_IELEMENT(obj), satellite);
+ if (ret != LOCATION_ERROR_NONE) LOCATION_LOGE("Fail to get_last_satellite. Error [%d]", ret);
return ret;
}
EXPORT_API int
-location_get_last_velocity (LocationObject *obj,
- LocationVelocity **velocity,
- LocationAccuracy **accuracy)
+location_get_velocity(LocationObject *obj,
+ LocationVelocity **velocity,
+ LocationAccuracy **accuracy)
{
- g_return_val_if_fail (obj, LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (velocity, LOCATION_ERROR_PARAMETER);
- g_return_val_if_fail (accuracy, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(obj, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(velocity, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(accuracy, LOCATION_ERROR_PARAMETER);
int ret = LOCATION_ERROR_NONE;
+#ifndef TIZEN_PROFILE_TV
ret = location_get_privacy(LOCATION_PRIVILEGE);
if (ret != LOCATION_ERROR_NONE) {
LOCATION_LOGE("Cannot use location service for privacy[%d]", ret);
return LOCATION_ERROR_NOT_ALLOWED;
}
+#endif
- ret = location_ielement_get_last_velocity (LOCATION_IELEMENT(obj), velocity, accuracy);
- if (ret != LOCATION_ERROR_NONE) LOCATION_LOGD("Fail to get_last_velocity. Error [%d]", ret);
+ ret = location_ielement_get_velocity(LOCATION_IELEMENT(obj), velocity, accuracy);
+ if (ret != LOCATION_ERROR_NONE) LOCATION_LOGE("Fail to get_velocity. Error [%d]", ret);
return ret;
}
EXPORT_API int
-location_get_accessibility_state (LocationAccessState *state)
+location_get_last_velocity(LocationObject *obj,
+ LocationVelocity **velocity,
+ LocationAccuracy **accuracy)
{
- int auth = location_application_get_authority ();
+ g_return_val_if_fail(obj, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(velocity, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(accuracy, LOCATION_ERROR_PARAMETER);
+
+ int ret = LOCATION_ERROR_NONE;
+
+#ifndef TIZEN_PROFILE_TV
+ ret = location_get_privacy(LOCATION_PRIVILEGE);
+ if (ret != LOCATION_ERROR_NONE) {
+ LOCATION_LOGE("Cannot use location service for privacy[%d]", ret);
+ return LOCATION_ERROR_NOT_ALLOWED;
+ }
+#endif
+
+ ret = location_ielement_get_last_velocity(LOCATION_IELEMENT(obj), velocity, accuracy);
+ if (ret != LOCATION_ERROR_NONE) LOCATION_LOGE("Fail to get_last_velocity. Error [%d]", ret);
+
+ return ret;
+}
+
+EXPORT_API int
+location_get_accessibility_state(LocationAccessState *state)
+{
+ int auth = location_application_get_authority();
switch (auth) {
case LOCATION_APP_OFF:
*state = LOCATION_ACCESS_DENIED;
}
EXPORT_API int
-location_set_accessibility_state (LocationAccessState state)
+location_set_accessibility_state(LocationAccessState state)
{
int auth = LOCATION_APP_NOT_FOUND;
int ret = LOCATION_ERROR_NONE;
EXPORT_API int
location_send_command(const char *cmd)
{
- g_return_val_if_fail (cmd, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(cmd, LOCATION_ERROR_PARAMETER);
return LOCATION_ERROR_NOT_AVAILABLE;
}
EXPORT_API int
-location_set_option (LocationObject *obj, const char *option)
+location_set_option(LocationObject *obj, const char *option)
{
- g_return_val_if_fail (obj, LOCATION_ERROR_PARAMETER);
+ g_return_val_if_fail(obj, LOCATION_ERROR_PARAMETER);
int ret = LOCATION_ERROR_NONE;
+#ifndef TIZEN_PROFILE_TV
ret = location_get_privacy(LOCATION_PRIVILEGE);
if (ret != LOCATION_ERROR_NONE) {
LOCATION_LOGE("Cannot use location service for privacy[%d]", ret);
return LOCATION_ERROR_NOT_ALLOWED;
}
+#endif
- ret = location_ielement_set_option (LOCATION_IELEMENT(obj), option);
+ ret = location_ielement_set_option(LOCATION_IELEMENT(obj), option);
if (ret != LOCATION_ERROR_NONE)
- LOCATION_LOGD("Fail to get_velocity. Error [%d]", ret);
+ LOCATION_LOGE("Fail to get_velocity. Error [%d]", ret);
return ret;
}
* Please refer #LocationError for more information.
* @see None.
*/
-int location_init (void);
+int location_init(void);
/**
* @brief
* @retval NULL if error occured
* @see location_free
*/
-LocationObject *location_new (LocationMethod method);
+LocationObject *location_new(LocationMethod method);
/**
* @brief
}
* @endcode
*/
-int location_free (LocationObject *obj);
+int location_free(LocationObject *obj);
/**
* @brief
}
* @endcode
*/
-int location_start (LocationObject *obj);
+int location_start(LocationObject *obj);
/**
* @brief
}
* @endcode
*/
-int location_stop (LocationObject *obj);
+int location_stop(LocationObject *obj);
int location_request_single_location(LocationObject *obj, int timeout);
int location_enable_method(const LocationMethod method, const int enable);
-
/**
* @brief
* Get current position information with estimate of the accuracy.
}
* @endcode
*/
-int location_get_position (LocationObject *obj, LocationPosition **position, LocationAccuracy **accuracy);
+int location_get_position(LocationObject *obj, LocationPosition **position, LocationAccuracy **accuracy);
/**
* @brief
}
* @endcode
*/
-int location_get_position_ext (LocationObject *obj, LocationPosition **position, LocationVelocity **velocity, LocationAccuracy **accuracy);
+int location_get_position_ext(LocationObject *obj, LocationPosition **position, LocationVelocity **velocity, LocationAccuracy **accuracy);
/**
* @brief
}
* @endcode
*/
-int location_get_last_position (LocationObject *obj, LocationPosition **position, LocationAccuracy **accuracy);
+int location_get_last_position(LocationObject *obj, LocationPosition **position, LocationAccuracy **accuracy);
/**
* @brief
}
* @endcode
*/
-int location_get_last_position_ext (LocationObject *obj, LocationPosition **position, LocationVelocity **velocity, LocationAccuracy **accuracy);
+int location_get_last_position_ext(LocationObject *obj, LocationPosition **position, LocationVelocity **velocity, LocationAccuracy **accuracy);
/**
* @brief
* Get last satellite information.
}
* @endcode
*/
-int location_get_satellite (LocationObject *obj, LocationSatellite **satellite);
+int location_get_satellite(LocationObject *obj, LocationSatellite **satellite);
-int location_start_batch (LocationObject *obj);
+int location_start_batch(LocationObject *obj);
-int location_stop_batch (LocationObject *obj);
+int location_stop_batch(LocationObject *obj);
-int location_get_batch (LocationObject *obj, LocationBatch **batch);
+int location_get_batch(LocationObject *obj, LocationBatch **batch);
/**
}
* @endcode
*/
-int location_get_last_satellite (LocationObject *obj, LocationSatellite **satellite);
+int location_get_last_satellite(LocationObject *obj, LocationSatellite **satellite);
/**
* @brief
* @endcode
*/
-int location_get_velocity (LocationObject *obj, LocationVelocity **velocity, LocationAccuracy **accuracy);
+int location_get_velocity(LocationObject *obj, LocationVelocity **velocity, LocationAccuracy **accuracy);
/**
* @brief
}
* @endcode
*/
-int location_get_last_velocity (LocationObject *obj, LocationVelocity **velocity, LocationAccuracy **accuracy);
+int location_get_last_velocity(LocationObject *obj, LocationVelocity **velocity, LocationAccuracy **accuracy);
/**
* @brief
*
* Please refer #LocationError for more information.
*/
-int location_get_accessibility_state (LocationAccessState *state);
+int location_get_accessibility_state(LocationAccessState *state);
/**
* @brief
int location_add_setting_notify(LocationMethod method, LocationSettingCb callback, void *user_data);
-int location_ignore_setting_notify(LocationMethod method, LocationSettingCb callback );
+int location_ignore_setting_notify(LocationMethod method, LocationSettingCb callback);
+int location_get_nmea(LocationObject *obj, char **nmea_data);
/**
+++ /dev/null
-noinst_LTLIBRARIES = liblocation-module.la
-
-COMMON_HEADER_DIR = include
-MANAGER_DIR = manager
-MODULE_DIR = module
-
-liblocation_module_la_SOURCES = \
- module-internal.c
-
-liblocation_module_la_CFLAGS = \
- -fPIC\
- -I${srcdir} \
- -I${srcdir}/.. \
- -I${srcdir}/../include \
- -I${srcdir}/../${MANAGER_DIR} \
- -I${srcdir}/../${MODULE_DIR} \
- $(LOCATION_CFLAGS)
/**
* @brief This represents a position callback function for a plug-in.
*/
-typedef void (*LocModPositionExtCB) (gboolean enabled, LocationPosition *position, LocationVelocity *velocity, LocationAccuracy *accuracy, gpointer userdata);
+typedef void (*LocModPositionExtCB)(gboolean enabled, LocationPosition *position, LocationVelocity *velocity, LocationAccuracy *accuracy, gpointer userdata);
/**
* @brief This represents a batch callback function for a plug-in.
*/
-typedef void (*LocModBatchExtCB) (gboolean enabled, guint num_of_location, gpointer userdata);
+typedef void (*LocModBatchExtCB)(gboolean enabled, guint num_of_location, gpointer userdata);
/**
* @brief This represents a velocity callback function for a plug-in.
*/
-typedef void (*LocModSatelliteCB) (gboolean enabled, LocationSatellite *satellite, gpointer userdata);
+typedef void (*LocModSatelliteCB)(gboolean enabled, LocationSatellite *satellite, gpointer userdata);
/**
* @brief This represents APIs declared in a GPS plug-in for location GPS modules.
*/
-typedef struct{
- int (*start)(gpointer handle, guint pos_update_interval, LocModStatusCB status_cb, LocModPositionExtCB pos_ext_cb, LocModSatelliteCB sat_cb, gpointer userdata); ///< This is used for starting a GPS device from a plug-in. #LocModStatusCB, #LocModPositionExtCB are given from a location framework to a plug-in for asynchronous signaling.
- int (*start_batch)(gpointer handle, LocModBatchExtCB batch_ext_cb, guint batch_interval, guint batch_period, gpointer userdata); ///< This is used for starting a GPS batch mode from a plug-in. #LocModBatchExtCB are given from a location framework to a plug-in for asynchronous signaling.
- int (*stop)(gpointer handle); ///< This is used for stopping a GPS device name from a plug-in.
- int (*stop_batch)(gpointer handle); ///< This is used for stopping a GPS batch mode from a plug-in.
- int (*get_position)(gpointer handle, LocationPosition **position, LocationVelocity **velocity, LocationAccuracy **accuracy); ///< This is used for getting a position from a plug-in.
- int (*get_last_position)(gpointer handle, LocationPosition **position, LocationVelocity **velocity, LocationAccuracy **accuracy); ///< This is used for getting a last position from a plug-in.
- int (*get_nmea)(gpointer handle, gchar** nmea_data); ///< This is used for getting a nmea string from a plug-in.
- int (*get_satellite)(gpointer handle, LocationSatellite **satellite); ///< This is used for getting a satellite information from a plug-in.
- int (*get_last_satellite)(gpointer handle, LocationSatellite **satellite); ///< This is used for getting a last satellite information from a plug-in.
+typedef struct {
+ int (*start)(gpointer handle, guint pos_update_interval, LocModStatusCB status_cb, LocModPositionExtCB pos_ext_cb, LocModSatelliteCB sat_cb, gpointer userdata); /*/< This is used for starting a GPS device from a plug-in. #LocModStatusCB, #LocModPositionExtCB are given from a location framework to a plug-in for asynchronous signaling. */
+ int (*start_batch)(gpointer handle, LocModBatchExtCB batch_ext_cb, guint batch_interval, guint batch_period, gpointer userdata); /*/< This is used for starting a GPS batch mode from a plug-in. #LocModBatchExtCB are given from a location framework to a plug-in for asynchronous signaling. */
+ int (*stop)(gpointer handle); /*/< This is used for stopping a GPS device name from a plug-in. */
+ int (*stop_batch)(gpointer handle); /*/< This is used for stopping a GPS batch mode from a plug-in. */
+ int (*get_position)(gpointer handle, LocationPosition **position, LocationVelocity **velocity, LocationAccuracy **accuracy); /*/< This is used for getting a position from a plug-in. */
+ int (*get_last_position)(gpointer handle, LocationPosition **position, LocationVelocity **velocity, LocationAccuracy **accuracy); /*/< This is used for getting a last position from a plug-in. */
+ int (*get_nmea)(gpointer handle, gchar **nmea_data); /*/< This is used for getting a nmea string from a plug-in. */
+ int (*get_satellite)(gpointer handle, LocationSatellite **satellite); /*/< This is used for getting a satellite information from a plug-in. */
+ int (*get_last_satellite)(gpointer handle, LocationSatellite **satellite); /*/< This is used for getting a last satellite information from a plug-in. */
int (*set_option)(gpointer handle, const char *option);
int (*set_position_update_interval)(gpointer handle, guint interval);
} LocModGpsOps;
/**
* @brief This represents APIs declared in a WPS plug-in for location WPS modules.
*/
-typedef struct{
- int (*start)(gpointer handle, LocModStatusCB status_cb, LocModPositionExtCB pos_ext_cb, LocModSatelliteCB sat_cb, gpointer userdata); ///< This is used for starting a WPS service from a plug-in. #LocModStatusCB, #LocModPositionExtCB and #LocModSatelliteCB(Not used) are given from a location framework to a plug-in for asynchronous signaling.
- int (*stop)(gpointer handle); ///< This is used for stopping a WPS service from a plug-in.
- int (*get_position)(gpointer handle, LocationPosition **position, LocationVelocity **velocity, LocationAccuracy **accuracy); ///< This is used for getting a position from a plug-in.
- int (*get_last_position)(gpointer handle, LocationPosition **position, LocationVelocity **velocity, LocationAccuracy **accuracy); ///< This is used for getting a last position from a plug-in.
+typedef struct {
+ int (*start)(gpointer handle, LocModStatusCB status_cb, LocModPositionExtCB pos_ext_cb, LocModSatelliteCB sat_cb, gpointer userdata); /*/< This is used for starting a WPS service from a plug-in. #LocModStatusCB, #LocModPositionExtCB and #LocModSatelliteCB(Not used) are given from a location framework to a plug-in for asynchronous signaling. */
+ int (*stop)(gpointer handle); /*/< This is used for stopping a WPS service from a plug-in. */
+ int (*get_position)(gpointer handle, LocationPosition **position, LocationVelocity **velocity, LocationAccuracy **accuracy); /*/< This is used for getting a position from a plug-in. */
+ int (*get_last_position)(gpointer handle, LocationPosition **position, LocationVelocity **velocity, LocationAccuracy **accuracy); /*/< This is used for getting a last position from a plug-in. */
int (*set_option)(gpointer handle, const char *option);
} LocModWpsOps;
+
/**
* @brief This is used for exported APIs in a plug-in for a location framework.
*/
return gmod;
}
-static void gmod_free(GMod * gmod)
+static void gmod_free(GMod *gmod)
{
if (gmod->name)
g_free(gmod->name);
}
static gboolean
-gmod_find_sym(GMod * gmod, gpointer * init_func, gpointer * shutdown_func)
+gmod_find_sym(GMod *gmod, gpointer *init_func, gpointer *shutdown_func)
{
char sym[256];
g_stpcpy(sym, "init");
ret_mod = NULL;
} else
ret_mod = (gpointer) _mod;
- }else {
+ } else {
LOCATION_LOGW("module name (%s) is wrong", module_name);
ret_mod = NULL;
}
return found;
}
-gchar *mod_get_realpath(const gchar * module_name)
+gchar *mod_get_realpath(const gchar *module_name)
{
gchar origin_path[PATH_MAX] = { 0, };
gchar link_path[PATH_MAX] = { 0, };
snprintf(link_path, PATH_MAX, "%s/lib%s.so", MODULE_PATH_PREFIX, module_name);
- if (realpath(link_path, origin_path) == NULL || strlen(origin_path) == 0 ) {
+ if (realpath(link_path, origin_path) == NULL || strlen(origin_path) == 0) {
LOCATION_LOGE("Fail to get real path of [%s]", module_name);
return NULL;
}
#include <gmodule.h>
#include "location-module.h"
+G_BEGIN_DECLS
+
/**
* @file module-internal.h
* @brief This file contains the internal definitions and structures related to module.
*/
-typedef struct{
- GModule* module;
- char* name;
- char* path;
+typedef struct {
+ GModule *module;
+ char *name;
+ char *path;
} GMod;
-/*typedef struct{
- GMod* gmod;
+typedef struct {
+ GMod *gmod;
gpointer handler;
- gpointer (*init)(LocModServiceOps* ops);
- void (*shutdown)(gpointer handle);
- LocModServiceOps ops;
-} LocationServiceMod;*/
-
-typedef struct{
- GMod* gmod;
- gpointer handler;
- gpointer (*init)(LocModGpsOps* ops);
+ gpointer(*init)(LocModGpsOps *ops);
void (*shutdown)(gpointer handle);
LocModGpsOps ops;
} LocationGpsMod;
-typedef struct{
- GMod* gmod;
+typedef struct {
+ GMod *gmod;
gpointer handler;
- gpointer (*init)(LocModWpsOps* ops);
+ gpointer(*init)(LocModWpsOps *ops);
void (*shutdown)(gpointer handle);
LocModWpsOps ops;
} LocationWpsMod;
-G_BEGIN_DECLS
-
gboolean module_init(void);
-gpointer module_new(const char* module_name);
-void module_free(gpointer mod, const char* module_name);
+gpointer module_new(const char *module_name);
+void module_free(gpointer mod, const char *module_name);
gboolean module_is_supported(const char *module_name);
gchar *mod_get_realpath(const gchar *module_name);
Name: libslp-location
Summary: Location Based Service
-Version: 0.9.5
+Version: 0.11.6
Release: 1
Group: Framework/Location
License: Apache-2.0
Source0: %{name}-%{version}.tar.gz
Requires(post): /sbin/ldconfig
-Requires(post): /usr/bin/vconftool
Requires(postun): /sbin/ldconfig
BuildRequires: cmake
BuildRequires: model-build-features
BuildRequires: pkgconfig(capi-appfw-app-manager)
BuildRequires: pkgconfig(capi-appfw-package-manager)
BuildRequires: pkgconfig(pkgmgr-info)
+%if "%{?tizen_profile_name}" != "tv"
BuildRequires: pkgconfig(privacy-manager-client)
+%endif
BuildRequires: pkgconfig(json-glib-1.0)
-BuildRequires: pkgconfig(lbs-dbus)
+BuildRequires: pkgconfig(bundle)
+BuildRequires: pkgconfig(eventsystem)
%description
Location Based Service Libraries
%build
-
export CFLAGS="$CFLAGS -DTIZEN_DEBUG_ENABLE"
export CXXFLAGS="$CXXFLAGS -DTIZEN_DEBUG_ENABLE"
export FFLAGS="$FFLAGS -DTIZEN_DEBUG_ENABLE"
# Call make instruction with smp support
MAJORVER=`echo %{version} | awk 'BEGIN {FS="."}{print $1}'`
-cmake . -DCMAKE_INSTALL_PREFIX=/usr -DFULLVER=%{version} -DMAJORVER=${MAJORVER}
+cmake . -DCMAKE_INSTALL_PREFIX=/usr -DFULLVER=%{version} -DMAJORVER=${MAJORVER} \
+%if "%{?tizen_profile_name}" == "wearable"
+ -DFEATURE_PROFILE_WEARABLE:BOOL=ON \
+%endif
+%if "%{?tizen_profile_name}" == "tv"
+ -DFEATURE_PROFILE_TV:BOOL=ON
+%endif
+
+
make %{?jobs:-j%jobs}
%post
/sbin/ldconfig
-vconftool set -t int memory/location/last/gps/Timestamp "0" -i -f -s location_fw::client
-vconftool set -t double memory/location/last/gps/Latitude "0.0" -i -f -s location_fw::client
-vconftool set -t double memory/location/last/gps/Longitude "0.0" -i -f -s location_fw::client
-vconftool set -t double memory/location/last/gps/Altitude "0.0" -i -f -s location_fw::client
-vconftool set -t double memory/location/last/gps/HorAccuracy "0.0" -i -f -s location_fw::client
-vconftool set -t double memory/location/last/gps/VerAccuracy "0.0" -i -f -s location_fw::client
-vconftool set -t double memory/location/last/gps/Speed "0.0" -i -f -s location_fw::client
-vconftool set -t double memory/location/last/gps/Direction "0.0" -i -f -s location_fw::client
-vconftool set -t int memory/location/last/wps/Timestamp "0" -i -f -s location_fw::client
-vconftool set -t double memory/location/last/wps/Latitude "0.0" -i -f -s location_fw::client
-vconftool set -t double memory/location/last/wps/Longitude "0.0" -i -f -s location_fw::client
-vconftool set -t double memory/location/last/wps/Altitude "0.0" -i -f -s location_fw::client
-vconftool set -t double memory/location/last/wps/HorAccuracy "0.0" -i -f -s location_fw::client
-vconftool set -t double memory/location/last/wps/Speed "0.0" -i -f -s location_fw::client
-vconftool set -t double memory/location/last/wps/Direction "0.0" -i -f -s location_fw::client
-
-vconftool set -t int db/location/last/gps/LocTimestamp "0" -f -s location_fw::client
-vconftool set -t int db/location/last/wps/LocTimestamp "0" -f -s location_fw::client
-vconftool set -t string db/location/last/gps/Location "0.0;0.0;0.0;0.0;0.0;0.0;0.0;" -f -s location_fw::client
-vconftool set -t string db/location/last/wps/Location "0.0;0.0;0.0;0.0;0.0;0.0;" -f -s location_fw::client
-
-vconftool set -t int db/location/setting/Usemylocation "1" -g 6514 -f -s location_fw::vconf
-vconftool set -t int db/location/setting/GpsEnabled "1" -g 6514 -f -s location_fw::vconf
-vconftool set -t int db/location/setting/AgpsEnabled "0" -g 6514 -f -s location_fw::vconf
-vconftool set -t int db/location/setting/GpsPopup "1" -g 6514 -f -s system::vconf_network
-
-%if 0%{?model_build_feature_location_position_wps}
-vconftool set -t int db/location/setting/NetworkEnabled "1" -g 6514 -f -s location_fw::vconf
-%else
-vconftool set -t int db/location/setting/NetworkEnabled "0" -g 6514 -f -s location_fw::vconf
-%endif
+
%postun -p /sbin/ldconfig
+++ /dev/null
-dir_location = $(top_srcdir)/location
-noinst_PROGRAMS = location-api-test gps-test wps-test hybrid-test\
- position-sample-gps velocity-sample nmea-sample satellite-sample property-sample zone-sample
-
-gps_test_SOURCES = gps-test.c
-wps_test_SOURCES = wps-test.c
-hybrid_test_SOURCES = hybrid-test.c
-position_sample_gps_SOURCES = position-sample-gps.c
-velocity_sample_SOURCES = velocity-sample.c
-nmea_sample_SOURCES = nmea-sample.c
-satellite_sample_SOURCES = satellite-sample.c
-property_sample_SOURCES = property-sample.c
-zone_sample_SOURCES = zone-sample.c
-location_api_test_SOURCES = location-api-test.c location-api-test-util.c
-
-LDADD = \
- $(dir_location)/libSLP-location.la\
- $(TEST_LIBS)
-AM_CFLAGS = \
- -I$(dir_location) \
- -I$(dir_location)/include \
- -I$(dir_location)/manager \
- $(TEST_CFLAGS)
-
-dir_tests = $(top_srcdir)/tests
-dir_tests_exec = $(top_srcdir)/tests/.libs
-
-install-exec-hook:
- cp $(dir_tests)/location-api-test.json $(dir_tests_exec)/location-api-test.json
- chmod 644 $(dir_tests_exec)/location-api-test.json
-
-uninstall-hook:
- rm -f $(dir_tests_exec)/location-api-test.json
static GMainLoop *loop = NULL;
static gboolean
-exit_program (gpointer data)
+exit_program(gpointer data)
{
- g_main_loop_quit (loop);
- g_debug ("Quit g_main_loop");
+ g_main_loop_quit(loop);
+ g_debug("Quit g_main_loop");
return FALSE;
}
static void
-print_pos (gpointer data, gpointer user_data)
+print_pos(gpointer data, gpointer user_data)
{
LocationPosition *pos = (LocationPosition *)data;
if (pos) {
- g_debug ("time: %d, lat: %f, long: %f, alt: %f, status: %d",
- pos->timestamp, pos->latitude, pos->longitude, pos->altitude, pos->status);
- location_position_free (pos);
+ g_debug("time: %d, lat: %f, long: %f, alt: %f, status: %d",
+ pos->timestamp, pos->latitude, pos->longitude, pos->altitude, pos->status);
+ location_position_free(pos);
}
}
static void
-print_acc (gpointer data, gpointer user_data)
+print_acc(gpointer data, gpointer user_data)
{
LocationAccuracy *acc = (LocationAccuracy *)data;
if (acc) {
- g_debug ("\tAccuracy level %d (%.0f meters %.0f meters)", acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
- location_accuracy_free (acc);
+ g_debug("\tAccuracy level %d (%.0f meters %.0f meters)", acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
+ location_accuracy_free(acc);
}
}
static void
-cb_address (LocationError error,
- LocationAddress *addr,
- LocationAccuracy *acc,
- gpointer userdata)
+cb_address(LocationError error,
+ LocationAddress *addr,
+ LocationAccuracy *acc,
+ gpointer userdata)
{
if (error != LOCATION_ERROR_NONE) {
g_debug("cb_address failed: error=%d\n", error);
return;
}
- g_debug ("ASYNC>> location_map_get_address_async> %s %s %s %s %s %s %s",
- addr->building_number, addr->street, addr->district, addr->city, addr->state, addr->postal_code, addr->country_code);
- g_debug ("\tAccuracy level %d (%.0f meters %.0f meters)", acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
+ g_debug("ASYNC>> location_map_get_address_async> %s %s %s %s %s %s %s",
+ addr->building_number, addr->street, addr->district, addr->city, addr->state, addr->postal_code, addr->country_code);
+ g_debug("\tAccuracy level %d (%.0f meters %.0f meters)", acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
}
static void
-cb_service_disabled (GObject *self,
- guint status,
- gpointer userdata)
+cb_service_disabled(GObject *self,
+ guint status,
+ gpointer userdata)
{
g_debug("cb_service_disabled: status(%d) userdata(0x%x)", status, (unsigned int)userdata);
}
static void
-cb_position_from_address (LocationError error, GList *pos_list, GList *acc_list, gpointer userdata)
+cb_position_from_address(LocationError error, GList *pos_list, GList *acc_list, gpointer userdata)
{
if (error != LOCATION_ERROR_NONE) {
g_debug("cb_position_from_address failed: error=%d\n", error);
return;
}
- g_list_foreach (pos_list, print_pos, NULL);
- g_list_foreach (acc_list, print_acc, NULL);
+ g_list_foreach(pos_list, print_pos, NULL);
+ g_list_foreach(acc_list, print_acc, NULL);
}
static void
-cb_position_from_freeformed_address (LocationError error, GList *pos_list, GList *acc_list, gpointer userdata)
+cb_position_from_freeformed_address(LocationError error, GList *pos_list, GList *acc_list, gpointer userdata)
{
if (error != LOCATION_ERROR_NONE) {
g_debug("cb_position_from_freeformed_address failed: error=%d\n", error);
return;
}
- g_list_foreach (pos_list, print_pos, NULL);
- g_list_foreach (acc_list, print_acc, NULL);
+ g_list_foreach(pos_list, print_pos, NULL);
+ g_list_foreach(acc_list, print_acc, NULL);
}
static void
-cb_address_from_position (LocationError error, LocationAddress *addr, LocationAccuracy *acc, gpointer userdata)
+cb_address_from_position(LocationError error, LocationAddress *addr, LocationAccuracy *acc, gpointer userdata)
{
if (error != LOCATION_ERROR_NONE) {
g_debug("cb_address_from_position failed: error=%d\n", error);
return;
}
- g_debug ("ASYNC>> location_map_get_address_from_position_async> %s %s %s %s %s %s %s",
- addr->building_number, addr->street, addr->district, addr->city, addr->state, addr->postal_code, addr->country_code);
- g_debug ("\tAccuracy level %d (%.0f meters %.0f meters)", acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
+ g_debug("ASYNC>> location_map_get_address_from_position_async> %s %s %s %s %s %s %s",
+ addr->building_number, addr->street, addr->district, addr->city, addr->state, addr->postal_code, addr->country_code);
+ g_debug("\tAccuracy level %d (%.0f meters %.0f meters)", acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
}
static void
-cb_service_enabled (GObject *self,
- guint status,
- gpointer userdata)
+cb_service_enabled(GObject *self,
+ guint status,
+ gpointer userdata)
{
g_debug("cb_service_enabled: status(%d) userdata(0x%x)", status, (unsigned int)userdata);
}
static gboolean
-async_request (gpointer loc)
+async_request(gpointer loc)
{
guint req_id = 0;
- LocationGeocodePreference *pref =location_geocode_pref_new();
+ LocationGeocodePreference *pref = location_geocode_pref_new();
location_geocode_pref_set_max_result(pref, 25);
- LocationAddress *addr = location_address_new ("1", "Post Street", NULL, "san jose", "ca", NULL, "95113",NULL,NULL,NULL);
- LocationError err = location_map_get_position_from_address_async(loc, addr,pref, cb_position_from_address, loc,&req_id);
+ LocationAddress *addr = location_address_new("1", "Post Street", NULL, "san jose", "ca", NULL, "95113", NULL, NULL, NULL);
+ LocationError err = location_map_get_position_from_address_async(loc, addr, pref, cb_position_from_address, loc, &req_id);
if (LOCATION_ERROR_NONE == err)
g_debug("location_map_get_position_from_address_async() success");
- else g_warning ("location_map_get_position_from_address_async() failed> error code:%d", err);
- location_address_free (addr);
+ else g_warning("location_map_get_position_from_address_async() failed> error code:%d", err);
+ location_address_free(addr);
gchar *addr_str = g_strdup("4 N 2nd Street 95113");
- err = location_map_get_position_from_freeformed_address_async(loc, addr_str,pref, cb_position_from_freeformed_address, loc,&req_id);
+ err = location_map_get_position_from_freeformed_address_async(loc, addr_str, pref, cb_position_from_freeformed_address, loc, &req_id);
if (LOCATION_ERROR_NONE == err)
g_debug("location_map_get_position_from_freeformed_address_async() success");
- else g_warning ("location_map_get_position_from_freeformed_address_async() failed> error code:%d", err);
+ else g_warning("location_map_get_position_from_freeformed_address_async() failed> error code:%d", err);
g_free(addr_str);
- LocationPosition *pos = location_position_new (0, 37.3322, -121.8720, 0, LOCATION_STATUS_2D_FIX);
- err = location_map_get_address_from_position_async(loc, pos,cb_address_from_position, loc,&req_id);
+ LocationPosition *pos = location_position_new(0, 37.3322, -121.8720, 0, LOCATION_STATUS_2D_FIX);
+ err = location_map_get_address_from_position_async(loc, pos, cb_address_from_position, loc, &req_id);
if (LOCATION_ERROR_NONE == err)
g_debug("location_map_get_address_from_position_async() success");
- else g_warning ("location_map_get_address_from_position_async() failed> error code:%d", err);
- location_position_free (pos);
+ else g_warning("location_map_get_address_from_position_async() failed> error code:%d", err);
+ location_position_free(pos);
location_geocode_pref_free(pref);
return FALSE;
}
int
-main (int argc, char *argv[])
+main(int argc, char *argv[])
{
LocationMapObject *loc = NULL;
- // If application is executed by AUL, this is not needed.
+ /* If application is executed by AUL, this is not needed. */
g_setenv("PKG_NAME", "com.samsung.address-sample", 1);
+#if !GLIB_CHECK_VERSION (2, 35, 0)
g_type_init();
- location_init ();
- loop = g_main_loop_new (NULL, TRUE);
+#endif
+
+ location_init();
+ loop = g_main_loop_new(NULL, TRUE);
- loc = location_map_new (NULL);
+ loc = location_map_new(NULL);
if (!loc) {
g_warning("location_map_new failed");
return -1;
GList *acc_list = NULL;
LocationAddress *addr = NULL;
- addr = location_address_new ("1", "Post Street", NULL, "san jose", "ca", NULL, "95113",NULL,NULL,NULL);
+ addr = location_address_new("1", "Post Street", NULL, "san jose", "ca", NULL, "95113", NULL, NULL, NULL);
LocationError err = location_map_get_position_from_address(loc, addr, &pos_list, &acc_list);
if (LOCATION_ERROR_NONE == err) {
- g_list_foreach (pos_list, print_pos, NULL);
- g_list_foreach (acc_list, print_acc, NULL);
- } else g_warning ("SYNC>>>location_map_get_position_from_address() failed> error code:%d", err);
- location_address_free (addr);
+ g_list_foreach(pos_list, print_pos, NULL);
+ g_list_foreach(acc_list, print_acc, NULL);
+ } else g_warning("SYNC>>>location_map_get_position_from_address() failed> error code:%d", err);
+ location_address_free(addr);
- char* addr_str = g_strdup("4 N 2nd Street 95113");
+ char *addr_str = g_strdup("4 N 2nd Street 95113");
err = location_map_get_position_from_freeformed_address(loc, addr_str, &pos_list, &acc_list);
if (LOCATION_ERROR_NONE == err) {
- g_list_foreach (pos_list, print_pos, NULL);
- g_list_foreach (acc_list, print_acc, NULL);
- } else g_warning ("SYNC>> location_map_get_position_from_freeformed_address() failed> error code:%d", err);
+ g_list_foreach(pos_list, print_pos, NULL);
+ g_list_foreach(acc_list, print_acc, NULL);
+ } else g_warning("SYNC>> location_map_get_position_from_freeformed_address() failed> error code:%d", err);
g_free(addr_str);
- pos = location_position_new (0, 37.3322, -121.8720, 0, LOCATION_STATUS_2D_FIX);
+ pos = location_position_new(0, 37.3322, -121.8720, 0, LOCATION_STATUS_2D_FIX);
err = location_map_get_address_from_position(loc, pos, &addr, &acc);
if (LOCATION_ERROR_NONE == err) {
- g_debug ("SYNC>> location_map_get_address_from_position() success> %s %s %s %s %s %s %s",
- addr->building_number, addr->street, addr->district, addr->city, addr->state, addr->postal_code, addr->country_code);
- g_debug ("\tAccuracy level %d (%.0f meters %.0f meters)", acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
+ g_debug("SYNC>> location_map_get_address_from_position() success> %s %s %s %s %s %s %s",
+ addr->building_number, addr->street, addr->district, addr->city, addr->state, addr->postal_code, addr->country_code);
+ g_debug("\tAccuracy level %d (%.0f meters %.0f meters)", acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
location_address_free(addr);
location_accuracy_free(acc);
- } else g_warning ("SYNC>> location_map_get_address_from_position() failed> error code:%d", err);
- location_position_free (pos);
+ } else g_warning("SYNC>> location_map_get_address_from_position() failed> error code:%d", err);
+ location_position_free(pos);
- g_signal_connect (loc, "service-enabled", G_CALLBACK(cb_service_enabled), loc);
- g_signal_connect (loc, "service-disabled", G_CALLBACK(cb_service_disabled), loc);
+ g_signal_connect(loc, "service-enabled", G_CALLBACK(cb_service_enabled), loc);
+ g_signal_connect(loc, "service-disabled", G_CALLBACK(cb_service_disabled), loc);
- g_timeout_add_seconds (3, async_request, loc);
+ g_timeout_add_seconds(3, async_request, loc);
- g_timeout_add_seconds (60, exit_program, NULL);
- g_main_loop_run (loop);
+ g_timeout_add_seconds(60, exit_program, NULL);
+ g_main_loop_run(loop);
- location_map_free (loc);
+ location_map_free(loc);
return 0;
}
static GMainLoop *loop = NULL;
static void
-cb_service_updated (GObject *self,
- guint type,
- gpointer data,
- gpointer accuracy,
- gpointer userdata)
+cb_service_updated(GObject *self,
+ guint type,
+ gpointer data,
+ gpointer accuracy,
+ gpointer userdata)
{
g_debug("cb_service_updated: type(%d) userdata(0x%x)", type, (unsigned int)userdata);
- LocationAccuracy *acc = (LocationAccuracy*) accuracy;
+ LocationAccuracy *acc = (LocationAccuracy *) accuracy;
switch (type) {
- case POSITION_UPDATED: {
- LocationPosition *pos = (LocationPosition*) data;
- g_debug ("ASYNC>> Current position> time: %d, lat: %f, long: %f, alt: %f, status: %d",
- pos->timestamp, pos->latitude, pos->longitude, pos->altitude, pos->status);
- g_debug ("\tAccuracy level %d (%.0f meters %.0f meters)",
- acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
- }
- break;
- case VELOCITY_UPDATED: {
- LocationVelocity *vel = (LocationVelocity*) data;
- g_debug ("ASYNC>> Current velocity> time: %d, speed: %f, direction:%f, climb:%f",
- vel->timestamp, vel->speed, vel->direction, vel->climb);
- g_debug ("\tAccuracy level %d (%.0f meters %.0f meters)",
- acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
- }
- break;
- default:
- g_warning ("ASYNC>> Undefined update type");
- break;
+ case POSITION_UPDATED: {
+ LocationPosition *pos = (LocationPosition *) data;
+ g_debug("ASYNC>> Current position> time: %d, lat: %f, long: %f, alt: %f, status: %d",
+ pos->timestamp, pos->latitude, pos->longitude, pos->altitude, pos->status);
+ g_debug("\tAccuracy level %d (%.0f meters %.0f meters)",
+ acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
+ }
+ break;
+ case VELOCITY_UPDATED: {
+ LocationVelocity *vel = (LocationVelocity *) data;
+ g_debug("ASYNC>> Current velocity> time: %d, speed: %f, direction:%f, climb:%f",
+ vel->timestamp, vel->speed, vel->direction, vel->climb);
+ g_debug("\tAccuracy level %d (%.0f meters %.0f meters)",
+ acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
+ }
+ break;
+ default:
+ g_warning("ASYNC>> Undefined update type");
+ break;
}
}
static void
-cb_service_enabled (GObject *self,
- guint status,
- gpointer userdata)
+cb_service_enabled(GObject *self,
+ guint status,
+ gpointer userdata)
{
g_debug("cb_service_enabled: status(%d) userdata(0x%x)", status, (unsigned int)userdata);
- LocationObject *loc = (LocationObject*)userdata;
+ LocationObject *loc = (LocationObject *)userdata;
LocationAccuracy *acc = NULL;
LocationPosition *pos = NULL;
LocationVelocity *vel = NULL;
gchar *nmea_data = NULL;
int idx = 0;
- if (LOCATION_ERROR_NONE == location_get_position (loc, &pos, &acc)) {
- g_debug ("SYNC>> Current position> time: %d, lat: %f, long: %f, alt: %f, status: %d",
- pos->timestamp, pos->latitude, pos->longitude, pos->altitude, pos->status);
- g_debug ("\tAccuracy level %d (%.0f meters %.0f meters)",
- acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
+ if (LOCATION_ERROR_NONE == location_get_position(loc, &pos, &acc)) {
+ g_debug("SYNC>> Current position> time: %d, lat: %f, long: %f, alt: %f, status: %d",
+ pos->timestamp, pos->latitude, pos->longitude, pos->altitude, pos->status);
+ g_debug("\tAccuracy level %d (%.0f meters %.0f meters)",
+ acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
location_position_free(pos);
location_accuracy_free(acc);
- } else g_warning ("SYNC>> Current position> failed");
- if (LOCATION_ERROR_NONE == location_get_velocity (loc, &vel, &acc)) {
- g_debug ("SYNC>> Current velocity> time: %d, speed: %f, direction:%f, climb:%f",
- vel->timestamp, vel->speed, vel->direction, vel->climb);
- g_debug ("\tAccuracy level %d (%.0f meters %.0f meters)",
- acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
+ } else g_warning("SYNC>> Current position> failed");
+ if (LOCATION_ERROR_NONE == location_get_velocity(loc, &vel, &acc)) {
+ g_debug("SYNC>> Current velocity> time: %d, speed: %f, direction:%f, climb:%f",
+ vel->timestamp, vel->speed, vel->direction, vel->climb);
+ g_debug("\tAccuracy level %d (%.0f meters %.0f meters)",
+ acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
location_velocity_free(vel);
location_accuracy_free(acc);
- } else g_warning ("SYNC>> Current velocity> failed");
+ } else g_warning("SYNC>> Current velocity> failed");
- g_object_get (loc, "satellite", &sat, NULL);
+ g_object_get(loc, "satellite", &sat, NULL);
if (sat) {
- g_debug ("SYNC>> Current Sattelite> satellite in view = %d, satellite in used = %d", sat->num_of_sat_inview, sat->num_of_sat_used);
- g_debug ("\tinview satellite information = ");
- for (idx=0; idx<sat->num_of_sat_inview; idx++) {
+ g_debug("SYNC>> Current Sattelite> satellite in view = %d, satellite in used = %d", sat->num_of_sat_inview, sat->num_of_sat_used);
+ g_debug("\tinview satellite information = ");
+ for (idx = 0; idx < sat->num_of_sat_inview; idx++) {
guint prn;
gboolean used;
guint elevation;
guint azimuth;
gint snr;
location_satellite_get_satellite_details(sat, idx, &prn, &used, &elevation, &azimuth, &snr);
- g_debug ("\t\t[%02d] used: %d, prn: %d, elevation: %d, azimuth: %d, snr: %d",
- idx, used, prn, elevation, azimuth, snr);
+ g_debug("\t\t[%02d] used: %d, prn: %d, elevation: %d, azimuth: %d, snr: %d",
+ idx, used, prn, elevation, azimuth, snr);
}
- location_satellite_free (sat);
- } else g_warning ("SYNC>> Current Sattelite> failed");
+ location_satellite_free(sat);
+ } else g_warning("SYNC>> Current Sattelite> failed");
g_object_get(loc, "nmea", &nmea_data, NULL);
if (nmea_data) {
}
static void
-cb_service_disabled (GObject *self,
- guint status,
- gpointer userdata)
+cb_service_disabled(GObject *self,
+ guint status,
+ gpointer userdata)
{
g_debug("cb_service_disabled: status(%d) userdata(0x%x)", status, (unsigned int)userdata);
}
static void
-cb_zone_in (GObject *self,
- gpointer boundary,
- gpointer position,
- gpointer accuracy)
+cb_zone_in(GObject *self,
+ gpointer boundary,
+ gpointer position,
+ gpointer accuracy)
{
- LocationPosition *pos = (LocationPosition*) position;
- LocationAccuracy *acc = (LocationAccuracy*) accuracy;
+ LocationPosition *pos = (LocationPosition *) position;
+ LocationAccuracy *acc = (LocationAccuracy *) accuracy;
- g_debug ("ASYNC>> ZoneIn> Current position: time: %d, lat: %f, long: %f, alt: %f",
- pos->timestamp, pos->latitude, pos->longitude, pos->altitude);
- g_debug ("\tAccuracy level %d (%.0f meters %.0f meters)",
- acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
+ g_debug("ASYNC>> ZoneIn> Current position: time: %d, lat: %f, long: %f, alt: %f",
+ pos->timestamp, pos->latitude, pos->longitude, pos->altitude);
+ g_debug("\tAccuracy level %d (%.0f meters %.0f meters)",
+ acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
}
static void
-cb_zone_out (GObject *self,
- gpointer boundary,
- gpointer position,
- gpointer accuracy)
+cb_zone_out(GObject *self,
+ gpointer boundary,
+ gpointer position,
+ gpointer accuracy)
{
- LocationPosition *pos = (LocationPosition*) position;
- LocationAccuracy *acc = (LocationAccuracy*) accuracy;
+ LocationPosition *pos = (LocationPosition *) position;
+ LocationAccuracy *acc = (LocationAccuracy *) accuracy;
- g_debug ("ASYNC>> ZoneOut> Current position: time: %d, lat: %f, long: %f, alt: %f",
- pos->timestamp, pos->latitude, pos->longitude, pos->altitude);
- g_debug ("\tAccuracy level %d (%.0f meters %.0f meters)",
- acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
+ g_debug("ASYNC>> ZoneOut> Current position: time: %d, lat: %f, long: %f, alt: %f",
+ pos->timestamp, pos->latitude, pos->longitude, pos->altitude);
+ g_debug("\tAccuracy level %d (%.0f meters %.0f meters)",
+ acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
}
int
-main (int argc, char *argv[])
+main(int argc, char *argv[])
{
LocationObject *loc = NULL;
- // If application is executed by AUL, this is not needed.
+ /* If application is executed by AUL, this is not needed. */
g_setenv("PKG_NAME", "com.samsung.gps-test", 1);
- location_init ();
+ location_init();
- loop = g_main_loop_new (NULL, TRUE);
+ loop = g_main_loop_new(NULL, TRUE);
- loc = location_new (LOCATION_METHOD_GPS);
+ loc = location_new(LOCATION_METHOD_GPS);
if (!loc) {
g_debug("location_new failed");
return -1;
LocationPosition *rb = location_position_new(0, 37.255, 127.056, 0, LOCATION_STATUS_2D_FIX);
LocationPosition *lt = location_position_new(0, 37.260, 127.050, 0, LOCATION_STATUS_2D_FIX);
bound = location_boundary_new_for_rect(lt, rb);
- location_position_free (rb);
- location_position_free (lt);
+ location_position_free(rb);
+ location_position_free(lt);
if (bound) {
g_object_set(loc, "boundary", bound, NULL);
} else g_warning("failed to location_boundary_new_for_rect()");
g_object_get(loc, "boundary", &bound, NULL);
if (bound) {
g_debug("Set property>> boundary> type: %d, (%f,%f),(%f,%f)",
- bound->type,
- bound->rect.right_bottom->latitude, bound->rect.right_bottom->longitude,
- bound->rect.left_top->latitude, bound->rect.left_top->longitude);
- location_boundary_free (bound);
+ bound->type,
+ bound->rect.right_bottom->latitude, bound->rect.right_bottom->longitude,
+ bound->rect.left_top->latitude, bound->rect.left_top->longitude);
+ location_boundary_free(bound);
} else g_warning("failed to set property> boundary");
- g_signal_connect (loc, "service-enabled", G_CALLBACK(cb_service_enabled), loc);
- g_signal_connect (loc, "service-disabled", G_CALLBACK(cb_service_disabled), loc);
- g_signal_connect (loc, "service-updated", G_CALLBACK(cb_service_updated), loc);
- g_signal_connect (loc, "zone-in", G_CALLBACK(cb_zone_in), loc);
- g_signal_connect (loc, "zone-out", G_CALLBACK(cb_zone_out), loc);
+ g_signal_connect(loc, "service-enabled", G_CALLBACK(cb_service_enabled), loc);
+ g_signal_connect(loc, "service-disabled", G_CALLBACK(cb_service_disabled), loc);
+ g_signal_connect(loc, "service-updated", G_CALLBACK(cb_service_updated), loc);
+ g_signal_connect(loc, "zone-in", G_CALLBACK(cb_zone_in), loc);
+ g_signal_connect(loc, "zone-out", G_CALLBACK(cb_zone_out), loc);
- if( LOCATION_ERROR_NONE != location_start (loc) ){
+ if (LOCATION_ERROR_NONE != location_start(loc)) {
g_debug("location_start failed");
return -1;
}
- g_main_loop_run (loop);
+ g_main_loop_run(loop);
- location_stop (loc);
+ location_stop(loc);
LocationPosition *pos = NULL;
g_object_get(loc, "last-position", &pos, NULL);
if (pos) {
- g_debug ("Get property>> last-position> time: %d, lat: %f, long: %f, alt: %f, status: %d",
- pos->timestamp, pos->latitude, pos->longitude, pos->altitude, pos->status);
+ g_debug("Get property>> last-position> time: %d, lat: %f, long: %f, alt: %f, status: %d",
+ pos->timestamp, pos->latitude, pos->longitude, pos->altitude, pos->status);
location_position_free(pos);
} else g_warning("failed to get property> last-position");
- location_free (loc);
+ location_free(loc);
return 0;
}
static GMainLoop *loop = NULL;
static void
-cb_service_updated (GObject *self,
- guint type,
- gpointer data,
- gpointer accuracy,
- gpointer userdata)
+cb_service_updated(GObject *self,
+ guint type,
+ gpointer data,
+ gpointer accuracy,
+ gpointer userdata)
{
g_debug("cb_service_updated: type(%d) userdata(0x%x)", type, (unsigned int)userdata);
- LocationAccuracy *acc = (LocationAccuracy*) accuracy;
+ LocationAccuracy *acc = (LocationAccuracy *) accuracy;
switch (type) {
- case POSITION_UPDATED: {
- LocationPosition *pos = (LocationPosition*) data;
- g_debug ("ASYNC>> Current position> time: %d, lat: %f, long: %f, alt: %f, status: %d",
- pos->timestamp, pos->latitude, pos->longitude, pos->altitude, pos->status);
- g_debug ("\tAccuracy level %d (%.0f meters %.0f meters)",
- acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
- }
- break;
- case VELOCITY_UPDATED: {
- LocationVelocity *vel = (LocationVelocity*) data;
- g_debug ("ASYNC>> Current velocity> time: %d, speed: %f, direction:%f, climb:%f",
- vel->timestamp, vel->speed, vel->direction, vel->climb);
- g_debug ("\tAccuracy level %d (%.0f meters %.0f meters)",
- acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
- }
- break;
- default:
- g_warning ("ASYNC>> Undefined update type");
- break;
+ case POSITION_UPDATED: {
+ LocationPosition *pos = (LocationPosition *) data;
+ g_debug("ASYNC>> Current position> time: %d, lat: %f, long: %f, alt: %f, status: %d",
+ pos->timestamp, pos->latitude, pos->longitude, pos->altitude, pos->status);
+ g_debug("\tAccuracy level %d (%.0f meters %.0f meters)",
+ acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
+ }
+ break;
+ case VELOCITY_UPDATED: {
+ LocationVelocity *vel = (LocationVelocity *) data;
+ g_debug("ASYNC>> Current velocity> time: %d, speed: %f, direction:%f, climb:%f",
+ vel->timestamp, vel->speed, vel->direction, vel->climb);
+ g_debug("\tAccuracy level %d (%.0f meters %.0f meters)",
+ acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
+ }
+ break;
+ default:
+ g_warning("ASYNC>> Undefined update type");
+ break;
}
}
static void
-cb_service_enabled (GObject *self,
- guint status,
- gpointer userdata)
+cb_service_enabled(GObject *self,
+ guint status,
+ gpointer userdata)
{
g_debug("cb_service_enabled: status(%d) userdata(0x%x)", status, (unsigned int)userdata);
- LocationObject *loc = (LocationObject*)userdata;
+ LocationObject *loc = (LocationObject *)userdata;
LocationAccuracy *acc = NULL;
LocationPosition *pos = NULL;
LocationVelocity *vel = NULL;
g_object_get(loc, "method", &method, NULL);
g_debug("Get property>> method:%d", method);
- if (LOCATION_ERROR_NONE == location_get_position (loc, &pos, &acc)) {
- g_debug ("SYNC>> Current position> time: %d, lat: %f, long: %f, alt: %f, status: %d",
- pos->timestamp, pos->latitude, pos->longitude, pos->altitude, pos->status);
- g_debug ("\tAccuracy level %d (%.0f meters %.0f meters)",
- acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
+ if (LOCATION_ERROR_NONE == location_get_position(loc, &pos, &acc)) {
+ g_debug("SYNC>> Current position> time: %d, lat: %f, long: %f, alt: %f, status: %d",
+ pos->timestamp, pos->latitude, pos->longitude, pos->altitude, pos->status);
+ g_debug("\tAccuracy level %d (%.0f meters %.0f meters)",
+ acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
location_position_free(pos);
location_accuracy_free(acc);
- } else g_warning ("SYNC>> Current position> failed");
- if (LOCATION_ERROR_NONE == location_get_velocity (loc, &vel, &acc)) {
- g_debug ("SYNC>> Current velocity> time: %d, speed: %f, direction:%f, climb:%f",
- vel->timestamp, vel->speed, vel->direction, vel->climb);
- g_debug ("\tAccuracy level %d (%.0f meters %.0f meters)",
- acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
+ } else g_warning("SYNC>> Current position> failed");
+ if (LOCATION_ERROR_NONE == location_get_velocity(loc, &vel, &acc)) {
+ g_debug("SYNC>> Current velocity> time: %d, speed: %f, direction:%f, climb:%f",
+ vel->timestamp, vel->speed, vel->direction, vel->climb);
+ g_debug("\tAccuracy level %d (%.0f meters %.0f meters)",
+ acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
location_velocity_free(vel);
location_accuracy_free(acc);
- } else g_warning ("SYNC>> Current velocity> failed");
- }
+ } else g_warning("SYNC>> Current velocity> failed");
+}
static void
-cb_service_disabled (GObject *self,
- guint status,
- gpointer userdata)
+cb_service_disabled(GObject *self,
+ guint status,
+ gpointer userdata)
{
g_debug("cb_service_disabled: status(%d) userdata(0x%x)", status, (unsigned int)userdata);
}
static void
-cb_zone_in (GObject *self,
- gpointer boundary,
- gpointer position,
- gpointer accuracy)
+cb_zone_in(GObject *self,
+ gpointer boundary,
+ gpointer position,
+ gpointer accuracy)
{
- LocationPosition *pos = (LocationPosition*) position;
- LocationAccuracy *acc = (LocationAccuracy*) accuracy;
+ LocationPosition *pos = (LocationPosition *) position;
+ LocationAccuracy *acc = (LocationAccuracy *) accuracy;
- g_debug ("ASYNC>> ZoneIn> Current position: time: %d, lat: %f, long: %f, alt: %f",
- pos->timestamp, pos->latitude, pos->longitude, pos->altitude);
- g_debug ("\tAccuracy level %d (%.0f meters %.0f meters)",
- acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
+ g_debug("ASYNC>> ZoneIn> Current position: time: %d, lat: %f, long: %f, alt: %f",
+ pos->timestamp, pos->latitude, pos->longitude, pos->altitude);
+ g_debug("\tAccuracy level %d (%.0f meters %.0f meters)",
+ acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
}
static void
-cb_zone_out (GObject *self,
- gpointer boundary,
- gpointer position,
- gpointer accuracy)
+cb_zone_out(GObject *self,
+ gpointer boundary,
+ gpointer position,
+ gpointer accuracy)
{
- LocationPosition *pos = (LocationPosition*) position;
- LocationAccuracy *acc = (LocationAccuracy*) accuracy;
+ LocationPosition *pos = (LocationPosition *) position;
+ LocationAccuracy *acc = (LocationAccuracy *) accuracy;
- g_debug ("ASYNC>> ZoneOut> Current position: time: %d, lat: %f, long: %f, alt: %f",
- pos->timestamp, pos->latitude, pos->longitude, pos->altitude);
- g_debug ("\tAccuracy level %d (%.0f meters %.0f meters)",
- acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
+ g_debug("ASYNC>> ZoneOut> Current position: time: %d, lat: %f, long: %f, alt: %f",
+ pos->timestamp, pos->latitude, pos->longitude, pos->altitude);
+ g_debug("\tAccuracy level %d (%.0f meters %.0f meters)",
+ acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
}
int
-main (int argc, char *argv[])
+main(int argc, char *argv[])
{
LocationObject *loc = NULL;
- // If application is executed by AUL, this is not needed.
+ /* If application is executed by AUL, this is not needed. */
g_setenv("PKG_NAME", "com.samsung.hybrid-test", 1);
- location_init ();
+ location_init();
- loop = g_main_loop_new (NULL, TRUE);
+ loop = g_main_loop_new(NULL, TRUE);
- loc = location_new (LOCATION_METHOD_HYBRID);
+ loc = location_new(LOCATION_METHOD_HYBRID);
if (!loc) {
g_debug("location_new failed");
return -1;
g_object_get(loc, "boundary", &bound, NULL);
if (bound) {
g_debug("Get property>> boundary> type: %d", bound->type);
- location_boundary_free (bound);
+ location_boundary_free(bound);
} else g_warning("failed to get property> boundary");
LocationPosition *rb = location_position_new(0, 37.258, 127.056, 0, LOCATION_STATUS_2D_FIX);
LocationPosition *lt = location_position_new(0, 37.260, 127.054, 0, LOCATION_STATUS_2D_FIX);
bound = location_boundary_new_for_rect(lt, rb);
- location_position_free (rb);
- location_position_free (lt);
+ location_position_free(rb);
+ location_position_free(lt);
if (bound) {
g_object_set(loc, "boundary", bound, NULL);
location_boundary_free(bound);
g_object_get(loc, "boundary", &bound, NULL);
if (bound) {
g_debug("Set property>> boundary> type: %d, (%f,%f),(%f,%f)",
- bound->type,
- bound->rect.right_bottom->latitude, bound->rect.right_bottom->longitude,
- bound->rect.left_top->latitude, bound->rect.left_top->longitude);
- location_boundary_free (bound);
+ bound->type,
+ bound->rect.right_bottom->latitude, bound->rect.right_bottom->longitude,
+ bound->rect.left_top->latitude, bound->rect.left_top->longitude);
+ location_boundary_free(bound);
} else g_warning("failed to set property> boundary");
- g_signal_connect (loc, "service-enabled", G_CALLBACK(cb_service_enabled), loc);
- g_signal_connect (loc, "service-disabled", G_CALLBACK(cb_service_disabled), loc);
- g_signal_connect (loc, "service-updated", G_CALLBACK(cb_service_updated), loc);
- g_signal_connect (loc, "zone-in", G_CALLBACK(cb_zone_in), loc);
- g_signal_connect (loc, "zone-out", G_CALLBACK(cb_zone_out), loc);
+ g_signal_connect(loc, "service-enabled", G_CALLBACK(cb_service_enabled), loc);
+ g_signal_connect(loc, "service-disabled", G_CALLBACK(cb_service_disabled), loc);
+ g_signal_connect(loc, "service-updated", G_CALLBACK(cb_service_updated), loc);
+ g_signal_connect(loc, "zone-in", G_CALLBACK(cb_zone_in), loc);
+ g_signal_connect(loc, "zone-out", G_CALLBACK(cb_zone_out), loc);
- if (LOCATION_ERROR_NONE != location_start (loc)) {
+ if (LOCATION_ERROR_NONE != location_start(loc)) {
g_debug("location_start failed");
return -1;
}
- g_main_loop_run (loop);
+ g_main_loop_run(loop);
- location_stop (loc);
+ location_stop(loc);
LocationPosition *pos = NULL;
g_object_get(loc, "last-position", &pos, NULL);
if (pos) {
- g_debug ("Get property>> last-position> time: %d, lat: %f, long: %f, alt: %f, status: %d",
- pos->timestamp, pos->latitude, pos->longitude, pos->altitude, pos->status);
+ g_debug("Get property>> last-position> time: %d, lat: %f, long: %f, alt: %f, status: %d",
+ pos->timestamp, pos->latitude, pos->longitude, pos->altitude, pos->status);
location_position_free(pos);
} else g_warning("failed to get property> last-position");
- location_free (loc);
+ location_free(loc);
return 0;
}
{
if (parser == NULL || root == NULL) return 0;
- JsonObject* polygon_obj = json_array_get_object_element(json_node_get_array(root), polygon_index);
+ JsonObject *polygon_obj = json_array_get_object_element(json_node_get_array(root), polygon_index);
if (polygon_obj == NULL) return 0;
- JsonArray * positions = json_object_get_array_member (polygon_obj, "positions");
+ JsonArray *positions = json_object_get_array_member(polygon_obj, "positions");
if (positions == NULL) return 0;
return json_array_get_length(positions);
}
-static LocationPosition* _get_position_from_polygon(int polygon_index, int pos_index)
+static LocationPosition *_get_position_from_polygon(int polygon_index, int pos_index)
{
double latitude = 0.0;
double longitude = 0.0;
if (parser == NULL || root == NULL) return NULL;
JsonObject *polygon_obj = json_array_get_object_element(json_node_get_array(root), polygon_index);
- JsonArray * pos_array = json_object_get_array_member(polygon_obj, "positions");
- JsonObject* pos = json_array_get_object_element(pos_array, pos_index);
+ JsonArray *pos_array = json_object_get_array_member(polygon_obj, "positions");
+ JsonObject *pos = json_array_get_object_element(pos_array, pos_index);
latitude = json_object_get_double_member(pos, "latitude");
longitude = json_object_get_double_member(pos, "longitude");
return position;
}
-static LocationPosition* _get_marker_position_from_polygon(int polygon_index, int pos_index)
+static LocationPosition *_get_marker_position_from_polygon(int polygon_index, int pos_index)
{
double latitude = 0.0;
double longitude = 0.0;
if (parser == NULL || root == NULL) return NULL;
JsonObject *polygon_obj = json_array_get_object_element(json_node_get_array(root), polygon_index);
- JsonArray * pos_array = json_object_get_array_member(polygon_obj, "marker_position");
- JsonObject* pos = json_array_get_object_element(pos_array, pos_index);
+ JsonArray *pos_array = json_object_get_array_member(polygon_obj, "marker_position");
+ JsonObject *pos = json_array_get_object_element(pos_array, pos_index);
latitude = json_object_get_double_member(pos, "latitude");
longitude = json_object_get_double_member(pos, "longitude");
{
if (data == NULL) return;
- LocationPosition *position = (LocationPosition*) data;
+ LocationPosition *position = (LocationPosition *) data;
location_position_free(position);
}
-LocationBoundary* json_util_get_polygon_boundary(int polygon_index)
+LocationBoundary *json_util_get_polygon_boundary(int polygon_index)
{
if (parser == NULL || root == NULL) {
g_printf("invalid param parser[%d], root[%d]\n", parser, root);
return NULL;
}
- GList* position_list = NULL;
+ GList *position_list = NULL;
LocationBoundary *boundary = NULL;
int index = 0;
int pos_count = _get_polygon_position_count(polygon_index);
if (pos_count == 0) return NULL;
- for(index = 0; index < pos_count; index++) {
+ for (index = 0; index < pos_count; index++) {
position_list = g_list_append(position_list, _get_position_from_polygon(polygon_index, index));
}
/* Polygon boundary */
int json_util_get_polygon_count(void)
{
- JsonArray * array = json_node_get_array(root);
+ JsonArray *array = json_node_get_array(root);
return json_array_get_length(array);
}
}
/* Test Marker */
-char * json_util_get_marker_name(int polygon_index, int pos_index)
+char *json_util_get_marker_name(int polygon_index, int pos_index)
{
char *result = NULL;
if (parser == NULL || root == NULL) return NULL;
JsonObject *polygon_obj = json_array_get_object_element(json_node_get_array(root), polygon_index);
- JsonArray * pos_array = json_object_get_array_member(polygon_obj, "marker_position");
- JsonObject* pos = json_array_get_object_element(pos_array, pos_index);
+ JsonArray *pos_array = json_object_get_array_member(polygon_obj, "marker_position");
+ JsonObject *pos = json_array_get_object_element(pos_array, pos_index);
result = (char *)json_object_get_string_member(pos, "where");
if (result == NULL) return NULL;
{
if (parser == NULL || root == NULL) return 0;
- JsonObject* polygon_obj = json_array_get_object_element(json_node_get_array(root), polygon_index);
- JsonArray * marker_position = json_object_get_array_member (polygon_obj, "marker_position");
+ JsonObject *polygon_obj = json_array_get_object_element(json_node_get_array(root), polygon_index);
+ JsonArray *marker_position = json_object_get_array_member(polygon_obj, "marker_position");
return json_array_get_length(marker_position);
}
{
if (parser == NULL || root == NULL) return NULL;
- LocationPosition* position = NULL;
+ LocationPosition *position = NULL;
position = _get_marker_position_from_polygon(polygon_index, marker_index);
return position;
}
-char* json_util_result_zone_test(int polygon_index, int marker_index)
+char *json_util_result_zone_test(int polygon_index, int marker_index)
{
if (parser == NULL || root == NULL) return NULL;
char *result = NULL;
JsonObject *polygon_obj = json_array_get_object_element(json_node_get_array(root), polygon_index);
- JsonArray * pos_array = json_object_get_array_member(polygon_obj, "marker_position");
- JsonObject* pos = json_array_get_object_element(pos_array, marker_index);
+ JsonArray *pos_array = json_object_get_array_member(polygon_obj, "marker_position");
+ JsonObject *pos = json_array_get_object_element(pos_array, marker_index);
result = (char *)json_object_get_string_member(pos, "result");
if (result == NULL) return NULL;
return g_strdup(result);
}
-void json_util_init(const char * file_name)
+void json_util_init(const char *file_name)
{
g_print("Enter init_json_parser");
GError *error;
G_BEGIN_DECLS
void json_util_init(const char *file_file);
-char* json_util_result_zone_test(int polygon_index, int marker_index);
-char* json_util_get_marker_name(int polygon_index, int marker_index);
+char *json_util_result_zone_test(int polygon_index, int marker_index);
+char *json_util_get_marker_name(int polygon_index, int marker_index);
int json_util_get_marker_position_count(int polygon_index);
LocationPosition *json_util_get_marker_position(int polygon_index, int marker_index);
int json_util_get_polygon_count(void);
-char* json_util_get_polygon_name(int polygon_index);
-LocationBoundary* json_util_get_polygon_boundary(int polygon_index);
+char *json_util_get_polygon_name(int polygon_index);
+LocationBoundary *json_util_get_polygon_boundary(int polygon_index);
G_END_DECLS
#include "location-api-test-util.h"
#define STR_MAX 128
-LocationObject* location_obj = NULL;
+LocationObject *location_obj = NULL;
static GMainLoop *g_mainloop = NULL;
#define LOCATION_API_TEST_JSON_FILE "/opt/data/location-api-test.json"
static gpointer GmainThread(gpointer data)
{
- g_mainloop = g_main_loop_new (NULL, FALSE);
+ g_mainloop = g_main_loop_new(NULL, FALSE);
g_printf("\n...Entering GMain Loop to Receive Notifications....\n");
- g_main_loop_run (g_mainloop);
- g_main_loop_unref (g_mainloop);
+ g_main_loop_run(g_mainloop);
+ g_main_loop_unref(g_mainloop);
g_mainloop = NULL;
return NULL;
}
static void GetLocationError(char str[STR_MAX], int ret)
{
- switch(ret)
- {
+ switch (ret) {
case LOCATION_ERROR_NONE:
g_utf8_strncpy(str, "LOCATION_ERROR_NONE", STR_MAX);
break;
static void GetStatus(char str[STR_MAX], LocationStatus acc_level)
{
- switch(acc_level)
- {
+ switch (acc_level) {
case LOCATION_STATUS_NO_FIX:
g_utf8_strncpy(str, "LOCATION_STATUS_NO_FIX", STR_MAX);
break;
static void GetMethod(char str[STR_MAX], LocationMethod method)
{
- switch(method)
- {
+ switch (method) {
case LOCATION_METHOD_HYBRID:
g_utf8_strncpy(str, "LOCATION_METHOD_HYBRID", STR_MAX);
break;
static void GetAccuracyLevel(char str[STR_MAX], LocationAccuracyLevel acc_level)
{
- switch(acc_level)
- {
+ switch (acc_level) {
case LOCATION_ACCURACY_LEVEL_NONE:
g_utf8_strncpy(str, "LOCATION_ACCURACY_LEVEL_NONE", STR_MAX);
break;
}
-static void SelectOpt(char* buf)
+static void SelectOpt(char *buf)
{
int iLen = 0;
char *str = NULL;
g_printf("fgets return NULL. \n");
}
iLen = g_utf8_strlen(buf, -1);
- buf[iLen-1] = '\0';
+ buf[iLen - 1] = '\0';
}
static int PromptInt()
if (NULL == str) {
g_printf("fgets return NULL. \n");
}
- buf[strlen(buf)-1]='\0';
+ buf[strlen(buf) - 1] = '\0';
ret = g_ascii_strtoll(buf, NULL, 10);
return ret;
}
static void PrintPolygonPosition(gpointer data, gpointer user_data)
{
- LocationPosition *position = (LocationPosition*) data;
+ LocationPosition *position = (LocationPosition *) data;
g_printf("[%lf %lf %lf] ", position->latitude, position->longitude, position->altitude);
}
static void PrintBoundary(LocationBoundary *boundary, void *user_data)
{
- if(boundary == NULL) return;
+ if (boundary == NULL) return;
if (boundary->type == LOCATION_BOUNDARY_CIRCLE) {
g_printf("\n\tCIRCLE: center[%lf %lf %lf] radius[%lf]",
- boundary->circle.center->latitude, boundary->circle.center->longitude, boundary->circle.center->altitude, boundary->circle.radius);
+ boundary->circle.center->latitude, boundary->circle.center->longitude, boundary->circle.center->altitude, boundary->circle.radius);
} else if (boundary->type == LOCATION_BOUNDARY_RECT) {
g_printf("\n\tRECT: left_top[%lf %lf %lf] right_bottom[%lf %lf %lf]",
- boundary->rect.left_top->latitude, boundary->rect.left_top->longitude, boundary->rect.left_top->altitude,
- boundary->rect.right_bottom->latitude, boundary->rect.right_bottom->longitude, boundary->rect.right_bottom->altitude);
+ boundary->rect.left_top->latitude, boundary->rect.left_top->longitude, boundary->rect.left_top->altitude,
+ boundary->rect.right_bottom->latitude, boundary->rect.right_bottom->longitude, boundary->rect.right_bottom->altitude);
} else if (boundary->type == LOCATION_BOUNDARY_POLYGON) {
g_printf("\n\tPOLYGON: ");
static void RemoveBoundary(LocationBoundary *boundary, void *user_data)
{
- LocationObject * obj = (LocationObject *)user_data;
- if(obj == NULL || boundary == NULL) return;
+ LocationObject *obj = (LocationObject *)user_data;
+ if (obj == NULL || boundary == NULL) return;
location_boundary_remove(obj, boundary);
}
-static void PrintProperty (LocationObject* loc)
+static void PrintProperty(LocationObject *loc)
{
if (!loc) return;
LocationMethod method = LOCATION_METHOD_NONE;
GetMethod(method_str, method);
g_printf("method[%s] ", method_str);
- int ret = location_get_last_position (loc, &pos, &acc);
+ int ret = location_get_last_position(loc, &pos, &acc);
if (ret == LOCATION_ERROR_NONE) {
GetStatus(status_str, pos->status);
g_printf("\nLast position [time(%d) lat(%f) long(%f) alt(%f) status(%s)]",
- pos->timestamp, pos->latitude, pos->longitude, pos->altitude, status_str);
- location_position_free (pos);
- location_accuracy_free (acc);
+ pos->timestamp, pos->latitude, pos->longitude, pos->altitude, status_str);
+ location_position_free(pos);
+ location_accuracy_free(acc);
}
if (method == LOCATION_METHOD_HYBRID || method == LOCATION_METHOD_GPS) {
g_object_get(loc, "pos-interval", &pos_interval, NULL);
g_object_get(loc, "vel-interval", &vel_interval, NULL);
g_object_get(loc, "sat-interval", &sat_interval, NULL);
- }
- else if (method == LOCATION_METHOD_WPS) {
+ } else if (method == LOCATION_METHOD_WPS) {
g_object_get(loc, "pos-interval", &pos_interval, NULL);
g_object_get(loc, "vel-interval", &vel_interval, NULL);
}
if (g_sig_zoneout) g_printf("[zone-out]");
}
-static void cb_service_enabled (GObject *self, guint status, gpointer userdata)
+static void cb_service_enabled(GObject *self, guint status, gpointer userdata)
{
g_printf("cb_service_enabled: status(%d) userdata(0x%x)", status, (unsigned int)userdata);
- LocationObject *loc = (LocationObject*)userdata;
+ LocationObject *loc = (LocationObject *)userdata;
LocationAccuracy *acc = NULL;
LocationPosition *pos = NULL;
LocationVelocity *vel = NULL;
g_object_get(loc, "method", &method, NULL);
g_printf("Get property>> method:%d", method);
- if (LOCATION_ERROR_NONE == location_get_position (loc, &pos, &acc)) {
- g_printf ("SYNC>> Current position> time: %d, lat: %f, long: %f, alt: %f, status: %d\n",
- pos->timestamp, pos->latitude, pos->longitude, pos->altitude, pos->status);
- g_printf ("\tAccuracy level %d (%.0f meters %.0f meters)\n",
- acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
+ if (LOCATION_ERROR_NONE == location_get_position(loc, &pos, &acc)) {
+ g_printf("SYNC>> Current position> time: %d, lat: %f, long: %f, alt: %f, status: %d\n",
+ pos->timestamp, pos->latitude, pos->longitude, pos->altitude, pos->status);
+ g_printf("\tAccuracy level %d (%.0f meters %.0f meters)\n",
+ acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
location_position_free(pos);
location_accuracy_free(acc);
- } else g_warning ("SYNC>> Current position> failed");
- if (LOCATION_ERROR_NONE == location_get_velocity (loc, &vel, &acc)) {
- g_printf ("SYNC>> Current velocity> time: %d, speed: %f, direction:%f, climb:%f\n",
- vel->timestamp, vel->speed, vel->direction, vel->climb);
- g_printf ("\tAccuracy level %d (%.0f meters %.0f meters)\n",
- acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
+ } else g_warning("SYNC>> Current position> failed");
+ if (LOCATION_ERROR_NONE == location_get_velocity(loc, &vel, &acc)) {
+ g_printf("SYNC>> Current velocity> time: %d, speed: %f, direction:%f, climb:%f\n",
+ vel->timestamp, vel->speed, vel->direction, vel->climb);
+ g_printf("\tAccuracy level %d (%.0f meters %.0f meters)\n",
+ acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
location_velocity_free(vel);
location_accuracy_free(acc);
- } else g_warning ("SYNC>> Current velocity> failed\n");
+ } else g_warning("SYNC>> Current velocity> failed\n");
}
static void
-cb_service_disabled (GObject *self,
- guint status,
- gpointer userdata)
+cb_service_disabled(GObject *self,
+ guint status,
+ gpointer userdata)
{
g_printf("cb_service_disabled: status(%d) userdata(0x%x)\n", status, (unsigned int)userdata);
}
static void
-cb_zone_in (GObject *self,
- gpointer boundary,
- gpointer position,
- gpointer accuracy)
+cb_zone_in(GObject *self,
+ gpointer boundary,
+ gpointer position,
+ gpointer accuracy)
{
- LocationPosition *pos = (LocationPosition*) position;
- LocationAccuracy *acc = (LocationAccuracy*) accuracy;
+ LocationPosition *pos = (LocationPosition *) position;
+ LocationAccuracy *acc = (LocationAccuracy *) accuracy;
- g_printf ("ASYNC>> ZoneIn> Current position: time: %d, lat: %f, long: %f, alt: %f\n",
- pos->timestamp, pos->latitude, pos->longitude, pos->altitude);
- g_printf ("\tAccuracy level %d (%.0f meters %.0f meters)\n",
- acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
+ g_printf("ASYNC>> ZoneIn> Current position: time: %d, lat: %f, long: %f, alt: %f\n",
+ pos->timestamp, pos->latitude, pos->longitude, pos->altitude);
+ g_printf("\tAccuracy level %d (%.0f meters %.0f meters)\n",
+ acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
}
static void
-cb_zone_out (GObject *self,
- gpointer boundary,
- gpointer position,
- gpointer accuracy)
+cb_zone_out(GObject *self,
+ gpointer boundary,
+ gpointer position,
+ gpointer accuracy)
{
- LocationPosition *pos = (LocationPosition*) position;
- LocationAccuracy *acc = (LocationAccuracy*) accuracy;
+ LocationPosition *pos = (LocationPosition *) position;
+ LocationAccuracy *acc = (LocationAccuracy *) accuracy;
- g_printf ("ASYNC>> ZoneOut> Current position: time: %d, lat: %f, long: %f, alt: %f\n",
- pos->timestamp, pos->latitude, pos->longitude, pos->altitude);
- g_printf ("\tAccuracy level %d (%.0f meters %.0f meters)\n",
- acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
+ g_printf("ASYNC>> ZoneOut> Current position: time: %d, lat: %f, long: %f, alt: %f\n",
+ pos->timestamp, pos->latitude, pos->longitude, pos->altitude);
+ g_printf("\tAccuracy level %d (%.0f meters %.0f meters)\n",
+ acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
}
static void
-cb_service_updated (GObject *self,
- guint type,
- gpointer data,
- gpointer accuracy,
- gpointer userdata)
+cb_service_updated(GObject *self,
+ guint type,
+ gpointer data,
+ gpointer accuracy,
+ gpointer userdata)
{
g_printf("cb_service_updated: type(%d) userdata(0x%x)", type, (unsigned int)userdata);
- LocationAccuracy *acc = (LocationAccuracy*) accuracy;
+ LocationAccuracy *acc = (LocationAccuracy *) accuracy;
switch (type) {
- case POSITION_UPDATED: {
- LocationPosition *pos = (LocationPosition*) data;
- g_printf ("ASYNC>> Current position> time: %d, lat: %f, long: %f, alt: %f, status: %d\n",
- pos->timestamp, pos->latitude, pos->longitude, pos->altitude, pos->status);
- g_printf ("\tAccuracy level %d (%.0f meters %.0f meters)\n",
- acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
- }
- break;
- case VELOCITY_UPDATED: {
- LocationVelocity *vel = (LocationVelocity*) data;
- g_printf ("ASYNC>> Current velocity> time: %d, speed: %f, direction:%f, climb:%f\n",
- vel->timestamp, vel->speed, vel->direction, vel->climb);
- g_printf ("\tAccuracy level %d (%.0f meters %.0f meters)\n",
- acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
- }
- break;
- case SATELLITE_UPDATED: {
- int idx = 0;
- guint prn;
- gboolean used;
- guint elevation;
- guint azimuth;
- gint snr;
-
- LocationSatellite *sat = (LocationSatellite *)data;
- g_printf ("SYNC>> Current Satellite> time: %d, satellite in view = %d, satellite in used = %d\n", sat->timestamp, sat->num_of_sat_inview, sat->num_of_sat_used);
- g_printf ("\tinview satellite information = ");
- for (idx=0; idx<sat->num_of_sat_inview; idx++) {
- location_satellite_get_satellite_details(sat, idx, &prn, &used, &elevation, &azimuth, &snr);
- g_printf ("\t\t[%02d] used: %d, prn: %d, elevation: %d, azimuth: %d, snr: %d\n", idx, used, prn, elevation, azimuth, snr);
- }
- }
- break;
- default:
- g_warning ("ASYNC>> Undefined update type");
- break;
+ case POSITION_UPDATED: {
+ LocationPosition *pos = (LocationPosition *) data;
+ g_printf("ASYNC>> Current position> time: %d, lat: %f, long: %f, alt: %f, status: %d\n",
+ pos->timestamp, pos->latitude, pos->longitude, pos->altitude, pos->status);
+ g_printf("\tAccuracy level %d (%.0f meters %.0f meters)\n",
+ acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
+ }
+ break;
+ case VELOCITY_UPDATED: {
+ LocationVelocity *vel = (LocationVelocity *) data;
+ g_printf("ASYNC>> Current velocity> time: %d, speed: %f, direction:%f, climb:%f\n",
+ vel->timestamp, vel->speed, vel->direction, vel->climb);
+ g_printf("\tAccuracy level %d (%.0f meters %.0f meters)\n",
+ acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
+ }
+ break;
+ case SATELLITE_UPDATED: {
+ int idx = 0;
+ guint prn;
+ gboolean used;
+ guint elevation;
+ guint azimuth;
+ gint snr;
+
+ LocationSatellite *sat = (LocationSatellite *)data;
+ g_printf("SYNC>> Current Satellite> time: %d, satellite in view = %d, satellite in used = %d\n", sat->timestamp, sat->num_of_sat_inview, sat->num_of_sat_used);
+ g_printf("\tinview satellite information = ");
+ for (idx = 0; idx < sat->num_of_sat_inview; idx++) {
+ location_satellite_get_satellite_details(sat, idx, &prn, &used, &elevation, &azimuth, &snr);
+ g_printf("\t\t[%02d] used: %d, prn: %d, elevation: %d, azimuth: %d, snr: %d\n", idx, used, prn, elevation, azimuth, snr);
+ }
+ }
+ break;
+ default:
+ g_warning("ASYNC>> Undefined update type");
+ break;
}
}
g_printf("\n==================================================================================\n");
}
-int main(int argc, char** argv)
+int main(int argc, char **argv)
{
char strOpt[255];
int ret;
char str[STR_MAX];
GError *gerr = NULL;
- // If application is executed by AUL, this is not needed.
+ /* If application is executed by AUL, this is not needed. */
g_setenv("PKG_NAME", "com.samsung.location-api-test", 1);
+#if !GLIB_CHECK_VERSION (2, 35, 0)
g_type_init();
+#endif
#if !GLIB_CHECK_VERSION (2, 31, 0)
- if( !g_thread_supported() )
- {
+ if (!g_thread_supported()) {
g_thread_init(NULL);
}
#endif
g_main = g_thread_create(GmainThread, NULL, TRUE, &gerr);
if (!g_main) {
g_printf("Error create gmain thread: Err domain[%d] Err code[%d] Err msg[%s]",
- gerr->domain, gerr->code, gerr->message);
+ gerr->domain, gerr->code, gerr->message);
g_error_free(gerr);
return 0;
}
json_util_init(LOCATION_API_TEST_JSON_FILE);
g_printf("--- Start LBS Test App ---\n");
- while(1)
- {
+ while (1) {
print_menu();
g_printf("Select option: ");
SelectOpt(strOpt);
g_printf("======================================================================================\n");
- if (0 == g_strcmp0 ("x", strOpt)) {
+ if (0 == g_strcmp0("x", strOpt)) {
- }
- else if (0 == g_strcmp0("1",strOpt)) {
+ } else if (0 == g_strcmp0("1", strOpt)) {
ret = location_init();
GetLocationError(str, ret);
g_printf("location_init: returned value [%s]\n", str);
- } else if (0 == g_strcmp0("2",strOpt)) {
+ } else if (0 == g_strcmp0("2", strOpt)) {
if (location_obj) {
g_printf("Location object already existed: [0x%x]", (unsigned int)location_obj);
continue;
g_printf("Select Location Method: ");
LocationMethod method = PromptInt();
location_obj = location_new(method);
- if(location_obj) g_printf("Success\n");
+ if (location_obj) g_printf("Success\n");
else g_printf("Failed\n");
- } else if (0 == g_strcmp0("3",strOpt)) {
- ret = location_free (location_obj);
+ } else if (0 == g_strcmp0("3", strOpt)) {
+ ret = location_free(location_obj);
location_obj = NULL;
g_sig_enable = 0;
g_sig_zoneout = 0;
GetLocationError(str, ret);
g_printf("location_free: returned value [%s]\n", str);
- } else if (0 == g_strcmp0("4",strOpt)) {
+ } else if (0 == g_strcmp0("4", strOpt)) {
ret = location_start(location_obj);
GetLocationError(str, ret);
g_printf("location_start: returned value [%s]\n", str);
- } else if (0 == g_strcmp0("5",strOpt)) {
+ } else if (0 == g_strcmp0("5", strOpt)) {
ret = location_stop(location_obj);
GetLocationError(str, ret);
g_printf("location_stop: returned value [%s]\n", str);
- } else if (0 == g_strcmp0("6",strOpt)) {
+ } else if (0 == g_strcmp0("6", strOpt)) {
LocationPosition *pos = NULL;
LocationAccuracy *acc = NULL;
ret = location_get_position(location_obj, &pos, &acc);
GetAccuracyLevel(str, acc->level);
g_printf("level: [%s], horizontal_accuracy: [%f], vertical_accuracy: [%f]\n", str, acc->horizontal_accuracy, acc->vertical_accuracy);
}
- if(pos) location_position_free(pos);
- if(acc) location_accuracy_free(acc);
- } else if (0 == g_strcmp0("6a",strOpt)) {
+ if (pos) location_position_free(pos);
+ if (acc) location_accuracy_free(acc);
+ } else if (0 == g_strcmp0("6a", strOpt)) {
LocationPosition *last_pos;
LocationAccuracy *last_acc;
int ret = 0;
- ret = location_get_last_position (location_obj, &last_pos, &last_acc);
+ ret = location_get_last_position(location_obj, &last_pos, &last_acc);
GetLocationError(str, ret);
g_printf("location_get_last_position: returned value [%s]\n", str);
if (ret == LOCATION_ERROR_NONE) {
- g_printf ("SYNC>> Last position> time: %d, lat: %f, long: %f, alt: %f, status: %d",
- last_pos->timestamp, last_pos->latitude, last_pos->longitude, last_pos->altitude, last_pos->status);
- g_printf ("\tAccuracy level %d (%.0f meters %.0f meters)",
- last_acc->level, last_acc->horizontal_accuracy, last_acc->vertical_accuracy);
+ g_printf("SYNC>> Last position> time: %d, lat: %f, long: %f, alt: %f, status: %d",
+ last_pos->timestamp, last_pos->latitude, last_pos->longitude, last_pos->altitude, last_pos->status);
+ g_printf("\tAccuracy level %d (%.0f meters %.0f meters)",
+ last_acc->level, last_acc->horizontal_accuracy, last_acc->vertical_accuracy);
location_position_free(last_pos);
location_accuracy_free(last_acc);
}
- }else if(0 == g_strcmp0("7",strOpt) ){
+ } else if (0 == g_strcmp0("7", strOpt)) {
LocationVelocity *vel = NULL;
LocationAccuracy *acc = NULL;
ret = location_get_velocity(location_obj, &vel, &acc);
GetAccuracyLevel(str, acc->level);
g_printf("level: [%s], horizontal_accuracy: [%f], vertical_accuracy: [%f]\n", str, acc->horizontal_accuracy, acc->vertical_accuracy);
}
- if(vel) location_velocity_free(vel);
- if(acc) location_accuracy_free(acc);
- }else if(0 == g_strcmp0("7a",strOpt) ){
+ if (vel) location_velocity_free(vel);
+ if (acc) location_accuracy_free(acc);
+ } else if (0 == g_strcmp0("7a", strOpt)) {
LocationVelocity *last_vel = NULL;
LocationAccuracy *last_acc = NULL;
- ret = location_get_last_velocity (location_obj, &last_vel, &last_acc);
+ ret = location_get_last_velocity(location_obj, &last_vel, &last_acc);
GetLocationError(str, ret);
g_printf("location_get_last_velocity: returned value [%s]\n", str);
if (ret == LOCATION_ERROR_NONE) {
- g_printf ("SYNC>> Last velocity> time: %d, speed: %f, direction:%f, climb:%f",
- last_vel->timestamp, last_vel->speed, last_vel->direction, last_vel->climb);
- g_printf ("\tAccuracy level %d (%.0f meters %.0f meters)",
- last_acc->level, last_acc->horizontal_accuracy, last_acc->vertical_accuracy);
+ g_printf("SYNC>> Last velocity> time: %d, speed: %f, direction:%f, climb:%f",
+ last_vel->timestamp, last_vel->speed, last_vel->direction, last_vel->climb);
+ g_printf("\tAccuracy level %d (%.0f meters %.0f meters)",
+ last_acc->level, last_acc->horizontal_accuracy, last_acc->vertical_accuracy);
location_velocity_free(last_vel);
location_accuracy_free(last_acc);
}
- }else if(0 == g_strcmp0("8",strOpt) ){
+ } else if (0 == g_strcmp0("8", strOpt)) {
int ret = 0, idx = 0;
LocationSatellite *sat = NULL;
guint prn;
guint azimuth;
gint snr;
- ret = location_get_satellite (location_obj, &sat);
+ ret = location_get_satellite(location_obj, &sat);
GetLocationError(str, ret);
g_printf("location_get_satellite: returned value [%s]\n", str);
if (ret == LOCATION_ERROR_NONE) {
- g_printf ("SYNC>> Current Sattelite> time = %d, satellite in view = %d, satellite in used = %d", sat->timestamp, sat->num_of_sat_inview, sat->num_of_sat_used);
- g_printf ("\tinview satellite information = ");
- for (idx=0; idx<sat->num_of_sat_inview; idx++) {
+ g_printf("SYNC>> Current Sattelite> time = %d, satellite in view = %d, satellite in used = %d", sat->timestamp, sat->num_of_sat_inview, sat->num_of_sat_used);
+ g_printf("\tinview satellite information = ");
+ for (idx = 0; idx < sat->num_of_sat_inview; idx++) {
location_satellite_get_satellite_details(sat, idx, &prn, &used, &elevation, &azimuth, &snr);
- g_printf ("\t\t[%02d] used: %d, prn: %d, elevation: %d, azimuth: %d, snr: %d", idx, used, prn, elevation, azimuth, snr);
+ g_printf("\t\t[%02d] used: %d, prn: %d, elevation: %d, azimuth: %d, snr: %d", idx, used, prn, elevation, azimuth, snr);
}
- location_satellite_free (sat);
+ location_satellite_free(sat);
}
- }else if(0 == g_strcmp0("8a",strOpt) ){
+ } else if (0 == g_strcmp0("8a", strOpt)) {
int ret = 0, idx = 0;
LocationSatellite *last_sat = NULL;
guint prn;
guint azimuth;
gint snr;
- ret = location_get_last_satellite (location_obj, &last_sat);
+ ret = location_get_last_satellite(location_obj, &last_sat);
GetLocationError(str, ret);
g_printf("location_get_last_satellite: returned value [%s]\n", str);
if (ret == LOCATION_ERROR_NONE) {
- g_printf ("SYNC>> Last Sattelite> time = %d, satellite in view = %d, satellite in used = %d", last_sat->timestamp, last_sat->num_of_sat_inview, last_sat->num_of_sat_used);
- g_printf ("\tinview satellite information = ");
- for (idx=0; idx<last_sat->num_of_sat_inview; idx++) {
+ g_printf("SYNC>> Last Sattelite> time = %d, satellite in view = %d, satellite in used = %d", last_sat->timestamp, last_sat->num_of_sat_inview, last_sat->num_of_sat_used);
+ g_printf("\tinview satellite information = ");
+ for (idx = 0; idx < last_sat->num_of_sat_inview; idx++) {
location_satellite_get_satellite_details(last_sat, idx, &prn, &used, &elevation, &azimuth, &snr);
- g_printf ("\t\t[%02d] used: %d, prn: %d, elevation: %d, azimuth: %d, snr: %d", idx, used, prn, elevation, azimuth, snr);
+ g_printf("\t\t[%02d] used: %d, prn: %d, elevation: %d, azimuth: %d, snr: %d", idx, used, prn, elevation, azimuth, snr);
}
- location_satellite_free (last_sat);
+ location_satellite_free(last_sat);
}
- }else if(0 == g_strcmp0("9",strOpt) ) {
+ } else if (0 == g_strcmp0("9", strOpt)) {
gulong distance;
int ret = 0;
ret = location_get_distance(&pos1, &pos2, &distance);
GetLocationError(str, ret);
- if(ret != LOCATION_ERROR_NONE) {
- g_printf("Fail to get position. Error[%s]\n", str);
- }
- else {
- g_printf("The approximate distance is [%lu]\n", distance);
- g_printf("cf.) It is approximately 969954.114 meter\n");
+ if (ret != LOCATION_ERROR_NONE) {
+ g_printf("Fail to get position. Error[%s]\n", str);
+ } else {
+ g_printf("The approximate distance is [%lu]\n", distance);
+ g_printf("cf.) It is approximately 969954.114 meter\n");
}
- }else if(0 == g_strcmp0("10", strOpt)) {
+ } else if (0 == g_strcmp0("10", strOpt)) {
int method;
char method_str[STR_MAX] = {0, };
char *str = NULL;
g_printf("Select Method :");
str = fgets(input, 8, stdin);
method = atoi(input);
- switch(method) {
+ switch (method) {
case LOCATION_METHOD_HYBRID:
is_supported = location_is_supported_method(LOCATION_METHOD_HYBRID);
break;
g_printf("Method[%s] is %s.", method_str, is_supported ? "supported" : "not supported");
- }else if(0 == g_strcmp0("99", strOpt)) {
+ } else if (0 == g_strcmp0("99", strOpt)) {
int ret = 0;
const char *str = "command";
ret = location_send_command(str);
- if(ret == 0)
+ if (ret == 0)
g_printf("Success to send command[%s]", str);
else
g_printf("Fail to send command[%s]. Error[%d]", str, ret);
#ifndef _TIZEN_PUBLIC_
- }else if(0 == g_strcmp0("99a", strOpt)) {
+ } else if (0 == g_strcmp0("99a", strOpt)) {
int ret = 0;
const char *str = "GET_APP_AUTHORITY";
ret = location_send_command(str);
- if(ret == 0)
+ if (ret == 0)
g_printf("Success to send command[%s]", str);
else
g_printf("Fail to send command[%s]. Error[%d]", str, ret);
- }else if(0 == g_strcmp0("99b", strOpt)) {
+ } else if (0 == g_strcmp0("99b", strOpt)) {
int ret = 0;
const char *str = "ADD_APPLIST";
ret = location_send_command(str);
- if(ret == 0)
+ if (ret == 0)
g_printf("Success to send command[%s]", str);
else
g_printf("Fail to send command[%s]. Error[%d]", str, ret);
#endif
- }else if(0 == g_strcmp0("a1",strOpt)){
- if(location_obj && !g_sig_enable) {
- g_sig_enable = g_signal_connect (location_obj, "service-enabled", G_CALLBACK(cb_service_enabled), location_obj);
+ } else if (0 == g_strcmp0("a1", strOpt)) {
+ if (location_obj && !g_sig_enable) {
+ g_sig_enable = g_signal_connect(location_obj, "service-enabled", G_CALLBACK(cb_service_enabled), location_obj);
}
- }else if(0 == g_strcmp0("a2",strOpt)){
- if(location_obj && !g_sig_disable){
- g_sig_disable = g_signal_connect (location_obj, "service-disabled", G_CALLBACK(cb_service_disabled), location_obj);
+ } else if (0 == g_strcmp0("a2", strOpt)) {
+ if (location_obj && !g_sig_disable) {
+ g_sig_disable = g_signal_connect(location_obj, "service-disabled", G_CALLBACK(cb_service_disabled), location_obj);
}
- }else if(0 == g_strcmp0("a3",strOpt)){
- if(location_obj && !g_sig_update){
- g_sig_update = g_signal_connect (location_obj, "service-updated", G_CALLBACK(cb_service_updated), location_obj);
+ } else if (0 == g_strcmp0("a3", strOpt)) {
+ if (location_obj && !g_sig_update) {
+ g_sig_update = g_signal_connect(location_obj, "service-updated", G_CALLBACK(cb_service_updated), location_obj);
}
- }else if(0 == g_strcmp0("a4",strOpt)){
- if(location_obj && !g_sig_zonein){
- g_sig_zonein = g_signal_connect (location_obj, "zone-in", G_CALLBACK(cb_zone_in), location_obj);
+ } else if (0 == g_strcmp0("a4", strOpt)) {
+ if (location_obj && !g_sig_zonein) {
+ g_sig_zonein = g_signal_connect(location_obj, "zone-in", G_CALLBACK(cb_zone_in), location_obj);
}
- }else if(0 == g_strcmp0("a5",strOpt)){
- if(location_obj && !g_sig_zoneout){
- g_sig_zoneout = g_signal_connect (location_obj, "zone-out", G_CALLBACK(cb_zone_out), location_obj);
+ } else if (0 == g_strcmp0("a5", strOpt)) {
+ if (location_obj && !g_sig_zoneout) {
+ g_sig_zoneout = g_signal_connect(location_obj, "zone-out", G_CALLBACK(cb_zone_out), location_obj);
}
- }else if(0 == g_strcmp0("b1",strOpt)){
- if(location_obj && g_sig_enable) {
- g_signal_handler_disconnect (location_obj, g_sig_enable);
+ } else if (0 == g_strcmp0("b1", strOpt)) {
+ if (location_obj && g_sig_enable) {
+ g_signal_handler_disconnect(location_obj, g_sig_enable);
g_sig_enable = 0;
}
- }else if(0 == g_strcmp0("b2",strOpt)){
- if(location_obj && g_sig_disable){
- g_signal_handler_disconnect (location_obj, g_sig_disable);
+ } else if (0 == g_strcmp0("b2", strOpt)) {
+ if (location_obj && g_sig_disable) {
+ g_signal_handler_disconnect(location_obj, g_sig_disable);
g_sig_disable = 0;
}
- }else if(0 == g_strcmp0("b3",strOpt)){
- if(location_obj && g_sig_update){
- g_signal_handler_disconnect (location_obj, g_sig_update);
+ } else if (0 == g_strcmp0("b3", strOpt)) {
+ if (location_obj && g_sig_update) {
+ g_signal_handler_disconnect(location_obj, g_sig_update);
g_sig_update = 0;
}
- }else if(0 == g_strcmp0("b4",strOpt)){
- if(location_obj && g_sig_zonein){
- g_signal_handler_disconnect (location_obj, g_sig_zonein);
+ } else if (0 == g_strcmp0("b4", strOpt)) {
+ if (location_obj && g_sig_zonein) {
+ g_signal_handler_disconnect(location_obj, g_sig_zonein);
g_sig_zonein = 0;
}
- }else if(0 == g_strcmp0("b5",strOpt)){
- if(location_obj && g_sig_zoneout){
- g_signal_handler_disconnect (location_obj, g_sig_zoneout);
+ } else if (0 == g_strcmp0("b5", strOpt)) {
+ if (location_obj && g_sig_zoneout) {
+ g_signal_handler_disconnect(location_obj, g_sig_zoneout);
g_sig_zoneout = 0;
}
- }else if(0 == g_strcmp0("c1",strOpt)){
- LocationBoundary* bound = NULL;
+ } else if (0 == g_strcmp0("c1", strOpt)) {
+ LocationBoundary *bound = NULL;
int i = 0;
int polygon_count = json_util_get_polygon_count();
g_printf("[0].San jose(Rect) [1].Suwon HQ(Rect) [2].Seoul City(circle) ");
- for(i = 0; i < polygon_count; i++)
+ for (i = 0; i < polygon_count; i++)
g_printf("[%d].%s ", i + 3, json_util_get_polygon_name(i));
g_printf("\nSelect Boundary: ");
int opt = PromptInt();
if (opt == 0) {
- LocationPosition* rb = location_position_new (0, 37.300, -121.86, 0, LOCATION_STATUS_2D_FIX);
- LocationPosition* lt = location_position_new (0, 37.360, -121.92, 0, LOCATION_STATUS_2D_FIX);
- bound = location_boundary_new_for_rect (lt, rb);
+ LocationPosition *rb = location_position_new(0, 37.300, -121.86, 0, LOCATION_STATUS_2D_FIX);
+ LocationPosition *lt = location_position_new(0, 37.360, -121.92, 0, LOCATION_STATUS_2D_FIX);
+ bound = location_boundary_new_for_rect(lt, rb);
location_position_free(rb);
location_position_free(lt);
location_boundary_add(location_obj, bound);
- } else if(opt == 1) {
- LocationPosition* rb = location_position_new (0, 37.255, 127.058, 0, LOCATION_STATUS_2D_FIX);
- LocationPosition* lt = location_position_new (0, 37.260, 127.045, 0, LOCATION_STATUS_2D_FIX);
- bound = location_boundary_new_for_rect (lt, rb);
+ } else if (opt == 1) {
+ LocationPosition *rb = location_position_new(0, 37.255, 127.058, 0, LOCATION_STATUS_2D_FIX);
+ LocationPosition *lt = location_position_new(0, 37.260, 127.045, 0, LOCATION_STATUS_2D_FIX);
+ bound = location_boundary_new_for_rect(lt, rb);
location_position_free(rb);
location_position_free(lt);
location_boundary_add(location_obj, bound);
- } else if(opt == 2) {
+ } else if (opt == 2) {
LocationPosition *center = location_position_new(0, 37.566535, 126.977969, 0.0, LOCATION_STATUS_2D_FIX);
double radius = 10.0;
bound = location_boundary_new_for_circle(center, radius);
bound = json_util_get_polygon_boundary(polygon_index);
location_boundary_add(location_obj, bound);
- LocationPosition * check_pos = NULL;
+ LocationPosition *check_pos = NULL;
gboolean ret = FALSE;
int count = json_util_get_marker_position_count(polygon_index);
- for(index = 0; index < count; index++) {
+ for (index = 0; index < count; index++) {
check_pos = json_util_get_marker_position(polygon_index, index);
ret = location_boundary_if_inside(bound, check_pos);
- g_printf("[%s] is [%s] and the test result is [%s]\n", json_util_get_marker_name(polygon_index, index), json_util_result_zone_test(polygon_index, index), ret == TRUE? "inside": "outside");
+ g_printf("[%s] is [%s] and the test result is [%s]\n", json_util_get_marker_name(polygon_index, index), json_util_result_zone_test(polygon_index, index), ret == TRUE ? "inside" : "outside");
location_position_free(check_pos);
}
} else {
}
location_boundary_free(bound);
- }else if(0 == g_strcmp0("c2",strOpt)){
+ } else if (0 == g_strcmp0("c2", strOpt)) {
g_printf("Get Boundary\n");
location_boundary_foreach(location_obj, PrintBoundary, NULL);
- }else if(0 == g_strcmp0("c3",strOpt)){
+ } else if (0 == g_strcmp0("c3", strOpt)) {
g_printf("Remove Boundary\n");
- LocationBoundary* bound = NULL;
+ LocationBoundary *bound = NULL;
int i = 0;
int polygon_count = json_util_get_polygon_count();
g_printf("[0].San jose(Rect) [1].Suwon HQ(Rect) [2].Seoul City(circle) ");
- for(i = 0; i < polygon_count; i++)
+ for (i = 0; i < polygon_count; i++)
g_printf("[%d].%s ", i + 3, json_util_get_polygon_name(i));
g_printf("\nSelect Boundary: ");
int opt = PromptInt();
if (opt == 0) {
- LocationPosition* rb = location_position_new (0, 37.300, -121.86, 0, LOCATION_STATUS_2D_FIX);
- LocationPosition* lt = location_position_new (0, 37.360, -121.92, 0, LOCATION_STATUS_2D_FIX);
- bound = location_boundary_new_for_rect (lt, rb);
+ LocationPosition *rb = location_position_new(0, 37.300, -121.86, 0, LOCATION_STATUS_2D_FIX);
+ LocationPosition *lt = location_position_new(0, 37.360, -121.92, 0, LOCATION_STATUS_2D_FIX);
+ bound = location_boundary_new_for_rect(lt, rb);
location_position_free(rb);
location_position_free(lt);
- } else if(opt == 1) {
- LocationPosition* rb = location_position_new (0, 37.255, 127.058, 0, LOCATION_STATUS_2D_FIX);
- LocationPosition* lt = location_position_new (0, 37.260, 127.045, 0, LOCATION_STATUS_2D_FIX);
- bound = location_boundary_new_for_rect (lt, rb);
+ } else if (opt == 1) {
+ LocationPosition *rb = location_position_new(0, 37.255, 127.058, 0, LOCATION_STATUS_2D_FIX);
+ LocationPosition *lt = location_position_new(0, 37.260, 127.045, 0, LOCATION_STATUS_2D_FIX);
+ bound = location_boundary_new_for_rect(lt, rb);
location_position_free(rb);
location_position_free(lt);
- } else if(opt == 2) {
+ } else if (opt == 2) {
LocationPosition *center = location_position_new(0, 37.566535, 126.977969, 0.0, LOCATION_STATUS_2D_FIX);
double radius = 10.0;
bound = location_boundary_new_for_circle(center, radius);
g_printf("Invalid value\n");
}
- if(bound != NULL) location_boundary_remove(location_obj, bound);
+ if (bound != NULL) location_boundary_remove(location_obj, bound);
- }else if(0 == g_strcmp0("c4",strOpt)){
+ } else if (0 == g_strcmp0("c4", strOpt)) {
location_boundary_foreach(location_obj, RemoveBoundary, location_obj);
} else if (0 == g_strcmp0("c5", strOpt)) {
guint interval = 1;
len = scanf("%u", &interval);
g_printf("changed interval to [%u]\n", interval);
g_object_set(location_obj, "sat-interval", interval, NULL);
- }else if(0 == g_strcmp0("q",strOpt) ){
+ } else if (0 == g_strcmp0("q", strOpt)) {
g_main_loop_quit(g_mainloop);
break;
}
#include "location-geocode.h"
#define STR_MAX 128
-LocationMapObject* map_obj = NULL;
+LocationMapObject *map_obj = NULL;
static GMainLoop *g_mainloop = NULL;
#define LOCATION_API_TEST_JSON_FILE "/opt/data/location-api-test.json"
static gpointer GmainThread(gpointer data)
{
- g_mainloop = g_main_loop_new (NULL, FALSE);
+ g_mainloop = g_main_loop_new(NULL, FALSE);
g_printf("\n...Entering GMain Loop to Receive Notifications....\n");
- g_main_loop_run (g_mainloop);
- g_main_loop_unref (g_mainloop);
+ g_main_loop_run(g_mainloop);
+ g_main_loop_unref(g_mainloop);
g_mainloop = NULL;
return NULL;
}
static void GetLocationError(char str[STR_MAX], int ret)
{
- switch(ret)
- {
+ switch (ret) {
case LOCATION_ERROR_NONE:
g_utf8_strncpy(str, "LOCATION_ERROR_NONE", STR_MAX);
break;
}
}
-static void SelectOpt(char* buf)
+static void SelectOpt(char *buf)
{
int iLen = 0;
char *str = NULL;
str = fgets(buf, 255, stdin);
- if (NULL == str){
+ if (NULL == str) {
g_printf(" fgets return NULL. \n");
}
iLen = g_utf8_strlen(buf, -1);
- buf[iLen-1] = '\0';
+ buf[iLen - 1] = '\0';
}
static int PromptInt()
int ret;
char *str = NULL;
str = fgets(buf, 255, stdin);
- buf[strlen(buf)-1]='\0';
+ buf[strlen(buf) - 1] = '\0';
ret = g_ascii_strtoll(buf, NULL, 10);
return ret;
}
double ret;
char *str = NULL;
str = fgets(buf, 255, stdin);
- if (NULL == str){
+ if (NULL == str) {
g_printf(" fgets return NULL. \n");
}
- buf[strlen(buf)-1]='\0';
+ buf[strlen(buf) - 1] = '\0';
ret = g_ascii_strtod(buf, NULL);
return ret;
}
-static void PrintPos (gpointer data, gpointer user_data)
+static void PrintPos(gpointer data, gpointer user_data)
{
LocationPosition *pos = (LocationPosition *)data;
if (pos) {
g_printf("time: [%d], latitude: [%f], longitude: [%f], altitude: [%f]\n", pos->timestamp, pos->latitude, pos->longitude, pos->altitude);
- location_position_free (pos);
+ location_position_free(pos);
}
}
-static void PrintAcc (gpointer data, gpointer user_data)
+static void PrintAcc(gpointer data, gpointer user_data)
{
LocationAccuracy *acc = (LocationAccuracy *)data;
if (acc) {
g_printf("level: [%d], horizontal_accuracy: [%f], vertical_accuracy: [%f]\n", acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
- location_accuracy_free (acc);
+ location_accuracy_free(acc);
}
}
-static void PrintProperty (LocationObject* loc)
+static void PrintProperty(LocationObject *loc)
{
if (!loc) return;
}
-static void _print_property (gpointer data, gpointer user_data)
+static void _print_property(gpointer data, gpointer user_data)
{
LocationLandmark *landmark = (LocationLandmark *)user_data;
gpointer key = (gpointer)data;
if (key) {
value = (gpointer)location_landmark_get_property(landmark, key);
- g_printf(", [%s:%s]", (gchar*) key, (gchar*) value);
+ g_printf(", [%s:%s]", (gchar *) key, (gchar *) value);
}
}
static void
-__plugin_print_poi_list (gpointer data, gpointer user_data)
+__plugin_print_poi_list(gpointer data, gpointer user_data)
{
- int i=0;
+ int i = 0;
LocationLandmark *landmark = (LocationLandmark *)data;
- LocationPosition *pos = location_landmark_get_position (landmark);
- LocationAddress *addr = location_landmark_get_address (landmark);
-
- g_printf ("[ID:%d], [NAME:%s], phone[%s],pos[%f:%f], addr[%s:%s:%s:%s:%s]",
- location_landmark_get_id (landmark),
- location_landmark_get_name(landmark),
- location_landmark_get_phone_number (landmark),
- pos->latitude, pos->longitude,
- addr->building_number, addr->city, addr->country_code, addr->district,
- addr->postal_code);
+ LocationPosition *pos = location_landmark_get_position(landmark);
+ LocationAddress *addr = location_landmark_get_address(landmark);
+
+ g_printf("[ID:%d], [NAME:%s], phone[%s],pos[%f:%f], addr[%s:%s:%s:%s:%s]",
+ location_landmark_get_id(landmark),
+ location_landmark_get_name(landmark),
+ location_landmark_get_phone_number(landmark),
+ pos->latitude, pos->longitude,
+ addr->building_number, addr->city, addr->country_code, addr->district,
+ addr->postal_code);
g_printf("Supplier details : [NAME: %s],[LINK: %s],[ID:%s],[TYPE: %s]",
- landmark_linkobject_get_name(location_landmark_get_supplier( landmark)),
- landmark_linkobject_get_link_string(location_landmark_get_supplier( landmark)),
- landmark_linkobject_get_id(location_landmark_get_supplier( landmark)),
- landmark_linkobject_get_type(location_landmark_get_supplier( landmark)));
+ landmark_linkobject_get_name(location_landmark_get_supplier(landmark)),
+ landmark_linkobject_get_link_string(location_landmark_get_supplier(landmark)),
+ landmark_linkobject_get_id(location_landmark_get_supplier(landmark)),
+ landmark_linkobject_get_type(location_landmark_get_supplier(landmark)));
g_printf("Related details : [NAME: %s],[LINK: %s],[ID:%s],[TYPE: %s]",
- landmark_linkobject_get_name(location_landmark_get_related( landmark)),
- landmark_linkobject_get_link_string(location_landmark_get_related( landmark)),
- landmark_linkobject_get_id(location_landmark_get_related( landmark)),
- landmark_linkobject_get_type(location_landmark_get_related( landmark)));
+ landmark_linkobject_get_name(location_landmark_get_related(landmark)),
+ landmark_linkobject_get_link_string(location_landmark_get_related(landmark)),
+ landmark_linkobject_get_id(location_landmark_get_related(landmark)),
+ landmark_linkobject_get_type(location_landmark_get_related(landmark)));
g_printf("Rating details : [AVG: %f],[COUNT:%d]",
- landmark_rating_get_average(location_landmark_get_rating(landmark)),
- landmark_rating_get_count(location_landmark_get_rating(landmark)));
- for(i=0;i<g_list_length(location_landmark_get_editorial(landmark));i++)
- {
- LandmarkEditorial * editorial=g_list_nth_data(location_landmark_get_editorial(landmark),i);
+ landmark_rating_get_average(location_landmark_get_rating(landmark)),
+ landmark_rating_get_count(location_landmark_get_rating(landmark)));
+ for (i = 0; i < g_list_length(location_landmark_get_editorial(landmark)); i++) {
+ LandmarkEditorial *editorial = g_list_nth_data(location_landmark_get_editorial(landmark), i);
g_printf("Editorials : [Desc: %s] [LANG: %s]",
- landmark_editorial_get_description(editorial),landmark_editorial_get_language(editorial));
+ landmark_editorial_get_description(editorial), landmark_editorial_get_language(editorial));
}
GList *key_list = location_landmark_get_property_key(landmark);
if (key_list) {
}
-static void cb_poi(LocationError error, guint req_id, GList * landmark_list, gchar * error_code, gchar * error_msg, gpointer userdata)
+static void cb_poi(LocationError error, guint req_id, GList *landmark_list, gchar *error_code, gchar *error_msg, gpointer userdata)
{
g_printf("\n===== __location_POI_cb ======\n");
if (error != LOCATION_ERROR_NONE) {
return;
}
g_printf("Success, poi_list[0x%x] user_data[0x%x] req_id[%d]\n", (unsigned int)landmark_list, (unsigned int)userdata, req_id);
- g_list_foreach (landmark_list, __plugin_print_poi_list, NULL);
+ g_list_foreach(landmark_list, __plugin_print_poi_list, NULL);
if (error_code && error_msg) {
g_printf("__location_POI_cb: error_code[%s], error_msg[%s]\n", error_code, error_msg);
g_printf("Step: start(%f/%f), end(%f/%f), instruction(%s)\n", start_lat, start_lon, end_lat, end_lon, inst);
}
-static void Print_form_of_way (LocationRoadElement* road_element)
+static void Print_form_of_way(LocationRoadElement *road_element)
{
g_printf("+++Print form of way begin \n");
break;
default:
- g_warning ("ASYNC>> Undefined Form Of Way type");
+ g_warning("ASYNC>> Undefined Form Of Way type");
break;
- }
+ }
g_printf("---Print form of way end\n");
}
-static void Print_transit_type (LocationRouteTransitElement* element)
+static void Print_transit_type(LocationRouteTransitElement *element)
{
g_printf("+++Print transit type begin \n");
break;
default:
- g_warning ("ASYNC>> Undefined Transit Type \n");
+ g_warning("ASYNC>> Undefined Transit Type \n");
break;
}
g_printf("---Print transit type end\n");
static void _print_elem(gpointer data, gpointer user_data)
{
- LocationRouteStep* step = (LocationRouteStep*) user_data;
- LocationRouteElement* elem = (LocationRouteElement*) data;
+ LocationRouteStep *step = (LocationRouteStep *) user_data;
+ LocationRouteElement *elem = (LocationRouteElement *) data;
+
+ if (location_route_element_get_is_transit_element(elem)) {
+ LocationRouteTransitElement *transit_element = location_route_element_get_route_transit_element(elem);
- if(location_route_element_get_is_transit_element(elem))
- {
- LocationRouteTransitElement* transit_element = location_route_element_get_route_transit_element(elem);
-
Print_transit_type(transit_element);
gchar *t_dest = location_route_transit_element_get_transit_destination(transit_element);
gchar *t_line = location_route_transit_element_get_transit_line_name(transit_element);
gint d_s_level = location_route_transit_get_platform_level(d_s);
LocationPosition *d_s_plat_pos = location_route_transit_get_platform_coordinates(d_s);
if (d_s_plat_pos) {
- g_printf ("d_s_plat_pos: time: %d, lat: %f, long: %f, alt: %f, status: %d\n",
- d_s_plat_pos->timestamp, d_s_plat_pos->latitude, d_s_plat_pos->longitude, d_s_plat_pos->altitude, d_s_plat_pos->status);
- //location_position_free (d_s_plat_pos);
+ g_printf("d_s_plat_pos: time: %d, lat: %f, long: %f, alt: %f, status: %d\n",
+ d_s_plat_pos->timestamp, d_s_plat_pos->latitude, d_s_plat_pos->longitude, d_s_plat_pos->altitude, d_s_plat_pos->status);
+ /*location_position_free (d_s_plat_pos); */
}
LocationPosition *d_s_egr_pos = location_route_transit_get_egress_coordinates(d_s);
if (d_s_egr_pos) {
- g_printf ("d_s_egr_pos: time: %d, lat: %f, long: %f, alt: %f, status: %d\n",
- d_s_egr_pos->timestamp, d_s_egr_pos->latitude, d_s_egr_pos->longitude, d_s_egr_pos->altitude, d_s_egr_pos->status);
- //location_position_free (d_s_egr_pos);
+ g_printf("d_s_egr_pos: time: %d, lat: %f, long: %f, alt: %f, status: %d\n",
+ d_s_egr_pos->timestamp, d_s_egr_pos->latitude, d_s_egr_pos->longitude, d_s_egr_pos->altitude, d_s_egr_pos->status);
+ /*location_position_free (d_s_egr_pos); */
}
g_printf("Transit: d_s_name(%s), d_s_level(%d)\n", d_s_name, d_s_level);
g_printf("Transit: t_dest(%s), t_line(%s), official(%s), short(%s), type_name(%s), d_t(%lld), a_t(%lld)\n",
- t_dest, t_line, official, short_name, type_name, d_t, a_t);
+ t_dest, t_line, official, short_name, type_name, d_t, a_t);
LocationRouteTransitStop *a_s = location_route_transit_element_get_transit_arrival_station(transit_element);
gchar *a_s_name = location_route_transit_get_station_name(a_s);
gint a_s_level = location_route_transit_get_platform_level(a_s);
if (a_s) {
- g_printf("Transit: a_s_name(%s), a_s_level(%d) \n",a_s_name, a_s_level);
+ g_printf("Transit: a_s_name(%s), a_s_level(%d) \n", a_s_name, a_s_level);
}
- }
- else
- {
- LocationRoadElement* road_element = location_route_element_get_road_element(elem);
+ } else {
+ LocationRoadElement *road_element = location_route_element_get_road_element(elem);
- Print_form_of_way( road_element);
+ Print_form_of_way(road_element);
gboolean is_plural = location_road_element_is_plural(road_element);
if (is_plural) {
g_printf(" The road element is plural \n");
- }
- else {
+ } else {
g_printf(" The road element is not plural \n");
}
gchar *road_name = location_road_element_get_road_name(road_element);
guint t_time = location_road_element_get_travel_time(road_element);
g_printf("RoadElement: road_name(%s), route_name(%s), speed_l(%f), speed(%d), nums(%d), s_time(%lld), t_time(%lld)\n",
- road_name, route_name, speed_l, speed, nums, s_time, t_time);
+ road_name, route_name, speed_l, speed, nums, s_time, t_time);
gboolean is_pedestrain = location_road_element_is_pedestrian(road_element);
if (is_pedestrain) {
g_printf(" The road is allowed only for pedestrians \n");
- }
- else {
+ } else {
g_printf(" The road is not only for pedestrians \n");
}
gboolean is_valid = location_road_element_is_valid(road_element);
if (is_valid) {
g_printf(" This road element is valid \n");
- }
- else {
+ } else {
g_printf(" This road element is invalid \n");
}
}
-
+
}
static void Print_road_element(LocationRouteStep *step)
{
g_printf("+++PrintRoadElement begin\n");
- GList* route_elem_list = location_route_step_get_route_elment_list(step);
+ GList *route_elem_list = location_route_step_get_route_elment_list(step);
if (route_elem_list) {
g_list_foreach(route_elem_list, _print_elem, step);
}
gchar *next_road_name = location_route_maneuver_get_next_road_name(maneuver);
gchar *action = location_route_maneuver_get_action(maneuver);
- gchar *turn =location_route_maneuver_get_turn(maneuver);
+ gchar *turn = location_route_maneuver_get_turn(maneuver);
g_printf("maneuver: next_road_name(%s), action(%s), turn(%s)\n", next_road_name, action, turn);
dirct = location_route_maneuver_get_traffic_direction(maneuver);
if (TRAFFIC_DIR_LEFT == dirct) {
g_printf("Traffic is left sided. \n");
- }
- else if (TRAFFIC_DIR_RIGHT == dirct) {
+ } else if (TRAFFIC_DIR_RIGHT == dirct) {
g_printf("Traffic is right sided. \n");
}
g_printf("---print route maneuver end\n");
}
-static void cb_print_route_step (gpointer data, gpointer user_data)
+static void cb_print_route_step(gpointer data, gpointer user_data)
{
g_printf("+++Step begin\n");
LocationRouteStep *step = (LocationRouteStep *)data;
Print_step_info(step);
g_printf("after Print Step Info\n");
- /*****************NLP start now *********************/
- g_printf("*****************NLP step start now *********************\n");
+ /*****************NLP start now *********************/
+ g_printf("*****************NLP step start now *********************\n");
Print_road_element(step);
LocationRouteManeuver *maneuver = location_route_step_get_maneuver(step);
g_printf("---Step end\n");
}
-static void print_pos_nokia (gpointer data, gpointer user_data)
+static void print_pos_nokia(gpointer data, gpointer user_data)
{
g_printf("+++print pos nokia begin. \n");
LocationPosition *pos = (LocationPosition *)data;
if (pos) {
- g_printf ("time: %d, lat: %f, long: %f, alt: %f, status: %d",
- pos->timestamp, pos->latitude, pos->longitude, pos->altitude, pos->status);
- //location_position_free (pos);
+ g_printf("time: %d, lat: %f, long: %f, alt: %f, status: %d",
+ pos->timestamp, pos->latitude, pos->longitude, pos->altitude, pos->status);
+ /*location_position_free (pos); */
}
g_printf("---print pos nokia end\n");
}
-static void print_acc_nokia (gpointer data, gpointer user_data)
+static void print_acc_nokia(gpointer data, gpointer user_data)
{
g_printf("+++print acc nokia begin. \n");
LocationAccuracy *acc = (LocationAccuracy *)data;
if (acc) {
- g_printf ("\tAccuracy level %d (%.0f meters %.0f meters)", acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
- //location_accuracy_free (acc);
+ g_printf("\tAccuracy level %d (%.0f meters %.0f meters)", acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
+ /*location_accuracy_free (acc); */
}
g_printf("---print acc nokia end. \n");
}
-static void cb_position_from_address_nokia (LocationError error, GList *pos_list, GList *acc_list, gpointer userdata)
+static void cb_position_from_address_nokia(LocationError error, GList *pos_list, GList *acc_list, gpointer userdata)
{
g_printf("+++cb position from address nokia. \n");
return;
}
- g_list_foreach (pos_list, print_pos_nokia, NULL);
- g_list_foreach (pos_list, print_acc_nokia, NULL);
+ g_list_foreach(pos_list, print_pos_nokia, NULL);
+ g_list_foreach(pos_list, print_acc_nokia, NULL);
g_printf("---cb position from address nokia end. \n");
}
-static void cb_print_route_segment (gpointer data, gpointer user_data)
+static void cb_print_route_segment(gpointer data, gpointer user_data)
{
g_printf("++Segment begin\n");
LocationRouteSegment *seg = (LocationRouteSegment *)data;
g_printf("Segment end postion NULL\n");
}
g_printf("Segment info: Distance[%f], Duration[%ld], start(%f/%f), end(%f/%f)\n", seg_dist, seg_duration,
- start_lat, start_lon, end_lat, end_lon);
+ start_lat, start_lon, end_lat, end_lon);
GList *step_list = location_route_segment_get_route_step(seg);
GList *tmp_list = (GList *)step_list;
}
-static void cb_print_route_list (gpointer data, gpointer user_data)
+static void cb_print_route_list(gpointer data, gpointer user_data)
{
g_printf("+Route begin\n");
LocationRoute *route = (LocationRoute *)data;
const LocationBoundary *bound = location_route_get_bounding_box(route);
if (bound && bound->type == LOCATION_BOUNDARY_RECT) {
g_printf("RECT left top[%f-%f], right bottom[%f-%f]\n", bound->rect.left_top->latitude, bound->rect.left_top->longitude,
- bound->rect.right_bottom->latitude, bound->rect.right_bottom->longitude);
+ bound->rect.right_bottom->latitude, bound->rect.right_bottom->longitude);
} else {
g_printf("route boundary not exist, or not RECT\n");
}
- g_printf ("Distance[%f], Distance unit[%s], Duration[%ld]\n", distance, dis_unit, duration);
+ g_printf("Distance[%f], Distance unit[%s], Duration[%ld]\n", distance, dis_unit, duration);
GList *seg_list = location_route_get_route_segment(route);
if (seg_list) {
g_printf("-Route end\n");
}
-static void cb_route(LocationError error, guint req_id, GList * route_list, gchar * error_code, gchar * error_msg, gpointer userdata)
+static void cb_route(LocationError error, guint req_id, GList *route_list, gchar *error_code, gchar *error_msg, gpointer userdata)
{
g_printf("\n===== cb_route ======\n");
if (error != LOCATION_ERROR_NONE) {
g_printf("Success, poi_list[0x%x] user_data[0x%x] req_id[%d]\n", (unsigned int)route_list, (unsigned int)userdata, req_id);
if (route_list)
- g_list_foreach (route_list, cb_print_route_list, NULL);
+ g_list_foreach(route_list, cb_print_route_list, NULL);
if (error_code && error_msg) {
g_printf("cb_route: error_code[%s], error_msg[%s]\n", error_code, error_msg);
}
char str[STR_MAX];
g_printf("userdata[0x%x] building number: [%s], street: [%s], state: [%s], country code: [%s], city: [%s], district: [%s], postal code: [%s]\n",
- (unsigned int)userdata, addr->building_number, addr->street, addr->state, addr->country_code, addr->city, addr->district, addr->postal_code);
+ (unsigned int)userdata, addr->building_number, addr->street, addr->state, addr->country_code, addr->city, addr->district, addr->postal_code);
GetAccuracyLevel(str, acc->level);
g_printf("level: [%s], horizontal_accuracy: [%f], vertical_accuracy: [%f]\n", str, acc->horizontal_accuracy, acc->vertical_accuracy);
}
-static void cb_position (LocationError error,
- GList *pos_list,
- GList *acc_list,
- gpointer userdata)
+static void cb_position(LocationError error,
+ GList *pos_list,
+ GList *acc_list,
+ gpointer userdata)
{
if (error != LOCATION_ERROR_NONE) {
g_printf("cb_position failed: error=%d\n", error);
return;
}
- g_list_foreach (pos_list, PrintPos, NULL);
- g_list_foreach (acc_list, PrintAcc, NULL);
+ g_list_foreach(pos_list, PrintPos, NULL);
+ g_list_foreach(acc_list, PrintAcc, NULL);
}
static gboolean idle_position_from_address_async(gpointer data)
{
- IdleData* idle_data = (IdleData*)data;
+ IdleData *idle_data = (IdleData *)data;
guint req_id = 0;
char str[STR_MAX];
LocationGeocodePreference *pref = location_geocode_pref_new();
- int ret = location_map_get_position_from_address_async(idle_data->obj, idle_data->addr,pref, idle_data->pos_cb, idle_data->user_data,&req_id);
+ int ret = location_map_get_position_from_address_async(idle_data->obj, idle_data->addr, pref, idle_data->pos_cb, idle_data->user_data, &req_id);
GetLocationError(str, ret);
- if(ret != LOCATION_ERROR_NONE) {
- g_printf("Fail location_get_position_from_address_async Error[%s]\n", str);
+ if (ret != LOCATION_ERROR_NONE) {
+ g_printf("Fail location_get_position_from_address_async Error[%s]\n", str);
} else {
- g_printf("location_get_position_from_address_async, req_id %d\n", req_id);
+ g_printf("location_get_position_from_address_async, req_id %d\n", req_id);
}
location_address_free(idle_data->addr);
g_free(idle_data);
static gboolean idle_position_from_freefromed_address_async(gpointer data)
{
- IdleData* idle_data = (IdleData*)data;
+ IdleData *idle_data = (IdleData *)data;
char str[STR_MAX];
guint req_id = 0;
LocationGeocodePreference *pref = location_geocode_pref_new();
- int ret = location_map_get_position_from_freeformed_address_async(idle_data->obj, idle_data->str_addr,pref, idle_data->pos_cb, idle_data->user_data,&req_id);
+ int ret = location_map_get_position_from_freeformed_address_async(idle_data->obj, idle_data->str_addr, pref, idle_data->pos_cb, idle_data->user_data, &req_id);
GetLocationError(str, ret);
- if(ret != LOCATION_ERROR_NONE) {
- g_printf("Fail location_get_position_from_freeformed_address_async Error[%s]\n", str);
+ if (ret != LOCATION_ERROR_NONE) {
+ g_printf("Fail location_get_position_from_freeformed_address_async Error[%s]\n", str);
} else {
- g_printf("location_get_position_from_freeformed_address_async, req_id %d\n", req_id);
+ g_printf("location_get_position_from_freeformed_address_async, req_id %d\n", req_id);
}
g_free(idle_data->str_addr);
g_free(idle_data);
static gboolean idle_address_from_position_async(gpointer data)
{
- IdleData* idle_data = (IdleData*)data;
+ IdleData *idle_data = (IdleData *)data;
char str[STR_MAX];
guint reqid = 0;
- int ret = location_map_get_address_from_position_async(idle_data->obj, idle_data->pos,idle_data->addr_cb, idle_data->user_data,&reqid);
+ int ret = location_map_get_address_from_position_async(idle_data->obj, idle_data->pos, idle_data->addr_cb, idle_data->user_data, &reqid);
GetLocationError(str, ret);
- if(ret != LOCATION_ERROR_NONE) {
- g_printf("Fail location_map_get_address_from_position_async Error[%s]\n", str);
+ if (ret != LOCATION_ERROR_NONE) {
+ g_printf("Fail location_map_get_address_from_position_async Error[%s]\n", str);
} else {
- g_printf("location_map_get_address_from_position_async, req_id %d\n", reqid);
+ g_printf("location_map_get_address_from_position_async, req_id %d\n", reqid);
}
location_position_free(idle_data->pos);
g_free(idle_data);
static gboolean idle_location_map_get_position_from_address_async(gpointer data)
{
g_printf("+++idle location map get position from address async begin\n");
- IdleData* idle_data = (IdleData*)data;
+ IdleData *idle_data = (IdleData *)data;
guint req_id = 0;
char str[STR_MAX];
LocationGeocodePreference *pref = location_geocode_pref_new();
- LocationError err = location_map_get_position_from_address_async(idle_data->obj,idle_data->addr,pref,idle_data->pos_cb,idle_data->user_data,&req_id);
+ LocationError err = location_map_get_position_from_address_async(idle_data->obj, idle_data->addr, pref, idle_data->pos_cb, idle_data->user_data, &req_id);
- if(err != LOCATION_ERROR_NONE) {
- g_printf("Fail location_get_position_from_address_async Error[%s]\n", str);
+ if (err != LOCATION_ERROR_NONE) {
+ g_printf("Fail location_get_position_from_address_async Error[%s]\n", str);
} else {
- g_printf("location_get_position_from_address_async, req_id %d\n", req_id);
+ g_printf("location_get_position_from_address_async, req_id %d\n", req_id);
}
g_free(idle_data);
location_geocode_pref_free(pref);
void _print_keys(gpointer data, gpointer user_data)
{
- g_printf(" %s ", (gchar*) data);
+ g_printf(" %s ", (gchar *) data);
}
-static void print_map_service_keys (LocationObject *obj, int type)
+static void print_map_service_keys(LocationObject *obj, int type)
{
GList *key = NULL;
- location_map_get_provider_capability_key (obj, type, &key);
+ location_map_get_provider_capability_key(obj, type, &key);
if (key) {
- g_list_foreach (key, (GFunc)_print_keys, NULL);
+ g_list_foreach(key, (GFunc)_print_keys, NULL);
}
g_list_free_full(key, g_free);
}
-void _print_provider (gpointer data, gpointer user_data)
+void _print_provider(gpointer data, gpointer user_data)
{
gchar *provider = (gchar *)data;
g_printf("\n==================================================================================\n");
}
-int main(int argc, char** argv)
+int main(int argc, char **argv)
{
char strOpt[255];
int ret;
GError *gerr = NULL;
guint req_id = 0;
- // If application is executed by AUL, this is not needed.
+ /* If application is executed by AUL, this is not needed. */
g_setenv("PKG_NAME", "com.samsung.map-service-test", 1);
+#if !GLIB_CHECK_VERSION (2, 35, 0)
g_type_init();
+#endif
#if !GLIB_CHECK_VERSION (2, 31, 0)
- if( !g_thread_supported() )
- {
+ if (!g_thread_supported()) {
g_thread_init(NULL);
}
#endif
g_main = g_thread_create(GmainThread, NULL, TRUE, &gerr);
if (!g_main) {
g_debug("Error create gmain thread: Err domain[%d] Err code[%d] Err msg[%s]",
- gerr->domain, gerr->code, gerr->message);
+ gerr->domain, gerr->code, gerr->message);
g_error_free(gerr);
return 0;
}
g_printf("--- Start LBS Test App ---\n");
- while(1)
- {
+ while (1) {
print_menu();
g_printf("Select option: ");
SelectOpt(strOpt);
g_printf("======================================================================================\n");
- if (0 == g_strcmp0 ("x", strOpt)) {
+ if (0 == g_strcmp0("x", strOpt)) {
- }
- else if (0 == g_strcmp0("1",strOpt)) {
+ } else if (0 == g_strcmp0("1", strOpt)) {
ret = location_init();
GetLocationError(str, ret);
g_printf("location_init: returned value [%s]\n", str);
- } else if (0 == g_strcmp0("2",strOpt)) {
+ } else if (0 == g_strcmp0("2", strOpt)) {
if (map_obj) {
g_printf("Location object already existed: [0x%x]", (unsigned int)map_obj);
continue;
}
map_obj = location_map_new(NULL);
- LocationMapPref* mapPref =location_map_pref_new();
- location_map_pref_set_maps_key(mapPref,"SpMLqvWrvuFmp27kV4e6/Md_LeHoPn0b4LPOxB60p4A");
+ LocationMapPref *mapPref = location_map_pref_new();
+ location_map_pref_set_maps_key(mapPref, "SpMLqvWrvuFmp27kV4e6/Md_LeHoPn0b4LPOxB60p4A");
location_map_set_service_pref(map_obj, mapPref);
- if(map_obj) g_printf("Success\n");
+ if (map_obj) g_printf("Success\n");
else g_printf("Failed\n");
- } else if (0 == g_strcmp0("2a",strOpt)) {
+ } else if (0 == g_strcmp0("2a", strOpt)) {
if (map_obj) {
g_printf("Location object already existed: [0x%x]", (unsigned int)map_obj);
continue;
}
map_obj = location_map_new("decarta");
- if(map_obj) g_printf("Success\n");
+ if (map_obj) g_printf("Success\n");
else g_printf("Failed\n");
- } else if (0 == g_strcmp0("2b",strOpt)) {
+ } else if (0 == g_strcmp0("2b", strOpt)) {
if (map_obj) {
g_printf("Location object already existed: [0x%x]", (unsigned int)map_obj);
continue;
}
map_obj = location_map_new("osm");
- if(map_obj) g_printf("Success\n");
+ if (map_obj) g_printf("Success\n");
else g_printf("Failed\n");
- }
- else if (0 == g_strcmp0("2c",strOpt)) {
+ } else if (0 == g_strcmp0("2c", strOpt)) {
if (map_obj) {
g_printf("Location object already existed: [0x%x]", (unsigned int)map_obj);
continue;
}
map_obj = location_map_new("nlp");
- LocationMapPref* mapPref =location_map_pref_new();
- location_map_pref_set_maps_key(mapPref,"SpMLqvWrvuFmp27kV4e6/Md_LeHoPn0b4LPOxB60p4A");
+ LocationMapPref *mapPref = location_map_pref_new();
+ location_map_pref_set_maps_key(mapPref, "SpMLqvWrvuFmp27kV4e6/Md_LeHoPn0b4LPOxB60p4A");
location_map_set_service_pref(map_obj, mapPref);
- if(map_obj) {
+ if (map_obj) {
g_printf("Success\n");
- }
- else
- {
+ } else {
g_printf("Failed\n");
}
- } else if (0 == g_strcmp0("3",strOpt)) {
- ret = location_map_free (map_obj);
+ } else if (0 == g_strcmp0("3", strOpt)) {
+ ret = location_map_free(map_obj);
map_obj = NULL;
GetLocationError(str, ret);
g_printf("location_map_free: returned value [%s]\n", str);
- }else if(0 == g_strcmp0("4",strOpt) ){
- IdleData* data = g_new0(IdleData, 1);
+ } else if (0 == g_strcmp0("4", strOpt)) {
+ IdleData *data = g_new0(IdleData, 1);
data->obj = map_obj;
data->addr_cb = cb_address;
data->user_data = map_obj;
g_printf("[0].San jose [1].Suwon HQ [*].Custom\n");
g_printf("Select Position: ");
int opt = PromptInt();
- if(opt == 0) data->pos = location_position_new(0, 37.335276, -121.890059, 0, LOCATION_STATUS_2D_FIX);
+ if (opt == 0) data->pos = location_position_new(0, 37.335276, -121.890059, 0, LOCATION_STATUS_2D_FIX);
else if (opt == 1) data->pos = location_position_new(0, 37.257809, 127.056383, 0, LOCATION_STATUS_2D_FIX);
else {
g_printf("Input latitude: ");
}
g_idle_add((GSourceFunc)idle_address_from_position_async, data);
} else if (0 == g_strcmp0("5", strOpt)) {
- IdleData* data = g_new0(IdleData, 1);
+ IdleData *data = g_new0(IdleData, 1);
data->obj = map_obj;
data->pos_cb = cb_position;
data->user_data = map_obj;
g_printf("Select Address: ");
int opt = PromptInt();
char *ret_str = NULL;
- if (opt == 0) data->addr = location_address_new ("1", "Post Street", NULL, "san jose", "ca", NULL, "95113", NULL, NULL, NULL);
- else if (opt == 1) data->addr = location_address_new (NULL, "삼성전자", "매탄3동", "수원시 영>통구", "경기도", NULL, NULL, NULL, NULL, NULL);
- else if (opt == 2) data->addr = location_address_new (NULL, "Samsung Electro-Mechanics Co. LTD", "Maetan 3-dong", "Suwon Si Yeongtong-gu", "Gyeonggi-do", NULL, NULL, NULL, NULL, NULL);
+ if (opt == 0) data->addr = location_address_new("1", "Post Street", NULL, "san jose", "ca", NULL, "95113", NULL, NULL, NULL);
+ else if (opt == 1) data->addr = location_address_new(NULL, "삼성전자", "매탄3동", "수원시 영>통구", "경기도", NULL, NULL, NULL, NULL, NULL);
+ else if (opt == 2) data->addr = location_address_new(NULL, "Samsung Electro-Mechanics Co. LTD", "Maetan 3-dong", "Suwon Si Yeongtong-gu", "Gyeonggi-do", NULL, NULL, NULL, NULL, NULL);
else {
char building_number[255], street[255], state[255], country_code[255], city[255], district[255], postal_code[255];
g_printf("Input building number: ");
ret_str = fgets(building_number, 255, stdin);
- building_number[strlen(building_number)-1]='\0';
+ building_number[strlen(building_number) - 1] = '\0';
g_printf("Input street: ");
ret_str = fgets(street, 255, stdin);
- street[strlen(street)-1]='\0';
+ street[strlen(street) - 1] = '\0';
g_printf("Input state: ");
ret_str = fgets(state, 255, stdin);
- state[strlen(state)-1]='\0';
+ state[strlen(state) - 1] = '\0';
g_printf("Input country code: ");
ret_str = fgets(country_code, 255, stdin);
- country_code[strlen(country_code)-1]='\0';
+ country_code[strlen(country_code) - 1] = '\0';
g_printf("Input city: ");
ret_str = fgets(city, 255, stdin);
- city[strlen(city)-1]='\0';
+ city[strlen(city) - 1] = '\0';
g_printf("Input district: ");
ret_str = fgets(district, 255, stdin);
- district[strlen(district)-1]='\0';
+ district[strlen(district) - 1] = '\0';
g_printf("Input postal code: ");
ret_str = fgets(postal_code, 255, stdin);
- postal_code[strlen(postal_code)-1]='\0';
+ postal_code[strlen(postal_code) - 1] = '\0';
data->addr = location_address_new(building_number, street, district, city, state, country_code, postal_code, NULL, NULL, NULL);
}
g_idle_add((GSourceFunc)idle_position_from_address_async, data);
- }else if(0 == g_strcmp0("6",strOpt) ){
- IdleData* data = g_new0(IdleData, 1);
+ } else if (0 == g_strcmp0("6", strOpt)) {
+ IdleData *data = g_new0(IdleData, 1);
data->obj = map_obj;
data->pos_cb = cb_position;
data->user_data = map_obj;
g_printf("Select Address: ");
int opt = PromptInt();
char *ret_str = NULL;
- if(opt == 0){
+ if (opt == 0) {
data->str_addr = g_strdup("4 N 2nd Street 95113");
- }else if(opt == 1){
+ } else if (opt == 1) {
data->str_addr = g_strdup("경기도 수원시 영통구 매탄 3동 삼성전자");
- }else if(opt == 2){
+ } else if (opt == 2) {
data->str_addr = g_strdup("Samsung Electronics Co. LTD Maetan 3-dong, Suwon Si Yeongtong-gu, Gyeonggi-Do (Seoul 443-742 Korea), Rep of KOREA");
- }else{
+ } else {
char buf[255];
g_printf("Input freeform address: ");
ret_str = fgets(buf, 255, stdin);
- if (NULL == ret_str){
+ if (NULL == ret_str) {
g_printf(" fgets return NULL \n");
}
- buf[strlen(buf)-1]='\0';
+ buf[strlen(buf) - 1] = '\0';
data->str_addr = g_strdup(buf);
}
g_idle_add((GSourceFunc)idle_position_from_freefromed_address_async, data);
- }else if(0 == g_strcmp0("7", strOpt)) {
+ } else if (0 == g_strcmp0("7", strOpt)) {
g_printf("location_map_search_poi\n");
LocationPOIFilter *filter = location_poi_filter_new();
ret = location_map_search_poi(map_obj, filter, position, pref, cb_poi, NULL, &req_id);
GetLocationError(str, ret);
- if(ret != LOCATION_ERROR_NONE) {
- g_printf("Fail to search POI. Error[%s]\n", str);
+ if (ret != LOCATION_ERROR_NONE) {
+ g_printf("Fail to search POI. Error[%s]\n", str);
} else {
- g_printf("Seach POI success, req_id %d\n", req_id);
+ g_printf("Seach POI success, req_id %d\n", req_id);
}
location_poi_filter_free(filter);
location_poi_pref_free(pref);
location_position_free(position);
- }else if(0 == g_strcmp0("7a", strOpt)) {
+ } else if (0 == g_strcmp0("7a", strOpt)) {
g_printf("location_map_search_poi_with_category\n");
LocationPOIFilter *filter = location_poi_filter_new();
location_poi_filter_set(filter, "CATEGORY", "eat_drink");
ret = location_map_search_poi(map_obj, filter, position, pref, cb_poi, NULL, &req_id);
GetLocationError(str, ret);
- if(ret != LOCATION_ERROR_NONE) {
- g_printf("Fail to search POI. Error[%s]\n", str);
+ if (ret != LOCATION_ERROR_NONE) {
+ g_printf("Fail to search POI. Error[%s]\n", str);
} else {
- g_printf("Seach POI success, req_id %d\n", req_id);
+ g_printf("Seach POI success, req_id %d\n", req_id);
}
- location_poi_filter_free(filter);g_printf("location_search_poi_by_freeformed_address_with_poi_name\n");
+ location_poi_filter_free(filter);
+ g_printf("location_search_poi_by_freeformed_address_with_poi_name\n");
location_poi_pref_free(pref);
location_position_free(position);
- }else if(0 == g_strcmp0("7b", strOpt)) {
+ } else if (0 == g_strcmp0("7b", strOpt)) {
g_printf("location_map_search_poi_with_poi_name\n");
LocationPOIFilter *filter = location_poi_filter_new();
ret = location_map_search_poi(map_obj, filter, position, pref, cb_poi, NULL, &req_id);
GetLocationError(str, ret);
- if(ret != LOCATION_ERROR_NONE) {
- g_printf("Fail to search POI. Error[%s]\n", str);
+ if (ret != LOCATION_ERROR_NONE) {
+ g_printf("Fail to search POI. Error[%s]\n", str);
} else {
- g_printf("Seach POI success, req_id %d\n", req_id);
+ g_printf("Seach POI success, req_id %d\n", req_id);
}
location_poi_filter_free(filter);
location_poi_pref_free(pref);
location_position_free(position);
- }else if(0 == g_strcmp0("8", strOpt)) {
+ } else if (0 == g_strcmp0("8", strOpt)) {
g_printf("location_map_search_poi_by_area_with_keyword\n");
- // only circle supported by decarta
+ /* only circle supported by decarta */
LocationPosition *center = location_position_new(0, 37.336723, -121.889555, 0, LOCATION_STATUS_2D_FIX);
gdouble radius = 400;
LocationBoundary *bound = location_boundary_new_for_circle(center, radius);
LocationPOIFilter *filter = location_poi_filter_new();
gchar *key = g_strdup("KEYWORD");
gchar *value = g_strdup("cafe");
- location_poi_filter_set(filter, key, value); // same with Type ? CATEGORY, KEYWORD, POIName
+ location_poi_filter_set(filter, key, value); /* same with Type ? CATEGORY, KEYWORD, POIName */
LocationPOIPreference *pref = location_poi_pref_new();
location_poi_pref_set_max_result(pref, 10);
gchar *item = g_strdup("Distance");
- location_poi_pref_set_sort_by(pref, item); // can't set const char* directly !!
- location_poi_pref_set_sort_order(pref, LOCATION_POI_PREF_SO_ASC); //LOCATION_POI_PREF_SO_ASC
+ location_poi_pref_set_sort_by(pref, item); /* can't set const char* directly !! */
+ location_poi_pref_set_sort_order(pref, LOCATION_POI_PREF_SO_ASC); /*LOCATION_POI_PREF_SO_ASC */
ret = location_map_search_poi_by_area(map_obj, filter, bound, pref, cb_poi, NULL, &req_id);
GetLocationError(str, ret);
if (ret != LOCATION_ERROR_NONE) {
- g_printf("Fail to search POI by area. Error[%s]\n", str);
+ g_printf("Fail to search POI by area. Error[%s]\n", str);
} else {
- g_printf("Seach POI by area sucess, req_id %d\n", req_id);
+ g_printf("Seach POI by area sucess, req_id %d\n", req_id);
}
g_free(key);
location_boundary_free(bound);
location_poi_filter_free(filter);
location_poi_pref_free(pref);
- }else if(0 == g_strcmp0("8a", strOpt)) {
+ } else if (0 == g_strcmp0("8a", strOpt)) {
g_printf("location_map_search_poi_by_area_with_category\n");
- // only circle supported by decarta
+ /* only circle supported by decarta */
LocationPosition *center = location_position_new(0, 37.336723, -121.889555, 0, LOCATION_STATUS_2D_FIX);
gdouble radius = 400;
LocationBoundary *bound = location_boundary_new_for_circle(center, radius);
ret = location_map_search_poi_by_area(map_obj, filter, bound, pref, cb_poi, NULL, &req_id);
GetLocationError(str, ret);
if (ret != LOCATION_ERROR_NONE) {
- g_printf("Fail to search POI by area. Error[%s]\n", str);
+ g_printf("Fail to search POI by area. Error[%s]\n", str);
} else {
- g_printf("Seach POI by area sucess, req_id %d\n", req_id);
+ g_printf("Seach POI by area sucess, req_id %d\n", req_id);
}
g_free(key);
location_poi_filter_free(filter);
location_poi_pref_free(pref);
- }else if(0 == g_strcmp0("8b", strOpt)) {
+ } else if (0 == g_strcmp0("8b", strOpt)) {
g_printf("location_map_search_poi_by_area_with_poi_name\n");
- // only circle supported by decarta
+ /* only circle supported by decarta */
LocationPosition *center = location_position_new(0, 37.336723, -121.889555, 0, LOCATION_STATUS_2D_FIX);
gdouble radius = 400;
LocationBoundary *bound = location_boundary_new_for_circle(center, radius);
LocationPOIFilter *filter = location_poi_filter_new();
gchar *key = g_strdup("POIName");
gchar *value = g_strdup("cafe");
- location_poi_filter_set(filter, key, value); // same with Type ? CATEGORY, KEYWORD, POIName
+ location_poi_filter_set(filter, key, value); /* same with Type ? CATEGORY, KEYWORD, POIName */
LocationPOIPreference *pref = location_poi_pref_new();
location_poi_pref_set_max_result(pref, 10);
gchar *item = g_strdup("Distance");
- location_poi_pref_set_sort_by(pref, item); // can't set const char* directly !!
- location_poi_pref_set_sort_order(pref, LOCATION_POI_PREF_SO_ASC); //LOCATION_POI_PREF_SO_ASC
+ location_poi_pref_set_sort_by(pref, item); /* can't set const char* directly !! */
+ location_poi_pref_set_sort_order(pref, LOCATION_POI_PREF_SO_ASC); /*LOCATION_POI_PREF_SO_ASC */
ret = location_map_search_poi_by_area(map_obj, filter, bound, pref, cb_poi, NULL, &req_id);
GetLocationError(str, ret);
if (ret != LOCATION_ERROR_NONE) {
- g_printf("Fail to search POI by area. Error[%s]\n", str);
+ g_printf("Fail to search POI by area. Error[%s]\n", str);
} else {
- g_printf("Seach POI by area sucess, req_id %d\n", req_id);
+ g_printf("Seach POI by area sucess, req_id %d\n", req_id);
}
g_free(key);
location_poi_filter_free(filter);
location_poi_pref_free(pref);
- }else if(0 == g_strcmp0("9", strOpt)) {
+ } else if (0 == g_strcmp0("9", strOpt)) {
g_printf("location_map_search_poi_by_address_with_keyword\n");
- LocationAddress *addr = location_address_new("51", "N SAN PEDRO ST", NULL, "SAN JOSE", "SANTA CLARA", "CA", "95110",NULL,NULL,NULL);
+ LocationAddress *addr = location_address_new("51", "N SAN PEDRO ST", NULL, "SAN JOSE", "SANTA CLARA", "CA", "95110", NULL, NULL, NULL);
LocationPOIFilter *filter = location_poi_filter_new();
gchar *key = g_strdup("KEYWORD");
ret = location_map_search_poi_by_address(map_obj, filter, addr, pref, cb_poi, NULL, &req_id);
GetLocationError(str, ret);
- if(ret != LOCATION_ERROR_NONE) {
- g_printf("Fail to search POI by address. Error[%s]\n", str);
+ if (ret != LOCATION_ERROR_NONE) {
+ g_printf("Fail to search POI by address. Error[%s]\n", str);
} else {
- g_printf("Seach POI by address sucess, req_id %d\n", req_id);
+ g_printf("Seach POI by address sucess, req_id %d\n", req_id);
}
g_free(key);
location_address_free(addr);
location_poi_filter_free(filter);
location_poi_pref_free(pref);
- }else if(0 == g_strcmp0("9a", strOpt)) {
+ } else if (0 == g_strcmp0("9a", strOpt)) {
g_printf("location_search_poi_by_address_with_category\n");
- LocationAddress *addr = location_address_new("51", "N SAN PEDRO ST", NULL, "SAN JOSE", "SANTA CLARA", "CA", "95110",NULL,NULL,NULL);
+ LocationAddress *addr = location_address_new("51", "N SAN PEDRO ST", NULL, "SAN JOSE", "SANTA CLARA", "CA", "95110", NULL, NULL, NULL);
LocationPOIFilter *filter = location_poi_filter_new();
location_poi_filter_set(filter, "CATEGORY", "restaurant");
ret = location_map_search_poi_by_address(map_obj, filter, addr, pref, cb_poi, NULL, &req_id);
GetLocationError(str, ret);
- if(ret != LOCATION_ERROR_NONE) {
- g_printf("Fail to search POI by address. Error[%s]\n", str);
+ if (ret != LOCATION_ERROR_NONE) {
+ g_printf("Fail to search POI by address. Error[%s]\n", str);
} else {
- g_printf("Seach POI by address sucess, req_id %d\n", req_id);
+ g_printf("Seach POI by address sucess, req_id %d\n", req_id);
}
location_address_free(addr);
location_poi_filter_free(filter);
location_poi_pref_free(pref);
- }else if(0 == g_strcmp0("9b", strOpt)) {
+ } else if (0 == g_strcmp0("9b", strOpt)) {
g_printf("location_map_search_poi_by_address_with_poi_name\n");
- LocationAddress *addr = location_address_new("51", "N SAN PEDRO ST", NULL, "SAN JOSE", "SANTA CLARA", "CA", "95110",NULL,NULL,NULL);
+ LocationAddress *addr = location_address_new("51", "N SAN PEDRO ST", NULL, "SAN JOSE", "SANTA CLARA", "CA", "95110", NULL, NULL, NULL);
LocationPOIFilter *filter = location_poi_filter_new();
gchar *key = g_strdup("POIName");
ret = location_map_search_poi_by_address(map_obj, filter, addr, pref, cb_poi, NULL, &req_id);
GetLocationError(str, ret);
- if(ret != LOCATION_ERROR_NONE) {
- g_printf("Fail to search POI by address. Error[%s]\n", str);
+ if (ret != LOCATION_ERROR_NONE) {
+ g_printf("Fail to search POI by address. Error[%s]\n", str);
} else {
- g_printf("Seach POI by address sucess, req_id %d\n", req_id);
+ g_printf("Seach POI by address sucess, req_id %d\n", req_id);
}
g_free(key);
location_poi_filter_free(filter);
location_poi_pref_free(pref);
- }else if(0 == g_strcmp0("10", strOpt)) {
+ } else if (0 == g_strcmp0("10", strOpt)) {
g_printf("location_map_search_poi_by_freeformed_address_with_keyword\n");
gchar *addr = g_strdup("North Second St.");
LocationPOIPreference *pref = location_poi_pref_new();
location_poi_pref_set_max_result(pref, 10);
gchar *item = g_strdup("Distance");
- location_poi_pref_set_sort_by(pref, item); // can't set const char* directly !!
- location_poi_pref_set_sort_order(pref, LOCATION_POI_PREF_SO_ASC); //LOCATION_POI_PREF_SO_ASC
+ location_poi_pref_set_sort_by(pref, item); /* can't set const char* directly !! */
+ location_poi_pref_set_sort_order(pref, LOCATION_POI_PREF_SO_ASC); /*LOCATION_POI_PREF_SO_ASC */
ret = location_map_search_poi_by_freeformed_address(map_obj, filter, addr, pref, cb_poi, NULL, &req_id);
GetLocationError(str, ret);
if (ret != LOCATION_ERROR_NONE) {
- g_printf("Fail to search POI by address. Error[%s]\n", str);
+ g_printf("Fail to search POI by address. Error[%s]\n", str);
} else {
- g_printf("Seach POI by address success, req_id %d\n", req_id);
+ g_printf("Seach POI by address success, req_id %d\n", req_id);
}
g_free(item);
g_free(addr);
location_poi_filter_free(filter);
location_poi_pref_free(pref);
- }else if(0 == g_strcmp0("10a", strOpt)) {
+ } else if (0 == g_strcmp0("10a", strOpt)) {
g_printf("location_map_search_poi_by_freeformed_address_with_category\n");
gchar *addr = g_strdup("North Second St.");
ret = location_map_search_poi_by_freeformed_address(map_obj, filter, addr, pref, cb_poi, NULL, &req_id);
GetLocationError(str, ret);
if (ret != LOCATION_ERROR_NONE) {
- g_printf("Fail to search POI by address. Error[%s]\n", str);
+ g_printf("Fail to search POI by address. Error[%s]\n", str);
} else {
- g_printf("Seach POI by address success, req_id %d\n", req_id);
- }
+ g_printf("Seach POI by address success, req_id %d\n", req_id);
+ }
g_free(key);
g_free(value);
g_free(addr);
location_poi_filter_free(filter);
location_poi_pref_free(pref);
- }else if(0 == g_strcmp0("10b", strOpt)) {
+ } else if (0 == g_strcmp0("10b", strOpt)) {
g_printf("location_map_search_poi_by_freeformed_address_with_poi_name\n");
gchar *addr = g_strdup("North Second St.");
ret = location_map_search_poi_by_freeformed_address(map_obj, filter, addr, pref, cb_poi, NULL, &req_id);
GetLocationError(str, ret);
if (ret != LOCATION_ERROR_NONE) {
- g_printf("Fail to search POI by address. Error[%s]\n", str);
+ g_printf("Fail to search POI by address. Error[%s]\n", str);
} else {
- g_printf("Seach POI by address success, req_id %d\n", req_id);
+ g_printf("Seach POI by address success, req_id %d\n", req_id);
}
g_free(addr);
location_poi_filter_free(filter);
location_poi_pref_free(pref);
- }else if(0 == g_strcmp0("11", strOpt)) {
+ } else if (0 == g_strcmp0("11", strOpt)) {
int req_id;
int len = 0;
GetLocationError(str, ret);
if (ret != LOCATION_ERROR_NONE) {
g_printf("Fail to cancel POI request. Error[%s]\n", str);
- }
- else
+ } else
g_printf("location_map_cancel_poi_request, req_id %d\n", req_id);
- }else if(0 == g_strcmp0("12", strOpt)) {
+ } else if (0 == g_strcmp0("12", strOpt)) {
g_printf("location_map_request_route\n\n");
- LocationPosition *origin = location_position_new(0, 37.564263, 126.974676, 0, LOCATION_STATUS_2D_FIX); // Seoul city hall
- LocationPosition *destination = location_position_new(0, 37.557120, 126.992410, 0, LOCATION_STATUS_2D_FIX); // NamSan
+ LocationPosition *origin = location_position_new(0, 37.564263, 126.974676, 0, LOCATION_STATUS_2D_FIX); /* Seoul city hall */
+ LocationPosition *destination = location_position_new(0, 37.557120, 126.992410, 0, LOCATION_STATUS_2D_FIX); /* NamSan */
GList *waypoint = NULL;
- LocationPosition *via_pos = location_position_new(0, 37.560950, 126.986240, 0, LOCATION_STATUS_2D_FIX); // Wangsimli
- waypoint = g_list_append (waypoint, (gpointer)via_pos);
+ LocationPosition *via_pos = location_position_new(0, 37.560950, 126.986240, 0, LOCATION_STATUS_2D_FIX); /* Wangsimli */
+ waypoint = g_list_append(waypoint, (gpointer)via_pos);
LocationRoutePreference *pref = location_route_pref_new();
location_route_pref_set_route_type(pref, "FASTEST");
LocationRoadElementPenalty *penalty = NULL;
- penalty = location_route_element_penalty_new ();
+ penalty = location_route_element_penalty_new();
location_route_element_penalty_set_id(penalty, "Penalty1");
location_route_element_penalty_set_direction(penalty, DIR_BOTH);
location_route_element_penalty_set_validity_start_time(penalty, 146);
location_route_element_penalty_set_validity_end_time(penalty, 244);
- LocationRouteOptions *options = location_route_options_new ();
+ LocationRouteOptions *options = location_route_options_new();
if (NULL == options) {
g_printf("\n ERROR: options is NULL \n");
}
GList *penalty_list = NULL;
- penalty_list = g_list_append (penalty_list, penalty);
+ penalty_list = g_list_append(penalty_list, penalty);
if (NULL == penalty_list) {
g_printf("\n ERROR: penalty_list is NULL \n");
}
location_route_options_set_transit_type_allowed(options, TRANSIT_TYPE_RAIL_LIGHT, TRUE);
location_route_options_set_maximum_changes(options, 2);
location_route_options_set_departure_time(options, 1373282862);
- //location_route_options_set_arrival_time(options, 244);
+ /*location_route_options_set_arrival_time(options, 244); */
location_route_pref_set_options(pref, options);
location_route_options_free(options);
- LocationMapPref* mapPref =location_map_pref_new();
- location_map_pref_set_maps_key(mapPref,"SpMLqvWrvuFmp27kV4e6/Md_LeHoPn0b4LPOxB60p4A");
+ LocationMapPref *mapPref = location_map_pref_new();
+ location_map_pref_set_maps_key(mapPref, "SpMLqvWrvuFmp27kV4e6/Md_LeHoPn0b4LPOxB60p4A");
location_map_set_service_pref(map_obj, mapPref);
ret = location_map_request_route(map_obj, origin, destination, waypoint, pref, cb_route, NULL, &req_id);
GetLocationError(str, ret);
if (ret != LOCATION_ERROR_NONE) {
- g_printf("Fail to search route by address. Error[%s]\n", str);
+ g_printf("Fail to search route by address. Error[%s]\n", str);
} else {
- g_printf("Search Route successfully, req_id %d\n", req_id);
+ g_printf("Search Route successfully, req_id %d\n", req_id);
}
- }else if(0 == g_strcmp0("12a", strOpt)) {
+ } else if (0 == g_strcmp0("12a", strOpt)) {
g_printf("location_map_request_route for a long distance\n");
- LocationPosition *origin = location_position_new(0, 29.783449,-95.373688, 0, LOCATION_STATUS_2D_FIX);
- LocationPosition *destination = location_position_new(0, 39.749962,-104.984665, 0, LOCATION_STATUS_2D_FIX);
+ LocationPosition *origin = location_position_new(0, 29.783449, -95.373688, 0, LOCATION_STATUS_2D_FIX);
+ LocationPosition *destination = location_position_new(0, 39.749962, -104.984665, 0, LOCATION_STATUS_2D_FIX);
GList *waypoint = NULL;
LocationRoutePreference *pref = location_route_pref_new();
location_route_pref_set_route_type(pref, "FASTEST");
- LocationMapPref* mapPref =location_map_pref_new();
- location_map_pref_set_maps_key(mapPref,"SpMLqvWrvuFmp27kV4e6/Md_LeHoPn0b4LPOxB60p4A");
+ LocationMapPref *mapPref = location_map_pref_new();
+ location_map_pref_set_maps_key(mapPref, "SpMLqvWrvuFmp27kV4e6/Md_LeHoPn0b4LPOxB60p4A");
location_map_set_service_pref(map_obj, mapPref);
ret = location_map_request_route(map_obj, origin, destination, waypoint, pref, cb_route, NULL, &req_id);
GetLocationError(str, ret);
if (ret != LOCATION_ERROR_NONE) {
- g_printf("Fail to search route by address. Error[%s]\n", str);
+ g_printf("Fail to search route by address. Error[%s]\n", str);
} else {
- g_printf("Search Route successfully, req_id %d\n", req_id);
+ g_printf("Search Route successfully, req_id %d\n", req_id);
}
- }else if(0 == g_strcmp0("13", strOpt)) {
+ } else if (0 == g_strcmp0("13", strOpt)) {
g_printf("location_map_cancel_route_request\n");
int req_id;
GetLocationError(str, ret);
if (ret != LOCATION_ERROR_NONE) {
g_printf("Fail to cancel route request. Error[%s]\n", str);
- }
- else {
+ } else {
g_printf("location_map_cancel_route_request, req_id %d\n", req_id);
}
- }else if (0 == g_strcmp0 ("14", strOpt)) {
+ } else if (0 == g_strcmp0("14", strOpt)) {
int idx = 0;
for (idx = 0; idx < MAP_SERVICE_TYPE_MAX; idx++) {
- g_printf("[%d:%d], ", idx, location_map_is_supported_provider_capability (map_obj, idx));
+ g_printf("[%d:%d], ", idx, location_map_is_supported_provider_capability(map_obj, idx));
}
- }else if (0 == g_strcmp0 ("15", strOpt)) {
+ } else if (0 == g_strcmp0("15", strOpt)) {
int idx = 0;
for (idx = 0; idx < MAP_SERVICE_TYPE_MAX; idx++) {
g_printf("[%d:", idx);
print_map_service_keys(map_obj, idx);
g_printf("]\n");
}
- }else if (0 == g_strcmp0 ("16", strOpt)) {
- GList *list = location_map_get_supported_providers (map_obj);
+ } else if (0 == g_strcmp0("16", strOpt)) {
+ GList *list = location_map_get_supported_providers(map_obj);
if (list) {
- g_list_foreach (list, _print_provider, NULL);
- g_list_free_full (list, g_free);
- }
- else {
+ g_list_foreach(list, _print_provider, NULL);
+ g_list_free_full(list, g_free);
+ } else {
g_printf("Fail to get supported_providers\n");
}
- }else if (0 == g_strcmp0 ("17", strOpt)) {
- gchar *default_provider = location_map_get_default_provider (map_obj);
+ } else if (0 == g_strcmp0("17", strOpt)) {
+ gchar *default_provider = location_map_get_default_provider(map_obj);
if (default_provider) {
g_printf("Defaut : [%s]\n", default_provider);
- g_free (default_provider);
- }
- else {
+ g_free(default_provider);
+ } else {
g_printf("Fail to get default provider\n");
}
- }else if (0 == g_strcmp0 ("18", strOpt)) {
+ } else if (0 == g_strcmp0("18", strOpt)) {
g_printf("[0].default [1].decarta [2].osm\n");
g_printf("Select provider: ");
int opt = PromptInt();
gboolean ret = FALSE;
- switch (opt)
- {
+ switch (opt) {
case 0:
- ret = location_map_set_provider (map_obj, NULL);
+ ret = location_map_set_provider(map_obj, NULL);
break;
case 1:
- ret = location_map_set_provider (map_obj, "decarta");
+ ret = location_map_set_provider(map_obj, "decarta");
break;
case 2:
- ret = location_map_set_provider (map_obj, "osm");
+ ret = location_map_set_provider(map_obj, "osm");
break;
default:
break;
}
if (ret == TRUE) {
- g_printf ("Success to set provider [%d]\n", opt);
- }
- else {
- g_printf ("Fail to set provider [%d]\n", opt);
+ g_printf("Success to set provider [%d]\n", opt);
+ } else {
+ g_printf("Fail to set provider [%d]\n", opt);
}
- }
- else if(0 == g_strcmp0("19", strOpt)) {
+ } else if (0 == g_strcmp0("19", strOpt)) {
int req_id;
int len = 0;
GetLocationError(str, ret);
if (ret != LOCATION_ERROR_NONE) {
g_printf("Fail to cancel Geocode request. Error[%s]\n", str);
- }
- else
+ } else
g_printf("location_map_cancel_geocode_request, req_id %d\n", req_id);
- }else if(0 == g_strcmp0("20", strOpt)) {
+ } else if (0 == g_strcmp0("20", strOpt)) {
g_printf("Get map version\n");
gchar *version = NULL;
ret = location_map_get_map_version(map_obj, &version);
g_printf("Version : %s\n", version);
}
if (version) g_free(version);
- }else if(0 == g_strcmp0("21", strOpt)) {
+ } else if (0 == g_strcmp0("21", strOpt)) {
ret = location_map_update_map_data(map_obj, TRUE);
if (ret != LOCATION_ERROR_NONE) {
g_printf("Fail to update map data[%d]\n", ret);
} else {
g_printf("Success to updata map data. [TRUE] \n");
}
- }else if(0 == g_strcmp0("22", strOpt)) {
+ } else if (0 == g_strcmp0("22", strOpt)) {
ret = location_map_update_map_data(map_obj, FALSE);
if (ret != LOCATION_ERROR_NONE) {
g_printf("Fail to update map data[%d]\n", ret);
} else {
g_printf("Success to updata map data. [FALSE] \n");
}
- }else if (0 == g_strcmp0("23", strOpt)) {
+ } else if (0 == g_strcmp0("23", strOpt)) {
gboolean is_lastest_map_data_flag = FALSE;
ret = location_map_is_latest_map_data(map_obj, &is_lastest_map_data_flag);
if (ret != LOCATION_ERROR_NONE) {
} else {
g_printf("Success to check the latest map data. [%s]\n", is_lastest_map_data_flag ? "TRUE" : "FALSE");
}
- }else if (0 == g_strcmp0 ("99", strOpt)) {
+ } else if (0 == g_strcmp0("99", strOpt)) {
if (map_obj) {
- g_object_set (map_obj, "provider", NULL, NULL);
+ g_object_set(map_obj, "provider", NULL, NULL);
}
- }else if (0 == g_strcmp0 ("99a", strOpt)) {
+ } else if (0 == g_strcmp0("99a", strOpt)) {
if (map_obj) {
- g_object_set (map_obj, "provider", "decarta", NULL);
+ g_object_set(map_obj, "provider", "decarta", NULL);
}
- }else if (0 == g_strcmp0 ("99b", strOpt)) {
+ } else if (0 == g_strcmp0("99b", strOpt)) {
if (map_obj) {
- g_object_set (map_obj, "provider", "osm", NULL);
+ g_object_set(map_obj, "provider", "osm", NULL);
}
- }else if(0 == g_strcmp0("q",strOpt) ){
+ } else if (0 == g_strcmp0("q", strOpt)) {
g_main_loop_quit(g_mainloop);
break;
}
#include <location.h>
static GMainLoop *loop = NULL;
-GSource* nmea_src = NULL;
+GSource *nmea_src = NULL;
static gboolean
-exit_program (gpointer data)
+exit_program(gpointer data)
{
- g_main_loop_quit (loop);
- g_debug ("Quit g_main_loop");
+ g_main_loop_quit(loop);
+ g_debug("Quit g_main_loop");
return FALSE;
}
static void
-cb_service_updated (GObject *self,
- guint type,
- gpointer data,
- gpointer accuracy,
- gpointer userdata)
+cb_service_updated(GObject *self,
+ guint type,
+ gpointer data,
+ gpointer accuracy,
+ gpointer userdata)
{
g_debug("cb_service_updated: type(%d) userdata(0x%x)", type, (unsigned int)userdata);
}
static void
-cb_service_enabled (GObject *self,
- guint status,
- gpointer userdata)
+cb_service_enabled(GObject *self,
+ guint status,
+ gpointer userdata)
{
g_debug("cb_service_enabled: status(%d) userdata(0x%x)", status, (unsigned int)userdata);
}
static void
-cb_service_disabled (GObject *self,
- guint status,
- gpointer userdata)
+cb_service_disabled(GObject *self,
+ guint status,
+ gpointer userdata)
{
g_debug("cb_service_disabled: status(%d) userdata(0x%x)", status, (unsigned int)userdata);
}
int
-main (int argc, char *argv[])
+main(int argc, char *argv[])
{
LocationObject *loc = NULL;
- location_init ();
+ location_init();
- loop = g_main_loop_new (NULL, TRUE);
+ loop = g_main_loop_new(NULL, TRUE);
- loc = location_new (LOCATION_METHOD_GPS);
+ loc = location_new(LOCATION_METHOD_GPS);
if (!loc) {
g_debug("location_new failed");
return -1;
}
- g_signal_connect (loc, "service-enabled", G_CALLBACK(cb_service_enabled), loc);
- g_signal_connect (loc, "service-disabled", G_CALLBACK(cb_service_disabled), loc);
- g_signal_connect (loc, "service-updated", G_CALLBACK(cb_service_updated), loc);
+ g_signal_connect(loc, "service-enabled", G_CALLBACK(cb_service_enabled), loc);
+ g_signal_connect(loc, "service-disabled", G_CALLBACK(cb_service_disabled), loc);
+ g_signal_connect(loc, "service-updated", G_CALLBACK(cb_service_updated), loc);
- if( LOCATION_ERROR_NONE != location_start (loc) ){
+ if (LOCATION_ERROR_NONE != location_start(loc)) {
g_debug("location_start failed");
return -1;
}
g_timeout_add_seconds(60, exit_program, NULL);
- g_main_loop_run (loop);
+ g_main_loop_run(loop);
- location_stop (loc);
- location_free (loc);
+ location_stop(loc);
+ location_free(loc);
return 0;
}
static GMainLoop *loop = NULL;
static gboolean
-exit_program (gpointer data)
+exit_program(gpointer data)
{
- g_main_loop_quit (loop);
- g_debug ("Quit g_main_loop");
+ g_main_loop_quit(loop);
+ g_debug("Quit g_main_loop");
return FALSE;
}
static void
-cb_service_updated (GObject *self,
- guint type,
- gpointer data,
- gpointer accuracy,
- gpointer userdata)
+cb_service_updated(GObject *self,
+ guint type,
+ gpointer data,
+ gpointer accuracy,
+ gpointer userdata)
{
g_debug("cb_service_updated: type(%d) userdata(0x%x)", type, (unsigned int)userdata);
- LocationAccuracy *acc = (LocationAccuracy*) accuracy;
+ LocationAccuracy *acc = (LocationAccuracy *) accuracy;
switch (type) {
- case POSITION_UPDATED: {
- LocationPosition *pos = (LocationPosition*) data;
- g_debug ("ASYNC>> Current position> time: %d, lat: %f, long: %f, alt: %f, status: %d",
- pos->timestamp, pos->latitude, pos->longitude, pos->altitude, pos->status);
- g_debug ("\tAccuracy level %d (%.0f meters %.0f meters)",
- acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
- }
+ case POSITION_UPDATED: {
+ LocationPosition *pos = (LocationPosition *) data;
+ g_debug("ASYNC>> Current position> time: %d, lat: %f, long: %f, alt: %f, status: %d",
+ pos->timestamp, pos->latitude, pos->longitude, pos->altitude, pos->status);
+ g_debug("\tAccuracy level %d (%.0f meters %.0f meters)",
+ acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
+ }
}
}
static void
-cb_service_enabled (GObject *self,
- guint status,
- gpointer userdata)
+cb_service_enabled(GObject *self,
+ guint status,
+ gpointer userdata)
{
g_debug("cb_service_enabled: status(%d) userdata(0x%x)", status, (unsigned int)userdata);
- LocationObject *loc = (LocationObject*)userdata;
+ LocationObject *loc = (LocationObject *)userdata;
LocationAccuracy *acc = NULL;
LocationPosition *pos = NULL;
- if (LOCATION_ERROR_NONE == location_get_position (loc, &pos, &acc)) {
- g_debug ("SYNC>> Current position> time: %d, lat: %f, long: %f, alt: %f, status: %d",
- pos->timestamp, pos->latitude, pos->longitude, pos->altitude, pos->status);
- g_debug ("\tAccuracy level %d (%.0f meters %.0f meters)",
- acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
+ if (LOCATION_ERROR_NONE == location_get_position(loc, &pos, &acc)) {
+ g_debug("SYNC>> Current position> time: %d, lat: %f, long: %f, alt: %f, status: %d",
+ pos->timestamp, pos->latitude, pos->longitude, pos->altitude, pos->status);
+ g_debug("\tAccuracy level %d (%.0f meters %.0f meters)",
+ acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
location_position_free(pos);
location_accuracy_free(acc);
- } else g_warning ("SYNC>> Current position> failed");
+ } else g_warning("SYNC>> Current position> failed");
}
static void
-cb_service_disabled (GObject *self,
- guint status,
- gpointer userdata)
+cb_service_disabled(GObject *self,
+ guint status,
+ gpointer userdata)
{
g_debug("cb_service_disabled: status(%d) userdata(0x%x)", status, (unsigned int)userdata);
}
int
-main (int argc, char *argv[])
+main(int argc, char *argv[])
{
LocationObject *loc = NULL;
- location_init ();
+ location_init();
- loop = g_main_loop_new (NULL, TRUE);
+ loop = g_main_loop_new(NULL, TRUE);
- loc = location_new (LOCATION_METHOD_GPS);
+ loc = location_new(LOCATION_METHOD_GPS);
if (!loc) {
g_debug("location_new failed");
return -1;
}
- g_signal_connect (loc, "service-enabled", G_CALLBACK(cb_service_enabled), loc);
- g_signal_connect (loc, "service-disabled", G_CALLBACK(cb_service_disabled), loc);
- g_signal_connect (loc, "service-updated", G_CALLBACK(cb_service_updated), loc);
+ g_signal_connect(loc, "service-enabled", G_CALLBACK(cb_service_enabled), loc);
+ g_signal_connect(loc, "service-disabled", G_CALLBACK(cb_service_disabled), loc);
+ g_signal_connect(loc, "service-updated", G_CALLBACK(cb_service_updated), loc);
- if( LOCATION_ERROR_NONE != location_start (loc) ){
+ if (LOCATION_ERROR_NONE != location_start(loc)) {
g_debug("location_start failed");
return -1;
}
g_timeout_add_seconds(60, exit_program, NULL);
- g_main_loop_run (loop);
+ g_main_loop_run(loop);
- location_stop (loc);
+ location_stop(loc);
LocationPosition *pos = NULL;
g_object_get(loc, "last-position", &pos, NULL);
if (pos) {
- g_debug ("Get property>> last-position> time: %d, lat: %f, long: %f, alt: %f, status: %d",
- pos->timestamp, pos->latitude, pos->longitude, pos->altitude, pos->status);
+ g_debug("Get property>> last-position> time: %d, lat: %f, long: %f, alt: %f, status: %d",
+ pos->timestamp, pos->latitude, pos->longitude, pos->altitude, pos->status);
location_position_free(pos);
} else g_warning("failed to get property> last-position");
- location_free (loc);
+ location_free(loc);
return 0;
}
static GMainLoop *loop = NULL;
static gboolean
-exit_program (gpointer data)
+exit_program(gpointer data)
{
- g_main_loop_quit (loop);
- g_debug ("Quit g_main_loop");
+ g_main_loop_quit(loop);
+ g_debug("Quit g_main_loop");
return FALSE;
}
static void
-cb_service_updated (GObject *self,
- guint type,
- gpointer data,
- gpointer accuracy,
- gpointer userdata)
+cb_service_updated(GObject *self,
+ guint type,
+ gpointer data,
+ gpointer accuracy,
+ gpointer userdata)
{
g_debug("cb_service_updated: type(%d) userdata(0x%x)", type, (unsigned int)userdata);
}
static void
-cb_service_enabled (GObject *self,
- guint status,
- gpointer userdata)
+cb_service_enabled(GObject *self,
+ guint status,
+ gpointer userdata)
{
g_debug("cb_service_enabled: status(%d) userdata(0x%x)", status, (unsigned int)userdata);
}
static void
-cb_service_disabled (GObject *self,
- guint status,
- gpointer userdata)
+cb_service_disabled(GObject *self,
+ guint status,
+ gpointer userdata)
{
g_debug("cb_service_disabled: status(%d) userdata(0x%x)", status, (unsigned int)userdata);
}
int
-main (int argc, char *argv[])
+main(int argc, char *argv[])
{
LocationObject *loc = NULL;
- location_init ();
+ location_init();
- loop = g_main_loop_new (NULL, TRUE);
+ loop = g_main_loop_new(NULL, TRUE);
- loc = location_new (LOCATION_METHOD_GPS);
+ loc = location_new(LOCATION_METHOD_GPS);
if (!loc) {
g_debug("location_new failed");
return -1;
g_object_get(loc, "method", &method, NULL);
g_debug("Get property>> method:%d", method);
- g_signal_connect (loc, "service-enabled", G_CALLBACK(cb_service_enabled), loc);
- g_signal_connect (loc, "service-disabled", G_CALLBACK(cb_service_disabled), loc);
- g_signal_connect (loc, "service-updated", G_CALLBACK(cb_service_updated), loc);
+ g_signal_connect(loc, "service-enabled", G_CALLBACK(cb_service_enabled), loc);
+ g_signal_connect(loc, "service-disabled", G_CALLBACK(cb_service_disabled), loc);
+ g_signal_connect(loc, "service-updated", G_CALLBACK(cb_service_updated), loc);
- if( LOCATION_ERROR_NONE != location_start (loc) ){
+ if (LOCATION_ERROR_NONE != location_start(loc)) {
g_debug("location_start failed");
return -1;
}
- g_timeout_add_seconds (60, exit_program, NULL);
- g_main_loop_run (loop);
+ g_timeout_add_seconds(60, exit_program, NULL);
+ g_main_loop_run(loop);
- location_stop (loc);
+ location_stop(loc);
LocationPosition *pos = NULL;
g_object_get(loc, "last-position", &pos, NULL);
if (pos) {
- g_debug ("Get property>> last-position> time: %d, lat: %f, long: %f, alt: %f, status: %d",
- pos->timestamp, pos->latitude, pos->longitude, pos->altitude, pos->status);
+ g_debug("Get property>> last-position> time: %d, lat: %f, long: %f, alt: %f, status: %d",
+ pos->timestamp, pos->latitude, pos->longitude, pos->altitude, pos->status);
location_position_free(pos);
} else g_warning("failed to get property> last-position");
- location_free (loc);
+ location_free(loc);
return 0;
}
#include <location.h>
static GMainLoop *loop = NULL;
-GSource* sat_src = NULL;
+GSource *sat_src = NULL;
static gboolean
-exit_program (gpointer data)
+exit_program(gpointer data)
{
- g_main_loop_quit (loop);
- g_debug ("Quit g_main_loop");
+ g_main_loop_quit(loop);
+ g_debug("Quit g_main_loop");
return FALSE;
}
static void
-cb_service_updated (GObject *self,
- guint type,
- gpointer data,
- gpointer accuracy,
- gpointer userdata)
+cb_service_updated(GObject *self,
+ guint type,
+ gpointer data,
+ gpointer accuracy,
+ gpointer userdata)
{
g_debug("cb_service_updated: type(%d) userdata(0x%x)", type, (unsigned int)userdata);
- LocationObject *loc = (LocationObject*)userdata;
+ LocationObject *loc = (LocationObject *)userdata;
LocationSatellite *sat = NULL;
int idx = 0;
- g_object_get (loc, "satellite", &sat, NULL);
+ g_object_get(loc, "satellite", &sat, NULL);
if (sat) {
- g_debug ("SYNC>> Current Sattelite> satellite in view = %d, satellite in used = %d", sat->num_of_sat_inview, sat->num_of_sat_used);
- g_debug ("\tinview satellite information = ");
- for (idx=0; idx<sat->num_of_sat_inview; idx++) {
+ g_debug("SYNC>> Current Sattelite> satellite in view = %d, satellite in used = %d", sat->num_of_sat_inview, sat->num_of_sat_used);
+ g_debug("\tinview satellite information = ");
+ for (idx = 0; idx < sat->num_of_sat_inview; idx++) {
guint prn;
gboolean used;
guint elevation;
guint azimuth;
gint snr;
location_satellite_get_satellite_details(sat, idx, &prn, &used, &elevation, &azimuth, &snr);
- g_debug ("\t\t[%02d] used: %d, prn: %d, elevation: %d, azimuth: %d, snr: %d",
- idx, used, prn, elevation, azimuth, snr);
+ g_debug("\t\t[%02d] used: %d, prn: %d, elevation: %d, azimuth: %d, snr: %d",
+ idx, used, prn, elevation, azimuth, snr);
}
- location_satellite_free (sat);
- } else g_warning ("SYNC>> Current Sattelite> failed");
+ location_satellite_free(sat);
+ } else g_warning("SYNC>> Current Sattelite> failed");
}
static void
-cb_service_enabled (GObject *self,
- guint status,
- gpointer userdata)
+cb_service_enabled(GObject *self,
+ guint status,
+ gpointer userdata)
{
g_debug("cb_service_enabled: status(%d) userdata(0x%x)", status, (unsigned int)userdata);
}
static void
-cb_service_disabled (GObject *self,
- guint status,
- gpointer userdata)
+cb_service_disabled(GObject *self,
+ guint status,
+ gpointer userdata)
{
g_debug("cb_service_disabled: status(%d) userdata(0x%x)", status, (unsigned int)userdata);
}
int
-main (int argc, char *argv[])
+main(int argc, char *argv[])
{
LocationObject *loc = NULL;
- location_init ();
+ location_init();
- loop = g_main_loop_new (NULL, TRUE);
+ loop = g_main_loop_new(NULL, TRUE);
- loc = location_new (LOCATION_METHOD_GPS);
+ loc = location_new(LOCATION_METHOD_GPS);
if (!loc) {
g_debug("location_new failed");
return -1;
}
- g_signal_connect (loc, "service-enabled", G_CALLBACK(cb_service_enabled), loc);
- g_signal_connect (loc, "service-disabled", G_CALLBACK(cb_service_disabled), loc);
- g_signal_connect (loc, "service-updated", G_CALLBACK(cb_service_updated), loc);
+ g_signal_connect(loc, "service-enabled", G_CALLBACK(cb_service_enabled), loc);
+ g_signal_connect(loc, "service-disabled", G_CALLBACK(cb_service_disabled), loc);
+ g_signal_connect(loc, "service-updated", G_CALLBACK(cb_service_updated), loc);
- if( LOCATION_ERROR_NONE != location_start (loc) ){
+ if (LOCATION_ERROR_NONE != location_start(loc)) {
g_debug("location_start failed");
return -1;
}
g_timeout_add_seconds(60, exit_program, NULL);
- g_main_loop_run (loop);
+ g_main_loop_run(loop);
- location_stop (loc);
- location_free (loc);
+ location_stop(loc);
+ location_free(loc);
return 0;
}
static GMainLoop *loop = NULL;
static gboolean
-exit_program (gpointer data)
+exit_program(gpointer data)
{
- g_main_loop_quit (loop);
- g_debug ("Quit g_main_loop");
+ g_main_loop_quit(loop);
+ g_debug("Quit g_main_loop");
return FALSE;
}
static void
-cb_service_updated (GObject *self,
- guint type,
- gpointer data,
- gpointer accuracy,
- gpointer userdata)
+cb_service_updated(GObject *self,
+ guint type,
+ gpointer data,
+ gpointer accuracy,
+ gpointer userdata)
{
g_debug("cb_service_updated: type(%d) userdata(0x%x)", type, (unsigned int)userdata);
- LocationAccuracy *acc = (LocationAccuracy*) accuracy;
+ LocationAccuracy *acc = (LocationAccuracy *) accuracy;
switch (type) {
- case VELOCITY_UPDATED: {
- LocationVelocity *vel = (LocationVelocity*) data;
- g_debug ("ASYNC>> Current velocity> time: %d, speed: %f, direction:%f, climb:%f",
- vel->timestamp, vel->speed, vel->direction, vel->climb);
- g_debug ("\tAccuracy level %d (%.0f meters %.0f meters)",
- acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
- }
+ case VELOCITY_UPDATED: {
+ LocationVelocity *vel = (LocationVelocity *) data;
+ g_debug("ASYNC>> Current velocity> time: %d, speed: %f, direction:%f, climb:%f",
+ vel->timestamp, vel->speed, vel->direction, vel->climb);
+ g_debug("\tAccuracy level %d (%.0f meters %.0f meters)",
+ acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
+ }
}
}
static void
-cb_service_enabled (GObject *self,
- guint status,
- gpointer userdata)
+cb_service_enabled(GObject *self,
+ guint status,
+ gpointer userdata)
{
g_debug("cb_service_enabled: status(%d) userdata(0x%x)", status, (unsigned int)userdata);
- LocationObject *loc = (LocationObject*)userdata;
+ LocationObject *loc = (LocationObject *)userdata;
LocationAccuracy *acc = NULL;
LocationVelocity *vel = NULL;
- if (LOCATION_ERROR_NONE == location_get_velocity (loc, &vel, &acc)) {
- g_debug ("SYNC>> Current velocity> time: %d, speed: %f, direction:%f, climb:%f",
- vel->timestamp, vel->speed, vel->direction, vel->climb);
- g_debug ("\tAccuracy level %d (%.0f meters %.0f meters)",
- acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
+ if (LOCATION_ERROR_NONE == location_get_velocity(loc, &vel, &acc)) {
+ g_debug("SYNC>> Current velocity> time: %d, speed: %f, direction:%f, climb:%f",
+ vel->timestamp, vel->speed, vel->direction, vel->climb);
+ g_debug("\tAccuracy level %d (%.0f meters %.0f meters)",
+ acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
location_velocity_free(vel);
location_accuracy_free(acc);
- } else g_warning ("SYNC>> Current velocity> failed");
+ } else g_warning("SYNC>> Current velocity> failed");
}
static void
-cb_service_disabled (GObject *self,
- guint status,
- gpointer userdata)
+cb_service_disabled(GObject *self,
+ guint status,
+ gpointer userdata)
{
g_debug("cb_service_disabled: status(%d) userdata(0x%x)", status, (unsigned int)userdata);
}
int
-main (int argc, char *argv[])
+main(int argc, char *argv[])
{
LocationObject *loc = NULL;
- location_init ();
+ location_init();
- loop = g_main_loop_new (NULL, TRUE);
+ loop = g_main_loop_new(NULL, TRUE);
- loc = location_new (LOCATION_METHOD_GPS);
+ loc = location_new(LOCATION_METHOD_GPS);
if (!loc) {
g_debug("location_new failed");
return -1;
}
- g_signal_connect (loc, "service-enabled", G_CALLBACK(cb_service_enabled), loc);
- g_signal_connect (loc, "service-disabled", G_CALLBACK(cb_service_disabled), loc);
- g_signal_connect (loc, "service-updated", G_CALLBACK(cb_service_updated), loc);
+ g_signal_connect(loc, "service-enabled", G_CALLBACK(cb_service_enabled), loc);
+ g_signal_connect(loc, "service-disabled", G_CALLBACK(cb_service_disabled), loc);
+ g_signal_connect(loc, "service-updated", G_CALLBACK(cb_service_updated), loc);
- if( LOCATION_ERROR_NONE != location_start (loc) ){
+ if (LOCATION_ERROR_NONE != location_start(loc)) {
g_debug("location_start failed");
return -1;
}
g_timeout_add_seconds(60, exit_program, NULL);
- g_main_loop_run (loop);
+ g_main_loop_run(loop);
- location_stop (loc);
- location_free (loc);
+ location_stop(loc);
+ location_free(loc);
return 0;
}
static GMainLoop *loop = NULL;
static void
-cb_service_updated (GObject *self,
- guint type,
- gpointer data,
- gpointer accuracy,
- gpointer userdata)
+cb_service_updated(GObject *self,
+ guint type,
+ gpointer data,
+ gpointer accuracy,
+ gpointer userdata)
{
g_debug("cb_service_updated: type(%d) userdata(0x%x)", type, (unsigned int)userdata);
- LocationAccuracy *acc = (LocationAccuracy*) accuracy;
+ LocationAccuracy *acc = (LocationAccuracy *) accuracy;
switch (type) {
- case POSITION_UPDATED: {
- LocationPosition *pos = (LocationPosition*) data;
- g_debug ("ASYNC>> Current position> time: %d, lat: %f, long: %f, alt: %f, status: %d",
- pos->timestamp, pos->latitude, pos->longitude, pos->altitude, pos->status);
- g_debug ("\tAccuracy level %d (%.0f meters %.0f meters)",
- acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
- }
- break;
- case VELOCITY_UPDATED: {
- LocationVelocity *vel = (LocationVelocity*) data;
- g_debug ("ASYNC>> Current velocity> time: %d, speed: %f, direction:%f, climb:%f",
- vel->timestamp, vel->speed, vel->direction, vel->climb);
- g_debug ("\tAccuracy level %d (%.0f meters %.0f meters)",
- acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
- }
- break;
- default:
- g_warning ("ASYNC>> Undefined update type");
- break;
+ case POSITION_UPDATED: {
+ LocationPosition *pos = (LocationPosition *) data;
+ g_debug("ASYNC>> Current position> time: %d, lat: %f, long: %f, alt: %f, status: %d",
+ pos->timestamp, pos->latitude, pos->longitude, pos->altitude, pos->status);
+ g_debug("\tAccuracy level %d (%.0f meters %.0f meters)",
+ acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
+ }
+ break;
+ case VELOCITY_UPDATED: {
+ LocationVelocity *vel = (LocationVelocity *) data;
+ g_debug("ASYNC>> Current velocity> time: %d, speed: %f, direction:%f, climb:%f",
+ vel->timestamp, vel->speed, vel->direction, vel->climb);
+ g_debug("\tAccuracy level %d (%.0f meters %.0f meters)",
+ acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
+ }
+ break;
+ default:
+ g_warning("ASYNC>> Undefined update type");
+ break;
}
}
static void
-cb_service_enabled (GObject *self,
- guint status,
- gpointer userdata)
+cb_service_enabled(GObject *self,
+ guint status,
+ gpointer userdata)
{
g_debug("cb_service_enabled: status(%d) userdata(0x%x)", status, (unsigned int)userdata);
- LocationObject *loc = (LocationObject*)userdata;
+ LocationObject *loc = (LocationObject *)userdata;
LocationAccuracy *acc = NULL;
LocationPosition *pos = NULL;
LocationVelocity *vel = NULL;
- if (LOCATION_ERROR_NONE == location_get_position (loc, &pos, &acc)) {
- g_debug ("SYNC>> Current position> time: %d, lat: %f, long: %f, alt: %f, status: %d",
- pos->timestamp, pos->latitude, pos->longitude, pos->altitude, pos->status);
- g_debug ("\tAccuracy level %d (%.0f meters %.0f meters)",
- acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
+ if (LOCATION_ERROR_NONE == location_get_position(loc, &pos, &acc)) {
+ g_debug("SYNC>> Current position> time: %d, lat: %f, long: %f, alt: %f, status: %d",
+ pos->timestamp, pos->latitude, pos->longitude, pos->altitude, pos->status);
+ g_debug("\tAccuracy level %d (%.0f meters %.0f meters)",
+ acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
location_position_free(pos);
location_accuracy_free(acc);
- } else g_warning ("SYNC>> Current position> failed");
- if (LOCATION_ERROR_NONE == location_get_velocity (loc, &vel, &acc)) {
- g_debug ("SYNC>> Current velocity> time: %d, speed: %f, direction:%f, climb:%f",
- vel->timestamp, vel->speed, vel->direction, vel->climb);
- g_debug ("\tAccuracy level %d (%.0f meters %.0f meters)",
- acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
+ } else g_warning("SYNC>> Current position> failed");
+ if (LOCATION_ERROR_NONE == location_get_velocity(loc, &vel, &acc)) {
+ g_debug("SYNC>> Current velocity> time: %d, speed: %f, direction:%f, climb:%f",
+ vel->timestamp, vel->speed, vel->direction, vel->climb);
+ g_debug("\tAccuracy level %d (%.0f meters %.0f meters)",
+ acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
location_velocity_free(vel);
location_accuracy_free(acc);
- } else g_warning ("SYNC>> Current velocity> failed");
+ } else g_warning("SYNC>> Current velocity> failed");
}
static void
-cb_service_disabled (GObject *self,
- guint status,
- gpointer userdata)
+cb_service_disabled(GObject *self,
+ guint status,
+ gpointer userdata)
{
g_debug("cb_service_disabled: status(%d) userdata(0x%x)", status, (unsigned int)userdata);
}
static void
-cb_zone_in (GObject *self,
- gpointer boundary,
- gpointer position,
- gpointer accuracy)
+cb_zone_in(GObject *self,
+ gpointer boundary,
+ gpointer position,
+ gpointer accuracy)
{
- LocationPosition *pos = (LocationPosition*) position;
- LocationAccuracy *acc = (LocationAccuracy*) accuracy;
+ LocationPosition *pos = (LocationPosition *) position;
+ LocationAccuracy *acc = (LocationAccuracy *) accuracy;
- g_debug ("ASYNC>> ZoneIn> Current position: time: %d, lat: %f, long: %f, alt: %f",
- pos->timestamp, pos->latitude, pos->longitude, pos->altitude);
- g_debug ("\tAccuracy level %d (%.0f meters %.0f meters)",
- acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
+ g_debug("ASYNC>> ZoneIn> Current position: time: %d, lat: %f, long: %f, alt: %f",
+ pos->timestamp, pos->latitude, pos->longitude, pos->altitude);
+ g_debug("\tAccuracy level %d (%.0f meters %.0f meters)",
+ acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
}
static void
-cb_zone_out (GObject *self,
- gpointer boundary,
- gpointer position,
- gpointer accuracy)
+cb_zone_out(GObject *self,
+ gpointer boundary,
+ gpointer position,
+ gpointer accuracy)
{
- LocationPosition *pos = (LocationPosition*) position;
- LocationAccuracy *acc = (LocationAccuracy*) accuracy;
+ LocationPosition *pos = (LocationPosition *) position;
+ LocationAccuracy *acc = (LocationAccuracy *) accuracy;
- g_debug ("ASYNC>> ZoneOut> Current position: time: %d, lat: %f, long: %f, alt: %f",
- pos->timestamp, pos->latitude, pos->longitude, pos->altitude);
- g_debug ("\tAccuracy level %d (%.0f meters %.0f meters)",
- acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
+ g_debug("ASYNC>> ZoneOut> Current position: time: %d, lat: %f, long: %f, alt: %f",
+ pos->timestamp, pos->latitude, pos->longitude, pos->altitude);
+ g_debug("\tAccuracy level %d (%.0f meters %.0f meters)",
+ acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
}
int
-main (int argc, char *argv[])
+main(int argc, char *argv[])
{
LocationObject *loc = NULL;
- // If application is executed by AUL, this is not needed.
+ /* If application is executed by AUL, this is not needed. */
g_setenv("PKG_NAME", "com.samsung.wps-test", 1);
- location_init ();
+ location_init();
- loop = g_main_loop_new (NULL, TRUE);
+ loop = g_main_loop_new(NULL, TRUE);
- loc = location_new (LOCATION_METHOD_WPS);
+ loc = location_new(LOCATION_METHOD_WPS);
if (!loc) {
g_debug("location_new failed");
return -1;
g_object_get(loc, "boundary", &bound, NULL);
if (bound) {
g_debug("Get property>> boundary> type: %d", bound->type);
- location_boundary_free (bound);
+ location_boundary_free(bound);
} else g_warning("failed to get property> boundary");
LocationPosition *rb = location_position_new(0, 37.255, 127.056, 0, LOCATION_STATUS_2D_FIX);
LocationPosition *lt = location_position_new(0, 37.260, 127.050, 0, LOCATION_STATUS_2D_FIX);
bound = location_boundary_new_for_rect(lt, rb);
- location_position_free (rb);
- location_position_free (lt);
+ location_position_free(rb);
+ location_position_free(lt);
if (bound) {
g_object_set(loc, "boundary", bound, NULL);
location_boundary_free(bound);
g_object_get(loc, "boundary", &bound, NULL);
if (bound) {
g_debug("Set property>> boundary> type: %d, (%f,%f),(%f,%f)",
- bound->type,
- bound->rect.right_bottom->latitude, bound->rect.right_bottom->longitude,
- bound->rect.left_top->latitude, bound->rect.left_top->longitude);
- location_boundary_free (bound);
+ bound->type,
+ bound->rect.right_bottom->latitude, bound->rect.right_bottom->longitude,
+ bound->rect.left_top->latitude, bound->rect.left_top->longitude);
+ location_boundary_free(bound);
} else g_warning("failed to set property> boundary");
- g_signal_connect (loc, "service-enabled", G_CALLBACK(cb_service_enabled), loc);
- g_signal_connect (loc, "service-disabled", G_CALLBACK(cb_service_disabled), loc);
- g_signal_connect (loc, "service-updated", G_CALLBACK(cb_service_updated), loc);
- g_signal_connect (loc, "zone-in", G_CALLBACK(cb_zone_in), loc);
- g_signal_connect (loc, "zone-out", G_CALLBACK(cb_zone_out), loc);
+ g_signal_connect(loc, "service-enabled", G_CALLBACK(cb_service_enabled), loc);
+ g_signal_connect(loc, "service-disabled", G_CALLBACK(cb_service_disabled), loc);
+ g_signal_connect(loc, "service-updated", G_CALLBACK(cb_service_updated), loc);
+ g_signal_connect(loc, "zone-in", G_CALLBACK(cb_zone_in), loc);
+ g_signal_connect(loc, "zone-out", G_CALLBACK(cb_zone_out), loc);
- if (LOCATION_ERROR_NONE != location_start (loc)) {
+ if (LOCATION_ERROR_NONE != location_start(loc)) {
g_debug("location_start failed");
return -1;
}
- g_main_loop_run (loop);
+ g_main_loop_run(loop);
- location_stop (loc);
+ location_stop(loc);
LocationPosition *pos = NULL;
g_object_get(loc, "last-position", &pos, NULL);
if (pos) {
- g_debug ("Get property>> last-position> time: %d, lat: %f, long: %f, alt: %f, status: %d",
- pos->timestamp, pos->latitude, pos->longitude, pos->altitude, pos->status);
+ g_debug("Get property>> last-position> time: %d, lat: %f, long: %f, alt: %f, status: %d",
+ pos->timestamp, pos->latitude, pos->longitude, pos->altitude, pos->status);
location_position_free(pos);
} else g_warning("failed to get property> last-position");
- location_free (loc);
+ location_free(loc);
return 0;
}
static GMainLoop *loop = NULL;
static gboolean
-exit_program (gpointer data)
+exit_program(gpointer data)
{
- g_main_loop_quit (loop);
- g_debug ("Quit g_main_loop");
+ g_main_loop_quit(loop);
+ g_debug("Quit g_main_loop");
return FALSE;
}
static void
-cb_service_enabled (GObject *self,
- guint status,
- gpointer userdata)
+cb_service_enabled(GObject *self,
+ guint status,
+ gpointer userdata)
{
g_debug("cb_service_enabled: status(%d) userdata(0x%x)", status, (unsigned int)userdata);
}
static void
-cb_service_disabled (GObject *self,
- guint status,
- gpointer userdata)
+cb_service_disabled(GObject *self,
+ guint status,
+ gpointer userdata)
{
- g_debug("cb_service_disabled: status(%d) userdata(0x%x)", status, (unsigned int)userdata);
+ g_debug("cb_service_disabled: status(%d) userdata(0x%x)", status, (unsigned int)userdata);
}
static void
-cb_zone_in (GObject *self,
- gpointer boundary,
- gpointer position,
- gpointer accuracy)
+cb_zone_in(GObject *self,
+ gpointer boundary,
+ gpointer position,
+ gpointer accuracy)
{
- LocationPosition *pos = (LocationPosition*) position;
- LocationAccuracy *acc = (LocationAccuracy*) accuracy;
+ LocationPosition *pos = (LocationPosition *) position;
+ LocationAccuracy *acc = (LocationAccuracy *) accuracy;
- g_debug ("ASYNC>> ZoneIn> Current position: time: %d, lat: %f, long: %f, alt: %f",
- pos->timestamp, pos->latitude, pos->longitude, pos->altitude);
- g_debug ("\tAccuracy level %d (%.0f meters %.0f meters)",
- acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
+ g_debug("ASYNC>> ZoneIn> Current position: time: %d, lat: %f, long: %f, alt: %f",
+ pos->timestamp, pos->latitude, pos->longitude, pos->altitude);
+ g_debug("\tAccuracy level %d (%.0f meters %.0f meters)",
+ acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
}
static void
-cb_zone_out (GObject *self,
- gpointer boundary,
- gpointer position,
- gpointer accuracy)
+cb_zone_out(GObject *self,
+ gpointer boundary,
+ gpointer position,
+ gpointer accuracy)
{
- LocationPosition *pos = (LocationPosition*) position;
- LocationAccuracy *acc = (LocationAccuracy*) accuracy;
+ LocationPosition *pos = (LocationPosition *) position;
+ LocationAccuracy *acc = (LocationAccuracy *) accuracy;
- g_debug ("ASYNC>> ZoneOut> Current position: time: %d, lat: %f, long: %f, alt: %f",
- pos->timestamp, pos->latitude, pos->longitude, pos->altitude);
- g_debug ("\tAccuracy level %d (%.0f meters %.0f meters)",
- acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
+ g_debug("ASYNC>> ZoneOut> Current position: time: %d, lat: %f, long: %f, alt: %f",
+ pos->timestamp, pos->latitude, pos->longitude, pos->altitude);
+ g_debug("\tAccuracy level %d (%.0f meters %.0f meters)",
+ acc->level, acc->horizontal_accuracy, acc->vertical_accuracy);
}
int
-main (int argc, char *argv[])
+main(int argc, char *argv[])
{
LocationObject *loc = NULL;
- location_init ();
+ location_init();
- loop = g_main_loop_new (NULL, TRUE);
+ loop = g_main_loop_new(NULL, TRUE);
- loc = location_new (LOCATION_METHOD_GPS);
+ loc = location_new(LOCATION_METHOD_GPS);
if (!loc) {
g_debug("location_new failed");
return -1;
LocationPosition *rb = location_position_new(0, 37.258, 127.056, 0, LOCATION_STATUS_2D_FIX);
LocationPosition *lt = location_position_new(0, 37.260, 127.054, 0, LOCATION_STATUS_2D_FIX);
LocationBoundary *bound = location_boundary_new_for_rect(lt, rb);
- location_position_free (rb);
- location_position_free (lt);
+ location_position_free(rb);
+ location_position_free(lt);
if (bound) {
g_object_set(loc, "boundary", bound, NULL);
location_boundary_free(bound);
g_object_get(loc, "boundary", &bound, NULL);
if (bound) {
g_debug("Set property>> boundary> type: %d, (%f,%f),(%f,%f)",
- bound->type,
- bound->rect.right_bottom->latitude, bound->rect.right_bottom->longitude,
- bound->rect.left_top->latitude, bound->rect.left_top->longitude);
- location_boundary_free (bound);
+ bound->type,
+ bound->rect.right_bottom->latitude, bound->rect.right_bottom->longitude,
+ bound->rect.left_top->latitude, bound->rect.left_top->longitude);
+ location_boundary_free(bound);
} else g_warning("failed to set property> boundary");
- g_signal_connect (loc, "service-enabled", G_CALLBACK(cb_service_enabled), loc);
- g_signal_connect (loc, "service-disabled", G_CALLBACK(cb_service_disabled), loc);
- g_signal_connect (loc, "zone-in", G_CALLBACK(cb_zone_in), loc);
- g_signal_connect (loc, "zone-out", G_CALLBACK(cb_zone_out), loc);
+ g_signal_connect(loc, "service-enabled", G_CALLBACK(cb_service_enabled), loc);
+ g_signal_connect(loc, "service-disabled", G_CALLBACK(cb_service_disabled), loc);
+ g_signal_connect(loc, "zone-in", G_CALLBACK(cb_zone_in), loc);
+ g_signal_connect(loc, "zone-out", G_CALLBACK(cb_zone_out), loc);
- if( LOCATION_ERROR_NONE != location_start (loc) ){
+ if (LOCATION_ERROR_NONE != location_start(loc)) {
g_debug("location_start failed");
return -1;
}
- g_timeout_add_seconds (60, exit_program, NULL);
- g_main_loop_run (loop);
+ g_timeout_add_seconds(60, exit_program, NULL);
+ g_main_loop_run(loop);
- location_stop (loc);
- location_free (loc);
+ location_stop(loc);
+ location_free(loc);
return 0;
}