Initialize Tizen 2.3 2.3a_release submit/tizen_2.3/20140531.112312
authorSehong Na <sehong.na@samsung.com>
Sat, 31 May 2014 04:01:04 +0000 (13:01 +0900)
committerSehong Na <sehong.na@samsung.com>
Sat, 31 May 2014 04:01:04 +0000 (13:01 +0900)
129 files changed:
mobile/AUTHORS [new file with mode: 0644]
mobile/CMakeLists.txt [new file with mode: 0644]
mobile/LICENSE [new file with mode: 0644]
mobile/TC/build.sh [new file with mode: 0755]
mobile/TC/execute.sh [new file with mode: 0755]
mobile/TC/tet_code [new file with mode: 0755]
mobile/TC/tet_scen [new file with mode: 0755]
mobile/TC/tetbuild.cfg [new file with mode: 0755]
mobile/TC/tetclean.cfg [new file with mode: 0755]
mobile/TC/tetexec.cfg [new file with mode: 0755]
mobile/TC/unit/Makefile [new file with mode: 0644]
mobile/TC/unit/tc_gen.sh [new file with mode: 0755]
mobile/TC/unit/tslist [new file with mode: 0644]
mobile/TC/unit/utc_MODULE_API_func.c.in [new file with mode: 0644]
mobile/data/syspopup_db.sql [new file with mode: 0755]
mobile/debian/changelog [new file with mode: 0755]
mobile/debian/compat [new file with mode: 0644]
mobile/debian/control [new file with mode: 0644]
mobile/debian/dirs [new file with mode: 0644]
mobile/debian/docs [new file with mode: 0644]
mobile/debian/rules [new file with mode: 0755]
mobile/debian/syspopup-0.install.in [new file with mode: 0644]
mobile/debian/syspopup-0.postinst [new file with mode: 0644]
mobile/debian/syspopup-caller-0.install.in [new file with mode: 0644]
mobile/debian/syspopup-caller-0.postinst [new file with mode: 0644]
mobile/debian/syspopup-caller-dev.install.in [new file with mode: 0644]
mobile/debian/syspopup-dev.install.in [new file with mode: 0644]
mobile/image/README [new file with mode: 0644]
mobile/include/SLP_SYSPOPUP_PG.h [new file with mode: 0755]
mobile/include/pg-doxy/doxygen.conf [new file with mode: 0755]
mobile/include/pg-doxy/pg-doxy.sh [new file with mode: 0755]
mobile/include/pg-doxy/slp_doxy.css [new file with mode: 0644]
mobile/include/pg-doxy/tool/bin/doxygen [new file with mode: 0755]
mobile/include/pg-doxy/tool/bin/doxytag [new file with mode: 0755]
mobile/include/pg-doxy/tool/man/man1/doxygen.1 [new file with mode: 0644]
mobile/include/pg-doxy/tool/man/man1/doxytag.1 [new file with mode: 0644]
mobile/include/simple_util.h [new file with mode: 0755]
mobile/include/syspopup.h [new file with mode: 0755]
mobile/include/syspopup_api.h [new file with mode: 0755]
mobile/include/syspopup_caller.h [new file with mode: 0755]
mobile/include/syspopup_core.h [new file with mode: 0755]
mobile/include/syspopup_db.h [new file with mode: 0755]
mobile/org.tizen.syspopup-app.manifest [new file with mode: 0644]
mobile/pg-doxy/doxygen.conf [new file with mode: 0755]
mobile/pg-doxy/pg-doxy.sh [new file with mode: 0755]
mobile/pg-doxy/slp_doxy.css [new file with mode: 0644]
mobile/pg-doxy/tool/bin/doxygen [new file with mode: 0755]
mobile/pg-doxy/tool/bin/doxytag [new file with mode: 0755]
mobile/pg-doxy/tool/man/man1/doxygen.1 [new file with mode: 0644]
mobile/pg-doxy/tool/man/man1/doxytag.1 [new file with mode: 0644]
mobile/src/syspopup_core.c [new file with mode: 0755]
mobile/src/syspopup_db.c [new file with mode: 0755]
mobile/syspopup-app/CMakeLists.txt [new file with mode: 0644]
mobile/syspopup-app/INSTALL [new file with mode: 0644]
mobile/syspopup-app/org.tizen.syspopup-app.png [new file with mode: 0644]
mobile/syspopup-app/org.tizen.syspopup-app.xml.in [new file with mode: 0755]
mobile/syspopup-app/po/CMakeLists.txt [new file with mode: 0644]
mobile/syspopup-app/po/POTFILES.in [new file with mode: 0644]
mobile/syspopup-app/po/en_GB.po [new file with mode: 0644]
mobile/syspopup-app/po/en_US.po [new file with mode: 0644]
mobile/syspopup-app/po/ja.po [new file with mode: 0644]
mobile/syspopup-app/po/ko.po [new file with mode: 0644]
mobile/syspopup-app/po/syspopup-tempapp.pot [new file with mode: 0644]
mobile/syspopup-app/po/update-po.sh [new file with mode: 0755]
mobile/syspopup-app/po/zh_CN.po [new file with mode: 0644]
mobile/syspopup-app/syspopup-app.c [new file with mode: 0755]
mobile/syspopup-app/syspopup-app.h [new file with mode: 0755]
mobile/syspopup-caller.manifest [new file with mode: 0644]
mobile/syspopup-caller/CMakeLists.txt [new file with mode: 0644]
mobile/syspopup-caller/syspopup-caller.pc.in [new file with mode: 0644]
mobile/syspopup-caller/syspopup_caller.c [new file with mode: 0755]
mobile/syspopup.manifest [new file with mode: 0644]
mobile/syspopup/CMakeLists.txt [new file with mode: 0644]
mobile/syspopup/syspopup.c [new file with mode: 0755]
mobile/syspopup/syspopup.pc.in [new file with mode: 0644]
mobile/syspopup/syspopup_efl.c [new file with mode: 0755]
mobile/test/CMakeLists.txt [new file with mode: 0644]
mobile/test/test.c [new file with mode: 0755]
packaging/syspopup.spec [new file with mode: 0755]
wearable/AUTHORS [new file with mode: 0644]
wearable/CMakeLists.txt [new file with mode: 0644]
wearable/LICENSE [new file with mode: 0644]
wearable/TC/build.sh [new file with mode: 0755]
wearable/TC/execute.sh [new file with mode: 0755]
wearable/TC/tet_code [new file with mode: 0755]
wearable/TC/tet_scen [new file with mode: 0755]
wearable/TC/tetbuild.cfg [new file with mode: 0755]
wearable/TC/tetclean.cfg [new file with mode: 0755]
wearable/TC/tetexec.cfg [new file with mode: 0755]
wearable/TC/unit/Makefile [new file with mode: 0644]
wearable/TC/unit/tc_gen.sh [new file with mode: 0755]
wearable/TC/unit/tslist [new file with mode: 0644]
wearable/TC/unit/utc_MODULE_API_func.c.in [new file with mode: 0644]
wearable/data/syspopup_db.sql [new file with mode: 0755]
wearable/image/syspopup_diag.png [new file with mode: 0755]
wearable/include/SLP_SYSPOPUP_PG.h [new file with mode: 0755]
wearable/include/pg-doxy/doxygen.conf [new file with mode: 0755]
wearable/include/pg-doxy/pg-doxy.sh [new file with mode: 0755]
wearable/include/pg-doxy/slp_doxy.css [new file with mode: 0644]
wearable/include/pg-doxy/tool/bin/doxygen [new file with mode: 0755]
wearable/include/pg-doxy/tool/bin/doxytag [new file with mode: 0755]
wearable/include/pg-doxy/tool/man/man1/doxygen.1 [new file with mode: 0644]
wearable/include/pg-doxy/tool/man/man1/doxytag.1 [new file with mode: 0644]
wearable/include/simple_util.h [new file with mode: 0755]
wearable/include/syspopup.h [new file with mode: 0755]
wearable/include/syspopup_api.h [new file with mode: 0755]
wearable/include/syspopup_caller.h [new file with mode: 0755]
wearable/include/syspopup_core.h [new file with mode: 0755]
wearable/include/syspopup_db.h [new file with mode: 0755]
wearable/pg-doxy/doxygen.conf [new file with mode: 0755]
wearable/pg-doxy/pg-doxy.sh [new file with mode: 0755]
wearable/pg-doxy/slp_doxy.css [new file with mode: 0644]
wearable/pg-doxy/tool/bin/doxygen [new file with mode: 0755]
wearable/pg-doxy/tool/bin/doxytag [new file with mode: 0755]
wearable/pg-doxy/tool/man/man1/doxygen.1 [new file with mode: 0644]
wearable/pg-doxy/tool/man/man1/doxytag.1 [new file with mode: 0644]
wearable/src/syspopup_core.c [new file with mode: 0755]
wearable/src/syspopup_db.c [new file with mode: 0755]
wearable/syspopup-caller.manifest [new file with mode: 0755]
wearable/syspopup-caller/CMakeLists.txt [new file with mode: 0644]
wearable/syspopup-caller/syspopup-caller.pc.in [new file with mode: 0644]
wearable/syspopup-caller/syspopup_caller.c [new file with mode: 0755]
wearable/syspopup.manifest [new file with mode: 0755]
wearable/syspopup/CMakeLists.txt [new file with mode: 0644]
wearable/syspopup/syspopup.c [new file with mode: 0755]
wearable/syspopup/syspopup.pc.in [new file with mode: 0644]
wearable/syspopup/syspopup_efl.c [new file with mode: 0755]
wearable/test/CMakeLists.txt [new file with mode: 0644]
wearable/test/test.c [new file with mode: 0755]

diff --git a/mobile/AUTHORS b/mobile/AUTHORS
new file mode 100644 (file)
index 0000000..1e843b2
--- /dev/null
@@ -0,0 +1,5 @@
+Kunhoon Baik <knhoon.baik@samsung.com>
+Noha Park <noha.park@samsung.com>
+Jayoun Lee <airjany@samsung.com>
+Sewook Park <sewook7.park@samsung.com>
+Jaeho Lee <jaeho81.lee@samsung.com>
diff --git a/mobile/CMakeLists.txt b/mobile/CMakeLists.txt
new file mode 100644 (file)
index 0000000..9657830
--- /dev/null
@@ -0,0 +1,68 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+SET(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)
+
+PROJECT(syspopup_mods C)
+SET(VERSION 1.1)
+
+### Global setting ###
+
+SET(PREFIX ${CMAKE_INSTALL_PREFIX})
+SET(EXEC_PREFIX "\${prefix}")
+SET(INCLUDEDIR "\${prefix}/include")
+
+# Build type : Release
+IF("${CMAKE_BUILD_TYPE}" STREQUAL "")
+       SET(CMAKE_BUILD_TYPE "Release")
+ENDIF()
+MESSAGE("Build type: ${CMAKE_BUILD_TYPE}")
+
+# Set required packages
+INCLUDE(FindPkgConfig)
+
+pkg_check_modules(libpkgs REQUIRED aul dlog bundle sqlite3 glib-2.0 dbus-glib-1)
+
+FOREACH(flag ${libpkgs_CFLAGS})
+       SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+# Compiler flags
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
+SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -Wl,-zdefs" )
+SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fvisibility=hidden")
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -g")
+SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
+SET(CMAKE_C_FLAGS_RELEASE "-O2")
+
+SET(CMAKE_SKIP_BUILD_RPATH true)
+
+# Get uname value to set 'TARGET' definition 
+# TODO: Is this needed?
+FIND_PROGRAM(UNAME NAMES uname)
+EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH")
+IF("${ARCH}" STREQUAL "arm")
+       ADD_DEFINITIONS("-DTARGET")
+       MESSAGE("add -DTARGET")
+ENDIF("${ARCH}" STREQUAL "arm")
+
+ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"")
+
+# Linker flags
+SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed")
+
+### Build ###
+
+# aul_mods : modules (static library)
+add_library(syspopup_mods STATIC
+               src/syspopup_db.c
+               src/syspopup_core.c
+               )
+
+INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/include/SLP_SYSPOPUP_PG.h DESTINATION include)
+INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/data/syspopup_db.sql DESTINATION /usr/share/syspopup/)
+
+add_subdirectory(syspopup)
+add_subdirectory(syspopup-caller)
+
+# test
+add_subdirectory(test)
+add_subdirectory(syspopup-app)
diff --git a/mobile/LICENSE b/mobile/LICENSE
new file mode 100644 (file)
index 0000000..a06208b
--- /dev/null
@@ -0,0 +1,204 @@
+Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
diff --git a/mobile/TC/build.sh b/mobile/TC/build.sh
new file mode 100755 (executable)
index 0000000..98ebeff
--- /dev/null
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+export TET_INSTALL_PATH=/scratchbox/tetware  # local tetware path
+export TET_TARGET_PATH=$TET_INSTALL_PATH/tetware-target
+export PATH=$TET_TARGET_PATH/bin:$PATH
+export LD_LIBRARY_PATH=$TET_TARGET_PATH/lib/tet3:$LD_LIBRARY_PATH
+export TET_ROOT=$TET_TARGET_PATH
+
+export TET_SUITE_ROOT=`pwd`
+FILE_NAME_EXTENSION=`date +%s`
+
+RESULT_DIR=results
+HTML_RESULT=$RESULT_DIR/build-tar-result-$FILE_NAME_EXTENSION.html
+JOURNAL_RESULT=$RESULT_DIR/build-tar-result-$FILE_NAME_EXTENSION.journal
+
+mkdir -p $RESULT_DIR
+
+tcc -c -p ./
+tcc -b -j $JOURNAL_RESULT -p ./
+grw -c 3 -f chtml -o $HTML_RESULT $JOURNAL_RESULT
diff --git a/mobile/TC/execute.sh b/mobile/TC/execute.sh
new file mode 100755 (executable)
index 0000000..6720da0
--- /dev/null
@@ -0,0 +1,19 @@
+#!/bin/sh
+export TET_INSTALL_PATH=/mnt/nfs/tetware
+export TET_TARGET_PATH=$TET_INSTALL_PATH/tetware-target
+export PATH=$TET_TARGET_PATH/bin:$PATH
+export LD_LIBRARY_PATH=$TET_TARGET_PATH/lib/tet3:$LD_LIBRARY_PATH
+
+export TET_ROOT=$TET_TARGET_PATH
+
+export TET_SUITE_ROOT=`pwd`
+FILE_NAME_EXTENSION=`date +%s`
+
+RESULT_DIR=results
+HTML_RESULT=$RESULT_DIR/exec-tar-result-$FILE_NAME_EXTENSION.html
+JOURNAL_RESULT=$RESULT_DIR/exec-tar-result-$FILE_NAME_EXTENSION.journal
+
+mkdir -p $RESULT_DIR
+
+tcc -e -j $JOURNAL_RESULT -p ./
+grw -c 3 -f chtml -o $HTML_RESULT $JOURNAL_RESULT
diff --git a/mobile/TC/tet_code b/mobile/TC/tet_code
new file mode 100755 (executable)
index 0000000..a2cf6c1
--- /dev/null
@@ -0,0 +1,12 @@
+# TET reserved codes
+0 "PASS"
+1 "FAIL"
+2 "UNRESOLVED"
+3 "NOTINUSE"
+4 "UNSUPPORTED"
+5 "UNTESTED"
+6 "UNINITIATED"
+7 "NORESULT"
+
+# Test suite additional codes
+33 "INSPECT"
diff --git a/mobile/TC/tet_scen b/mobile/TC/tet_scen
new file mode 100755 (executable)
index 0000000..43cbc9b
--- /dev/null
@@ -0,0 +1,7 @@
+all
+       ^TEST
+##### Scenarios for TEST #####
+
+# Test scenario
+TEST
+       :include:/unit/tslist
diff --git a/mobile/TC/tetbuild.cfg b/mobile/TC/tetbuild.cfg
new file mode 100755 (executable)
index 0000000..6192c78
--- /dev/null
@@ -0,0 +1,3 @@
+TET_OUTPUT_CAPTURE=False
+TET_BUILD_TOOL=make
+TET_PASS_TC_NAME=True
diff --git a/mobile/TC/tetclean.cfg b/mobile/TC/tetclean.cfg
new file mode 100755 (executable)
index 0000000..c66eda4
--- /dev/null
@@ -0,0 +1,2 @@
+TET_OUTPUT_CAPTURE=False
+TET_CLEAN_TOOL=make clean
diff --git a/mobile/TC/tetexec.cfg b/mobile/TC/tetexec.cfg
new file mode 100755 (executable)
index 0000000..0d9d39a
--- /dev/null
@@ -0,0 +1 @@
+TET_OUTPUT_CAPTURE=False
diff --git a/mobile/TC/unit/Makefile b/mobile/TC/unit/Makefile
new file mode 100644 (file)
index 0000000..631550c
--- /dev/null
@@ -0,0 +1,21 @@
+CC ?= gcc
+
+TARGETS = 
+PKGS = syspopup 
+
+LDFLAGS = `pkg-config --libs $(PKGS)`
+LDFLAGS += $(TET_ROOT)/lib/tet3/tcm_s.o
+LDFLAGS += -L$(TET_ROOT)/lib/tet3 -ltcm_s
+LDFLAGS += -L$(TET_ROOT)/lib/tet3 -lapi_s
+
+CFLAGS = -I. `pkg-config --cflags $(PKGS)`
+CFLAGS += -I$(TET_ROOT)/inc/tet3
+CFLAGS += -Wall
+
+all: $(TARGETS)
+
+$(TARGET): %: %.c
+       $(CC) -o $@ $< $(CFLAGS) $(LDFLAGS)
+
+clean:
+       rm -f $(TARGETS)
diff --git a/mobile/TC/unit/tc_gen.sh b/mobile/TC/unit/tc_gen.sh
new file mode 100755 (executable)
index 0000000..54f482d
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+TMPSTR=$0
+SCRIPT=${TMPSTR##*/}
+
+if [ $# -lt 2 ]; then
+       echo "Usage) $SCRIPT module_name api_name"
+       exit 1
+fi
+
+MODULE=$1
+API=$2
+TEMPLATE=utc_MODULE_API_func.c.in
+TESTCASE=utc_${MODULE}_${API}_func
+
+sed -e '
+       s^@API@^'"$API"'^g
+       s^@MODULE@^'"$MODULE"'^g
+       ' $TEMPLATE > $TESTCASE.c
+
+if [ ! -e "$TESTCASE.c" ]; then
+       echo "Failed"
+       exit 1
+fi
+echo "Testcase file is $TESTCASE.c"
+echo "Done"
+echo "please put \"$TESTCASE\" as Target in Makefile"
+echo "please put \"/unit/$TESTCASE\" in tslist"
diff --git a/mobile/TC/unit/tslist b/mobile/TC/unit/tslist
new file mode 100644 (file)
index 0000000..8b13789
--- /dev/null
@@ -0,0 +1 @@
+
diff --git a/mobile/TC/unit/utc_MODULE_API_func.c.in b/mobile/TC/unit/utc_MODULE_API_func.c.in
new file mode 100644 (file)
index 0000000..0227150
--- /dev/null
@@ -0,0 +1,64 @@
+#include <tet_api.h>
+
+static void startup(void);
+static void cleanup(void);
+
+void (*tet_startup)(void) = startup;
+void (*tet_cleanup)(void) = cleanup;
+
+static void utc_@MODULE@_@API@_func_01(void);
+static void utc_@MODULE@_@API@_func_02(void);
+
+enum {
+       POSITIVE_TC_IDX = 0x01,
+       NEGATIVE_TC_IDX,
+};
+
+struct tet_testlist tet_testlist[] = {
+       { utc_@MODULE@_@API@_func_01, POSITIVE_TC_IDX },
+       { utc_@MODULE@_@API@_func_02, NEGATIVE_TC_IDX },
+};
+
+static void startup(void)
+{
+}
+
+static void cleanup(void)
+{
+}
+
+/**
+ * @brief Positive test case of @API@()
+ */
+static void utc_@MODULE@_@API@_func_01(void)
+{
+       int r = 0;
+       char buf[MAX_LOCAL_BUFSZ];
+       
+       r = @API@(...);
+
+       if (r<0) {
+               tet_infoline("@API@() failed in positive test case");
+               tet_result(TET_FAIL);
+               return;
+       }
+       tet_result(TET_PASS);
+}
+
+/**
+ * @brief Negative test case of ug_init @API@()
+ */
+static void utc_@MODULE@_@API@_func_02(void)
+{
+       int r = 0;
+       char buf[MAX_LOCAL_BUFSZ];
+
+       r = @API@(...);
+
+       if (r>=0) {
+               tet_infoline("@API@() failed in negative test case");
+               tet_result(TET_FAIL);
+               return;
+       }
+       tet_result(TET_PASS);
+}
diff --git a/mobile/data/syspopup_db.sql b/mobile/data/syspopup_db.sql
new file mode 100755 (executable)
index 0000000..e36d473
--- /dev/null
@@ -0,0 +1,53 @@
+PRAGMA journal_mode = PERSIST;
+
+/* prio : 0~2 (0:low, 2:high) */
+/* focus : 0~1 (0:focus, 1:unfocus) */
+/* timeout : -1 ~ integer value (-1:infinite, 0:don't use) */
+/* term_act : 0~2(0:TERM, 1:HIDE, 2:IGNORE) */
+/* endkey_act : 0~2(0:TERM, 1:HIDE, 2:IGNORE) */
+CREATE TABLE IF NOT EXISTS syspopup_info (
+       id INTEGER PRIMARY KEY,
+       name TEXT UNIQUE NOT NULL,
+       prio INTEGER,
+       focus INTEGER,
+       timeout INTEGER,
+       term_act INTEGER,
+       endkey_act INTEGER,
+       pkgname TEXT
+);
+
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"syspopup-app",             2,1,5,0,0,"org.tizen.syspopup-app");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"volume",                   1,1,-1,1,1,"org.tizen.volume");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"bt-syspopup",              0,0,-1,0,0,"org.tizen.bt-syspopup");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"wifi-qs",                  0,0,-1,0,2,"net.wifi-qs");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"poweroff-syspopup",                2,0,-1,0,0,"org.tizen.poweroff-syspopup");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"lowmem-syspopup",          1,0,5,0,0,"org.tizen.lowmem-syspopup");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"lowbat-syspopup",          1,0,5,0,0,"org.tizen.lowbat-syspopup");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"net-popup",                        0,0,-1,0,0,"org.tizen.net-popup");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"usb-syspopup",             1,0,-1,2,2,"org.tizen.usb-syspopup");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"ims-syspopup",             1,1,-1,2,2,"org.tizen.ims-syspopup");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"mdm-syspopup",             1,1,5,0,0,"org.tizen.mdm-syspopup");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"tickernoti-syspopup",      1,1,-1,2,2,"org.tizen.tickernoti-syspopup");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"usbotg-syspopup",          0,0,-1,0,0,"org.tizen.usbotg-syspopup");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"allshare-popup",            0,0,-1,0,0,"org.tizen.allshare-popup");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"mmc-syspopup",             0,0,-1,0,0,"org.tizen.mmc-syspopup");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"datausage-syspopup",       1,0,-1,0,0,"org.tizen.datausage-syspopup");
+/*
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"drm",                      0,0,5,0,0,"org.tizen.drm-popup");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"incoming_call",            2,0,-1,2,2,"org.tizen.incoming_call");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"phone_lock",               2,0,-1,2,2,"org.tizen.screen_lock");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"screen_lock",              1,0,-1,0,2,"org.tizen.screen_lock");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"alarm",                    1,0,-1,0,2,"org.tizen.alarm");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"timer",                    1,0,5,0,2,"org.tizen.timer");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"schedule_alarm",           1,0,-1,0,2,"org.tizen.schedule_alarm");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"change_select_network",    0,0,-1,0,0,"org.tizen.change_select_network");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"privacy_lock",             0,0,-1,0,2,"org.tizen.privacy_lock");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"active_sync_policy",       0,0,-1,0,0,"org.tizen.active_sync_policy");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"memory_full",              0,1,5,0,0,"org.tizen.memory_full");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"charger_conn",             0,1,5,0,0,"org.tizen.charger_conn");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"sim_extraction",           0,1,5,0,0,"org.tizen.sim_extraction");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"time_zone_update",         0,1,5,0,0,"org.tizen.time_zone_update");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"nfc-syspopup",             0,1,3,0,0,"org.tizen.nfc-sys-popup");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"push-syspopup",            2,0,5,0,0,"org.tizen.push-syspopup");
+*/
+
diff --git a/mobile/debian/changelog b/mobile/debian/changelog
new file mode 100755 (executable)
index 0000000..5fde526
--- /dev/null
@@ -0,0 +1,591 @@
+syspopup (0.0.75ubuntu1) precise; urgency=low
+
+  * Update for net.netpopup
+  * Git: slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.76
+
+ -- sunil85.kim <isurit@sunil85.kim>  Wed, 16 Jan 2013 10:32:39 +0900
+
+syspopup (0.0.75) unstable; urgency=low
+
+  * Added OTG syspopup info
+  * Git: slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.75
+
+ -- Sewook Park <sewook7.park@samsung.com>  Mon, 21 May 2012 21:07:17 +0900
+
+syspopup (0.0.74) unstable; urgency=low
+
+  * Fixed compile warnings
+  * Git: slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.74
+
+ -- Jaeho Lee <jaeho81.lee@samsung.com>  Tue, 20 Mar 2012 14:45:42 +0900
+
+syspopup (0.0.73) unstable; urgency=low
+
+  * Changed network syspopup name, Fixed desktop field
+  * Git: slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.73
+
+ -- Sewook Park <sewook7.park@samsung.com>  Thu, 15 Mar 2012 16:07:54 +0900
+
+syspopup (0.0.72) unstable; urgency=low
+
+  * Added ticker popup info
+  * Git: slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.72
+
+ -- Sewook Park <sewook7.park@samsung.com>  Wed, 14 Mar 2012 16:22:20 +0900
+
+syspopup (0.0.71) unstable; urgency=low
+
+  * API Changes in elementary
+  * Git: slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.71
+
+ -- Jaeho Lee <jaeho81.lee@samsung.com>  Tue, 13 Mar 2012 17:59:18 +0900
+
+syspopup (0.0.70) unstable; urgency=low
+
+  * Fixed to use dbus instead of heynoti
+  * Git: slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.70
+
+ -- Sewook Park <sewook7.park@samsung.com>  Wed, 22 Feb 2012 10:41:10 +0900
+
+syspopup (0.0.69) unstable; urgency=low
+
+  * Added ims-syspopup info
+  * Git: slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.69
+
+ -- Sewook Park <sewook7.park@samsung.com>  Wed, 15 Feb 2012 16:25:22 +0900
+
+syspopup (0.0.68) unstable; urgency=low
+
+  * remove quickpanel dependency
+  * Git: slp-source.sec.samsung.net:slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.68
+
+ -- Jaeho Lee <jaeho81.lee@samsung.com>  Fri, 16 Dec 2011 09:51:11 +0900
+
+syspopup (0.0.67) unstable; urgency=low
+
+  * Updated changelog
+  * Git: slp-source.sec.samsung.net:slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.67
+
+ -- Sewook Park <sewook7.park@samsung.com>  Mon, 05 Dec 2011 15:55:09 +0900
+
+syspopup (0.0.66) unstable; urgency=low
+
+  * Fix desktop not to be removed
+  * Git: slp-source.sec.samsung.net:slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.66
+
+ -- Sewook Park <sewook7.park@samsung.com>  Mon, 21 Nov 2011 12:51:51 +0900
+
+syspopup (0.0.65) unstable; urgency=low
+
+  * Changed Boilerplate as per the guideline
+  * Git: slp-source.sec.samsung.net:slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.65
+
+ -- Jaeho Lee <jaeho81.lee@samsung.com>  Mon, 07 Nov 2011 18:38:10 +0900
+
+syspopup (0.0.64) unstable; urgency=low
+
+  * Fix syspopup focus concept
+  * Git: slp-source.sec.samsung.net:slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.64
+
+ -- Sewook Park <sewook7.park@samsung.com>  Thu, 27 Oct 2011 16:40:49 +0900
+
+syspopup (0.0.63) unstable; urgency=low
+
+  * Change active window angle to root angle
+  * Git: slp-source.sec.samsung.net:slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.63
+
+ -- Sewook Park <sewook7.park@samsung.com>  Wed, 19 Oct 2011 19:14:24 +0900
+
+syspopup (0.0.62) unstable; urgency=low
+
+  * Fix syspopup-app layout
+  * Git: slp-source.sec.samsung.net:slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.62 
+
+ -- Sewook Park <sewook7.park@samsung.com>  Tue, 11 Oct 2011 11:11:31 +0900
+
+syspopup (0.0.61) unstable; urgency=low
+
+  * add usb-syspopup
+  * Git: slp-source.sec.samsung.net:slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.61 
+
+ -- Jaeho Lee <jaeho81.lee@samsung.com>  Wed, 05 Oct 2011 16:02:45 +0900
+
+syspopup (0.0.60) unstable; urgency=low
+
+  * Fix prevent issue
+  * Git: slp-source.sec.samsung.net:slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.60 
+
+ -- Jaeho Lee <jaeho81.lee@samsung.com>  Mon, 05 Sep 2011 13:42:51 +0900
+
+syspopup (0.0.59) unstable; urgency=low
+
+  * Add alert-3g-syspopup
+  * Git: slp-source.sec.samsung.net:slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.59
+
+ -- Sewook Park <sewook7.park@samsung.com>  Tue, 23 Aug 2011 16:08:24 +0900
+
+syspopup (0.0.58) unstable; urgency=low
+
+  * Apply code cleanup
+  * Git: slp-source.sec.samsung.net:slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.58 
+
+ -- Sewook Park <sewook7.park@samsung.com>  Mon, 01 Aug 2011 19:59:37 +0900
+
+syspopup (0.0.57) unstable; urgency=low
+
+  * Fix Boilerplate module name
+  * Git: slp-source.sec.samsung.net:slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.57
+
+ -- Sewook Park <sewook7.park@samsung.com>  Sat, 16 Jul 2011 13:38:40 +0900
+
+syspopup (0.0.56) unstable; urgency=low
+
+  * Apply Boilerplate
+  * Git: slp-source.sec.samsung.net:slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.56
+
+ -- Sewook Park <sewook7.park@samsung.com>  Wed, 13 Jul 2011 17:31:28 +0900
+
+syspopup (0.0.55) unstable; urgency=low
+
+  * Modify bt-syspopup to be unfocused
+  * Git: slp-source.sec.samsung.net:slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.55
+
+ -- Sewook Park <sewook7.park@samsung.com>  Fri, 01 Jul 2011 14:37:08 +0900
+
+syspopup (0.0.54) unstable; urgency=low
+
+  * Modify push popup
+  * Git: slp-source.sec.samsung.net:slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.54
+
+ -- Noha Park <noha.park@samsung.com>  Tue, 17 May 2011 20:53:53 +0900
+
+syspopup (0.0.53) unstable; urgency=low
+
+  * Modify push popup 
+  * Git: slp-source.sec.samsung.net:slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.53
+
+ -- Noha Park <noha.park@samsung.com>  Tue, 17 May 2011 20:43:19 +0900
+
+syspopup (0.0.52) unstable; urgency=low
+
+  * Modify push popup 
+  * Git: slp-source.sec.samsung.net:slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.52
+
+ -- Noha Park <noha.park@samsung.com>  Tue, 17 May 2011 20:29:23 +0900
+
+syspopup (0.0.51) unstable; urgency=low
+
+  * Modify push popup 
+  * Git: slp-source.sec.samsung.net:slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.51
+
+ -- Noha Park <noha.park@samsung.com>  Tue, 17 May 2011 20:02:11 +0900
+
+syspopup (0.0.50) unstable; urgency=low
+
+  * Add push popup 
+  * Git: slp-source.sec.samsung.net:slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.50
+
+ -- Noha Park <noha.park@samsung.com>  Wed, 11 May 2011 09:55:52 +0900
+
+syspopup (0.0.49) unstable; urgency=low
+
+  * Remove deb. from package name
+  * Git: slp-source.sec.samsung.net:slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.49
+
+ -- Noha Park <noha.park@samsung.com>  Tue, 12 Apr 2011 11:47:30 +0900
+
+syspopup (0.0.48) unstable; urgency=low
+
+  * Remove quickpanel insert option
+  * Git: slp-source.sec.samsung.net:slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.48
+
+ -- Noha Park <noha.park@samsung.com>  Wed, 16 Mar 2011 19:02:23 +0900
+
+syspopup (0.0.47) unstable; urgency=low
+
+  * Remove quickpanel insert option
+  * Git: slp-source.sec.samsung.net:slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.47
+
+ -- Noha Park <noha.park@samsung.com>  Wed, 16 Mar 2011 18:55:50 +0900
+
+syspopup (0.0.46) unstable; urgency=low
+
+  * Call term act callback when the option is hide
+  * Git: slp-source.sec.samsung.net:slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.46
+
+ -- Noha Park <noha.park@samsung.com>  Tue, 22 Feb 2011 15:47:35 +0900
+
+syspopup (0.0.45) unstable; urgency=low
+
+  * Image optimization 
+  * Git: slp-source.sec.samsung.net:slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.45
+
+ -- Noha Park <noha.park@samsung.com>  Mon, 21 Feb 2011 11:37:26 +0900
+
+syspopup (0.0.44) unstable; urgency=low
+
+  * Image optimization 
+  * Git: slp-source.sec.samsung.net:slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.44
+
+ -- Noha Park <noha.park@samsung.com>  Mon, 21 Feb 2011 11:37:26 +0900
+
+syspopup (0.0.43) unstable; urgency=low
+
+  * Rebuild for quickpanel structure 
+  * Git: slp-source.sec.samsung.net:slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.43
+
+ -- Noha Park <noha.park@samsung.com>  Fri, 18 Feb 2011 09:13:42 +0900
+
+syspopup (0.0.42) unstable; urgency=low
+
+  * Move desktop file destination
+  * Git: slp-source.sec.samsung.net:slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.42
+
+ -- Noha Park <noha.park@samsung.com>  Mon, 14 Feb 2011 17:03:56 +0900
+
+syspopup (0.0.41) unstable; urgency=low
+
+  * Add NFC syspopup
+  * Git: slp-source.sec.samsung.net:slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.41
+
+ -- Noha Park <noha.park@samsung.com>  Thu, 27 Jan 2011 14:20:40 +0900
+
+syspopup (0.0.40) unstable; urgency=low
+
+  * Add extern C to syspopup_caller header 
+  * Git: slp-source.sec.samsung.net:slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.40
+
+ -- Noha Park <noha.park@samsung.com>  Thu, 27 Jan 2011 10:35:47 +0900
+
+syspopup (0.0.39) unstable; urgency=low
+
+  * Add extern C to syspopup_caller header 
+  * Git: slp-source.sec.samsung.net:slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.39
+
+ -- Noha Park <noha.park@samsung.com>  Thu, 27 Jan 2011 10:30:18 +0900
+
+syspopup (0.0.38) unstable; urgency=low
+   
+  * Modify wifi qs timeout 
+  * Git: slp-source.sec.samsung.net:slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.38
+
+ -- Noha Park <noha.park@samsung.com>  Wed, 12 Jan 2011 16:45:21 +0900
+
+syspopup (0.0.37) unstable; urgency=low
+
+  * Modify syspopup app
+  * Git: slp-source.sec.samsung.net:slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.37
+
+ -- Noha Park <noha.park@samsung.com>  Wed, 05 Jan 2011 08:59:54 +0900
+
+syspopup (0.0.36) unstable; urgency=low
+
+  * Modify bt syspopup name
+  * Git: slp-source.sec.samsung.net:slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.36
+
+ -- Noha Park <noha.park@samsung.com>  Tue, 04 Jan 2011 08:47:34 +0900
+
+syspopup (0.0.35) unstable; urgency=low
+
+  * Modify drm popup
+  * Git: slp-source.sec.samsung.net:slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.35
+
+ -- Noha Park <noha.park@samsung.com>  Tue, 21 Dec 2010 10:02:26 +0900
+
+syspopup (0.0.34) unstable; urgency=low
+
+  * Add dnet popup
+  * Git: slp-source.sec.samsung.net:slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.34
+
+ -- Noha Park <noha.park@samsung.com>  Mon, 20 Dec 2010 17:25:43 +0900
+
+syspopup (0.0.33) unstable; urgency=low
+
+  * Modify ap_con_wifi to wifi-qs
+  * Git: slp-source.sec.samsung.net:slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.33
+
+ -- Noha Park <noha.park@samsung.com>  Mon, 20 Dec 2010 17:12:50 +0900
+
+syspopup (0.0.32) unstable; urgency=low
+
+  * Modify ap_con_wifi to wifi-qs
+  * Git: slp-source.sec.samsung.net:slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.32
+
+ -- Noha Park <noha.park@samsung.com>  Wed, 15 Dec 2010 16:39:25 +0900
+
+syspopup (0.0.31) unstable; urgency=low
+
+  * Modify ap_con_wifi to wifi-qs
+  * Git: slp-source.sec.samsung.net:slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.31
+
+ -- Noha Park <noha.park@samsung.com>  Wed, 15 Dec 2010 14:57:17 +0900
+
+syspopup (0.0.30) unstable; urgency=low
+
+  * Modify wifi-qs to ap_con_wifi
+  * Git: slp-source.sec.samsung.net:slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.30
+
+ -- Noha Park <noha.park@samsung.com>  Wed, 15 Dec 2010 11:37:51 +0900
+
+syspopup (0.0.29) unstable; urgency=low
+
+  * Update bash shell script (== to =)
+  * Git: slp-source.sec.samsung.net:slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.29
+
+ -- Noha Park <noha.park@samsung.com>  Wed, 15 Dec 2010 09:54:41 +0900
+
+syspopup (0.0.28) unstable; urgency=low
+
+  * Add wifi-qs 
+  * Git: slp-source.sec.samsung.net:slp/pkgs/s/syspopup
+  * Tag: syspopup_0.0.28
+
+ -- Noha Park <noha.park@samsung.com>  Mon, 13 Dec 2010 14:53:03 +0900
+
+syspopup (0.0.27) unstable; urgency=low
+
+  * Modify Sample code (syspopup-app)
+  * Git: 165.213.180.234:/git/slp/pkgs/syspopup
+  * Tag: syspopup_0.0.27
+
+ -- Noha Park <noha.park@samsung.com>  Thu, 02 Dec 2010 10:56:57 +0900
+
+syspopup (0.0.26) unstable; urgency=low
+
+  * Modify power off popup
+  * Git: 165.213.180.234:/git/slp/pkgs/syspopup
+  * Tag: syspopup_0.0.26
+
+ -- Noha Park <noha.park@samsung.com>  Fri, 26 Nov 2010 21:41:14 +0900
+
+syspopup (0.0.25) unstable; urgency=low
+
+  * Modify default rotation angle
+  * Git: 165.213.180.234:/git/slp/pkgs/syspopup
+  * Tag: syspopup_0.0.25
+
+ -- Noha Park <noha.park@samsung.com>  Mon, 22 Nov 2010 20:33:07 +0900
+
+syspopup (0.0.24) unstable; urgency=low
+
+  * Modified desktop file
+  * Git: 165.213.180.234:/git/slp/pkgs/syspopup
+  * Tag: syspopup_0.0.24
+
+ -- Noha Park <noha.park@samsung.com>  Mon, 22 Nov 2010 15:59:26 +0900
+
+syspopup (0.0.23) unstable; urgency=low
+
+  * Modified desktop file
+  * Git: 165.213.180.234:/git/slp/pkgs/syspopup
+  * Tag: syspopup_0.0.23
+
+ -- Noha Park <noha.park@samsung.com>  Mon, 22 Nov 2010 13:57:09 +0900
+
+syspopup (0.0.22) unstable; urgency=low
+
+  * Code regeneration 
+  * Git: 165.213.180.234:/git/slp/pkgs/syspopup
+  * Tag: syspopup_0.0.22
+
+ -- Noha Park <noha.park@samsung.com>  Mon, 15 Nov 2010 18:14:36 +0900
+
+syspopup (0.0.21) unstable; urgency=low
+
+  * Modify rotation cb in syspopup-app 
+  * Git: 165.213.180.234:/git/slp/pkgs/syspopup
+  * Tag: syspopup_0.0.21
+
+ -- Noha Park <noha.park@samsung.com>  Fri, 12 Nov 2010 21:49:34 +0900
+
+syspopup (0.0.20) unstable; urgency=low
+
+  * Modify rotation cb in syspopup-app 
+  * Git: 165.213.180.234:/git/slp/pkgs/syspopup
+  * Tag: syspopup_0.0.20
+
+ -- Noha Park <noha.park@samsung.com>  Fri, 12 Nov 2010 14:17:49 +0900
+
+syspopup (0.0.19) unstable; urgency=low
+
+  * Modify DB create procedure(updated)
+  * Git: 165.213.180.234:/git/slp/pkgs/syspopup
+  * Tag: syspopup_0.0.19
+
+ -- Noha Park <noha.park@samsung.com>  Thu, 11 Nov 2010 11:44:26 +0900
+
+syspopup (0.0.18) unstable; urgency=low
+
+  * Modify DB create procedure(updated)
+  * Git: 165.213.180.234:/git/slp/pkgs/syspopup
+  * Tag: syspopup_0.0.18
+
+ -- Noha Park <noha.park@samsung.com>  Thu, 11 Nov 2010 09:37:41 +0900
+
+syspopup (0.0.17) unstable; urgency=low
+
+  * Modify DB create procedure(updated)
+  * Git: 165.213.180.234:/git/slp/pkgs/syspopup
+  * Tag: syspopup_0.0.17
+
+ -- Noha Park <noha.park@samsung.com>  Wed, 10 Nov 2010 15:23:36 +0900
+
+syspopup (0.0.16) unstable; urgency=low
+
+  * Modify DB create procedure(updated)
+  * Git: 165.213.180.234:/git/slp/pkgs/syspopup
+  * Tag: syspopup_0.0.16
+
+ -- Noha Park <noha.park@samsung.com>  Wed, 10 Nov 2010 14:32:11 +0900
+
+syspopup (0.0.15) unstable; urgency=low
+
+  * Modify DB create procedure
+  * Git: 165.213.180.234:/git/slp/pkgs/syspopup
+  * Tag: syspopup_0.0.15
+
+ -- Noha Park <noha.park@samsung.com>  Wed, 10 Nov 2010 11:31:47 +0900
+
+syspopup (0.0.14) unstable; urgency=low
+
+  * Modify Syspopup API name
+  * Git: 165.213.180.234:/git/slp/pkgs/syspopup
+  * Tag: syspopup_0.0.14
+
+ -- Noha Park <noha.park@samsung.com>  Tue, 09 Nov 2010 10:18:47 +0900
+
+syspopup (0.0.13) unstable; urgency=low
+
+  * Modify Syspopup create procedure
+  * Git: 165.213.180.234:/git/slp/pkgs/syspopup
+  * Tag: syspopup_0.0.13
+
+ -- Noha Park <noha.park@samsung.com>  Mon, 08 Nov 2010 12:18:06 +0900
+
+syspopup (0.0.12) unstable; urgency=low
+
+  * Modify Syspopup create procedure
+  * Git: 165.213.180.234:/git/slp/pkgs/syspopup
+  * Tag: syspopup_0.0.12
+
+ -- Noha Park <noha.park@samsung.com>  Mon, 08 Nov 2010 11:16:33 +0900
+
+syspopup (0.0.11) unstable; urgency=low
+
+  * Modify Syspopup Caller
+  * Git: 165.213.180.234:/git/slp/pkgs/syspopup
+  * Tag: syspopup_0.0.11
+
+ -- Noha Park <noha.park@samsung.com>  Thu, 04 Nov 2010 11:54:31 +0900
+
+syspopup (0.0.10) unstable; urgency=low
+
+  * Modify e17
+  * Git: 165.213.180.234:/git/slp/pkgs/syspopup
+  * Tag: syspopup_0.0.10
+
+ -- Noha Park <noha.park@samsung.com>  Thu, 04 Nov 2010 10:18:19 +0900
+
+syspopup (0.0.9) unstable; urgency=low
+
+  * add endkey handler 
+  * Git: 165.213.180.234:/git/slp/pkgs/syspopup
+  * Tag: syspopup_0.0.9
+
+ -- Noha Park <noha.park@samsung.com>  Tue, 02 Nov 2010 16:07:30 +0900
+
+syspopup (0.0.8) unstable; urgency=low
+
+  * modify syspopup parent window 
+  * Git: 165.213.180.234:/git/slp/pkgs/syspopup
+  * Tag: syspopup_0.0.8 
+
+ -- Noha Park <noha.park@samsung.com>  Fri, 15 Oct 2010 11:01:33 +0900
+
+syspopup (0.0.7) unstable; urgency=low
+
+  * modify quickpanel insert procedure 
+  * Git: 165.213.180.234:/git/slp/pkgs/syspopup
+  * Tag: syspopup_0.0.7 
+
+ -- Noha Park <noha.park@samsung.com>  Thu, 14 Oct 2010 19:14:33 +0900
+
+syspopup (0.0.6) unstable; urgency=low
+
+  * modify user callback function 
+  * Git: 165.213.180.234:/git/slp/pkgs/syspopup
+  * Tag: syspopup_0.0.6 
+
+ -- Kunhoon Baik <knhoon.baik@samsung.com>  Thu, 14 Oct 2010 17:48:52 +0900
+
+syspopup (0.0.5) unstable; urgency=low
+
+  * build fail fix
+
+ -- Kunhoon Baik <knhoon.baik@samsung.com>  Wed, 13 Oct 2010 17:49:08 +0900
+
+syspopup (0.0.3) unstable; urgency=low
+
+  * add doxygen and change maintainer
+
+ -- Kunhoon Baik <knhoon.baik@samsung.com>  Wed, 13 Oct 2010 16:35:43 +0900
+
+syspopup (0.0.2) unstable; urgency=low
+
+  * modify dpkg 
+
+ -- Kunhoon Baik <knhoon.baik@samsung.com>  Tue, 12 Oct 2010 13:14:35 +0900
+
+syspopup (0.0.1) unstable; urgency=low
+
+  * initial update
+
+ -- Kunhoon Baik <knhoon.baik@samsung.com>  Tue, 27 Jul 2010 15:51:31 +0900
diff --git a/mobile/debian/compat b/mobile/debian/compat
new file mode 100644 (file)
index 0000000..7ed6ff8
--- /dev/null
@@ -0,0 +1 @@
+5
diff --git a/mobile/debian/control b/mobile/debian/control
new file mode 100644 (file)
index 0000000..db77e9c
--- /dev/null
@@ -0,0 +1,43 @@
+Source: syspopup
+Section: devel
+Priority: extra
+Maintainer: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>, Jaeho Lee <jaeho81.lee@samsung.com>
+Build-Depends: debhelper (>= 5), libdbus-glib-1-dev, libsqlite3-dev, libx11-dev, libecore-dev, libbundle-dev, dlog-dev, libslp-utilx-dev, sqlite3, libaul-1-dev, libevas-dev, libappcore-efl-dev, libdbus-glib-1-dev
+Standards-Version: 0.1.0 
+
+Package: syspopup-caller-0
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: syspopup-caller package
+
+Package: syspopup-caller-dev
+Section: libs
+Architecture: any
+Depends: syspopup-caller-0 (= ${Source-Version}), libdbus-glib-1-dev, libsqlite3-dev, libbundle-dev, dlog-dev, libaul-1-dev
+Description: syspopup-caller dev package
+
+Package: syspopup-caller-dbg
+Section: debug
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}, syspopup-caller-0 (= ${Source-Version})
+Description: syspopup-caller dbg package 
+
+Package: syspopup-0
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}, sqlite3
+Description: syspopup package
+
+Package: syspopup-dev
+Section: libs
+Architecture: any
+Depends: syspopup-0 (= ${Source-Version}), libdbus-glib-1-dev, libsqlite3-dev, libbundle-dev, dlog-dev, sqlite3, libslp-utilx-dev, libx11-dev, libecore-dev, libevas-dev, libappcore-efl-dev
+Description: syspopup dev package
+
+Package: syspopup-dbg
+Section: debug
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}, syspopup-0 (= ${Source-Version})
+Description: syspopup dbg package 
+
diff --git a/mobile/debian/dirs b/mobile/debian/dirs
new file mode 100644 (file)
index 0000000..ca882bb
--- /dev/null
@@ -0,0 +1,2 @@
+usr/bin
+usr/sbin
diff --git a/mobile/debian/docs b/mobile/debian/docs
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/mobile/debian/rules b/mobile/debian/rules
new file mode 100755 (executable)
index 0000000..a65f12b
--- /dev/null
@@ -0,0 +1,122 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+# Sample debian/rules that uses debhelper.
+# This file was originally written by Joey Hess and Craig Small.
+# As a special exception, when this file is copied by dh-make into a
+# dh-make output file, you may use that output file without restriction.
+# This special exception was added by Craig Small in version 0.37 of dh-make.
+
+# Uncomment this to turn on verbose mode.
+export DH_VERBOSE=1
+
+CFLAGS ?= -Wall -g
+LDFLAGS ?= 
+PREFIX ?= /usr
+DATADIR ?= /opt
+
+ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
+       CFLAGS += -O0
+else
+       CFLAGS += -O2
+endif
+
+CFLAGS += -fvisibility=hidden -fpic
+LDFLAGS += -Wl,--rpath=$(PREFIX)/lib -Wl,--as-needed
+
+CMAKE_TMP_DIR = $(CURDIR)/cmake_tmp
+
+configure: configure-stamp
+configure-stamp:
+       dh_testdir
+       # Add here commands to configure the package.
+       mkdir -p $(CMAKE_TMP_DIR);
+       cd $(CMAKE_TMP_DIR); CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" cmake .. -DCMAKE_INSTALL_PREFIX=$(PREFIX)
+
+       touch configure-stamp
+
+build: build-stamp
+
+build-stamp: configure-stamp 
+       dh_testdir
+
+       # Add here commands to compile the package.
+       cd $(CMAKE_TMP_DIR) && $(MAKE) all test
+
+       for f in `find $(CURDIR)/debian/ -name "*.in"`; do \
+               cat $$f > $${f%.in}; \
+               sed -i -e "s#@PREFIX@#$(PREFIX)#g" $${f%.in}; \
+               sed -i -e "s#@DATADIR@#$(DATADIR)#g" $${f%.in}; \
+       done
+
+       touch $@
+
+clean:
+       dh_testdir
+       dh_testroot
+       rm -f build-stamp configure-stamp
+
+       # Add here commands to clean up after the build process.
+       rm -rf $(CMAKE_TMP_DIR)
+
+       for f in `find $(CURDIR)/debian/ -name "*.in"`; do \
+               rm -f $${f%.in}; \
+       done
+
+       rm -rf include/pg-doxy/doxygen_output
+
+       rm -rf TC/results
+       rm -rf TC/tet_tmp_dir
+       cd TC/unit/ && make clean && cd ../../
+
+       dh_clean 
+
+install: build
+       dh_testdir
+       dh_testroot
+       dh_clean -k 
+       dh_installdirs
+
+       # Add here commands to install the package into debian/wavplayer.
+       cd $(CMAKE_TMP_DIR) && $(MAKE) DESTDIR=$(CURDIR)/debian/tmp install
+
+       mkdir -p $(CURDIR)/debian/tmp/opt/dbspace
+#      sqlite3 $(CURDIR)/debian/tmp/opt/dbspace/.syspopup.db < $(CURDIR)/data/syspopup_db.sql
+       touch $(CURDIR)/debian/tmp/usr/share/popup_noti_term
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+       dh_testdir
+       dh_testroot
+       dh_installchangelogs 
+       dh_installdocs
+       dh_installexamples
+       dh_install --sourcedir=debian/tmp
+#      dh_installmenu
+#      dh_installdebconf       
+#      dh_installlogrotate
+#      dh_installemacsen
+#      dh_installpam
+#      dh_installmime
+#      dh_python
+#      dh_installinit
+#      dh_installcron
+#      dh_installinfo
+       dh_installman
+       dh_link
+       dh_strip --dbg-package=syspopup-dbg
+       dh_compress
+       dh_fixperms
+#      dh_perl
+       dh_makeshlibs
+       dh_installdeb
+       dh_shlibdeps
+       dh_gencontrol
+       dh_md5sums
+       dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure
diff --git a/mobile/debian/syspopup-0.install.in b/mobile/debian/syspopup-0.install.in
new file mode 100644 (file)
index 0000000..8f8964b
--- /dev/null
@@ -0,0 +1,4 @@
+@PREFIX@/lib/libsyspopup.*\r
+@PREFIX@/bin/*\r
+usr/share/popup_noti_term\r
+@PREFIX@/share/*\r
diff --git a/mobile/debian/syspopup-0.postinst b/mobile/debian/syspopup-0.postinst
new file mode 100644 (file)
index 0000000..ccece2d
--- /dev/null
@@ -0,0 +1,17 @@
+#!/bin/sh
+mkdir -p /opt/dbspace/
+sqlite3 /opt/dbspace/.syspopup.db < /usr/share/syspopup/syspopup_db.sql
+
+if [ ${USER} = "root" ]
+then
+       chown root:root /usr/lib/libsyspopup.so.0.1.0
+       chown root:5000 /opt/dbspace/.syspopup.db
+       chown root:5000 /opt/dbspace/.syspopup.db-journal
+fi
+
+chmod 644 /usr/lib/libsyspopup.so.0.1.0
+chmod 664 /opt/dbspace/.syspopup.db
+chmod 664 /opt/dbspace/.syspopup.db-journal
+
+
+
diff --git a/mobile/debian/syspopup-caller-0.install.in b/mobile/debian/syspopup-caller-0.install.in
new file mode 100644 (file)
index 0000000..9add798
--- /dev/null
@@ -0,0 +1 @@
+@PREFIX@/lib/libsyspopup_caller.*\r
diff --git a/mobile/debian/syspopup-caller-0.postinst b/mobile/debian/syspopup-caller-0.postinst
new file mode 100644 (file)
index 0000000..91f47b5
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/sh
+if [ ${USER} = "root" ]
+then
+       chown root:root /usr/lib/libsyspopup_caller.so.0.1.0
+fi
+
+chmod 644 /usr/lib/libsyspopup_caller.so.0.1.0
+
diff --git a/mobile/debian/syspopup-caller-dev.install.in b/mobile/debian/syspopup-caller-dev.install.in
new file mode 100644 (file)
index 0000000..107006c
--- /dev/null
@@ -0,0 +1,2 @@
+@PREFIX@/include/syspopup_caller.h
+@PREFIX@/lib/pkgconfig/syspopup-caller.pc
diff --git a/mobile/debian/syspopup-dev.install.in b/mobile/debian/syspopup-dev.install.in
new file mode 100644 (file)
index 0000000..f70f39e
--- /dev/null
@@ -0,0 +1,3 @@
+@PREFIX@/include/syspopup.h
+@PREFIX@/include/SLP_SYSPOPUP_PG.h
+@PREFIX@/lib/pkgconfig/syspopup.pc
diff --git a/mobile/image/README b/mobile/image/README
new file mode 100644 (file)
index 0000000..a8f7df0
--- /dev/null
@@ -0,0 +1 @@
+PG
diff --git a/mobile/include/SLP_SYSPOPUP_PG.h b/mobile/include/SLP_SYSPOPUP_PG.h
new file mode 100755 (executable)
index 0000000..fc03885
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * syspopup
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@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.
+ *
+ */
+
+
+/**
+
+ *
+ * @ingroup   SLP_PG
+ * @defgroup   SYSPOPUP Library for System Popup 
+
+@par SYSPOPUP Programming Guide
+
+<h1 class="pg"> Introduction</h1>
+<h2 class="pg"> Purpose of this document</h2>
+The purpose of this document is to describe how applications can use System Popup Library APIs.\n
+This document gives only programming guidelines to system popup application engineers.
+
+<h2 class="pg"> Scope</h2>
+The scope of this document is limited to Samsung platform System Popup API usage.
+
+<h1 class="pg"> Architecture</h1>
+<h2 class="pg"> Architecture overview</h2>
+
+<h2 class="pg"> SLP Features</h2>
+
+<h1 class="pg"> SYSPOPUP API descriptions</h1>
+<b> SEE API manual </b>
+
+<h1 class="pg"> SYSPOPUP features with sample code</h1>
+<h2 class="pg"> ... </h2>
+
+@code
+@endcode
+
+@code
+*/
+
+/**
+@}
+*/
+
diff --git a/mobile/include/pg-doxy/doxygen.conf b/mobile/include/pg-doxy/doxygen.conf
new file mode 100755 (executable)
index 0000000..a7cd424
--- /dev/null
@@ -0,0 +1,850 @@
+# Doxyfile 1.5.2
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+#       TAG = value [value, ...]
+# For lists items can also be appended using:
+#       TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+DOXYFILE_ENCODING      = UTF-8
+PROJECT_NAME           =  SLP-Developer Library
+PROJECT_NUMBER         = 
+OUTPUT_DIRECTORY       = ./doxygen_output
+CREATE_SUBDIRS         = NO
+OUTPUT_LANGUAGE        = English
+BRIEF_MEMBER_DESC      = YES
+REPEAT_BRIEF           = YES
+ABBREVIATE_BRIEF       = NO
+ALWAYS_DETAILED_SEC    = YES
+INLINE_INHERITED_MEMB  = NO
+FULL_PATH_NAMES        = NO
+STRIP_FROM_PATH        = 
+STRIP_FROM_INC_PATH    = 
+SHORT_NAMES            = YES
+JAVADOC_AUTOBRIEF      = NO
+MULTILINE_CPP_IS_BRIEF = NO
+DETAILS_AT_TOP         = YES
+INHERIT_DOCS           = YES
+SEPARATE_MEMBER_PAGES  = YES
+TAB_SIZE               = 8
+ALIASES                = 
+OPTIMIZE_OUTPUT_FOR_C  = NO
+OPTIMIZE_OUTPUT_JAVA   = NO
+BUILTIN_STL_SUPPORT    = NO
+CPP_CLI_SUPPORT        = NO
+DISTRIBUTE_GROUP_DOC   = NO
+SUBGROUPING            = YES
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+EXTRACT_ALL            = YES
+EXTRACT_PRIVATE        = YES
+EXTRACT_STATIC         = YES
+EXTRACT_LOCAL_CLASSES  = NO
+EXTRACT_LOCAL_METHODS  = YES
+HIDE_UNDOC_MEMBERS     = YES
+HIDE_UNDOC_CLASSES     = YES
+HIDE_FRIEND_COMPOUNDS  = YES
+HIDE_IN_BODY_DOCS      = NO
+INTERNAL_DOCS          = NO
+CASE_SENSE_NAMES       = YES
+HIDE_SCOPE_NAMES       = NO
+SHOW_INCLUDE_FILES     = YES
+INLINE_INFO            = YES
+SORT_MEMBER_DOCS       = YES
+SORT_BRIEF_DOCS        = YES
+SORT_BY_SCOPE_NAME     = YES
+SORT_GROUP_NAMES     = YES
+GENERATE_TODOLIST      = NO
+USE_INLINE_TREES      = NO
+SHOW_NAMESPACES                = NO
+HTML DYNAMIC SECTIONS          = YES
+GENERATE_TESTLIST      = NO
+GENERATE_BUGLIST       = NO
+GENERATE_DEPRECATEDLIST= NO
+ENABLED_SECTIONS       = 
+MAX_INITIALIZER_LINES  = 30
+SHOW_USED_FILES        = YES
+SHOW_DIRECTORIES       = NO
+FILE_VERSION_FILTER    = 
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated 
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET                  = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are 
+# generated by doxygen. Possible values are YES and NO. If left blank 
+# NO is used.
+
+WARNINGS               = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED   = YES
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
+# potential errors in the documentation, such as not documenting some 
+# parameters in a documented function, or documenting parameters that 
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR      = YES
+
+# This WARN_NO_PARAMDOC option can be abled to get warnings for 
+# functions that are documented, but have no documentation for their parameters 
+# or return value. If set to NO (the default) doxygen will only warn about 
+# wrong or incomplete parameter documentation, but not about the absence of 
+# documentation.
+
+WARN_NO_PARAMDOC       = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that 
+# doxygen can produce. The string should contain the $file, $line, and $text 
+# tags, which will be replaced by the file and line number from which the 
+# warning originated and the warning text. Optionally the format may contain 
+# $version, which will be replaced by the version of the file (if it could 
+# be obtained via FILE_VERSION_FILTER)
+
+WARN_FORMAT            = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning 
+# and error messages should be written. If left blank the output is written 
+# to stderr.
+
+WARN_LOGFILE           = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain 
+# documented source files. You may enter file names like "myfile.cpp" or 
+# directories like "/usr/src/myproject". Separate the files or directories 
+# with spaces.
+
+INPUT                  = .. 
+
+# This tag can be used to specify the character encoding of the source files that 
+# doxygen parses. Internally doxygen uses the UTF-8 encoding, which is also the default 
+# input encoding. Doxygen uses libiconv (or the iconv built into libc) for the transcoding. 
+# See http://www.gnu.org/software/libiconv for the list of possible encodings.
+
+INPUT_ENCODING         = UTF-8
+FILE_PATTERNS          = *.h \
+                        *.doxy
+RECURSIVE              = YES
+EXCLUDE                =  
+EXCLUDE_SYMLINKS       = NO
+EXCLUDE_PATTERNS       = */test/* \
+                       */debian/* \
+                       */lost+found/* \
+                       */i386/* \
+                       */arm/* \
+                       */simulator/*  \
+                       *test* \
+                       */voda3rd/* 
+EXCLUDE_SYMBOLS        = 
+EXAMPLE_PATH           = 
+EXAMPLE_PATTERNS       = 
+EXAMPLE_RECURSIVE      = NO
+IMAGE_PATH             = ../image 
+INPUT_FILTER           = 
+FILTER_PATTERNS        = 
+FILTER_SOURCE_FILES    = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
+# be generated. Documented entities will be cross-referenced with these sources. 
+# Note: To get rid of all source code in the generated output, make sure also 
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER         = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body 
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES         = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
+# doxygen to hide any special comment blocks from generated source code 
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS    = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES (the default) 
+# then for each documented function all documented 
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = YES
+
+# If the REFERENCES_RELATION tag is set to YES (the default) 
+# then for each documented function all documented entities 
+# called/used by that function will be listed.
+
+REFERENCES_RELATION    = YES
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
+# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
+# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
+# link to the source code.  Otherwise they will link to the documentstion.
+
+REFERENCES_LINK_SOURCE = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code 
+# will point to the HTML generated by the htags(1) tool instead of doxygen 
+# built-in source browser. The htags tool is part of GNU's global source 
+# tagging system (see http://www.gnu.org/software/global/global.html). You 
+# will need version 4.8.6 or higher.
+
+USE_HTAGS              = NO
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
+# will generate a verbatim copy of the header file for each class for 
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS       = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
+# of all compounds will be generated. Enable this if the project 
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX     = YES
+COLS_IN_ALPHA_INDEX    = 10
+IGNORE_PREFIX          = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
+# generate HTML output.
+
+GENERATE_HTML          = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT            = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION    = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard header.
+
+HTML_HEADER            = 
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard footer.
+
+HTML_FOOTER            =
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
+# style sheet that is used by each HTML page. It can be used to 
+# fine-tune the look of the HTML output. If the tag is left blank doxygen 
+# will generate a default style sheet. Note that doxygen will try to copy 
+# the style sheet file to the HTML output directory, so don't put your own 
+# stylesheet in the HTML output directory as well, or it will be erased!
+
+HTML_STYLESHEET        =./slp_doxy.css
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
+# files or namespaces will be aligned in HTML using tables. If set to 
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS     = YES
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files 
+# will be generated that can be used as input for tools like the 
+# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) 
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP      = YES
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 
+# be used to specify the file name of the resulting .chm file. You 
+# can add a path in front of the file if the result should not be 
+# written to the html output directory.
+
+CHM_FILE               = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 
+# be used to specify the location (absolute path including file name) of 
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION           = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 
+# controls if a separate .chi index file is generated (YES) or that 
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI           = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 
+# controls whether a binary table of contents is generated (YES) or a 
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC             = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members 
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND             = NO
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at 
+# top of each HTML page. The value NO (the default) enables the index and 
+# the value YES disables it.
+
+DISABLE_INDEX          = NO
+
+# This tag can be used to set the number of enum values (range [1..20]) 
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE   = 4
+
+# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
+# generated containing a tree-like index structure (just like the one that 
+# is generated for HTML Help). For this to work a browser that supports 
+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 
+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 
+# probably better off using the HTML help feature.
+
+GENERATE_TREEVIEW      = YES
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 
+# used to set the initial width (in pixels) of the frame in which the tree 
+# is shown.
+
+TREEVIEW_WIDTH         = 190
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
+# generate Latex output.
+
+GENERATE_LATEX         = NO
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT           = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
+# invoked. If left blank `latex' will be used as the default command name.
+
+LATEX_CMD_NAME         = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 
+# generate index for LaTeX. If left blank `makeindex' will be used as the 
+# default command name.
+
+MAKEINDEX_CMD_NAME     = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
+# LaTeX documents. This may be useful for small projects and may help to 
+# save some trees in general.
+
+COMPACT_LATEX          = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used 
+# by the printer. Possible values are: a4, a4wide, letter, legal and 
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE             = a4wide
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES         = 
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for 
+# the generated latex document. The header should contain everything until 
+# the first chapter. If it is left blank doxygen will generate a 
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER           = 
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will 
+# contain links (just like the HTML output) instead of page references 
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS         = NO
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 
+# plain latex in the generated Makefile. Set this option to YES to get a 
+# higher quality PDF documentation.
+
+USE_PDFLATEX           = NO
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
+# command to the generated LaTeX files. This will instruct LaTeX to keep 
+# running if errors occur, instead of asking the user for help. 
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE        = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not 
+# include the index chapters (such as File Index, Compound Index, etc.) 
+# in the output.
+
+LATEX_HIDE_INDICES     = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
+# The RTF output is optimized for Word 97 and may not look very pretty with 
+# other RTF readers or editors.
+
+GENERATE_RTF           = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT             = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact 
+# RTF documents. This may be useful for small projects and may help to 
+# save some trees in general.
+
+COMPACT_RTF            = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 
+# will contain hyperlink fields. The RTF file will 
+# contain links (just like the HTML output) instead of page references. 
+# This makes the output suitable for online browsing using WORD or other 
+# programs which support those fields. 
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS         = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's 
+# config file, i.e. a series of assignments. You only have to provide 
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE    = 
+
+# Set optional variables used in the generation of an rtf document. 
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE    = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
+# generate man pages
+
+GENERATE_MAN           = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT             = man
+
+# The MAN_EXTENSION tag determines the extension that is added to 
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION          = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output, 
+# then it will generate one additional man file for each entity 
+# documented in the real man page(s). These additional files 
+# only source the real man page, but without them the man command 
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS              = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will 
+# generate an XML file that captures the structure of 
+# the code including all documentation.
+
+GENERATE_XML           = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT             = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_SCHEMA             = 
+
+# The XML_DTD tag can be used to specify an XML DTD, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_DTD                = 
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will 
+# dump the program listings (including syntax highlighting 
+# and cross-referencing information) to the XML output. Note that 
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING     = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 
+# generate an AutoGen Definitions (see autogen.sf.net) file 
+# that captures the structure of the code including all 
+# documentation. Note that this feature is still experimental 
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF   = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will 
+# generate a Perl module file that captures the structure of 
+# the code including all documentation. Note that this 
+# feature is still experimental and incomplete at the 
+# moment.
+
+GENERATE_PERLMOD       = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate 
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able 
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX          = YES
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 
+# nicely formatted so it can be parsed by a human reader.  This is useful 
+# if you want to understand what is going on.  On the other hand, if this 
+# tag is set to NO the size of the Perl module output will be much smaller 
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY         = YES
+
+# The names of the make variables in the generated doxyrules.make file 
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 
+# This is useful so different doxyrules.make files included by the same 
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX = 
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor   
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
+# evaluate all C-preprocessor directives found in the sources and include 
+# files.
+
+ENABLE_PREPROCESSING   = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
+# names in the source code. If set to NO (the default) only conditional 
+# compilation will be performed. Macro expansion can be done in a controlled 
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION        = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
+# then the macro expansion is limited to the macros specified with the 
+# PREDEFINED and EXPAND_AS_DEFINED tags.
+
+EXPAND_ONLY_PREDEF     = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES        = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that 
+# contain include files that are not input files but should be processed by 
+# the preprocessor.
+
+INCLUDE_PATH           = 
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
+# patterns (like *.h and *.hpp) to filter out the header-files in the 
+# directories. If left blank, the patterns specified with FILE_PATTERNS will 
+# be used.
+
+INCLUDE_FILE_PATTERNS  = 
+
+# The PREDEFINED tag can be used to specify one or more macro names that 
+# are defined before the preprocessor is started (similar to the -D option of 
+# gcc). The argument of the tag is a list of macros of the form: name 
+# or name=definition (no spaces). If the definition and the = are 
+# omitted =1 is assumed. To prevent a macro definition from being 
+# undefined via #undef or recursively expanded use the := operator 
+# instead of the = operator.
+
+PREDEFINED             = 
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
+# this tag can be used to specify a list of macro names that should be expanded. 
+# The macro definition that is found in the sources will be used. 
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED      = 
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
+# doxygen's preprocessor will remove all function-like macros that are alone 
+# on a line, have an all uppercase name, and do not end with a semicolon. Such 
+# function macros are typically used for boiler-plate code, and will confuse 
+# the parser if not removed.
+
+SKIP_FUNCTION_MACROS   = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references   
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles. 
+# Optionally an initial location of the external documentation 
+# can be added for each tagfile. The format of a tag file without 
+# this location is as follows: 
+#   TAGFILES = file1 file2 ... 
+# Adding location for the tag files is done as follows: 
+#   TAGFILES = file1=loc1 "file2 = loc2" ... 
+# where "loc1" and "loc2" can be relative or absolute paths or 
+# URLs. If a location is present for each tag, the installdox tool 
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen 
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES               = 
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create 
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE       = 
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed 
+# in the class index. If set to NO only the inherited external classes 
+# will be listed.
+
+ALLEXTERNALS           = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 
+# in the modules index. If set to NO, only the current project's groups will 
+# be listed.
+
+EXTERNAL_GROUPS        = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script 
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH              = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool   
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base 
+# or super classes. Setting the tag to NO turns the diagrams off. Note that 
+# this option is superseded by the HAVE_DOT option below. This is only a 
+# fallback. It is recommended to install and use dot, since it yields more 
+# powerful graphs.
+
+CLASS_DIAGRAMS         = NO
+
+# You can define message sequence charts within doxygen comments using the \msc 
+# command. Doxygen will then run the mscgen tool (see http://www.mcternan.me.uk/mscgen/) to 
+# produce the chart and insert it in the documentation. The MSCGEN_PATH tag allows you to 
+# specify the directory where the mscgen tool resides. If left empty the tool is assumed to 
+# be found in the default search path.
+
+MSCGEN_PATH            = 
+
+# If set to YES, the inheritance and collaboration graphs will hide 
+# inheritance and usage relations if the target is undocumented 
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS   = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
+# available from the path. This tool is part of Graphviz, a graph visualization 
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section 
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT               = NO
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect inheritance relations. Setting this tag to YES will force the 
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH            = NO
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect implementation dependencies (inheritance, containment, and 
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH    = NO
+
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for groups, showing the direct groups dependencies
+
+GROUP_GRAPHS           = NO
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
+# collaboration diagrams in a style similar to the OMG's Unified Modeling 
+# Language.
+
+UML_LOOK               = NO
+
+# If set to YES, the inheritance and collaboration graphs will show the 
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS     = NO
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 
+# tags are set to YES then doxygen will generate a graph for each documented 
+# file showing the direct and indirect include dependencies of the file with 
+# other documented files.
+
+INCLUDE_GRAPH          = NO
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each 
+# documented header file showing the documented files that directly or 
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH      = NO
+
+# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will 
+# generate a call dependency graph for every global function or class method. 
+# Note that enabling this option will significantly increase the time of a run. 
+# So in most cases it will be better to enable call graphs for selected 
+# functions only using the \callgraph command.
+
+CALL_GRAPH             = NO
+
+# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then doxygen will 
+# generate a caller dependency graph for every global function or class method. 
+# Note that enabling this option will significantly increase the time of a run. 
+# So in most cases it will be better to enable caller graphs for selected 
+# functions only using the \callergraph command.
+
+CALLER_GRAPH           = NO
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY    = NO
+
+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES 
+# then doxygen will show the dependencies a directory has on other directories 
+# in a graphical way. The dependency relations are determined by the #include
+# relations between the files in the directories.
+
+DIRECTORY_GRAPH        = NO
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT       = jpg
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be 
+# found. If left blank, it is assumed the dot tool can be found in the path.
+
+DOT_PATH               = 
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that 
+# contain dot files that are included in the documentation (see the 
+# \dotfile command).
+
+DOTFILE_DIRS           = 
+
+# The MAX_DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of 
+# nodes that will be shown in the graph. If the number of nodes in a graph 
+# becomes larger than this value, doxygen will truncate the graph, which is 
+# visualized by representing a node as a red box. Note that doxygen will always 
+# show the root nodes and its direct children regardless of this setting.
+
+DOT_GRAPH_MAX_NODES    = 50
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent 
+# background. This is disabled by default, which results in a white background. 
+# Warning: Depending on the platform used, enabling this option may lead to 
+# badly anti-aliased labels on the edges of a graph (i.e. they become hard to 
+# read).
+
+DOT_TRANSPARENT        = NO
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output 
+# files in one run (i.e. multiple -o and -T options on the command line). This 
+# makes dot run faster, but since only newer versions of dot (>1.8.10) 
+# support this, this feature is disabled by default.
+
+DOT_MULTI_TARGETS      = NO
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 
+# generate a legend page explaining the meaning of the various boxes and 
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND        = NO
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 
+# remove the intermediate dot files that are used to generate 
+# the various graphs.
+
+DOT_CLEANUP            = NO
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine   
+#---------------------------------------------------------------------------
+
+# The SEARCHENGINE tag specifies whether or not a search engine should be 
+# used. If set to NO the values of all tags below this one will be ignored.
+
+SEARCHENGINE           = YES
diff --git a/mobile/include/pg-doxy/pg-doxy.sh b/mobile/include/pg-doxy/pg-doxy.sh
new file mode 100755 (executable)
index 0000000..c756291
--- /dev/null
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+# Create doxygen from debian package server
+# By Jungbae Lee (yi_jungbae@samsung.com)
+
+cd `dirname $0`
+CWD=`pwd`
+
+# Use doxygen 1.7.0
+export PATH=/usr/local/bin:${HOME}/mytools/bin:${PATH}
+export LD_LIBRARY_PATH=${HOME}/mytools/lib:${LD_LIBRARY_PATH}
+
+
+### Configuration
+SBOX=/scratchbox/users/$USER/home/$USER
+DOXYGEN_OUTPUT_DIR=$CWD/doxygen_output
+DOXYGEN=./tool/bin/doxygen
+DOXY_CONF=doxygen.conf
+IMAGE_DIR=../../image #need to change
+#IMAGE_DIR=[fill your image path]
+
+
+
+####doxygen configuration :: output Directory
+mkdir $DOXYGEN_OUTPUT_DIR
+
+echo "Doxygen running..."
+if [ ! -e $CWD/doxygen_output ]; then
+       mkdir $CWD/doxygen_output
+fi
+# Run doxygen
+$DOXYGEN $DOXY_CONF 2>&1
+
+#image copy
+cp $CWD/$IMAGE_DIR/* $DOXYGEN_OUTPUT_DIR/html/
+
+echo "Finished!"
+exit;
+
diff --git a/mobile/include/pg-doxy/slp_doxy.css b/mobile/include/pg-doxy/slp_doxy.css
new file mode 100644 (file)
index 0000000..12c03ac
--- /dev/null
@@ -0,0 +1,699 @@
+/* The standard CSS for doxygen */
+
+body, table, div, p, dl {
+       font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif;
+       font-size: 12px;
+}
+
+/* @group Heading Levels */
+
+h1 {
+       font-size: 18pt;
+       color: #3366ED;
+}
+
+h1.pg {
+       font-size: 18pt;
+       color: #336666;
+       margin-right:-0.6pt; 
+       margin-left:0cm; 
+       padding-top:0cm; 
+       padding-right:0cm; 
+       padding-bottom:1pt; 
+       padding-left:0cm; 
+       border-bottom-width:1.5pt; 
+       border-bottom-color:#336666; 
+       border-top-style:none; 
+       border-right-style:none; 
+       border-bottom-style:solid; 
+       border-left-style:none;
+}
+
+h2 {
+       font-size: 14pt;
+       color: #336666;
+}
+h2.pg {
+       font-size: 14pt;
+       color: #336666;
+       margin-right:-0.1pt; 
+       margin-left:0cm; 
+       padding-top:0cm; 
+       padding-right:0cm; 
+       padding-bottom:1pt; 
+       padding-left:0cm; 
+       border-bottom-width:1.2pt; 
+       border-bottom-color:#336666; 
+       border-top-style:none; 
+       border-right-style:none; 
+       border-bottom-style:solid; 
+       border-left-style:none;
+}
+
+
+h3 {
+       font-size: 12pt;
+       color: #336666;
+}
+h3.pg {
+       font-size: 12pt;
+       color: #336666;
+}
+
+
+
+dt {
+       font-weight: bold;
+}
+
+div.multicol {
+       -moz-column-gap: 1em;
+       -webkit-column-gap: 1em;
+       -moz-column-count: 3;
+       -webkit-column-count: 3;
+}
+
+p.startli, p.startdd, p.starttd {
+       margin-top: 2px;
+}
+
+p.endli {
+       margin-bottom: 0px;
+}
+
+p.enddd {
+       margin-bottom: 4px;
+}
+
+p.endtd {
+       margin-bottom: 2px;
+}
+
+/* @end */
+
+caption {
+       font-weight: bold;
+}
+
+span.legend {
+        font-size: 70%;
+        text-align: center;
+}
+
+h3.version {
+        font-size: 90%;
+        text-align: center;
+}
+
+div.qindex, div.navtab{
+       background-color: #EBEFF6;
+       border: 1px solid #A3B4D7;
+       text-align: center;
+       margin: 2px;
+       padding: 2px;
+}
+
+div.qindex, div.navpath {
+       width: 100%;
+       line-height: 140%;
+}
+
+div.navtab {
+       margin-right: 15px;
+}
+
+/* @group Link Styling */
+
+a {
+       color: #3D578C;
+       font-weight: normal;
+       text-decoration: none;
+}
+
+.contents a:visited {
+       color: #4665A2;
+}
+
+a:hover {
+       text-decoration: underline;
+}
+
+a.qindex {
+       font-weight: bold;
+}
+
+a.qindexHL {
+       font-weight: bold;
+       background-color: #9CAFD4;
+       color: #ffffff;
+       border: 1px double #869DCA;
+}
+
+.contents a.qindexHL:visited {
+        color: #ffffff;
+}
+
+a.el {
+       font-weight: bold;
+}
+
+a.elRef {
+}
+
+a.code {
+       color: #4665A2;
+}
+
+a.codeRef {
+       color: #4665A2;
+}
+
+/* @end */
+
+dl.el {
+       margin-left: -1cm;
+}
+
+.fragment {
+       font-family: monospace, fixed;
+       font-size: 105%;
+}
+
+pre.fragment {
+       border: 1px solid #C4CFE5;
+       background-color: #FBFCFD;
+       padding: 4px 6px;
+       margin: 4px 8px 4px 2px;
+       overflow: auto;
+       word-wrap: break-word;
+       font-size:  9pt;
+       line-height: 125%;
+}
+
+div.ah {
+       background-color: black;
+       font-weight: bold;
+       color: #ffffff;
+       margin-bottom: 3px;
+       margin-top: 3px
+       padding: .2em;
+       border: solid thin #333;
+       border-radius: .5em;
+       -webkit-border-radius: .5em;
+       -moz-border-radius: .5em;
+       -webkit-box-shadow: 2px 2px 3px #999;
+       -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+       background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
+       background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000);
+}
+
+div.groupHeader {
+       margin-left: 16px;
+       margin-top: 12px;
+       margin-bottom: 6px;
+       font-weight: bold;
+}
+
+div.groupText {
+       margin-left: 16px;
+       font-style: italic;
+}
+
+body {
+       background: white;
+       color: black;
+        margin: 0;
+}
+
+div.contents {
+       margin-top: 10px;
+       margin-left: 10px;
+       margin-right: 10px;
+}
+
+td.indexkey {
+       background-color: #EBEFF6;
+       font-weight: bold;
+       border: 1px solid #C4CFE5;
+       margin: 2px 0px 2px 0;
+       padding: 2px 10px;
+}
+
+td.indexvalue {
+       background-color: #EBEFF6;
+       border: 1px solid #C4CFE5;
+       padding: 2px 10px;
+       margin: 2px 0px;
+}
+
+tr.memlist {
+       background-color: #EEF1F7;
+}
+
+p.formulaDsp {
+       text-align: center;
+}
+
+img.formulaDsp {
+       
+}
+
+img.formulaInl {
+       vertical-align: middle;
+}
+
+div.center {
+       text-align: center;
+        margin-top: 0px;
+        margin-bottom: 0px;
+        padding: 0px;
+}
+
+div.center img {
+       border: 0px;
+}
+
+address.footer {
+       text-align: right;
+       padding-right: 12px;
+}
+
+img.footer {
+       border: 0px;
+       vertical-align: middle;
+}
+
+/* @group Code Colorization */
+
+span.keyword {
+       color: #008000
+}
+
+span.keywordtype {
+       color: #604020
+}
+
+span.keywordflow {
+       color: #e08000
+}
+
+span.comment {
+       color: #800000
+}
+
+span.preprocessor {
+       color: #806020
+}
+
+span.stringliteral {
+       color: #002080
+}
+
+span.charliteral {
+       color: #008080
+}
+
+span.vhdldigit { 
+       color: #ff00ff 
+}
+
+span.vhdlchar { 
+       color: #000000 
+}
+
+span.vhdlkeyword { 
+       color: #700070 
+}
+
+span.vhdllogic { 
+       color: #ff0000 
+}
+
+/* @end */
+
+/*
+.search {
+       color: #003399;
+       font-weight: bold;
+}
+
+form.search {
+       margin-bottom: 0px;
+       margin-top: 0px;
+}
+
+input.search {
+       font-size: 75%;
+       color: #000080;
+       font-weight: normal;
+       background-color: #e8eef2;
+}
+*/
+
+td.tiny {
+       font-size: 75%;
+}
+
+.dirtab {
+       padding: 4px;
+       border-collapse: collapse;
+       border: 1px solid #A3B4D7;
+}
+
+th.dirtab {
+       background: #EBEFF6;
+       font-weight: bold;
+}
+
+hr {
+       height: 0px;
+       border: none;
+       border-top: 1px solid #4A6AAA;
+}
+
+hr.footer {
+       height: 1px;
+}
+
+/* @group Member Descriptions */
+
+table.memberdecls {
+       border-spacing: 0px;
+       padding: 0px;
+}
+
+.mdescLeft, .mdescRight,
+.memItemLeft, .memItemRight,
+.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
+       background-color: #F9FAFC;
+       border: none;
+       margin: 4px;
+       padding: 1px 0 0 8px;
+}
+
+.mdescLeft, .mdescRight {
+       padding: 0px 8px 4px 8px;
+       color: #555;
+}
+
+.memItemLeft, .memItemRight, .memTemplParams {
+       border-top: 1px solid #C4CFE5;
+}
+
+.memItemLeft, .memTemplItemLeft {
+        white-space: nowrap;
+}
+
+.memTemplParams {
+       color: #4665A2;
+        white-space: nowrap;
+}
+
+/* @end */
+
+/* @group Member Details */
+
+/* Styles for detailed member documentation */
+
+.memtemplate {
+       font-size: 80%;
+       color: #4665A2;
+       font-weight: normal;
+       margin-left: 3px;
+}
+
+.memnav {
+       background-color: #EBEFF6;
+       border: 1px solid #A3B4D7;
+       text-align: center;
+       margin: 2px;
+       margin-right: 15px;
+       padding: 2px;
+}
+
+.memitem {
+       padding: 0;
+       margin-bottom: 10px;
+}
+
+.memname {
+        white-space: nowrap;
+        font-weight: bold;
+        margin-left: 6px;
+}
+
+.memproto {
+        border-top: 1px solid #A8B8D9;
+        border-left: 1px solid #A8B8D9;
+        border-right: 1px solid #A8B8D9;
+        padding: 6px 0px 6px 0px;
+        color: #253555;
+        font-weight: bold;
+        text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+        /* firefox specific markup */
+        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+        -moz-border-radius-topright: 8px;
+        -moz-border-radius-topleft: 8px;
+        /* webkit specific markup */
+        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+        -webkit-border-top-right-radius: 8px;
+        -webkit-border-top-left-radius: 8px;
+        background-image:url('nav_f.png');
+        background-repeat:repeat-x;
+        background-color: #E2E8F2;
+
+}
+
+.memdoc {
+        border-bottom: 1px solid #A8B8D9;      
+        border-left: 1px solid #A8B8D9;      
+        border-right: 1px solid #A8B8D9; 
+        padding: 2px 5px;
+        background-color: #FBFCFD;
+        border-top-width: 0;
+        /* firefox specific markup */
+        -moz-border-radius-bottomleft: 8px;
+        -moz-border-radius-bottomright: 8px;
+        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+        background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 60%, #F8 95%, #F0);
+        /* webkit specific markup */
+        -webkit-border-bottom-left-radius: 8px;
+        -webkit-border-bottom-right-radius: 8px;
+        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+        background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.6,#FFFFFF), color-stop(0.60,#FF), color-stop(0.95,#F8), to(#F0));
+}
+
+.paramkey {
+       text-align: right;
+}
+
+.paramtype {
+       white-space: nowrap;
+}
+
+.paramname {
+       color: #602020;
+       white-space: nowrap;
+}
+.paramname em {
+       font-style: normal;
+}
+
+/* @end */
+
+/* @group Directory (tree) */
+
+/* for the tree view */
+
+.ftvtree {
+       font-family: sans-serif;
+       margin: 0px;
+}
+
+/* these are for tree view when used as main index */
+
+.directory {
+       font-size: 9pt;
+       font-weight: bold;
+       margin: 5px;
+}
+
+.directory h3 {
+       margin: 0px;
+       margin-top: 1em;
+       font-size: 11pt;
+}
+
+/*
+The following two styles can be used to replace the root node title
+with an image of your choice.  Simply uncomment the next two styles,
+specify the name of your image and be sure to set 'height' to the
+proper pixel height of your image.
+*/
+
+/*
+.directory h3.swap {
+       height: 61px;
+       background-repeat: no-repeat;
+       background-image: url("yourimage.gif");
+}
+.directory h3.swap span {
+       display: none;
+}
+*/
+
+.directory > h3 {
+       margin-top: 0;
+}
+
+.directory p {
+       margin: 0px;
+       white-space: nowrap;
+}
+
+.directory div {
+       display: none;
+       margin: 0px;
+}
+
+.directory img {
+       vertical-align: -30%;
+}
+
+/* these are for tree view when not used as main index */
+
+.directory-alt {
+       font-size: 100%;
+       font-weight: bold;
+}
+
+.directory-alt h3 {
+       margin: 0px;
+       margin-top: 1em;
+       font-size: 11pt;
+}
+
+.directory-alt > h3 {
+       margin-top: 0;
+}
+
+.directory-alt p {
+       margin: 0px;
+       white-space: nowrap;
+}
+
+.directory-alt div {
+       display: none;
+       margin: 0px;
+}
+
+.directory-alt img {
+       vertical-align: -30%;
+}
+
+/* @end */
+
+div.dynheader {
+        margin-top: 8px;
+}
+
+address {
+       font-style: normal;
+       color: #2A3D61;
+}
+
+table.doxtable {
+       border-collapse:collapse;
+}
+
+table.doxtable td, table.doxtable th {
+       border: 1px solid #2D4068;
+       padding: 3px 7px 2px;
+}
+
+table.doxtable th {
+       background-color: #374F7F;
+       color: #FFFFFF;
+       font-size: 110%;
+       padding-bottom: 4px;
+       padding-top: 5px;
+       text-align:left;
+}
+
+.tabsearch {
+       top: 0px;
+       left: 10px;
+       height: 36px;
+       background-image: url('tab_b.png');
+       z-index: 101;
+       overflow: hidden;
+       font-size: 13px;
+}
+
+.navpath ul
+{
+       font-size: 11px;
+       background-image:url('tab_b.png');
+       background-repeat:repeat-x;
+       height:30px;
+       line-height:30px;
+       color:#8AA0CC;
+       border:solid 1px #C2CDE4;
+       overflow:hidden;
+       margin:0px;
+       padding:0px;
+}
+
+.navpath li
+{
+       list-style-type:none;
+       float:left;
+       padding-left:10px;
+       padding-right: 15px;
+       background-image:url('bc_s.png');
+       background-repeat:no-repeat;
+       background-position:right;
+       color:#364D7C;
+}
+
+.navpath a
+{
+       height:32px;
+       display:block;
+       text-decoration: none;
+       outline: none;
+}
+
+.navpath a:hover
+{
+       color:#6884BD;
+}
+
+div.summary
+{
+       float: right;
+       font-size: 8pt;
+       padding-right: 5px;
+       width: 50%;
+       text-align: right;
+}       
+
+div.summary a
+{
+       white-space: nowrap;
+}
+
+div.header
+{
+        background-image:url('nav_h.png');
+        background-repeat:repeat-x;
+       background-color: #F9FAFC;
+       margin:  0px;
+       border-bottom: 1px solid #C4CFE5;
+}
+
+div.headertitle
+{
+       padding: 5px 5px 5px 10px;
+}
+
diff --git a/mobile/include/pg-doxy/tool/bin/doxygen b/mobile/include/pg-doxy/tool/bin/doxygen
new file mode 100755 (executable)
index 0000000..3662da8
Binary files /dev/null and b/mobile/include/pg-doxy/tool/bin/doxygen differ
diff --git a/mobile/include/pg-doxy/tool/bin/doxytag b/mobile/include/pg-doxy/tool/bin/doxytag
new file mode 100755 (executable)
index 0000000..adb0c90
Binary files /dev/null and b/mobile/include/pg-doxy/tool/bin/doxytag differ
diff --git a/mobile/include/pg-doxy/tool/man/man1/doxygen.1 b/mobile/include/pg-doxy/tool/man/man1/doxygen.1
new file mode 100644 (file)
index 0000000..a3d8c9a
--- /dev/null
@@ -0,0 +1,46 @@
+.TH DOXYGEN "1" "July 2010" "doxygen 1.7.0" "User Commands"
+.SH NAME
+doxygen \- documentation system for various programming languages
+.SH DESCRIPTION
+Doxygen is a documentation system for C++, C, Java, Objective-C, IDL
+(Corba and Microsoft flavors) and to some extent PHP, C#, and D.
+.PP
+You can use doxygen in a number of ways:
+.TP
+1) Use doxygen to generate a template configuration file:
+.IP
+doxygen [-s] \fB\-g\fR [configName]
+.IP
+If - is used for configName doxygen will write to standard output.
+.TP 
+2) Use doxygen to update an old configuration file:
+.IP
+doxygen [-s] \fB\-u\fR [configName]
+.TP
+3) Use doxygen to generate documentation using an existing configuration file:
+.IP
+doxygen [configName]
+.IP
+If - is used for configName doxygen will read from standard input.
+.TP
+4) Use doxygen to generate a template style sheet file for RTF, HTML or Latex.
+.TP
+RTF:
+doxygen \fB\-w\fR rtf styleSheetFile
+.TP
+HTML:
+doxygen \fB\-w\fR html headerFile footerFile styleSheetFile [configFile]
+.TP
+LaTeX: doxygen \fB\-w\fR latex headerFile styleSheetFile [configFile]
+.TP
+5) Use doxygen to generate an rtf extensions file
+.TP
+RTF:
+doxygen \fB\-e\fR rtf extensionsFile
+.PP
+If \fB\-s\fR is specified the comments in the config file will be omitted.
+If configName is omitted `Doxyfile' will be used as a default.
+.SH AUTHOR
+Doxygen version 1.7.0, Copyright Dimitri van Heesch 1997-2007
+.SH SEE ALSO
+doxytag(1), doxywizard(1).
diff --git a/mobile/include/pg-doxy/tool/man/man1/doxytag.1 b/mobile/include/pg-doxy/tool/man/man1/doxytag.1
new file mode 100644 (file)
index 0000000..f496899
--- /dev/null
@@ -0,0 +1,21 @@
+.TH DOXYTAG "1" "July 2010" "doxytag 1.7.0" "User Commands"
+.SH NAME
+doxytag \- generates a tag file and/or a search index for a set of HTML files
+.SH SYNOPSIS
+.B doxytag
+[\fI-t tag_file\fR] [\fI-s index_file\fR] [ \fIhtml_file \fR[\fIhtml_file\fR...] ]
+.SH DESCRIPTION
+Generates a tag file and/or a search index for a set of HTML files.  Use
+doxysearch as a CGI program to search the tag file generated by doxytag.
+.SH OPTIONS
+.TP
+\fB\-t\fR <tag_file>
+Generate tag file <tag_file>.
+.TP
+\fB\-s\fR <index_file>
+Generate search index <index_file>.
+.PP
+If no HTML files are given all files in the current dir that
+have a .html extension are parsed.
+.SH SEE ALSO
+doxygen(1), doxywizard(1).
diff --git a/mobile/include/simple_util.h b/mobile/include/simple_util.h
new file mode 100755 (executable)
index 0000000..684a56d
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * syspopup
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@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.
+ *
+ */
+
+
+#ifndef __SIMPLE_UTIL__
+#define __SIMPLE_UTIL__
+
+#include <unistd.h>
+#include <ctype.h>
+#include <dlog.h>
+
+#undef LOG_TAG
+#define LOG_TAG "SYSPOPUP"
+
+#define MAX_LOCAL_BUFSZ 128
+
+#define _E(fmt, arg...) LOGE(fmt,##arg)
+#define _D(fmt, arg...) LOGD(fmt,##arg)
+
+#define SYSPOPUP_DBUS_PATH "/syspopup/dbus_handler"
+#define SYSPOPUP_DBUS_SIGNAL_INTERFACE "org.tizen.syspopup.signal"
+#define SYSPOPUP_DBUS_SP_TERM_SIGNAL   "syspopup_term"
+
+#endif
+
diff --git a/mobile/include/syspopup.h b/mobile/include/syspopup.h
new file mode 100755 (executable)
index 0000000..6897c5d
--- /dev/null
@@ -0,0 +1,139 @@
+/*
+ * syspopup
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@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.
+ *
+ */
+
+
+#ifndef __SYSPOPUP_H__
+#define __SYSPOPUP_H__
+
+#include <utilX.h>
+#include <bundle.h>
+#include <Elementary.h>
+
+/**
+ * @mainpage
+ * 
+ * This is System Popup Library 
+ * This library help to create system popup application & to launch/destroy system popup application
+ *
+ */
+
+/**
+ * @close
+ * @ingroup APPLICATION_FRAMEWORK
+ * @defgroup syspopup System Popup Library 
+ * @{
+ */
+
+/**
+ * @file        syspopup.h 
+ * @brief       System Popup UI Library
+ *
+ * Patched by   Knhoon Baik <knhoon.baik@samsung.com>
+ * Patched by  Noha Park <noha.park@samsung.com> 
+ */
+
+/**
+ * @defgroup syspopup_ui       Helper Library to create system popup application
+ * @ingroup syspopup 
+ * @brief                      Helper Library to create system popup application
+ */
+
+/**
+ * @addtogroup syspopup_ui
+ * @{
+ */
+
+/** 
+ *@brief action handler supplied by user 
+ *     def_term_fn is called when event to destroy all system popup occur
+ *     def_timeout_fn is called when the system popup's timeout is expired
+ */
+struct _syspopup_handler {
+       int (*def_term_fn) (bundle *, void *);
+       /**< handler supplied by user to process termination request */
+       int (*def_timeout_fn) (bundle *, void *);
+       /**< handler supplied by user to process timeout */
+};
+
+typedef struct _syspopup_handler syspopup_handler;
+
+/**
+ * @brief       This API make elm system popup window
+ *
+ *              This API make elm system popup window. 
+ *             and then, make given elm system popup window as system popup type
+ *             and set system popup properties based on system popup information DB.\n
+ *             system popup properties to be set : timeout, default action type, ....
+ *
+ * @param[in]   b              bundle received by app_reset handler (included system popup name)
+ * @param[in]   handler         user-supplied handler for handling system popup internal event.
+ * @param[in]  parent          parent window created with elm_win_add.
+ * @param[in]   user_data      user-supplied data
+ * @return      0 if success, -1 if fail
+ * @retval      0              - success
+ * @retval      -1             - generic error
+ */
+int syspopup_create(bundle *b, syspopup_handler *handler,
+                   Evas_Object *parent, void *user_data);
+
+/**
+ * @brief       This API reset created the elm system popup's properties
+ *
+ *             This API reset created the elm system popup's properties based on system popup information DB after extracting popup name from given bundle
+ *             system popup properties to be reset : timeout, default action type, ....
+ *
+ * @param[in]   b              bundle received by app_reset handler (included system popup name)
+ * @return      0 if success, negative value(<0) if fail
+ * @retval      0              - success
+ * @retval      -1             - generic error
+ */
+int syspopup_reset(bundle *b);
+
+/**
+ * @brief       This API ask that the system popup is created and is running 
+ *
+ *             This API ask that the the system popup with popup name is created and is running after extracting popup name from given bundle. 
+ *
+ * @param[in]   b              bundle received by app_reset handler (included system popup name)
+ * @return     true / false      
+ * @retval     1       app already has the system popup
+ * @retval      0      app has not the system popup
+ */
+int syspopup_has_popup(bundle *b);
+
+/**
+ * @brief       This API reset timeout value of system popup.
+ *
+ *             This API reset timeout value of system popup.
+ *
+ * @param[in]   b      bundle received by app_reset handler (included system popup name)
+ * @param[in]   time   timeout time (sec)
+ * @return     0       if success, negative value(<0) if fail
+ * @retval     0       success
+ * @retval     -1      generic error
+ */
+int syspopup_reset_timeout(bundle *b, unsigned int time);
+
+/** @} */
+
+#endif
+
diff --git a/mobile/include/syspopup_api.h b/mobile/include/syspopup_api.h
new file mode 100755 (executable)
index 0000000..c107d76
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+ * syspopup
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@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.
+ *
+ */
+
+
+#ifndef API
+#define API __attribute__ ((visibility("default")))
+#endif
+
diff --git a/mobile/include/syspopup_caller.h b/mobile/include/syspopup_caller.h
new file mode 100755 (executable)
index 0000000..e00d5d2
--- /dev/null
@@ -0,0 +1,101 @@
+/*
+ * syspopup
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@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.
+ *
+ */
+
+
+#ifndef __SYSPOPUP_CALLER_H__
+#define __SYSPOPUP_CALLER_H__
+
+#include <bundle.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @file        syspopup_caller.h 
+ * @brief       Library to launch/destroy System Popup Application
+ *
+ * Patched by   Knhoon Baik <knhoon.baik@samsung.com>
+ * Patched by   Noha Park <noha.park@samsung.com> 
+ */
+
+/**
+ * @defgroup syspopup_caller    Helper Library to launch/destroy system popup application
+ * @ingroup syspopup 
+ * @brief                       Helper Library to launch/destroy system popup application
+ */
+
+/**
+ * @addtogroup syspopup_caller
+ * @{
+ */
+
+/**
+ * @brief       This API launch the system popup application with given popup name.
+ *
+ *              This API launch the system popup application.
+ *              This API find system popup application package name with given popup name from system popup infomation DB.\n
+ *              And then, launch found application package
+ *
+ * @param[in]   popup_name      system popup application name to launch (not package name)
+ * @param[in]   b               extra bundle(arguement) to toss the popup application 
+ * @return      0 if success, negative value(<0) if fail
+ * @retval      0               - success
+ * @retval      -1              - generic error
+ *
+ * @sample code
+ * @code
+ *
+ * ...
+ *     bundle *b = NULL;
+ *
+ *     b = bundle_create();
+ *     bundle_add(b, "_SYSPOPUP_TITLE_", "System Popup Title");
+ *     bundle_add(b, "_SYSPOPUP_CONTENT_", "System Popup Content");
+ *
+ *     ret = syspopup_launch("syspopup-app", b);
+ *
+ *     bundle_free(b);
+ * ...
+ *
+ * @endcode
+ */
+int syspopup_launch(char *popup_name, bundle *b);
+
+/**
+ * @brief       This API generate destroy event to all system popup application.
+ *             This API can call with proper permission (root or inhouse)
+ *
+ * @return      0 if success, negative value(<0) if fail
+ * @retval      0               - success
+ * @retval      -1              - generic error
+ */
+int syspopup_destroy_all();
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
diff --git a/mobile/include/syspopup_core.h b/mobile/include/syspopup_core.h
new file mode 100755 (executable)
index 0000000..463a60a
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * syspopup
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@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.
+ *
+ */
+
+
+#ifndef __SYSPOPUP_CORE_H__
+#define __SYSPOPUP_CORE_H__
+
+#include <glib.h>
+#include <bundle.h>
+#include "syspopup_db.h"
+
+#define SYSPOPUP_DEFAULT_TIMEOUT 20    /* sec */
+#define SYSPOPUP_TERM_NOTI_PATH  "/usr/share/popup_noti_term"
+
+struct _syspopup {
+       int id;
+       char *name;
+       int (*def_term_fn) (bundle *, void *);
+       int (*def_timeout_fn) (bundle *, void *);
+       guint timeout_id;
+       def_term_action_t term_act;
+       def_endkey_action_t endkey_act;
+       void *user_data;
+       void *internal_data;
+       void *win;
+       int (*rotate_cb) (void *, void *, void *);
+       bundle *dupped_bundle;
+       struct _syspopup *next;
+};
+
+typedef struct _syspopup syspopup;
+
+syspopup *_syspopup_get_head();
+int _syspopup_add_new(syspopup *pinfo);
+syspopup *_syspopup_find(const char *name);
+syspopup *_syspopup_find_by_id(int id);
+void _syspopup_del(int id);
+
+int _syspopup_init(void (*term_handler) (void *),
+                  gboolean(*timeout_handler) (void *));
+int _syspopup_reset_timeout(syspopup *sp, syspopup_info_t *info);
+int _syspopup_set_term_type(syspopup *sp, syspopup_info_t *info);
+int _syspopup_set_endkey_type(syspopup *sp, syspopup_info_t *info);
+
+const char *_syspopup_get_name_from_bundle(bundle *b);
+int _syspopup_set_name_to_bundle(bundle *b, char *popup_name);
+
+#endif
+
diff --git a/mobile/include/syspopup_db.h b/mobile/include/syspopup_db.h
new file mode 100755 (executable)
index 0000000..f57e0dd
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * syspopup
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@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.
+ *
+ */
+
+
+#ifndef __SYSPOPUP_DB_H__
+#define __SYSPOPUP_DB_H__
+
+enum _def_term_action_t {
+       SYSPOPUP_TERM,
+       SYSPOPUP_HIDE,
+       SYSPOPUP_IGNORE
+};
+
+typedef enum _def_term_action_t def_term_action_t;
+
+enum _def_endkey_action_t {
+       SYSPOPUP_KEYEND_TERM,
+       SYSPOPUP_KEYEND_HIDE,
+       SYSPOPUP_KEYEND_IGNORE
+};
+
+typedef enum _def_endkey_action_t def_endkey_action_t;
+
+struct _syspopup_info_t {
+       char *name;             /* system popup name */
+       int prio;               /* sys popup priority :
+                                        cf - Utilx_Notification_Level */
+       int focus;              /* sys popup focus : ecore_x_icccm_hints_set */
+       unsigned int timeout;   /* default system popup timeout */
+       def_term_action_t term_act;     /* default terminate act */
+       def_endkey_action_t endkey_act; /* default terminate act */
+       char *pkgname;          /* package name to be launched */
+};
+
+typedef struct _syspopup_info_t syspopup_info_t;
+
+int _syspopup_info_add(syspopup_info_t *pinfo);
+syspopup_info_t *_syspopup_info_get(const char *popup_name);
+void _syspopup_info_free(syspopup_info_t *pinfo);
+
+#endif
+
diff --git a/mobile/org.tizen.syspopup-app.manifest b/mobile/org.tizen.syspopup-app.manifest
new file mode 100644 (file)
index 0000000..9c91346
--- /dev/null
@@ -0,0 +1,12 @@
+<manifest>
+       <define>
+               <domain name="org.tizen.syspopup-app"/>
+       </define>
+       <assign>
+               <filesystem path="/usr/share/icons/default/small/org.tizen.syspopup-app.png" label="_"/>
+               <filesystem path="/usr/bin/syspopup-app" exec_label="org.tizen.syspopup-app"/>
+       </assign>
+       <request>
+               <domain name="org.tizen.syspopup-app"/>
+       </request>
+</manifest>
diff --git a/mobile/pg-doxy/doxygen.conf b/mobile/pg-doxy/doxygen.conf
new file mode 100755 (executable)
index 0000000..a7cd424
--- /dev/null
@@ -0,0 +1,850 @@
+# Doxyfile 1.5.2
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+#       TAG = value [value, ...]
+# For lists items can also be appended using:
+#       TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+DOXYFILE_ENCODING      = UTF-8
+PROJECT_NAME           =  SLP-Developer Library
+PROJECT_NUMBER         = 
+OUTPUT_DIRECTORY       = ./doxygen_output
+CREATE_SUBDIRS         = NO
+OUTPUT_LANGUAGE        = English
+BRIEF_MEMBER_DESC      = YES
+REPEAT_BRIEF           = YES
+ABBREVIATE_BRIEF       = NO
+ALWAYS_DETAILED_SEC    = YES
+INLINE_INHERITED_MEMB  = NO
+FULL_PATH_NAMES        = NO
+STRIP_FROM_PATH        = 
+STRIP_FROM_INC_PATH    = 
+SHORT_NAMES            = YES
+JAVADOC_AUTOBRIEF      = NO
+MULTILINE_CPP_IS_BRIEF = NO
+DETAILS_AT_TOP         = YES
+INHERIT_DOCS           = YES
+SEPARATE_MEMBER_PAGES  = YES
+TAB_SIZE               = 8
+ALIASES                = 
+OPTIMIZE_OUTPUT_FOR_C  = NO
+OPTIMIZE_OUTPUT_JAVA   = NO
+BUILTIN_STL_SUPPORT    = NO
+CPP_CLI_SUPPORT        = NO
+DISTRIBUTE_GROUP_DOC   = NO
+SUBGROUPING            = YES
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+EXTRACT_ALL            = YES
+EXTRACT_PRIVATE        = YES
+EXTRACT_STATIC         = YES
+EXTRACT_LOCAL_CLASSES  = NO
+EXTRACT_LOCAL_METHODS  = YES
+HIDE_UNDOC_MEMBERS     = YES
+HIDE_UNDOC_CLASSES     = YES
+HIDE_FRIEND_COMPOUNDS  = YES
+HIDE_IN_BODY_DOCS      = NO
+INTERNAL_DOCS          = NO
+CASE_SENSE_NAMES       = YES
+HIDE_SCOPE_NAMES       = NO
+SHOW_INCLUDE_FILES     = YES
+INLINE_INFO            = YES
+SORT_MEMBER_DOCS       = YES
+SORT_BRIEF_DOCS        = YES
+SORT_BY_SCOPE_NAME     = YES
+SORT_GROUP_NAMES     = YES
+GENERATE_TODOLIST      = NO
+USE_INLINE_TREES      = NO
+SHOW_NAMESPACES                = NO
+HTML DYNAMIC SECTIONS          = YES
+GENERATE_TESTLIST      = NO
+GENERATE_BUGLIST       = NO
+GENERATE_DEPRECATEDLIST= NO
+ENABLED_SECTIONS       = 
+MAX_INITIALIZER_LINES  = 30
+SHOW_USED_FILES        = YES
+SHOW_DIRECTORIES       = NO
+FILE_VERSION_FILTER    = 
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated 
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET                  = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are 
+# generated by doxygen. Possible values are YES and NO. If left blank 
+# NO is used.
+
+WARNINGS               = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED   = YES
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
+# potential errors in the documentation, such as not documenting some 
+# parameters in a documented function, or documenting parameters that 
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR      = YES
+
+# This WARN_NO_PARAMDOC option can be abled to get warnings for 
+# functions that are documented, but have no documentation for their parameters 
+# or return value. If set to NO (the default) doxygen will only warn about 
+# wrong or incomplete parameter documentation, but not about the absence of 
+# documentation.
+
+WARN_NO_PARAMDOC       = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that 
+# doxygen can produce. The string should contain the $file, $line, and $text 
+# tags, which will be replaced by the file and line number from which the 
+# warning originated and the warning text. Optionally the format may contain 
+# $version, which will be replaced by the version of the file (if it could 
+# be obtained via FILE_VERSION_FILTER)
+
+WARN_FORMAT            = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning 
+# and error messages should be written. If left blank the output is written 
+# to stderr.
+
+WARN_LOGFILE           = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain 
+# documented source files. You may enter file names like "myfile.cpp" or 
+# directories like "/usr/src/myproject". Separate the files or directories 
+# with spaces.
+
+INPUT                  = .. 
+
+# This tag can be used to specify the character encoding of the source files that 
+# doxygen parses. Internally doxygen uses the UTF-8 encoding, which is also the default 
+# input encoding. Doxygen uses libiconv (or the iconv built into libc) for the transcoding. 
+# See http://www.gnu.org/software/libiconv for the list of possible encodings.
+
+INPUT_ENCODING         = UTF-8
+FILE_PATTERNS          = *.h \
+                        *.doxy
+RECURSIVE              = YES
+EXCLUDE                =  
+EXCLUDE_SYMLINKS       = NO
+EXCLUDE_PATTERNS       = */test/* \
+                       */debian/* \
+                       */lost+found/* \
+                       */i386/* \
+                       */arm/* \
+                       */simulator/*  \
+                       *test* \
+                       */voda3rd/* 
+EXCLUDE_SYMBOLS        = 
+EXAMPLE_PATH           = 
+EXAMPLE_PATTERNS       = 
+EXAMPLE_RECURSIVE      = NO
+IMAGE_PATH             = ../image 
+INPUT_FILTER           = 
+FILTER_PATTERNS        = 
+FILTER_SOURCE_FILES    = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
+# be generated. Documented entities will be cross-referenced with these sources. 
+# Note: To get rid of all source code in the generated output, make sure also 
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER         = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body 
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES         = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
+# doxygen to hide any special comment blocks from generated source code 
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS    = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES (the default) 
+# then for each documented function all documented 
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = YES
+
+# If the REFERENCES_RELATION tag is set to YES (the default) 
+# then for each documented function all documented entities 
+# called/used by that function will be listed.
+
+REFERENCES_RELATION    = YES
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
+# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
+# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
+# link to the source code.  Otherwise they will link to the documentstion.
+
+REFERENCES_LINK_SOURCE = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code 
+# will point to the HTML generated by the htags(1) tool instead of doxygen 
+# built-in source browser. The htags tool is part of GNU's global source 
+# tagging system (see http://www.gnu.org/software/global/global.html). You 
+# will need version 4.8.6 or higher.
+
+USE_HTAGS              = NO
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
+# will generate a verbatim copy of the header file for each class for 
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS       = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
+# of all compounds will be generated. Enable this if the project 
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX     = YES
+COLS_IN_ALPHA_INDEX    = 10
+IGNORE_PREFIX          = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
+# generate HTML output.
+
+GENERATE_HTML          = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT            = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION    = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard header.
+
+HTML_HEADER            = 
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard footer.
+
+HTML_FOOTER            =
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
+# style sheet that is used by each HTML page. It can be used to 
+# fine-tune the look of the HTML output. If the tag is left blank doxygen 
+# will generate a default style sheet. Note that doxygen will try to copy 
+# the style sheet file to the HTML output directory, so don't put your own 
+# stylesheet in the HTML output directory as well, or it will be erased!
+
+HTML_STYLESHEET        =./slp_doxy.css
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
+# files or namespaces will be aligned in HTML using tables. If set to 
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS     = YES
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files 
+# will be generated that can be used as input for tools like the 
+# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) 
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP      = YES
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 
+# be used to specify the file name of the resulting .chm file. You 
+# can add a path in front of the file if the result should not be 
+# written to the html output directory.
+
+CHM_FILE               = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 
+# be used to specify the location (absolute path including file name) of 
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION           = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 
+# controls if a separate .chi index file is generated (YES) or that 
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI           = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 
+# controls whether a binary table of contents is generated (YES) or a 
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC             = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members 
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND             = NO
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at 
+# top of each HTML page. The value NO (the default) enables the index and 
+# the value YES disables it.
+
+DISABLE_INDEX          = NO
+
+# This tag can be used to set the number of enum values (range [1..20]) 
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE   = 4
+
+# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
+# generated containing a tree-like index structure (just like the one that 
+# is generated for HTML Help). For this to work a browser that supports 
+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 
+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 
+# probably better off using the HTML help feature.
+
+GENERATE_TREEVIEW      = YES
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 
+# used to set the initial width (in pixels) of the frame in which the tree 
+# is shown.
+
+TREEVIEW_WIDTH         = 190
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
+# generate Latex output.
+
+GENERATE_LATEX         = NO
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT           = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
+# invoked. If left blank `latex' will be used as the default command name.
+
+LATEX_CMD_NAME         = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 
+# generate index for LaTeX. If left blank `makeindex' will be used as the 
+# default command name.
+
+MAKEINDEX_CMD_NAME     = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
+# LaTeX documents. This may be useful for small projects and may help to 
+# save some trees in general.
+
+COMPACT_LATEX          = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used 
+# by the printer. Possible values are: a4, a4wide, letter, legal and 
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE             = a4wide
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES         = 
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for 
+# the generated latex document. The header should contain everything until 
+# the first chapter. If it is left blank doxygen will generate a 
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER           = 
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will 
+# contain links (just like the HTML output) instead of page references 
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS         = NO
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 
+# plain latex in the generated Makefile. Set this option to YES to get a 
+# higher quality PDF documentation.
+
+USE_PDFLATEX           = NO
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
+# command to the generated LaTeX files. This will instruct LaTeX to keep 
+# running if errors occur, instead of asking the user for help. 
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE        = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not 
+# include the index chapters (such as File Index, Compound Index, etc.) 
+# in the output.
+
+LATEX_HIDE_INDICES     = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
+# The RTF output is optimized for Word 97 and may not look very pretty with 
+# other RTF readers or editors.
+
+GENERATE_RTF           = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT             = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact 
+# RTF documents. This may be useful for small projects and may help to 
+# save some trees in general.
+
+COMPACT_RTF            = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 
+# will contain hyperlink fields. The RTF file will 
+# contain links (just like the HTML output) instead of page references. 
+# This makes the output suitable for online browsing using WORD or other 
+# programs which support those fields. 
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS         = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's 
+# config file, i.e. a series of assignments. You only have to provide 
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE    = 
+
+# Set optional variables used in the generation of an rtf document. 
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE    = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
+# generate man pages
+
+GENERATE_MAN           = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT             = man
+
+# The MAN_EXTENSION tag determines the extension that is added to 
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION          = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output, 
+# then it will generate one additional man file for each entity 
+# documented in the real man page(s). These additional files 
+# only source the real man page, but without them the man command 
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS              = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will 
+# generate an XML file that captures the structure of 
+# the code including all documentation.
+
+GENERATE_XML           = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT             = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_SCHEMA             = 
+
+# The XML_DTD tag can be used to specify an XML DTD, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_DTD                = 
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will 
+# dump the program listings (including syntax highlighting 
+# and cross-referencing information) to the XML output. Note that 
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING     = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 
+# generate an AutoGen Definitions (see autogen.sf.net) file 
+# that captures the structure of the code including all 
+# documentation. Note that this feature is still experimental 
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF   = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will 
+# generate a Perl module file that captures the structure of 
+# the code including all documentation. Note that this 
+# feature is still experimental and incomplete at the 
+# moment.
+
+GENERATE_PERLMOD       = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate 
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able 
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX          = YES
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 
+# nicely formatted so it can be parsed by a human reader.  This is useful 
+# if you want to understand what is going on.  On the other hand, if this 
+# tag is set to NO the size of the Perl module output will be much smaller 
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY         = YES
+
+# The names of the make variables in the generated doxyrules.make file 
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 
+# This is useful so different doxyrules.make files included by the same 
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX = 
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor   
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
+# evaluate all C-preprocessor directives found in the sources and include 
+# files.
+
+ENABLE_PREPROCESSING   = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
+# names in the source code. If set to NO (the default) only conditional 
+# compilation will be performed. Macro expansion can be done in a controlled 
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION        = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
+# then the macro expansion is limited to the macros specified with the 
+# PREDEFINED and EXPAND_AS_DEFINED tags.
+
+EXPAND_ONLY_PREDEF     = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES        = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that 
+# contain include files that are not input files but should be processed by 
+# the preprocessor.
+
+INCLUDE_PATH           = 
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
+# patterns (like *.h and *.hpp) to filter out the header-files in the 
+# directories. If left blank, the patterns specified with FILE_PATTERNS will 
+# be used.
+
+INCLUDE_FILE_PATTERNS  = 
+
+# The PREDEFINED tag can be used to specify one or more macro names that 
+# are defined before the preprocessor is started (similar to the -D option of 
+# gcc). The argument of the tag is a list of macros of the form: name 
+# or name=definition (no spaces). If the definition and the = are 
+# omitted =1 is assumed. To prevent a macro definition from being 
+# undefined via #undef or recursively expanded use the := operator 
+# instead of the = operator.
+
+PREDEFINED             = 
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
+# this tag can be used to specify a list of macro names that should be expanded. 
+# The macro definition that is found in the sources will be used. 
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED      = 
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
+# doxygen's preprocessor will remove all function-like macros that are alone 
+# on a line, have an all uppercase name, and do not end with a semicolon. Such 
+# function macros are typically used for boiler-plate code, and will confuse 
+# the parser if not removed.
+
+SKIP_FUNCTION_MACROS   = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references   
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles. 
+# Optionally an initial location of the external documentation 
+# can be added for each tagfile. The format of a tag file without 
+# this location is as follows: 
+#   TAGFILES = file1 file2 ... 
+# Adding location for the tag files is done as follows: 
+#   TAGFILES = file1=loc1 "file2 = loc2" ... 
+# where "loc1" and "loc2" can be relative or absolute paths or 
+# URLs. If a location is present for each tag, the installdox tool 
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen 
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES               = 
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create 
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE       = 
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed 
+# in the class index. If set to NO only the inherited external classes 
+# will be listed.
+
+ALLEXTERNALS           = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 
+# in the modules index. If set to NO, only the current project's groups will 
+# be listed.
+
+EXTERNAL_GROUPS        = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script 
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH              = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool   
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base 
+# or super classes. Setting the tag to NO turns the diagrams off. Note that 
+# this option is superseded by the HAVE_DOT option below. This is only a 
+# fallback. It is recommended to install and use dot, since it yields more 
+# powerful graphs.
+
+CLASS_DIAGRAMS         = NO
+
+# You can define message sequence charts within doxygen comments using the \msc 
+# command. Doxygen will then run the mscgen tool (see http://www.mcternan.me.uk/mscgen/) to 
+# produce the chart and insert it in the documentation. The MSCGEN_PATH tag allows you to 
+# specify the directory where the mscgen tool resides. If left empty the tool is assumed to 
+# be found in the default search path.
+
+MSCGEN_PATH            = 
+
+# If set to YES, the inheritance and collaboration graphs will hide 
+# inheritance and usage relations if the target is undocumented 
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS   = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
+# available from the path. This tool is part of Graphviz, a graph visualization 
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section 
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT               = NO
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect inheritance relations. Setting this tag to YES will force the 
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH            = NO
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect implementation dependencies (inheritance, containment, and 
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH    = NO
+
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for groups, showing the direct groups dependencies
+
+GROUP_GRAPHS           = NO
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
+# collaboration diagrams in a style similar to the OMG's Unified Modeling 
+# Language.
+
+UML_LOOK               = NO
+
+# If set to YES, the inheritance and collaboration graphs will show the 
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS     = NO
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 
+# tags are set to YES then doxygen will generate a graph for each documented 
+# file showing the direct and indirect include dependencies of the file with 
+# other documented files.
+
+INCLUDE_GRAPH          = NO
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each 
+# documented header file showing the documented files that directly or 
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH      = NO
+
+# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will 
+# generate a call dependency graph for every global function or class method. 
+# Note that enabling this option will significantly increase the time of a run. 
+# So in most cases it will be better to enable call graphs for selected 
+# functions only using the \callgraph command.
+
+CALL_GRAPH             = NO
+
+# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then doxygen will 
+# generate a caller dependency graph for every global function or class method. 
+# Note that enabling this option will significantly increase the time of a run. 
+# So in most cases it will be better to enable caller graphs for selected 
+# functions only using the \callergraph command.
+
+CALLER_GRAPH           = NO
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY    = NO
+
+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES 
+# then doxygen will show the dependencies a directory has on other directories 
+# in a graphical way. The dependency relations are determined by the #include
+# relations between the files in the directories.
+
+DIRECTORY_GRAPH        = NO
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT       = jpg
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be 
+# found. If left blank, it is assumed the dot tool can be found in the path.
+
+DOT_PATH               = 
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that 
+# contain dot files that are included in the documentation (see the 
+# \dotfile command).
+
+DOTFILE_DIRS           = 
+
+# The MAX_DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of 
+# nodes that will be shown in the graph. If the number of nodes in a graph 
+# becomes larger than this value, doxygen will truncate the graph, which is 
+# visualized by representing a node as a red box. Note that doxygen will always 
+# show the root nodes and its direct children regardless of this setting.
+
+DOT_GRAPH_MAX_NODES    = 50
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent 
+# background. This is disabled by default, which results in a white background. 
+# Warning: Depending on the platform used, enabling this option may lead to 
+# badly anti-aliased labels on the edges of a graph (i.e. they become hard to 
+# read).
+
+DOT_TRANSPARENT        = NO
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output 
+# files in one run (i.e. multiple -o and -T options on the command line). This 
+# makes dot run faster, but since only newer versions of dot (>1.8.10) 
+# support this, this feature is disabled by default.
+
+DOT_MULTI_TARGETS      = NO
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 
+# generate a legend page explaining the meaning of the various boxes and 
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND        = NO
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 
+# remove the intermediate dot files that are used to generate 
+# the various graphs.
+
+DOT_CLEANUP            = NO
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine   
+#---------------------------------------------------------------------------
+
+# The SEARCHENGINE tag specifies whether or not a search engine should be 
+# used. If set to NO the values of all tags below this one will be ignored.
+
+SEARCHENGINE           = YES
diff --git a/mobile/pg-doxy/pg-doxy.sh b/mobile/pg-doxy/pg-doxy.sh
new file mode 100755 (executable)
index 0000000..f542386
--- /dev/null
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+# Create doxygen from debian package server
+# By Jungbae Lee (yi_jungbae@samsung.com)
+
+cd `dirname $0`
+CWD=`pwd`
+
+# Use doxygen 1.7.0
+export PATH=/usr/local/bin:${HOME}/mytools/bin:${PATH}
+export LD_LIBRARY_PATH=${HOME}/mytools/lib:${LD_LIBRARY_PATH}
+
+
+### Configuration
+SBOX=/scratchbox/users/$USER/home/$USER
+DOXYGEN_OUTPUT_DIR=$CWD/doxygen_output
+DOXYGEN=./tool/bin/doxygen
+DOXY_CONF=doxygen.conf
+IMAGE_DIR=../image #need to change
+#IMAGE_DIR=[fill your image path]
+
+
+
+####doxygen configuration :: output Directory
+mkdir $DOXYGEN_OUTPUT_DIR
+
+echo "Doxygen running..."
+if [ ! -e $CWD/doxygen_output ]; then
+       mkdir $CWD/doxygen_output
+fi
+# Run doxygen
+$DOXYGEN $DOXY_CONF 2>&1
+
+#image copy
+cp $CWD/$IMAGE_DIR/* $DOXYGEN_OUTPUT_DIR/html/
+
+echo "Finished!"
+exit;
+
diff --git a/mobile/pg-doxy/slp_doxy.css b/mobile/pg-doxy/slp_doxy.css
new file mode 100644 (file)
index 0000000..12c03ac
--- /dev/null
@@ -0,0 +1,699 @@
+/* The standard CSS for doxygen */
+
+body, table, div, p, dl {
+       font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif;
+       font-size: 12px;
+}
+
+/* @group Heading Levels */
+
+h1 {
+       font-size: 18pt;
+       color: #3366ED;
+}
+
+h1.pg {
+       font-size: 18pt;
+       color: #336666;
+       margin-right:-0.6pt; 
+       margin-left:0cm; 
+       padding-top:0cm; 
+       padding-right:0cm; 
+       padding-bottom:1pt; 
+       padding-left:0cm; 
+       border-bottom-width:1.5pt; 
+       border-bottom-color:#336666; 
+       border-top-style:none; 
+       border-right-style:none; 
+       border-bottom-style:solid; 
+       border-left-style:none;
+}
+
+h2 {
+       font-size: 14pt;
+       color: #336666;
+}
+h2.pg {
+       font-size: 14pt;
+       color: #336666;
+       margin-right:-0.1pt; 
+       margin-left:0cm; 
+       padding-top:0cm; 
+       padding-right:0cm; 
+       padding-bottom:1pt; 
+       padding-left:0cm; 
+       border-bottom-width:1.2pt; 
+       border-bottom-color:#336666; 
+       border-top-style:none; 
+       border-right-style:none; 
+       border-bottom-style:solid; 
+       border-left-style:none;
+}
+
+
+h3 {
+       font-size: 12pt;
+       color: #336666;
+}
+h3.pg {
+       font-size: 12pt;
+       color: #336666;
+}
+
+
+
+dt {
+       font-weight: bold;
+}
+
+div.multicol {
+       -moz-column-gap: 1em;
+       -webkit-column-gap: 1em;
+       -moz-column-count: 3;
+       -webkit-column-count: 3;
+}
+
+p.startli, p.startdd, p.starttd {
+       margin-top: 2px;
+}
+
+p.endli {
+       margin-bottom: 0px;
+}
+
+p.enddd {
+       margin-bottom: 4px;
+}
+
+p.endtd {
+       margin-bottom: 2px;
+}
+
+/* @end */
+
+caption {
+       font-weight: bold;
+}
+
+span.legend {
+        font-size: 70%;
+        text-align: center;
+}
+
+h3.version {
+        font-size: 90%;
+        text-align: center;
+}
+
+div.qindex, div.navtab{
+       background-color: #EBEFF6;
+       border: 1px solid #A3B4D7;
+       text-align: center;
+       margin: 2px;
+       padding: 2px;
+}
+
+div.qindex, div.navpath {
+       width: 100%;
+       line-height: 140%;
+}
+
+div.navtab {
+       margin-right: 15px;
+}
+
+/* @group Link Styling */
+
+a {
+       color: #3D578C;
+       font-weight: normal;
+       text-decoration: none;
+}
+
+.contents a:visited {
+       color: #4665A2;
+}
+
+a:hover {
+       text-decoration: underline;
+}
+
+a.qindex {
+       font-weight: bold;
+}
+
+a.qindexHL {
+       font-weight: bold;
+       background-color: #9CAFD4;
+       color: #ffffff;
+       border: 1px double #869DCA;
+}
+
+.contents a.qindexHL:visited {
+        color: #ffffff;
+}
+
+a.el {
+       font-weight: bold;
+}
+
+a.elRef {
+}
+
+a.code {
+       color: #4665A2;
+}
+
+a.codeRef {
+       color: #4665A2;
+}
+
+/* @end */
+
+dl.el {
+       margin-left: -1cm;
+}
+
+.fragment {
+       font-family: monospace, fixed;
+       font-size: 105%;
+}
+
+pre.fragment {
+       border: 1px solid #C4CFE5;
+       background-color: #FBFCFD;
+       padding: 4px 6px;
+       margin: 4px 8px 4px 2px;
+       overflow: auto;
+       word-wrap: break-word;
+       font-size:  9pt;
+       line-height: 125%;
+}
+
+div.ah {
+       background-color: black;
+       font-weight: bold;
+       color: #ffffff;
+       margin-bottom: 3px;
+       margin-top: 3px
+       padding: .2em;
+       border: solid thin #333;
+       border-radius: .5em;
+       -webkit-border-radius: .5em;
+       -moz-border-radius: .5em;
+       -webkit-box-shadow: 2px 2px 3px #999;
+       -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+       background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
+       background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000);
+}
+
+div.groupHeader {
+       margin-left: 16px;
+       margin-top: 12px;
+       margin-bottom: 6px;
+       font-weight: bold;
+}
+
+div.groupText {
+       margin-left: 16px;
+       font-style: italic;
+}
+
+body {
+       background: white;
+       color: black;
+        margin: 0;
+}
+
+div.contents {
+       margin-top: 10px;
+       margin-left: 10px;
+       margin-right: 10px;
+}
+
+td.indexkey {
+       background-color: #EBEFF6;
+       font-weight: bold;
+       border: 1px solid #C4CFE5;
+       margin: 2px 0px 2px 0;
+       padding: 2px 10px;
+}
+
+td.indexvalue {
+       background-color: #EBEFF6;
+       border: 1px solid #C4CFE5;
+       padding: 2px 10px;
+       margin: 2px 0px;
+}
+
+tr.memlist {
+       background-color: #EEF1F7;
+}
+
+p.formulaDsp {
+       text-align: center;
+}
+
+img.formulaDsp {
+       
+}
+
+img.formulaInl {
+       vertical-align: middle;
+}
+
+div.center {
+       text-align: center;
+        margin-top: 0px;
+        margin-bottom: 0px;
+        padding: 0px;
+}
+
+div.center img {
+       border: 0px;
+}
+
+address.footer {
+       text-align: right;
+       padding-right: 12px;
+}
+
+img.footer {
+       border: 0px;
+       vertical-align: middle;
+}
+
+/* @group Code Colorization */
+
+span.keyword {
+       color: #008000
+}
+
+span.keywordtype {
+       color: #604020
+}
+
+span.keywordflow {
+       color: #e08000
+}
+
+span.comment {
+       color: #800000
+}
+
+span.preprocessor {
+       color: #806020
+}
+
+span.stringliteral {
+       color: #002080
+}
+
+span.charliteral {
+       color: #008080
+}
+
+span.vhdldigit { 
+       color: #ff00ff 
+}
+
+span.vhdlchar { 
+       color: #000000 
+}
+
+span.vhdlkeyword { 
+       color: #700070 
+}
+
+span.vhdllogic { 
+       color: #ff0000 
+}
+
+/* @end */
+
+/*
+.search {
+       color: #003399;
+       font-weight: bold;
+}
+
+form.search {
+       margin-bottom: 0px;
+       margin-top: 0px;
+}
+
+input.search {
+       font-size: 75%;
+       color: #000080;
+       font-weight: normal;
+       background-color: #e8eef2;
+}
+*/
+
+td.tiny {
+       font-size: 75%;
+}
+
+.dirtab {
+       padding: 4px;
+       border-collapse: collapse;
+       border: 1px solid #A3B4D7;
+}
+
+th.dirtab {
+       background: #EBEFF6;
+       font-weight: bold;
+}
+
+hr {
+       height: 0px;
+       border: none;
+       border-top: 1px solid #4A6AAA;
+}
+
+hr.footer {
+       height: 1px;
+}
+
+/* @group Member Descriptions */
+
+table.memberdecls {
+       border-spacing: 0px;
+       padding: 0px;
+}
+
+.mdescLeft, .mdescRight,
+.memItemLeft, .memItemRight,
+.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
+       background-color: #F9FAFC;
+       border: none;
+       margin: 4px;
+       padding: 1px 0 0 8px;
+}
+
+.mdescLeft, .mdescRight {
+       padding: 0px 8px 4px 8px;
+       color: #555;
+}
+
+.memItemLeft, .memItemRight, .memTemplParams {
+       border-top: 1px solid #C4CFE5;
+}
+
+.memItemLeft, .memTemplItemLeft {
+        white-space: nowrap;
+}
+
+.memTemplParams {
+       color: #4665A2;
+        white-space: nowrap;
+}
+
+/* @end */
+
+/* @group Member Details */
+
+/* Styles for detailed member documentation */
+
+.memtemplate {
+       font-size: 80%;
+       color: #4665A2;
+       font-weight: normal;
+       margin-left: 3px;
+}
+
+.memnav {
+       background-color: #EBEFF6;
+       border: 1px solid #A3B4D7;
+       text-align: center;
+       margin: 2px;
+       margin-right: 15px;
+       padding: 2px;
+}
+
+.memitem {
+       padding: 0;
+       margin-bottom: 10px;
+}
+
+.memname {
+        white-space: nowrap;
+        font-weight: bold;
+        margin-left: 6px;
+}
+
+.memproto {
+        border-top: 1px solid #A8B8D9;
+        border-left: 1px solid #A8B8D9;
+        border-right: 1px solid #A8B8D9;
+        padding: 6px 0px 6px 0px;
+        color: #253555;
+        font-weight: bold;
+        text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+        /* firefox specific markup */
+        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+        -moz-border-radius-topright: 8px;
+        -moz-border-radius-topleft: 8px;
+        /* webkit specific markup */
+        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+        -webkit-border-top-right-radius: 8px;
+        -webkit-border-top-left-radius: 8px;
+        background-image:url('nav_f.png');
+        background-repeat:repeat-x;
+        background-color: #E2E8F2;
+
+}
+
+.memdoc {
+        border-bottom: 1px solid #A8B8D9;      
+        border-left: 1px solid #A8B8D9;      
+        border-right: 1px solid #A8B8D9; 
+        padding: 2px 5px;
+        background-color: #FBFCFD;
+        border-top-width: 0;
+        /* firefox specific markup */
+        -moz-border-radius-bottomleft: 8px;
+        -moz-border-radius-bottomright: 8px;
+        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+        background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 60%, #F8 95%, #F0);
+        /* webkit specific markup */
+        -webkit-border-bottom-left-radius: 8px;
+        -webkit-border-bottom-right-radius: 8px;
+        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+        background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.6,#FFFFFF), color-stop(0.60,#FF), color-stop(0.95,#F8), to(#F0));
+}
+
+.paramkey {
+       text-align: right;
+}
+
+.paramtype {
+       white-space: nowrap;
+}
+
+.paramname {
+       color: #602020;
+       white-space: nowrap;
+}
+.paramname em {
+       font-style: normal;
+}
+
+/* @end */
+
+/* @group Directory (tree) */
+
+/* for the tree view */
+
+.ftvtree {
+       font-family: sans-serif;
+       margin: 0px;
+}
+
+/* these are for tree view when used as main index */
+
+.directory {
+       font-size: 9pt;
+       font-weight: bold;
+       margin: 5px;
+}
+
+.directory h3 {
+       margin: 0px;
+       margin-top: 1em;
+       font-size: 11pt;
+}
+
+/*
+The following two styles can be used to replace the root node title
+with an image of your choice.  Simply uncomment the next two styles,
+specify the name of your image and be sure to set 'height' to the
+proper pixel height of your image.
+*/
+
+/*
+.directory h3.swap {
+       height: 61px;
+       background-repeat: no-repeat;
+       background-image: url("yourimage.gif");
+}
+.directory h3.swap span {
+       display: none;
+}
+*/
+
+.directory > h3 {
+       margin-top: 0;
+}
+
+.directory p {
+       margin: 0px;
+       white-space: nowrap;
+}
+
+.directory div {
+       display: none;
+       margin: 0px;
+}
+
+.directory img {
+       vertical-align: -30%;
+}
+
+/* these are for tree view when not used as main index */
+
+.directory-alt {
+       font-size: 100%;
+       font-weight: bold;
+}
+
+.directory-alt h3 {
+       margin: 0px;
+       margin-top: 1em;
+       font-size: 11pt;
+}
+
+.directory-alt > h3 {
+       margin-top: 0;
+}
+
+.directory-alt p {
+       margin: 0px;
+       white-space: nowrap;
+}
+
+.directory-alt div {
+       display: none;
+       margin: 0px;
+}
+
+.directory-alt img {
+       vertical-align: -30%;
+}
+
+/* @end */
+
+div.dynheader {
+        margin-top: 8px;
+}
+
+address {
+       font-style: normal;
+       color: #2A3D61;
+}
+
+table.doxtable {
+       border-collapse:collapse;
+}
+
+table.doxtable td, table.doxtable th {
+       border: 1px solid #2D4068;
+       padding: 3px 7px 2px;
+}
+
+table.doxtable th {
+       background-color: #374F7F;
+       color: #FFFFFF;
+       font-size: 110%;
+       padding-bottom: 4px;
+       padding-top: 5px;
+       text-align:left;
+}
+
+.tabsearch {
+       top: 0px;
+       left: 10px;
+       height: 36px;
+       background-image: url('tab_b.png');
+       z-index: 101;
+       overflow: hidden;
+       font-size: 13px;
+}
+
+.navpath ul
+{
+       font-size: 11px;
+       background-image:url('tab_b.png');
+       background-repeat:repeat-x;
+       height:30px;
+       line-height:30px;
+       color:#8AA0CC;
+       border:solid 1px #C2CDE4;
+       overflow:hidden;
+       margin:0px;
+       padding:0px;
+}
+
+.navpath li
+{
+       list-style-type:none;
+       float:left;
+       padding-left:10px;
+       padding-right: 15px;
+       background-image:url('bc_s.png');
+       background-repeat:no-repeat;
+       background-position:right;
+       color:#364D7C;
+}
+
+.navpath a
+{
+       height:32px;
+       display:block;
+       text-decoration: none;
+       outline: none;
+}
+
+.navpath a:hover
+{
+       color:#6884BD;
+}
+
+div.summary
+{
+       float: right;
+       font-size: 8pt;
+       padding-right: 5px;
+       width: 50%;
+       text-align: right;
+}       
+
+div.summary a
+{
+       white-space: nowrap;
+}
+
+div.header
+{
+        background-image:url('nav_h.png');
+        background-repeat:repeat-x;
+       background-color: #F9FAFC;
+       margin:  0px;
+       border-bottom: 1px solid #C4CFE5;
+}
+
+div.headertitle
+{
+       padding: 5px 5px 5px 10px;
+}
+
diff --git a/mobile/pg-doxy/tool/bin/doxygen b/mobile/pg-doxy/tool/bin/doxygen
new file mode 100755 (executable)
index 0000000..3662da8
Binary files /dev/null and b/mobile/pg-doxy/tool/bin/doxygen differ
diff --git a/mobile/pg-doxy/tool/bin/doxytag b/mobile/pg-doxy/tool/bin/doxytag
new file mode 100755 (executable)
index 0000000..adb0c90
Binary files /dev/null and b/mobile/pg-doxy/tool/bin/doxytag differ
diff --git a/mobile/pg-doxy/tool/man/man1/doxygen.1 b/mobile/pg-doxy/tool/man/man1/doxygen.1
new file mode 100644 (file)
index 0000000..a3d8c9a
--- /dev/null
@@ -0,0 +1,46 @@
+.TH DOXYGEN "1" "July 2010" "doxygen 1.7.0" "User Commands"
+.SH NAME
+doxygen \- documentation system for various programming languages
+.SH DESCRIPTION
+Doxygen is a documentation system for C++, C, Java, Objective-C, IDL
+(Corba and Microsoft flavors) and to some extent PHP, C#, and D.
+.PP
+You can use doxygen in a number of ways:
+.TP
+1) Use doxygen to generate a template configuration file:
+.IP
+doxygen [-s] \fB\-g\fR [configName]
+.IP
+If - is used for configName doxygen will write to standard output.
+.TP 
+2) Use doxygen to update an old configuration file:
+.IP
+doxygen [-s] \fB\-u\fR [configName]
+.TP
+3) Use doxygen to generate documentation using an existing configuration file:
+.IP
+doxygen [configName]
+.IP
+If - is used for configName doxygen will read from standard input.
+.TP
+4) Use doxygen to generate a template style sheet file for RTF, HTML or Latex.
+.TP
+RTF:
+doxygen \fB\-w\fR rtf styleSheetFile
+.TP
+HTML:
+doxygen \fB\-w\fR html headerFile footerFile styleSheetFile [configFile]
+.TP
+LaTeX: doxygen \fB\-w\fR latex headerFile styleSheetFile [configFile]
+.TP
+5) Use doxygen to generate an rtf extensions file
+.TP
+RTF:
+doxygen \fB\-e\fR rtf extensionsFile
+.PP
+If \fB\-s\fR is specified the comments in the config file will be omitted.
+If configName is omitted `Doxyfile' will be used as a default.
+.SH AUTHOR
+Doxygen version 1.7.0, Copyright Dimitri van Heesch 1997-2007
+.SH SEE ALSO
+doxytag(1), doxywizard(1).
diff --git a/mobile/pg-doxy/tool/man/man1/doxytag.1 b/mobile/pg-doxy/tool/man/man1/doxytag.1
new file mode 100644 (file)
index 0000000..f496899
--- /dev/null
@@ -0,0 +1,21 @@
+.TH DOXYTAG "1" "July 2010" "doxytag 1.7.0" "User Commands"
+.SH NAME
+doxytag \- generates a tag file and/or a search index for a set of HTML files
+.SH SYNOPSIS
+.B doxytag
+[\fI-t tag_file\fR] [\fI-s index_file\fR] [ \fIhtml_file \fR[\fIhtml_file\fR...] ]
+.SH DESCRIPTION
+Generates a tag file and/or a search index for a set of HTML files.  Use
+doxysearch as a CGI program to search the tag file generated by doxytag.
+.SH OPTIONS
+.TP
+\fB\-t\fR <tag_file>
+Generate tag file <tag_file>.
+.TP
+\fB\-s\fR <index_file>
+Generate search index <index_file>.
+.PP
+If no HTML files are given all files in the current dir that
+have a .html extension are parsed.
+.SH SEE ALSO
+doxygen(1), doxywizard(1).
diff --git a/mobile/src/syspopup_core.c b/mobile/src/syspopup_core.c
new file mode 100755 (executable)
index 0000000..dc76dca
--- /dev/null
@@ -0,0 +1,264 @@
+/*
+ * syspopup
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@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.
+ *
+ */
+
+#include <stdio.h>
+#include <glib.h>
+#include <stdlib.h>
+#include <string.h>
+#include <dbus/dbus.h>
+#include <dbus/dbus-glib-lowlevel.h>
+#include "syspopup_core.h"
+#include "simple_util.h"
+
+#define SYSPOPUP_NAME "_INTERNAL_SYSPOPUP_NAME_"
+
+static syspopup *syspopup_head = NULL;
+
+static int initialized = 0;
+static DBusConnection *bus;
+static int noti_fd = -1;
+static int sp_id = 0;
+
+static void (*_term_handler) (void *data);
+static gboolean(*_timeout_handler) (void *data);
+
+syspopup *_syspopup_get_head()
+{
+       return syspopup_head;
+}
+
+int _syspopup_add_new(syspopup *sp)
+{
+       if (sp == NULL)
+               return -1;
+
+       sp->id = sp_id++;
+       sp->next = syspopup_head;
+       syspopup_head = sp;
+
+       return 0;
+}
+
+syspopup *_syspopup_find(const char *name)
+{
+       syspopup *tmp;
+       tmp = syspopup_head;
+       while (tmp) {
+               if (tmp->name) {
+                       if (strcmp(tmp->name, name) == 0)
+                               return tmp;
+               }
+               tmp = tmp->next;
+       }
+       return NULL;
+}
+
+syspopup *_syspopup_find_by_id(int id)
+{
+       syspopup *tmp;
+       tmp = syspopup_head;
+       while (tmp) {
+               if (tmp->id == id)
+                       return tmp;
+               tmp = tmp->next;
+       }
+       return NULL;
+}
+
+static void __syspopup_free(syspopup *sp)
+{
+       if (sp->name != NULL)
+               free(sp->name);
+       if (sp->dupped_bundle != NULL)
+               bundle_free(sp->dupped_bundle);
+       free(sp);
+}
+
+void _syspopup_del(int id)
+{
+       syspopup *tmp;
+       syspopup *target;
+
+       target = _syspopup_find_by_id(id);
+
+       if (syspopup_head == NULL || target == NULL)
+               return;
+
+       if (syspopup_head == target) {
+               syspopup_head = target->next;
+               __syspopup_free(target);
+               return;
+       }
+
+       tmp = syspopup_head;
+       while (tmp) {
+               if (tmp->next == target) {
+                       tmp->next = target->next;
+                       __syspopup_free(target);
+                       return;
+               }
+               tmp = tmp->next;
+       }
+}
+
+
+static DBusHandlerResult
+__sys_popup_dbus_signal_filter(DBusConnection *conn, DBusMessage *message,
+                                    void *user_data)
+{
+       const char *sender;
+       const char *interface;
+       int dead_pid;
+
+       DBusError error;
+       dbus_error_init(&error);
+
+       interface = dbus_message_get_interface(message);
+       if (interface == NULL) {
+               _E("reject by security issue - no interface\n");
+               return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+       }
+
+       if (dbus_message_is_signal(message, interface,
+                                  SYSPOPUP_DBUS_SP_TERM_SIGNAL)) {
+               if (_term_handler)
+                       _term_handler(NULL);
+
+               _D("term handler has been called");
+       }
+
+       return DBUS_HANDLER_RESULT_HANDLED;
+}
+
+
+
+int _syspopup_init(void (*term_handler) (void *),
+                  gboolean(*timeout_handler) (void *))
+{
+       DBusError error;
+       char rule[MAX_LOCAL_BUFSZ];
+
+       if (initialized)
+               return 0;
+
+       _term_handler = term_handler;
+       _timeout_handler = timeout_handler;
+
+       dbus_error_init(&error);
+       bus = dbus_bus_get_private(DBUS_BUS_SYSTEM, &error);
+       if (!bus) {
+               _E("Failed to connect to the D-BUS daemon: %s", error.message);
+               dbus_error_free(&error);
+               return -1;
+       }
+       dbus_connection_setup_with_g_main(bus, NULL);
+
+       snprintf(rule, MAX_LOCAL_BUFSZ,
+                "path='%s',type='signal',interface='%s'", SYSPOPUP_DBUS_PATH,
+                SYSPOPUP_DBUS_SIGNAL_INTERFACE);
+       /* listening to messages */
+       dbus_bus_add_match(bus, rule, &error);
+       if (dbus_error_is_set(&error)) {
+               _E("Fail to rule set: %s", error.message);
+               dbus_error_free(&error);
+               return -1;
+       }
+
+       if (dbus_connection_add_filter(bus, 
+               __sys_popup_dbus_signal_filter, NULL, NULL) == FALSE)
+               return -1;
+
+       _D("syspopup signal initialized");
+
+       initialized = 1;
+       return 0;
+}
+
+int _syspopup_reset_timeout(syspopup *sp, syspopup_info_t *info)
+{
+       if (!initialized) {
+               _E("no initialized");
+               return -1;
+       }
+       if (sp == NULL) {
+               _E("syspopup is NULL");
+               return -1;
+       }
+       if (info == NULL) {
+               _E("syspopup info is NULL");
+               return -1;
+       }
+
+       if (sp->timeout_id != 0)
+               g_source_remove(sp->timeout_id);
+
+       if(info->timeout > 0) {
+               sp->timeout_id = g_timeout_add_seconds(info->timeout, _timeout_handler,
+                                              (void *)sp->id);
+               _D("add timeout - timeout : id=%d,timeout=%d(sec)", sp->id, 
+                       info->timeout);
+       }
+
+       return 0;
+}
+
+int _syspopup_set_term_type(syspopup *sp, syspopup_info_t *info)
+{
+       sp->term_act = info->term_act;
+       return 0;
+}
+
+int _syspopup_set_endkey_type(syspopup *sp, syspopup_info_t *info)
+{
+       sp->endkey_act = info->endkey_act;
+       return 0;
+}
+
+const char *_syspopup_get_name_from_bundle(bundle *b)
+{
+       const char *name;
+
+       if (getuid() != 0 && getuid() != 5000) {
+               _E("syspopup permission error");
+               return NULL;
+       }
+
+       if (b == NULL) {
+               _E("bundle is NULL");
+               return NULL;
+       }
+
+       name = bundle_get_val(b, SYSPOPUP_NAME);
+       if (name == NULL) {
+               _E("this is no bundle for syspopup");
+       }
+       return name;
+}
+
+int _syspopup_set_name_to_bundle(bundle *b, char *popup_name)
+{
+       if ((b == NULL) || (popup_name == NULL))
+               return -1;
+       bundle_add(b, SYSPOPUP_NAME, popup_name);
+       return 0;
+}
+
diff --git a/mobile/src/syspopup_db.c b/mobile/src/syspopup_db.c
new file mode 100755 (executable)
index 0000000..9721b4a
--- /dev/null
@@ -0,0 +1,256 @@
+/*
+ * syspopup
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@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.
+ *
+ */
+
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <sqlite3.h>
+#include "syspopup_db.h"
+#include "simple_util.h"
+
+#define SYSPOPUP_DB_PATH       "/opt/dbspace/.syspopup.db"
+#define QUERY_MAXLEN   4096
+
+#define SP_INFO_TBL            "syspopup_info"
+#define SP_INFO_TBL_F_NAME     "name"
+
+static sqlite3 *db = NULL;
+
+/**
+ * exec  
+ * param[in] db handler
+ * param[in] query query
+ * return This method returns 0 (SUCCESS) or -1 (FAIL)
+ */
+static int __exec(sqlite3 *db, char *query)
+{
+       int rc = 0;
+       char *errmsg = NULL;
+
+       if (db == NULL) {
+               _E("DB handler is null");
+               return -1;
+       }
+       rc = sqlite3_exec(db, query, NULL, 0, &errmsg);
+
+       if (rc != SQLITE_OK) {
+               _D("Query: [%s]", query);
+               _E("SQL error: %s\n", errmsg);
+               sqlite3_free(errmsg);
+               return (-1);
+       }
+
+       return 0;
+}
+
+/**
+ * db initialize
+ */
+static int __init(void)
+{
+       int rc;
+
+       if (db) {
+               _D("Already initialized\n");
+               return 0;
+       }
+
+       rc = sqlite3_open(SYSPOPUP_DB_PATH, &db);
+       if (rc) {
+               _E("Can't open database: %s", sqlite3_errmsg(db));
+               goto err;
+       }
+       /* Enable persist journal mode*/
+       rc = sqlite3_exec(db, "PRAGMA journal_mode = PERSIST", NULL, NULL,
+                         NULL);
+       if (SQLITE_OK != rc) {
+               _D("Fail to change journal mode\n");
+               goto err;
+       }
+
+       return 0;
+err:
+       sqlite3_close(db);
+       return -1;
+}
+
+static int __fini(void)
+{
+       if (db) {
+               sqlite3_close(db);
+               db = NULL;
+       }
+       return 0;
+}
+
+static int __delete_all(const char *tbl_name)
+{
+       char *_sqlbuf;
+       int rc;
+
+       _sqlbuf = sqlite3_mprintf("DELETE FROM %s;", tbl_name);
+       rc = __exec(db, _sqlbuf);
+       sqlite3_free(_sqlbuf);
+
+       return rc;
+}
+
+static int __delete_with_field(const char *tbl_name, const char *f_name,
+                              const char *val)
+{
+       char *_sqlbuf;
+       int rc;
+
+       _sqlbuf = sqlite3_mprintf("DELETE FROM %s WHERE %s = '%s';",
+                                 tbl_name, f_name, val);
+       rc = __exec(db, _sqlbuf);
+       sqlite3_free(_sqlbuf);
+
+       return rc;
+}
+
+static int __count_with_field(const char *tbl_name, const char *f_name,
+                             const char *val)
+{
+       char *_sqlbuf;
+       int rc;
+       char **db_result = NULL;
+       char *db_err = NULL;
+       int nrows = 0;
+       int ncols = 0;
+       int cnt;
+
+       _sqlbuf = sqlite3_mprintf("SELECT COUNT(*) FROM %s WHERE %s = '%s';",
+                                 tbl_name, f_name, val);
+
+       rc = sqlite3_get_table(db, _sqlbuf, &db_result, &nrows, &ncols,
+                              &db_err);
+       if (rc == -1 || nrows == 0) {
+               _E("get count = 0 or fail");
+               sqlite3_free_table(db_result);
+               sqlite3_free(_sqlbuf);
+               return 0;
+       } else {
+               cnt = atoi(db_result[1]);
+               sqlite3_free_table(db_result);
+               sqlite3_free(_sqlbuf);
+       }
+
+       return cnt;
+}
+
+int _syspopup_info_add(syspopup_info_t *pinfo)
+{
+       int rc = -1;
+       int cnt = 0;
+       char *_sqlbuf;
+
+       if (pinfo->name == NULL) {
+               _E("Name is null\n");
+               return -1;
+       }
+
+       if (__init() < 0)
+               return -1;
+
+       cnt = __count_with_field(SP_INFO_TBL, SP_INFO_TBL_F_NAME, pinfo->name);
+
+       if (cnt == 0) {
+               _sqlbuf = sqlite3_mprintf("INSERT INTO %s "
+                                         "(name,prio,focus,timeout,term_act,endkey_act,pkgname) values "
+                                         "(\"%s\", %d, %d, %d, \"%s\");",
+                                         SP_INFO_TBL,
+                                         pinfo->name, pinfo->prio,
+                                         pinfo->focus, pinfo->timeout,
+                                         pinfo->term_act, pinfo->endkey_act,
+                                         pinfo->pkgname);
+               rc = __exec(db, _sqlbuf);
+               sqlite3_free(_sqlbuf);
+       } else {
+               _E("already exist - %s", pinfo->name);
+               rc = -1;
+       }
+
+       if (rc < 0)
+               _E("Fail to insert\n");
+
+       __fini();
+       return rc;
+}
+
+syspopup_info_t *_syspopup_info_get(const char *popup_name)
+{
+       int rc = 0;
+       char *_sqlbuf;
+       sqlite3_stmt *stmt;
+       syspopup_info_t *pinfo = NULL;
+
+       if (popup_name == NULL) {
+               _E("no popup name");
+               return NULL;
+       }
+
+       if (__init() < 0)
+               return NULL;
+
+       _sqlbuf = sqlite3_mprintf("SELECT name,prio,focus,timeout,term_act,endkey_act,pkgname "
+                                 "FROM %s WHERE %s='%s';",
+                                 SP_INFO_TBL, SP_INFO_TBL_F_NAME, popup_name);
+
+       rc = sqlite3_prepare_v2(db, _sqlbuf, -1, &stmt, NULL);
+       if (rc == SQLITE_OK) {
+               rc = sqlite3_step(stmt);
+               if (rc == SQLITE_ROW) {
+                       pinfo = (syspopup_info_t *) malloc(sizeof(syspopup_info_t));
+                       if (pinfo == NULL) {
+                               __fini();
+                               return NULL;
+                       }
+                       pinfo->name = strdup((char *) sqlite3_column_text(stmt, 0));
+                       pinfo->prio = sqlite3_column_int(stmt, 1);
+                       pinfo->focus = sqlite3_column_int(stmt, 2);
+                       pinfo->timeout = sqlite3_column_int(stmt, 3);
+                       pinfo->term_act = sqlite3_column_int(stmt, 4);
+                       pinfo->endkey_act = sqlite3_column_int(stmt, 5);
+                       if (sqlite3_column_text(stmt, 6) != NULL)
+                               pinfo->pkgname = strdup((char *) sqlite3_column_text(stmt, 6));
+                       else
+                               pinfo->pkgname = NULL;
+               }
+               sqlite3_finalize(stmt);
+       }
+
+       sqlite3_free(_sqlbuf);
+       __fini();
+       return pinfo;
+}
+
+void _syspopup_info_free(syspopup_info_t *pinfo)
+{
+       if (pinfo->name)
+               free(pinfo->name);
+       if (pinfo->pkgname)
+               free(pinfo->pkgname);
+       free(pinfo);
+}
+
diff --git a/mobile/syspopup-app/CMakeLists.txt b/mobile/syspopup-app/CMakeLists.txt
new file mode 100644 (file)
index 0000000..821aeaa
--- /dev/null
@@ -0,0 +1,64 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(syspopup-app C)
+
+SET(SRCS syspopup-app.c)
+
+SET(VENDOR "tizen")
+SET(PACKAGE ${PROJECT_NAME})
+SET(PKGNAME "org.${VENDOR}.${PACKAGE}")
+SET(PREFIX ${CMAKE_INSTALL_PREFIX})
+SET(BINDIR "${PREFIX}/bin")
+SET(DATADIR "${PREFIX}/share")
+SET(LOCALEDIR "${DATADIR}/locale")
+SET(ICONDIR "${DATADIR}/icons")
+SET(EDJDIR "${DATADIR}/edje/${PACKAGE}")
+
+IF("${CMAKE_BUILD_TYPE}" STREQUAL "")
+       SET(CMAKE_BUILD_TYPE "Release")
+ENDIF("${CMAKE_BUILD_TYPE}" STREQUAL "")
+MESSAGE("Build type: ${CMAKE_BUILD_TYPE}")
+
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR})
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/syspopup)
+
+INCLUDE(FindPkgConfig)
+pkg_check_modules(syspopup_app_pkgs REQUIRED appcore-efl)
+
+FOREACH(flag ${syspopup_app_pkgs_CFLAGS})
+       SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
+SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
+SET(CMAKE_C_FLAGS_RELEASE "-O2")
+
+FIND_PROGRAM(UNAME NAMES uname)
+EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH")
+IF("${ARCH}" STREQUAL "arm")
+       ADD_DEFINITIONS("-DTARGET")
+       MESSAGE("add -DTARGET")
+ENDIF("${ARCH}" STREQUAL "arm")
+
+ADD_DEFINITIONS("-DVENDOR=\"${VENDOR}\"")
+ADD_DEFINITIONS("-DPACKAGE=\"${PACKAGE}\"")
+ADD_DEFINITIONS("-DPACKAGE_NAME=\"${PKGNAME}\"")
+ADD_DEFINITIONS("-DPREFIX=\"${PREFIX}\"")
+ADD_DEFINITIONS("-DLOCALEDIR=\"${LOCALEDIR}\"")
+ADD_DEFINITIONS("-DEDJDIR=\"${EDJDIR}\"")
+
+SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed")
+
+ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS})
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} syspopup ${syspopup_app_pkgs_LDFLAGS})
+
+INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${BINDIR})
+
+
+# install manifest file & icon
+CONFIGURE_FILE(${PKGNAME}.xml.in ${CMAKE_BINARY_DIR}/${PKGNAME}.xml)
+INSTALL(FILES ${CMAKE_BINARY_DIR}/${PKGNAME}.xml DESTINATION /usr/share/packages)
+INSTALL(FILES ${CMAKE_SOURCE_DIR}/syspopup-app/${PKGNAME}.png DESTINATION share/icons/default/small)
+
+# i18n
+#ADD_SUBDIRECTORY(po)
+
diff --git a/mobile/syspopup-app/INSTALL b/mobile/syspopup-app/INSTALL
new file mode 100644 (file)
index 0000000..ddf4e78
--- /dev/null
@@ -0,0 +1,33 @@
+1. make the build directory
+
+  ex) 
+
+   $ mkdir build
+
+
+2. change the working directory to the build directory
+
+  ex)
+
+   $ cd build
+
+
+3. run 'cmake'
+
+  $ cmake ${SOURCE_DIR} -DCMAKE_INSTALL_PREFIX=/usr
+
+  ex)
+
+   $ cmake .. -DCMAKE_INSTALL_PREFIX=/usr
+
+   or
+
+   $ cmake ..
+
+
+4. make & make install
+
+  ex)
+
+   $ make -j 2 && make install
+
diff --git a/mobile/syspopup-app/org.tizen.syspopup-app.png b/mobile/syspopup-app/org.tizen.syspopup-app.png
new file mode 100644 (file)
index 0000000..bffa6bb
Binary files /dev/null and b/mobile/syspopup-app/org.tizen.syspopup-app.png differ
diff --git a/mobile/syspopup-app/org.tizen.syspopup-app.xml.in b/mobile/syspopup-app/org.tizen.syspopup-app.xml.in
new file mode 100755 (executable)
index 0000000..c248501
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" package="org.tizen.syspopup-app" version="0.1.0-0" install-location="internal-only">
+       <label>syspopup-app</label>
+       <author email="sewook7.park@samsung.com" href="www.samsung.com">Sewook Park</author>
+       <description>syspopup-app</description>
+       <ui-application appid="org.tizen.syspopup-app" exec="/usr/bin/syspopup-app" nodisplay="true" multiple="false" type="capp" taskmanage="false">
+               <label>syspopup-app</label>
+               <icon> </icon>
+       </ui-application>
+</manifest>
diff --git a/mobile/syspopup-app/po/CMakeLists.txt b/mobile/syspopup-app/po/CMakeLists.txt
new file mode 100644 (file)
index 0000000..0500c3f
--- /dev/null
@@ -0,0 +1,24 @@
+# for i18n
+
+SET(POFILES en_US.po en_GB.po ja.po ko.po zh_CN.po)
+
+SET(MSGFMT "/usr/bin/msgfmt")
+
+FOREACH(pofile ${POFILES})
+       SET(pofile ${CMAKE_CURRENT_SOURCE_DIR}/${pofile})
+       MESSAGE("PO: ${pofile}")
+       GET_FILENAME_COMPONENT(absPofile ${pofile} ABSOLUTE)
+       GET_FILENAME_COMPONENT(lang ${absPofile} NAME_WE)
+       SET(moFile ${CMAKE_CURRENT_BINARY_DIR}/${lang}.mo)
+       ADD_CUSTOM_COMMAND(
+                       OUTPUT ${moFile}
+                       COMMAND ${MSGFMT} -o ${moFile} ${absPofile}
+                       DEPENDS ${absPofile}
+       )
+       INSTALL(FILES ${moFile}
+                       DESTINATION share/locale/${lang}/LC_MESSAGES RENAME ${PROJECT_NAME}.mo)
+       SET(moFiles ${moFiles} ${moFile})
+ENDFOREACH(pofile)
+
+MESSAGE(".mo files: ${moFiles}")
+ADD_CUSTOM_TARGET(po ALL DEPENDS ${moFiles})
diff --git a/mobile/syspopup-app/po/POTFILES.in b/mobile/syspopup-app/po/POTFILES.in
new file mode 100644 (file)
index 0000000..86963bc
--- /dev/null
@@ -0,0 +1,2 @@
+# List of source files containing translatable strings.
+syspopup-tempapp.c
diff --git a/mobile/syspopup-app/po/en_GB.po b/mobile/syspopup-app/po/en_GB.po
new file mode 100644 (file)
index 0000000..21f2d74
--- /dev/null
@@ -0,0 +1,25 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-10-04 15:19+0900\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: syspopup-tempapp.c:24
+msgid "Application template"
+msgstr ""
+
+#: syspopup-tempapp.c:25
+msgid "Click to exit"
+msgstr ""
diff --git a/mobile/syspopup-app/po/en_US.po b/mobile/syspopup-app/po/en_US.po
new file mode 100644 (file)
index 0000000..21f2d74
--- /dev/null
@@ -0,0 +1,25 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-10-04 15:19+0900\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: syspopup-tempapp.c:24
+msgid "Application template"
+msgstr ""
+
+#: syspopup-tempapp.c:25
+msgid "Click to exit"
+msgstr ""
diff --git a/mobile/syspopup-app/po/ja.po b/mobile/syspopup-app/po/ja.po
new file mode 100644 (file)
index 0000000..21f2d74
--- /dev/null
@@ -0,0 +1,25 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-10-04 15:19+0900\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: syspopup-tempapp.c:24
+msgid "Application template"
+msgstr ""
+
+#: syspopup-tempapp.c:25
+msgid "Click to exit"
+msgstr ""
diff --git a/mobile/syspopup-app/po/ko.po b/mobile/syspopup-app/po/ko.po
new file mode 100644 (file)
index 0000000..21f2d74
--- /dev/null
@@ -0,0 +1,25 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-10-04 15:19+0900\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: syspopup-tempapp.c:24
+msgid "Application template"
+msgstr ""
+
+#: syspopup-tempapp.c:25
+msgid "Click to exit"
+msgstr ""
diff --git a/mobile/syspopup-app/po/syspopup-tempapp.pot b/mobile/syspopup-app/po/syspopup-tempapp.pot
new file mode 100644 (file)
index 0000000..2c5d98e
--- /dev/null
@@ -0,0 +1,25 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-10-04 15:19+0900\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: syspopup-tempapp.c:24
+msgid "Application template"
+msgstr ""
+
+#: syspopup-tempapp.c:25
+msgid "Click to exit"
+msgstr ""
diff --git a/mobile/syspopup-app/po/update-po.sh b/mobile/syspopup-app/po/update-po.sh
new file mode 100755 (executable)
index 0000000..966360e
--- /dev/null
@@ -0,0 +1,60 @@
+#!/bin/sh
+
+PACKAGE=syspopup-tempapp
+SRCROOT=..
+POTFILES=POTFILES.in
+
+#ALL_LINGUAS= am az be ca cs da de el en_CA en_GB es et fi fr hr hu it ja ko lv mk ml ms nb ne nl pa pl pt pt_BR ru rw sk sl sr sr@Latn sv ta tr uk vi zh_CN zh_TW
+ALL_LINGUAS="en_US en_GB ja ko zh_CN"
+
+XGETTEXT=/usr/bin/xgettext
+MSGMERGE=/usr/bin/msgmerge
+
+echo -n "Make ${PACKAGE}.pot  "
+if [ ! -e $POTFILES ] ; then
+       echo "$POTFILES not found"
+       exit 1
+fi
+
+$XGETTEXT --default-domain=${PACKAGE} --directory=${SRCROOT} \
+               --add-comments --keyword=_ --keyword=N_ --files-from=$POTFILES
+if [ $? -ne 0 ]; then
+       echo "xgettext error"
+       exit 1
+fi
+
+if [ ! -f ${PACKAGE}.po ]; then
+       echo "No such file: ${PACKAGE}.po"
+       exit 1
+fi
+
+rm -f ${PACKAGE}.pot && mv ${PACKAGE}.po ${PACKAGE}.pot
+echo "done"
+
+for LANG in $ALL_LINGUAS; do 
+       echo "$LANG : "
+
+       if [ ! -e $LANG.po ] ; then
+               sed 's/CHARSET/UTF-8/g' ${PACKAGE}.pot > ${LANG}.po
+               echo "${LANG}.po created"
+       else
+               if $MSGMERGE ${LANG}.po ${PACKAGE}.pot -o ${LANG}.new.po ; then
+                       if cmp ${LANG}.po ${LANG}.new.po > /dev/null 2>&1; then
+                               rm -f ${LANG}.new.po
+                       else
+                               if mv -f ${LANG}.new.po ${LANG}.po; then
+                                       echo "" 
+                               else
+                                       echo "msgmerge for $LANG.po failed: cannot move $LANG.new.po to $LANG.po" 1>&2
+                                       rm -f ${LANG}.new.po
+                                       exit 1
+                               fi
+                       fi
+               else
+                       echo "msgmerge for $LANG failed!"
+                       rm -f ${LANG}.new.po
+               fi
+       fi
+       echo ""
+done
+
diff --git a/mobile/syspopup-app/po/zh_CN.po b/mobile/syspopup-app/po/zh_CN.po
new file mode 100644 (file)
index 0000000..21f2d74
--- /dev/null
@@ -0,0 +1,25 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-10-04 15:19+0900\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: syspopup-tempapp.c:24
+msgid "Application template"
+msgstr ""
+
+#: syspopup-tempapp.c:25
+msgid "Click to exit"
+msgstr ""
diff --git a/mobile/syspopup-app/syspopup-app.c b/mobile/syspopup-app/syspopup-app.c
new file mode 100755 (executable)
index 0000000..e5d9543
--- /dev/null
@@ -0,0 +1,328 @@
+/*
+ * syspopup
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@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.
+ *
+ */
+
+
+#include <stdio.h>
+#include <appcore-efl.h>
+#include <Ecore_X.h>
+
+#include "syspopup.h"
+#include "syspopup-app.h"
+
+#include <time.h>
+
+#include <dlog.h>
+
+#undef LOG_TAG
+#define LOG_TAG "SYSPOPUP-APP"
+
+#define _E(fmt, arg...) LOGE(fmt,##arg)
+#define _D(fmt, arg...) LOGD(fmt,##arg)
+
+/*
+struct quickpanel {
+       int type;
+       int priv_id; 
+       char *title;
+       char *content;
+       time_t rtime;
+       bundle *args; 
+       bundle *args_group;
+       int group_id;
+};
+*/
+
+int myterm(bundle *b, void *data)
+{
+       /*
+       char b_str[QP_BUF_LEN];
+       int ret = 0;
+       const char* val;
+
+       struct appdata *ad = data;
+       struct quickpanel* qp;
+
+       val = bundle_get_val(b,"_INTERNAL_SYSPOPUP_NAME_");
+       printf("[SYSTEM POPUP] Popup Name : %s\n", val);
+
+       qp = malloc(sizeof(struct quickpanel));
+       memset(qp,0,sizeof(struct quickpanel));
+
+       //qp->type = QP_TYPE_SYSPOPUP;
+       qp->type = quickpanel_get_type_id("org.tizen.syspopup-app", NULL, 0);
+       qp->priv_id = QP_PRIVID;
+       qp->title = ad->title;
+       qp->content = ad->content;
+       qp->args = b;
+       qp->group_id = qp->priv_id;
+
+       ret = quickpanel_insert(qp);
+       if (ret < 0)
+               printf("[SYSTEM POPUP] Error!! Cannot insert to quickpanel!\n");
+
+       free(qp);
+       */
+       return 0;
+}
+
+int mytimeout(bundle *b, void* data)
+{
+       /*
+       char b_str[QP_BUF_LEN];
+       int ret = 0;
+       const char* val;
+
+       struct appdata *ad = data;
+       struct quickpanel* qp;
+
+       val = bundle_get_val(b,"_INTERNAL_SYSPOPUP_NAME_");
+       printf("[SYSTEM POPUP] Popup Name : %s\n", val);
+
+       qp = malloc(sizeof(struct quickpanel));
+       memset(qp,0,sizeof(struct quickpanel));
+
+       //qp->type = QP_TYPE_SYSPOPUP;
+       qp->type = quickpanel_get_type_id("org.tizen.syspopup-app", NULL, 0);
+       qp->priv_id = QP_PRIVID;
+       qp->title = ad->title;
+       qp->content = ad->content;
+       qp->args = b;
+       qp->group_id = qp->priv_id;
+
+       ret = quickpanel_insert(qp);
+       if (ret < 0)
+               printf("[SYSTEM POPUP] Error!! Cannot insert to quickpanel!\n");
+
+       free(qp);
+       */
+       return 0;
+}
+
+syspopup_handler handler = {
+       .def_term_fn = myterm,
+       .def_timeout_fn = mytimeout
+};
+
+static void __win_del(void *data, Evas_Object * obj, void *event)
+{
+       elm_exit();
+}
+
+/*
+static int rotate(enum appcore_rm m, void *data)
+{
+       struct appdata *ad = data;
+       int r;
+
+       if (ad == NULL || ad->win == NULL)
+               return 0;
+
+       switch(m) {
+       case APPCORE_RM_PORTRAIT_NORMAL:
+               r = 0;
+               break;
+       case APPCORE_RM_PORTRAIT_REVERSE:
+               r = 180;
+               break;
+       case APPCORE_RM_LANDSCAPE_NORMAL:
+               r = 270;
+               break;
+       case APPCORE_RM_LANDSCAPE_REVERSE:
+               r = 90;
+               break;
+       default:
+               r = -1;
+               break;
+       }
+
+       if (r >= 0)
+               elm_win_rotation_with_resize_set(ad->win, r);
+
+       return 0;
+}
+*/
+
+static Evas_Object *__create_win(const char *name)
+{
+       Evas_Object *eo;
+       int w;
+       int h;
+
+       eo = elm_win_add(NULL, name, ELM_WIN_DIALOG_BASIC);
+       if (eo) {
+               elm_win_title_set(eo, name);
+               elm_win_borderless_set(eo, EINA_TRUE);
+
+               elm_win_alpha_set(eo, EINA_TRUE);
+
+               evas_object_smart_callback_add(eo, "delete,request",
+                                              __win_del, NULL);
+               ecore_x_window_size_get(ecore_x_window_root_first_get(),
+                                       &w, &h);
+               evas_object_resize(eo, w, h);
+       }
+
+       return eo;
+}
+
+static int __app_create(void *data)
+{
+       struct appdata *ad = data;
+       Evas_Object *win;
+       int r;
+
+       /* create window */
+       win = __create_win(PACKAGE);
+       if (win == NULL)
+               return -1;
+       ad->win = win;
+       /* evas_object_show(win);*/
+
+       /* init internationalization */
+       r = appcore_set_i18n(PACKAGE, LOCALEDIR);
+       if (r)
+               return -1;
+
+       /* appcore_set_rotation_cb(rotate, ad);*/
+
+       appcore_measure_start();
+       return 0;
+}
+
+static int __app_terminate(void *data)
+{
+       struct appdata *ad = data;
+
+       _D("__app_terminate called");
+
+       if (ad->win)
+               evas_object_del(ad->win);
+
+       return 0;
+}
+
+static int __app_pause(void *data)
+{
+       struct appdata *ad = data;
+
+       return 0;
+}
+
+static int __app_resume(void *data)
+{
+       struct appdata *ad = data;
+
+       return 0;
+}
+
+static void __prt_recvd_bundle(const char *key, const char *value, void *d)
+{
+       _D("recvd - key: %s, value: %s\n", key, value);
+}
+
+static void __response_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       if ((int)event_info != 5)
+               evas_object_del(obj);
+       elm_exit();
+}
+
+static void _block_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       evas_object_del(obj);
+}
+
+static int __app_reset(bundle *b, void *data)
+{
+       struct appdata *ad = data;
+       Evas_Object *popup;
+       const char *val;
+       int ret = 0;
+
+       ad->b = bundle_dup(b);
+
+       bundle_iterate(b, __prt_recvd_bundle, NULL);
+
+       if (syspopup_has_popup(b)) {
+               syspopup_reset(b);
+       } else {
+               popup = elm_popup_add(ad->win);
+               if (popup != NULL) {
+                       ret = syspopup_create(b, &handler, ad->win, ad);
+                       evas_object_show(ad->win);
+
+                       if (ret == 0) {
+                               val = bundle_get_val(b, "_SYSPOPUP_TITLE_");
+                               if (val) {
+                                       snprintf(ad->title, TITLE_BUF_LEN, "%s",
+                                                val);
+                               } else {
+                                       snprintf(ad->title, TITLE_BUF_LEN, "%s",
+                                                "Unknown Title");
+                               }
+
+                               val = bundle_get_val(b, "_SYSPOPUP_CONTENT_");
+                               if (val) {
+                                       snprintf(ad->content, CONTENT_BUF_LEN,
+                                                "%s", val);
+                               } else {
+                                       snprintf(ad->content, CONTENT_BUF_LEN,
+                                                "%s", "Unknown Content");
+                               }
+
+                               elm_object_style_set(popup, "char_wrap_style");
+                               evas_object_size_hint_weight_set(popup,
+                                                       EVAS_HINT_EXPAND,
+                                                       EVAS_HINT_EXPAND);
+                               evas_object_smart_callback_add(popup, "block,clicked", _block_clicked_cb, NULL);
+                               elm_object_part_text_set(popup, "title,text", ad->title);
+                               elm_object_text_set(popup, ad->content);
+                               evas_object_smart_callback_add(popup,
+                                                              "response",
+                                                              __response_cb,
+                                                              NULL);
+
+                               evas_object_show(popup);
+                       }
+               }
+       }
+
+       return 0;
+}
+
+int main(int argc, char *argv[])
+{
+       struct appdata ad;
+       struct appcore_ops ops = {
+               .create = __app_create,
+               .terminate = __app_terminate,
+               .pause = __app_pause,
+               .resume = __app_resume,
+               .reset = __app_reset,
+       };
+
+       memset(&ad, 0x0, sizeof(struct appdata));
+       ops.data = &ad;
+
+       return appcore_efl_main(PACKAGE, &argc, &argv, &ops);
+}
+
diff --git a/mobile/syspopup-app/syspopup-app.h b/mobile/syspopup-app/syspopup-app.h
new file mode 100755 (executable)
index 0000000..b16cd62
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * syspopup
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@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.
+ *
+ */
+
+
+#ifndef __SYSPOPUP_APP_H__
+#define __SYSPOPUP_APP_H__
+
+#include <Elementary.h>
+
+#if !defined(PACKAGE)
+#  define PACKAGE "syspopup-app"
+#endif
+
+#define NAME_BUF_LEN   256
+#define TITLE_BUF_LEN  256
+#define CONTENT_BUF_LEN        256
+
+#define QP_BUF_LEN     10
+#define QP_PRIVID 1
+#define QP_TERM        1
+#define QP_TIMEOUT     1
+
+struct appdata {
+       Evas_Object *win;
+       Evas_Object *popup;
+       bundle *b;
+       char title[TITLE_BUF_LEN];
+       char content[CONTENT_BUF_LEN];
+       /* add more variables here */
+};
+
+#endif                         /* __SYSPOPUP_APP_H__ */
+
diff --git a/mobile/syspopup-caller.manifest b/mobile/syspopup-caller.manifest
new file mode 100644 (file)
index 0000000..97e8c31
--- /dev/null
@@ -0,0 +1,5 @@
+<manifest>
+       <request>
+               <domain name="_"/>
+       </request>
+</manifest>
diff --git a/mobile/syspopup-caller/CMakeLists.txt b/mobile/syspopup-caller/CMakeLists.txt
new file mode 100644 (file)
index 0000000..2fcc6ce
--- /dev/null
@@ -0,0 +1,67 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+SET(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)
+
+PROJECT(syspopup_caller C)
+SET(VERSION 1.1)
+
+### Global setting ###
+
+SET(PREFIX ${CMAKE_INSTALL_PREFIX})
+SET(EXEC_PREFIX "\${prefix}")
+SET(LIBDIR "\${prefix}/lib")
+SET(INCLUDEDIR "\${prefix}/include")
+
+# Build type : Release
+IF("${CMAKE_BUILD_TYPE}" STREQUAL "")
+       SET(CMAKE_BUILD_TYPE "Release")
+ENDIF()
+MESSAGE("Build type: ${CMAKE_BUILD_TYPE}")
+
+# Set required packages
+INCLUDE(FindPkgConfig)
+
+pkg_check_modules(spcpkgs REQUIRED dlog bundle sqlite3 glib-2.0 aul dbus-glib-1)
+
+FOREACH(flag ${spcpkgs_CFLAGS})
+       SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+# Compiler flags
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
+SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -Wl,-zdefs" )
+SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fvisibility=hidden")
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
+SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
+SET(CMAKE_C_FLAGS_RELEASE "-O2")
+
+SET(CMAKE_SKIP_BUILD_RPATH true)
+
+# Get uname value to set 'TARGET' definition 
+# TODO: Is this needed?
+FIND_PROGRAM(UNAME NAMES uname)
+EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH")
+IF("${ARCH}" STREQUAL "arm")
+       ADD_DEFINITIONS("-DTARGET")
+       MESSAGE("add -DTARGET")
+ENDIF("${ARCH}" STREQUAL "arm")
+
+ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"")
+
+# Linker flags
+SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed")
+
+### Build ###
+
+add_library(syspopup_caller SHARED syspopup_caller.c)
+target_link_libraries(syspopup_caller syspopup_mods ${spcpkgs_LDFLAGS})
+SET_TARGET_PROPERTIES(syspopup_caller PROPERTIES SOVERSION 0.1.0)
+
+# pkgconfig file
+#CONFIGURE_FILE(syspopup-caller.pc.in syspopup-caller/syspopup-caller.pc @ONLY)
+CONFIGURE_FILE(syspopup-caller.pc.in ${CMAKE_CURRENT_BINARY_DIR}/syspopup-caller.pc @ONLY)
+
+### Install ###
+INSTALL(TARGETS syspopup_caller DESTINATION ${LIB_INSTALL_DIR} COMPONENT RuntimeLibraries)
+INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/../include/syspopup_caller.h DESTINATION include)
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/syspopup-caller.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
+
diff --git a/mobile/syspopup-caller/syspopup-caller.pc.in b/mobile/syspopup-caller/syspopup-caller.pc.in
new file mode 100644 (file)
index 0000000..c9db181
--- /dev/null
@@ -0,0 +1,13 @@
+# Package Information for pkg-config
+
+prefix=/usr
+exec_prefix=@EXEC_PREFIX@
+libdir=@LIB_INSTALL_DIR@
+includedir=@INCLUDEDIR@
+
+Name: libsyspopup_caller
+Description: system popup caller library - may be integrated in AUL
+Version: @VERSION@
+Requires: dlog bundle sqlite3 glib-2.0 aul 
+Libs: -L${libdir} -lsyspopup_caller
+Cflags: -I${includedir}
diff --git a/mobile/syspopup-caller/syspopup_caller.c b/mobile/syspopup-caller/syspopup_caller.c
new file mode 100755 (executable)
index 0000000..c5eca62
--- /dev/null
@@ -0,0 +1,116 @@
+/*
+ * syspopup
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@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.
+ *
+ */
+
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <glib.h>
+#include <dbus/dbus.h>
+#include <aul.h>
+
+#include "syspopup_core.h"
+#include "syspopup_db.h"
+#include "syspopup_api.h"
+#include "simple_util.h"
+
+API int syspopup_launch(char *popup_name, bundle *b)
+{
+       syspopup_info_t *info = NULL;
+       int ret;
+       int is_bundle = 0;
+
+       if (popup_name == NULL) {
+               _E("popup_name is NULL");
+               return -1;
+       }
+
+       info = _syspopup_info_get(popup_name);
+       if (info == NULL || info->pkgname == NULL) {
+               _E("info or info->pkgname is NULL");
+               if (info)
+                       _syspopup_info_free(info);
+               return -1;
+       }
+
+       if (b == NULL) {
+               b = bundle_create();
+               is_bundle = 1;
+       }
+
+       if (_syspopup_set_name_to_bundle(b, popup_name) < 0) {
+               _E("bundle set error\n");
+               _syspopup_info_free(info);
+
+               if (is_bundle == 1) {
+                       bundle_free(b);
+               }
+               return -1;
+       }
+
+       ret = aul_launch_app(info->pkgname, b);
+       if (ret < 0) {
+               _E("aul launch error - %d", ret);
+       }
+
+       if (is_bundle == 1) {
+               bundle_free(b);
+       }
+
+       _syspopup_info_free(info);
+
+       return ret;
+}
+
+API int syspopup_destroy_all()
+{
+       DBusMessage *message;
+       DBusError error;
+       DBusConnection *bus = NULL;
+
+       dbus_error_init(&error);
+       bus = dbus_bus_get_private(DBUS_BUS_SYSTEM, &error);
+       if (bus == NULL) {
+               _E("Failed to connect to the D-BUS daemon: %s", error.message);
+               dbus_error_free(&error);
+               return -1;
+       }
+
+       message = dbus_message_new_signal(SYSPOPUP_DBUS_PATH,
+                                         SYSPOPUP_DBUS_SIGNAL_INTERFACE,
+                                         SYSPOPUP_DBUS_SP_TERM_SIGNAL);
+
+       if (dbus_connection_send(bus, message, NULL) == FALSE) {
+               _E("dbus send error");
+               return -1;
+       }
+
+       dbus_connection_flush(bus);
+       dbus_message_unref(message);
+
+       dbus_connection_close(bus);
+
+       _D("send signal done\n");
+
+       return 0;
+}
+
diff --git a/mobile/syspopup.manifest b/mobile/syspopup.manifest
new file mode 100644 (file)
index 0000000..1d49be5
--- /dev/null
@@ -0,0 +1,17 @@
+<manifest>
+       <define>
+               <domain name="syspopup"/>
+               <provide>
+                       <label name="syspopup::db"/>
+               </provide>
+       </define>
+       <request>
+               <domain name="syspopup"/>
+       </request>
+       <assign>
+               <filesystem path="/usr/lib/libsyspopup.so.0" label="_"/>
+               <filesystem path="/usr/lib/libsyspopup.so.0.1.0" label="_"/>
+               <filesystem path="/opt/dbspace/.syspopup.db" label="syspopup::db"/>
+               <filesystem path="/opt/dbspace/.syspopup.db-journal" label="syspopup::db"/>
+       </assign>
+</manifest>
diff --git a/mobile/syspopup/CMakeLists.txt b/mobile/syspopup/CMakeLists.txt
new file mode 100644 (file)
index 0000000..f9caa16
--- /dev/null
@@ -0,0 +1,67 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+SET(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)
+
+PROJECT(syspopup C)
+SET(VERSION 1.1)
+
+### Global setting ###
+
+SET(PREFIX ${CMAKE_INSTALL_PREFIX})
+SET(EXEC_PREFIX "\${prefix}")
+SET(INCLUDEDIR "\${prefix}/include")
+
+# Build type : Release
+IF("${CMAKE_BUILD_TYPE}" STREQUAL "")
+       SET(CMAKE_BUILD_TYPE "Release")
+ENDIF()
+MESSAGE("Build type: ${CMAKE_BUILD_TYPE}")
+
+# Set required packages
+INCLUDE(FindPkgConfig)
+
+pkg_check_modules(sppkgs REQUIRED dlog bundle sqlite3 glib-2.0 evas elementary utilX ecore-x x11 ecore ecore-input dbus-glib-1)
+
+FOREACH(flag ${sppkgs_CFLAGS})
+       SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+# Compiler flags
+SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -Wl,-zdefs" )
+SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fvisibility=hidden")
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
+SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
+SET(CMAKE_C_FLAGS_RELEASE "-O2")
+
+SET(CMAKE_SKIP_BUILD_RPATH true)
+
+# Get uname value to set 'TARGET' definition 
+# TODO: Is this needed?
+FIND_PROGRAM(UNAME NAMES uname)
+EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH")
+IF("${ARCH}" STREQUAL "arm")
+       ADD_DEFINITIONS("-DTARGET")
+       MESSAGE("add -DTARGET")
+ENDIF("${ARCH}" STREQUAL "arm")
+
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
+ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"")
+
+# Linker flags
+SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed")
+
+
+### Build ###
+
+add_library(syspopup SHARED syspopup.c syspopup_efl.c)
+target_link_libraries(syspopup syspopup_mods ${sppkgs_LDFLAGS})
+SET_TARGET_PROPERTIES(syspopup PROPERTIES SOVERSION 0.1.0)
+
+# pkgconfig file
+#CONFIGURE_FILE(syspopup.pc.in syspopup/syspopup.pc @ONLY)
+CONFIGURE_FILE(syspopup.pc.in ${CMAKE_CURRENT_BINARY_DIR}/syspopup.pc @ONLY)
+
+### Install ###
+INSTALL(TARGETS syspopup DESTINATION ${LIB_INSTALL_DIR} COMPONENT RuntimeLibraries)
+INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/../include/syspopup.h DESTINATION include)
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/syspopup.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
+
diff --git a/mobile/syspopup/syspopup.c b/mobile/syspopup/syspopup.c
new file mode 100755 (executable)
index 0000000..0bbca22
--- /dev/null
@@ -0,0 +1,488 @@
+/*
+ * syspopup
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@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.
+ *
+ */
+
+
+#include "syspopup_core.h"
+#include "syspopup.h"
+#include "syspopup_api.h"
+#include "simple_util.h"
+#include <X11/Xatom.h>
+#include <X11/Xutil.h>
+
+#define WIN_PROP_NAME "SYSTEM_POPUP"
+
+static int __utilx_ss_get_window_property(Display *dpy, Window win, Atom atom,
+                                         Atom type, unsigned int *val,
+                                         unsigned int len)
+{
+       unsigned char *prop_ret;
+       Atom type_ret;
+       unsigned long bytes_after;
+       unsigned long  num_ret;
+       int format_ret;
+       unsigned int i;
+       int num;
+
+       prop_ret = NULL;
+       if (XGetWindowProperty(dpy, win, atom, 0, 0x7fffffff, False,
+                              type, &type_ret, &format_ret, &num_ret,
+                              &bytes_after, &prop_ret) != Success)
+               return -1;
+
+       if (type_ret != type || format_ret != 32)
+               num = -1;
+       else if (num_ret == 0 || !prop_ret)
+               num = 0;
+       else {
+               if (num_ret < len)
+                       len = num_ret;
+               for (i = 0; i < len; i++) {
+                       val[i] = ((unsigned long *)prop_ret)[i];
+               }
+               num = len;
+       }
+
+       if (prop_ret)
+               XFree(prop_ret);
+
+       return num;
+}
+
+/*
+static Window get_active_win(Display *dpy, Window win, Atom property)
+{
+    Window active_win = None;
+    Atom actual_type;
+    int actual_format;
+    unsigned long nitems, bytes_after;
+    unsigned char *prop_return = NULL;
+
+    if(Success == XGetWindowProperty(dpy, win, property, 0L, sizeof(Window),
+                                    False, XA_WINDOW, &actual_type,
+                                    &actual_format, &nitems, &bytes_after,
+                                    &prop_return) && prop_return) {
+       active_win = *(Window *)prop_return;
+       XFree(prop_return);
+    }
+
+    return active_win;
+}
+*/
+
+static void __X_syspopup_term_handler(void *data)
+{
+       syspopup *tmp;
+       syspopup *next;
+       Display *d;
+       Window win;
+
+       _D("enter syspopup term handler");
+
+       d = XOpenDisplay(NULL);
+       tmp = _syspopup_get_head();
+       while (tmp) {
+
+               _D("term action %d - %s", tmp->term_act, tmp->name);
+               next = tmp->next;
+
+               switch (tmp->term_act) {
+               case SYSPOPUP_TERM:
+                       win = (Window) tmp->internal_data;
+
+                       if (tmp->def_term_fn != NULL)
+                               tmp->def_term_fn(tmp->dupped_bundle,
+                                                tmp->user_data);
+                       XKillClient(d, win);
+                       /*XDestroyWindow(d, win);*/
+                       /* TODO :modify for multi popup */
+                       break;
+               case SYSPOPUP_HIDE:
+                       win = (Window) tmp->internal_data;
+
+                       if (tmp->def_term_fn != NULL)
+                               tmp->def_term_fn(tmp->dupped_bundle,
+                                                tmp->user_data);
+                       XUnmapWindow(d, win);
+                       break;
+               default:
+                       _D("term action IGNORED - %s", tmp->name);
+               }
+               tmp = next;
+       }
+
+       XCloseDisplay(d);
+       /*TODO : if there is no popup window, kill client*/
+}
+
+static gboolean __X_syspopup_timeout_handler(void *user_data)
+{
+       syspopup *sp = NULL;
+       Display *d;
+       int id;
+       Window win;
+
+       id = (int)user_data;
+
+       d = XOpenDisplay(NULL);
+
+       sp = _syspopup_find_by_id(id);
+       if (sp != NULL) {
+               _D("find timeout - %s", sp->name);
+               if (sp->def_timeout_fn != NULL)
+                       sp->def_timeout_fn(sp->dupped_bundle, sp->user_data);
+               win = (Window) sp->internal_data;
+               XKillClient(d, win);
+       } else {
+               _E("no find timeout");
+       }
+
+       XCloseDisplay(d);
+
+       return 0;
+}
+
+static int __X_syspopup_change_xwin_type(Display *dpy, Window win)
+{
+       Atom win_type_atom;
+       Atom win_type_utility_atom;
+
+       win_type_atom = XInternAtom(dpy, "_NET_WM_WINDOW_TYPE", False);
+       win_type_utility_atom =
+           XInternAtom(dpy, "_NET_WM_WINDOW_TYPE_NOTIFICATION", False);
+       XChangeProperty(dpy, win, win_type_atom, XA_ATOM, 32, PropModeReplace,
+                       (unsigned char *)&win_type_utility_atom, 1);
+
+       return 0;
+}
+
+static int __X_syspopup_disable_focus(Display *dpy, Window win)
+{
+       XWMHints *hints;
+
+       hints = XAllocWMHints();
+       if (!hints) return -1;
+
+       hints->flags = InputHint | StateHint;
+       hints->input = 0;
+       hints->initial_state = NormalState;
+
+       XSetWMHints(dpy, win, hints);
+       XFree(hints);
+
+       return 0;
+}
+
+int X_syspopup_rotation_get(Display *dpy, Window win)
+{
+       Window active_win;
+       Window root_win;
+       int rotation = -1;
+       int ret;
+
+       int angles[2];
+
+       Atom atom_active_win;
+       Atom atom_win_rotate_angle;
+
+       root_win = XDefaultRootWindow(dpy);
+
+       atom_active_win = XInternAtom(dpy, "_NET_ACTIVE_WINDOW", False);
+       ret = __utilx_ss_get_window_property(dpy, root_win, atom_active_win,
+                                            XA_WINDOW,
+                                            (unsigned int *)&active_win, 1);
+
+       /*printf("[SYSPOPUP] Active win : %x, Window %x\n", active_win, win);*/
+
+       /*active_win = get_active_win(dpy, root_win, atom_active_win);*/
+       if (ret < 0)
+               return ret;
+
+       atom_win_rotate_angle =
+               XInternAtom(dpy, "_E_ILLUME_ROTATE_ROOT_ANGLE", False);
+       ret = __utilx_ss_get_window_property(dpy, root_win,
+                                         atom_win_rotate_angle, XA_CARDINAL,
+                                         (unsigned int *)&rotation, 1);
+
+       /*printf("[SYSPOPUP] Rotation %d\n", rotation);*/
+
+       if (ret != -1)
+               return rotation;
+
+       return -1;
+}
+
+int X_syspopup_process_keypress(int id, const char *keyname)
+{
+       Display *d;
+       Window win;
+       syspopup *sp = NULL;
+
+       _D("key press - %s", keyname);
+
+       if ((strcmp(keyname, KEY_END) == 0) ||
+               (strcmp(keyname, "Escape") == 0))
+       {
+               d = XOpenDisplay(NULL);
+               sp = _syspopup_find_by_id(id);
+               if (sp != NULL) {
+                       _D("find - %s / endkey_act - %d", sp->name, sp->endkey_act);
+                       if (sp->endkey_act == SYSPOPUP_KEYEND_TERM) {
+                               if (sp->def_term_fn != NULL)
+                                       sp->def_term_fn(sp->dupped_bundle,
+                                                       sp->user_data);
+                               win = (Window) sp->internal_data;
+                               XKillClient(d, win);
+
+                       } else if (sp->endkey_act == SYSPOPUP_KEYEND_HIDE) {
+                               if (sp->def_term_fn != NULL)
+                                       sp->def_term_fn(sp->dupped_bundle,
+                                                       sp->user_data);
+                               win = (Window) sp->internal_data;
+                               XUnmapWindow(d, win);
+                       }
+               } else {
+                       _E("no find key down");
+               }
+
+               XCloseDisplay(d);
+       }
+
+       return 0;
+}
+
+#ifdef ROTATE_USING_X_CLIENT
+int X_syspopup_process_rotate(int id)
+{
+       Display *d;
+       Window win;
+       syspopup *sp = NULL;
+
+       sp = _syspopup_find_by_id(id);
+
+       if (sp == NULL)
+               return -1;
+
+       win = (Window) sp->internal_data;
+
+       d = XOpenDisplay(NULL);
+       sp->rotate_cb(d, win, sp);
+       XCloseDisplay(d);
+
+       return 0;
+}
+#else
+static void __efl_rotation_set(Evas_Object* win, Ecore_X_Window xwin)
+{
+       ecore_x_icccm_name_class_set(xwin, WIN_PROP_NAME, WIN_PROP_NAME);
+       if (elm_win_wm_rotation_supported_get(win)) {
+               int rots[4] = { 0, 90, 180, 270 };
+               elm_win_wm_rotation_available_rotations_set(win, &rots, 4);
+       } else {
+               _E("win rotation no supported");
+       }
+}
+#endif
+
+int X_make_syspopup(bundle *b, Display *dpy, Window xwin, void *win,
+                   int (*rotate_func) (Display*, Window, syspopup*),
+                   syspopup_handler *handler, void *user_data)
+{
+       syspopup *sp = NULL;
+       syspopup_info_t *info;
+       const char *popup_name = _syspopup_get_name_from_bundle(b);
+       XWindowAttributes attr;
+       int is_unviewable = 0;
+
+       if (popup_name == NULL || handler == NULL)
+               return -1;
+
+       info = _syspopup_info_get(popup_name);
+       if (info == NULL)
+               return -1;
+
+       if (_syspopup_init(__X_syspopup_term_handler,
+                          __X_syspopup_timeout_handler) < 0){
+               _syspopup_info_free(info);
+               return -1;
+       }
+
+       XGetWindowAttributes(dpy, xwin, &attr);
+
+       if (attr.map_state == IsViewable) {
+               XUnmapWindow(dpy, xwin);
+               is_unviewable = 1;
+       }
+
+       sp = (syspopup *) malloc(sizeof(syspopup));
+       if (sp == NULL) {
+               _syspopup_info_free(info);
+               return -1;
+       }
+
+       sp->name = strdup(info->name);
+       sp->def_term_fn = handler->def_term_fn;
+       sp->def_timeout_fn = handler->def_timeout_fn;
+       sp->user_data = user_data;
+       sp->internal_data = (void *)xwin;
+       sp->win = (void *)win;
+       sp->rotate_cb = rotate_func;
+       sp->timeout_id = 0;
+       sp->dupped_bundle = bundle_dup(b);
+       _syspopup_add_new(sp);
+
+       _syspopup_set_term_type(sp, info);
+       _syspopup_set_endkey_type(sp, info);
+
+       _syspopup_reset_timeout(sp, info);
+
+       __X_syspopup_change_xwin_type(dpy, xwin);
+       utilx_set_system_notification_level(dpy, xwin, info->prio);
+
+       utilx_grab_key(dpy, xwin, KEY_END, TOP_POSITION_GRAB);
+
+       if (info->focus == 1) {
+               __X_syspopup_disable_focus (dpy, xwin);
+       }
+
+#ifdef ROTATE_USING_X_CLIENT
+       rotate_func(dpy, xwin, sp);
+#else
+       __efl_rotation_set((Evas_Object* )win,(Ecore_X_Window)xwin);
+#endif
+
+       if (is_unviewable == 1) {
+               XMapWindow(dpy, xwin);
+       }
+
+       _syspopup_info_free(info);
+
+       return sp->id;
+}
+
+/**
+ * @brief       This API reset created the system popup's properties
+ *
+ *             This API reset created the system popup's properties based on
+ *             system popup information DB after extracting popup name from
+ *             given bundle system popup properties to be reset : timeout,
+ *             default action type, ....
+ *
+ * @param[in]   b              bundle received by app_reset handler
+ *                             (included system popup name)
+ * @return      0 if success, negative value(<0) if fail
+ * @retval      0              - success
+ * @retval      -1             - generic error
+ */
+int X_syspopup_reset(bundle *b)
+{
+       const char *popup_name;
+       syspopup_info_t *info;
+       syspopup *sp = NULL;
+
+       popup_name = _syspopup_get_name_from_bundle(b);
+       if (popup_name == NULL)
+               return -1;
+
+       sp = _syspopup_find(popup_name);
+       if (!sp)
+               return -1;
+       else {
+               Display *d;
+               Window win;
+
+               info = _syspopup_info_get(popup_name);
+               if (info == NULL)
+                       return -1;
+               _syspopup_reset_timeout(sp, info);
+
+               if (sp->dupped_bundle)
+                       free(sp->dupped_bundle);
+               sp->dupped_bundle = bundle_dup(b);
+
+               d = XOpenDisplay(NULL);
+               win = (Window) sp->internal_data;
+               utilx_set_system_notification_level(d, win, info->prio);
+
+               if (info->focus == 1) {
+                       __X_syspopup_disable_focus (d, win);
+               }
+
+#ifdef ROTATE_USING_X_CLIENT
+               int (*rotate_func) (Display *, Window, syspopup *);
+               rotate_func = sp->rotate_cb;
+               rotate_func(d, win, sp);
+#else
+               __efl_rotation_set((Evas_Object *)sp->win, (Ecore_X_Window)win);
+#endif
+               XMapWindow(d, win);
+               /*XMapRaised(d,win);*/
+               XCloseDisplay(d);
+
+               _syspopup_info_free(info);
+       }
+       return 0;
+}
+
+API int syspopup_has_popup(bundle *b)
+{
+       const char *popup_name;
+       popup_name = _syspopup_get_name_from_bundle(b);
+       if (popup_name == NULL)
+               return 0;
+
+       if (_syspopup_find(popup_name) != NULL)
+               return 1;
+       else
+               return 0;
+}
+
+API int syspopup_reset_timeout(bundle *b, unsigned int time)
+{
+       const char *popup_name;
+       syspopup_info_t *info;
+       syspopup *sp = NULL;
+       int ret;
+
+       popup_name = _syspopup_get_name_from_bundle(b);
+       if (popup_name == NULL) {
+               _E("popup_name is null");
+               return -1;
+       }
+
+       sp = _syspopup_find(popup_name);
+       if (!sp) {
+               _E("find syspopup error");
+               return -1;
+       } else {
+               info = _syspopup_info_get(popup_name);
+               if (info == NULL) {
+                       _E("get syspopup info error");
+                       return -1;
+               }
+               info->timeout = time;
+               ret = _syspopup_reset_timeout(sp, info);
+               _syspopup_info_free(info);
+       }
+
+       return ret;
+}
+
diff --git a/mobile/syspopup/syspopup.pc.in b/mobile/syspopup/syspopup.pc.in
new file mode 100644 (file)
index 0000000..5bbb491
--- /dev/null
@@ -0,0 +1,13 @@
+# Package Information for pkg-config
+
+prefix=/usr
+exec_prefix=@EXEC_PREFIX@
+libdir=@LIB_INSTALL_DIR@
+includedir=@INCLUDEDIR@
+
+Name: libsyspopup
+Description: system popup library for ui 
+Version: @VERSION@
+Requires: dlog bundle sqlite3 glib-2.0 elementary utilX ecore-x dbus-glib-1
+Libs: -L${libdir} -lsyspopup
+Cflags: -I${includedir}
diff --git a/mobile/syspopup/syspopup_efl.c b/mobile/syspopup/syspopup_efl.c
new file mode 100755 (executable)
index 0000000..163fab7
--- /dev/null
@@ -0,0 +1,138 @@
+/*
+ * syspopup
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@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.
+ *
+ */
+
+
+#include "syspopup_core.h"
+#include "syspopup.h"
+#include "syspopup_api.h"
+#include "simple_util.h"
+#include <Evas.h>
+#include <Ecore.h>
+#include <Ecore_Input.h>
+#include <Ecore_X.h>
+
+static Eina_Bool __x_keypress_cb(void *data, int type, void *event)
+{
+       int id = (int)data;
+       Ecore_Event_Key *ev = event;
+
+       if (ev == NULL)
+               return 0;
+
+       X_syspopup_process_keypress(id, ev->keyname);
+
+       return ECORE_CALLBACK_RENEW;
+}
+
+#ifdef ROTATE_USING_X_CLIENT
+static Eina_Bool __x_rotate_cb(void *data, int type, void *event)
+{
+       int id = (int)data;
+       Ecore_X_Event_Client_Message *ev = event;
+
+       if (!event)
+               return ECORE_CALLBACK_RENEW;
+
+       if (ev->message_type == ECORE_X_ATOM_E_ILLUME_ROTATE_ROOT_ANGLE)
+               X_syspopup_process_rotate(id);
+
+       return ECORE_CALLBACK_RENEW;
+}
+
+static int __efl_rotate(Display *dpy, Window win, syspopup *sp)
+{
+       int rotation;
+
+       rotation = X_syspopup_rotation_get(dpy, win);
+
+       if (rotation == -1) {
+               rotation = 0;
+       }
+
+       if (rotation >= 0)
+               elm_win_rotation_with_resize_set(sp->win, rotation);
+
+       return 0;
+}
+#else
+static int __efl_rotate(Display *dpy, Window win, syspopup *sp)
+{
+       return 0;
+}
+#endif
+
+API int syspopup_create(bundle *b, syspopup_handler *handler,
+                       Evas_Object *parent, void *user_data)
+{
+       Ecore_X_Window xwin;
+       Display *dpy;
+       const char *popup_name;
+       syspopup *sp = NULL;
+       int id;
+       XWindowAttributes attr;
+       int is_unviewable = 0;
+
+       popup_name = _syspopup_get_name_from_bundle(b);
+       if (popup_name == NULL || handler == NULL) {
+               _E("popup_name or handler is NULL");
+               return -1;
+       }
+
+       if (parent == NULL) {
+               _E("parent window is NULL");
+               return -1;
+       }
+
+       sp = _syspopup_find(popup_name);
+       if (sp) {
+               _E("already exist - syspopup %s", popup_name);
+               return -1;
+       } else {
+               xwin = elm_win_xwindow_get(parent);
+               dpy = ecore_x_display_get();
+
+               id = X_make_syspopup(b, dpy, xwin, parent, __efl_rotate,
+                                    handler, user_data);
+               if (id < 0) {
+                       _E("fail to make X syspopup");
+                       return -1;
+               }
+
+               /* X_syspopup_core should process 2 events */
+               /* First, rotate event */
+               /* Second, keypress event */
+               utilx_grab_key(dpy, xwin, KEY_BACK, TOP_POSITION_GRAB);
+               ecore_event_handler_add(ECORE_EVENT_KEY_UP, __x_keypress_cb, (void *)id);
+
+#ifdef ROTATE_USING_X_CLIENT
+               ecore_event_handler_add(ECORE_X_EVENT_CLIENT_MESSAGE,__x_rotate_cb, (void *)id);
+#endif
+       }
+
+       return 0;
+}
+
+API int syspopup_reset(bundle *b)
+{
+       return X_syspopup_reset(b);
+}
+
diff --git a/mobile/test/CMakeLists.txt b/mobile/test/CMakeLists.txt
new file mode 100644 (file)
index 0000000..86f105d
--- /dev/null
@@ -0,0 +1,8 @@
+# Test executables
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${TEST_CFLAGS}")
+
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/syspopup-caller)
+add_executable(sp_test test.c) 
+target_link_libraries(sp_test syspopup_caller ${pkgs_LDFLAGS})
+INSTALL(TARGETS sp_test DESTINATION bin)
+
diff --git a/mobile/test/test.c b/mobile/test/test.c
new file mode 100755 (executable)
index 0000000..ea23627
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * syspopup
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@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.
+ *
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "syspopup_caller.h"
+
+void usage()
+{
+       printf("[usage] sp_test launch/destroy popup_name..."
+                               "(key1,val1,key2,val2,...)\n");
+}
+
+int main(int argc, char **argv)
+{
+       bundle *b;
+       int i;
+       int ret = 0;
+
+       if (argc < 2) {
+               usage();
+               return -1;
+       }
+
+       if (strcmp(argv[1], "launch") == 0) {
+               if ((argc < 3) || (argc % 2 == 0)) {
+                       usage();
+                       return -1;
+               }
+
+               b = bundle_create();
+               for (i = 3; i < argc; i = i + 2)
+                       bundle_add(b, argv[i], argv[i + 1]);
+               ret = syspopup_launch(argv[2], b);
+               bundle_free(b);
+               if(ret < 0) return -1;
+
+       } else if (strcmp(argv[1], "destroy") == 0) {
+               ret = syspopup_destroy_all();
+               if(ret < 0) return -1;
+       } else {
+               usage();
+       }
+
+       return 0;
+}
+
diff --git a/packaging/syspopup.spec b/packaging/syspopup.spec
new file mode 100755 (executable)
index 0000000..f4c9f6d
--- /dev/null
@@ -0,0 +1,242 @@
+Name:       syspopup
+Summary:    syspopup package
+Version:    0.0.122
+Release:    1
+Group:      System/Libraries
+License:    Apache License, Version 2.0
+Source0:    syspopup-%{version}.tar.gz
+Requires(post): /sbin/ldconfig
+Requires(post): /bin/touch
+Requires(postun): /sbin/ldconfig
+BuildRequires:  cmake
+BuildRequires:  pkgconfig(sqlite3)
+BuildRequires:  pkgconfig(bundle)
+BuildRequires:  pkgconfig(dlog)
+BuildRequires:  pkgconfig(utilX)
+BuildRequires:  pkgconfig(dbus-glib-1)
+BuildRequires:  pkgconfig(x11)
+BuildRequires:  pkgconfig(aul)
+BuildRequires:  pkgconfig(evas)
+BuildRequires:  pkgconfig(appcore-efl)
+
+%description
+syspopup package for popup
+
+%package devel
+Summary:    syspopup development package
+Group:      Development/Libraries
+Requires:   %{name} = %{version}-%{release}
+
+%description devel
+syspopup development package popup
+
+%package caller
+Summary:    syspopup-caller package
+Group:      TO_BE/FILLED_IN
+Requires:   %{name} = %{version}-%{release}
+Requires(post): /sbin/ldconfig
+Requires(postun): /sbin/ldconfig
+
+%description caller
+syspopup-caller package for popup
+
+%package caller-devel
+Summary:    syspopup-caller development package
+Group:      TO_BE/FILLED_IN
+Requires:   %{name} = %{version}-%{release}
+
+%description caller-devel
+syspopup-caller development package for popup
+
+%if 0%{?tizen_profile_mobile}
+%package app
+Summary:    org.tizen.syspopup-app test app
+Group:      TO_BE/FILLED_IN
+Requires:   %{name} = %{version}-%{release}
+
+%description app
+org.tizen.syspopup-app test app package
+%endif
+
+%prep
+%setup -q -n %{name}-%{version}
+
+%build
+%if 0%{?tizen_profile_wearable}
+%if 0%{?tizen_build_binary_release_type_eng}
+export CFLAGS="$CFLAGS -DTIZEN_ENGINEER_MODE"
+export CXXFLAGS="$CXXFLAGS -DTIZEN_ENGINEER_MODE"
+export FFLAGS="$FFLAGS -DTIZEN_ENGINEER_MODE"
+%endif
+cd wearable
+export CFLAGS="$CFLAGS -Wall -Werror -Wno-unused-function"
+CFLAGS=${_cflags} cmake . -DCMAKE_INSTALL_PREFIX=%{_prefix} -DEXTRA_CFLAGS=-fPIC
+
+make %{?jobs:-j%jobs}
+
+%else
+cd mobile
+%cmake . -DEXTRA_CFLAGS=-fPIC
+
+make %{?jobs:-j%jobs}
+%endif
+%install
+%if 0%{?tizen_profile_wearable}
+rm -rf %{buildroot}
+cd wearable
+%make_install
+
+mkdir -p %{buildroot}/opt/dbspace
+sqlite3 %{buildroot}/opt/dbspace/.syspopup.db < %{buildroot}/usr/share/syspopup/syspopup_db.sql
+rm -rf %{buildroot}/usr/share/syspopup/syspopup_db.sql
+
+touch %{buildroot}%{_datadir}/popup_noti_term
+
+mkdir -p %{buildroot}/usr/share/license
+cp LICENSE %{buildroot}/usr/share/license/%{name}
+cp LICENSE %{buildroot}/usr/share/license/%{name}-caller
+%else
+rm -rf %{buildroot}
+cd mobile
+%make_install
+mkdir -p %{buildroot}/usr/share/license
+install LICENSE %{buildroot}/usr/share/license/%{name}
+install LICENSE %{buildroot}/usr/share/license/%{name}-devel
+install LICENSE %{buildroot}/usr/share/license/%{name}-caller
+install LICENSE %{buildroot}/usr/share/license/%{name}-caller-devel
+install LICENSE %{buildroot}/usr/share/license/%{name}-app
+
+mkdir -p %{buildroot}/opt/dbspace
+sqlite3 %{buildroot}/opt/dbspace/.syspopup.db < %{buildroot}/usr/share/syspopup/syspopup_db.sql
+rm -rf %{buildroot}/usr/share/syspopup/syspopup_db.sql
+
+touch %{buildroot}%{_datadir}/popup_noti_term
+%endif
+%post
+/sbin/ldconfig
+
+%postun -p /sbin/ldconfig
+
+%post caller -p /sbin/ldconfig
+
+%postun caller -p /sbin/ldconfig
+
+%files
+%if 0%{?tizen_profile_mobile}
+%manifest mobile/syspopup.manifest
+%else
+%manifest wearable/syspopup.manifest
+%endif
+%defattr(-,root,root,-)
+%{_libdir}/libsyspopup.so.0.1.0
+%{_datadir}/popup_noti_term
+%attr(644,root,app) /opt/dbspace/.syspopup.db
+%attr(644,root,app) /opt/dbspace/.syspopup.db-journal
+%{_bindir}/sp_test
+/usr/share/license/%{name}
+
+%files devel
+%defattr(-,root,root,-)
+%{_includedir}/SLP_SYSPOPUP_PG.h
+%{_includedir}/syspopup.h
+%{_libdir}/libsyspopup.so
+%{_libdir}/pkgconfig/syspopup.pc
+%if 0%{?tizen_profile_mobile}
+/usr/share/license/%{name}-devel
+%endif
+
+%files caller
+%if 0%{?tizen_profile_mobile}
+%manifest mobile/syspopup-caller.manifest
+%else
+%manifest wearable/syspopup-caller.manifest
+%endif
+%defattr(-,root,root,-)
+%{_libdir}/libsyspopup_caller.so.0.1.0
+/usr/share/license/%{name}-caller
+
+%files caller-devel
+%defattr(-,root,root,-)
+%{_libdir}/libsyspopup_caller.so
+%{_includedir}/syspopup_caller.h
+%{_libdir}/pkgconfig/syspopup-caller.pc
+%if 0%{?tizen_profile_mobile}
+/usr/share/license/%{name}-caller-devel
+
+%files app
+%manifest mobile/org.tizen.syspopup-app.manifest
+%defattr(-,root,root,-)
+%{_datadir}/icons/default/small/org.tizen.syspopup-app.png
+%{_bindir}/syspopup-app
+/usr/share/packages/org.tizen.syspopup-app.xml
+/usr/share/license/%{name}-app
+%endif
+
+%changelog
+* Tue Feb 18 2014 - Hyungdeuk Kim <hd3.kim@samsung.com>
+- Remove unused system popup sample app
+- Remove unused debian folder
+
+* Wed Jan 15 2014 - Hyungdeuk Kim <hd3.kim@samsung.com>
+- Add fota syspopup
+- Requested by seokey.jeong
+
+* Fri Sep 13 2013 - Hyungdeuk Kim <hd3.kim@samsung.com>
+- Add crash system popup
+- Requested by ty317.kim
+
+* Tue Sep 10 2013 - Hyungdeuk Kim <hd3.kim@samsung.com>
+- Remove unused ticker noti system popup
+- Maintained by sungho1.kwak
+- Add Wall, Werror build option
+
+* Fri Jun 21 2013 - Hyungdeuk Kim <hd3.kim@samsung.com>
+- Change end key term info for wifi-qs popup
+
+* Wed Jun 5 2013 - Hyungdeuk Kim <hd3.kim@samsung.com>
+- Add datausage system popup
+- Requested by ty317.kim
+
+* Fri May 17 2013 - Hyungdeuk Kim <hd3.kim@samsung.com>
+- Add safety volume popup
+- Requested by bw.jang
+
+* Tue Apr 30 2013 - Hyungdeuk Kim <hd3.kim@samsung.com>
+- Change focus value to 0 for power-off syspopup
+- Requested by ty317.kim
+
+* Thu Apr 25 2013 - Hyungdeuk Kim <hd3.kim@samsung.com>
+- Change prio info for system , power-off syspopup
+- Requested by ty317.kim
+
+* Wed Apr 24 2013 - Hyungdeuk Kim <hd3.kim@samsung.com>
+- Add system-syspopup 
+- Requested by ty317.kim
+
+* Fri Apr 12 2013 - Hyungdeuk Kim <hd3.kim@samsung.com>
+- Remove drm syspopup 
+- Requested by hakjoo.ko
+
+* Tue Apr 2 2013 - Hyugdeuk Kim <hd3.kim@samsung.com>
+- Add syspopup_reset_timeout api
+
+* Thu Mar 28 2013 - Hyungdeuk Kim <hd3.kim@samsung.com>
+- Add sym extraction syspopup info(telephony-syspopup)
+- Requested by jh48.an
+
+* Mon Mar 25 2013 - Hyungdeuk Kim <hd3.kim@samsung.com>
+- Add mobileap syspopup
+- Requested by sy39.ju
+
+* Thu Feb 21 2013 - Hyungdeuk Kim <hd3.kim@samsung.com>
+- Add syspopup app smack rule
+- Change dlog tag
+- Add dlogs for debug
+
+* Wed Nov 21 2012 - Hyungdeuk Kim <hd3.kim@samsung.com>
+- Add syspopup info for gcf supl
+
+* Tue Oct 30 2012 - Hyungdeuk Kim <hd3.kim@samsung.com>
+- Fix prevent issues
+- Add syspopup info for hdmi syspopup
+- move CFLAGS location to %build at spec file
diff --git a/wearable/AUTHORS b/wearable/AUTHORS
new file mode 100644 (file)
index 0000000..1e843b2
--- /dev/null
@@ -0,0 +1,5 @@
+Kunhoon Baik <knhoon.baik@samsung.com>
+Noha Park <noha.park@samsung.com>
+Jayoun Lee <airjany@samsung.com>
+Sewook Park <sewook7.park@samsung.com>
+Jaeho Lee <jaeho81.lee@samsung.com>
diff --git a/wearable/CMakeLists.txt b/wearable/CMakeLists.txt
new file mode 100644 (file)
index 0000000..5d266ce
--- /dev/null
@@ -0,0 +1,68 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+SET(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)
+
+PROJECT(syspopup_mods C)
+SET(VERSION 1.1)
+
+### Global setting ###
+
+SET(PREFIX ${CMAKE_INSTALL_PREFIX})
+SET(EXEC_PREFIX "\${prefix}")
+SET(LIBDIR "\${prefix}/lib")
+SET(INCLUDEDIR "\${prefix}/include")
+
+# Build type : Release
+IF("${CMAKE_BUILD_TYPE}" STREQUAL "")
+       SET(CMAKE_BUILD_TYPE "Release")
+ENDIF()
+MESSAGE("Build type: ${CMAKE_BUILD_TYPE}")
+
+# Set required packages
+INCLUDE(FindPkgConfig)
+
+pkg_check_modules(libpkgs REQUIRED aul dlog bundle sqlite3 glib-2.0 dbus-glib-1)
+
+FOREACH(flag ${libpkgs_CFLAGS})
+       SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+# Compiler flags
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
+SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -Wl,-zdefs" )
+SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fvisibility=hidden")
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -g")
+SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
+SET(CMAKE_C_FLAGS_RELEASE "-O2")
+
+SET(CMAKE_SKIP_BUILD_RPATH true)
+
+# Get uname value to set 'TARGET' definition 
+# TODO: Is this needed?
+FIND_PROGRAM(UNAME NAMES uname)
+EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH")
+IF("${ARCH}" STREQUAL "arm")
+       ADD_DEFINITIONS("-DTARGET")
+       MESSAGE("add -DTARGET")
+ENDIF("${ARCH}" STREQUAL "arm")
+
+ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"")
+
+# Linker flags
+SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed")
+
+### Build ###
+
+# aul_mods : modules (static library)
+add_library(syspopup_mods STATIC
+               src/syspopup_db.c
+               src/syspopup_core.c
+               )
+
+INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/include/SLP_SYSPOPUP_PG.h DESTINATION include)
+INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/data/syspopup_db.sql DESTINATION /usr/share/syspopup/)
+
+add_subdirectory(syspopup)
+add_subdirectory(syspopup-caller)
+
+# test
+add_subdirectory(test)
diff --git a/wearable/LICENSE b/wearable/LICENSE
new file mode 100644 (file)
index 0000000..a06208b
--- /dev/null
@@ -0,0 +1,204 @@
+Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
diff --git a/wearable/TC/build.sh b/wearable/TC/build.sh
new file mode 100755 (executable)
index 0000000..98ebeff
--- /dev/null
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+export TET_INSTALL_PATH=/scratchbox/tetware  # local tetware path
+export TET_TARGET_PATH=$TET_INSTALL_PATH/tetware-target
+export PATH=$TET_TARGET_PATH/bin:$PATH
+export LD_LIBRARY_PATH=$TET_TARGET_PATH/lib/tet3:$LD_LIBRARY_PATH
+export TET_ROOT=$TET_TARGET_PATH
+
+export TET_SUITE_ROOT=`pwd`
+FILE_NAME_EXTENSION=`date +%s`
+
+RESULT_DIR=results
+HTML_RESULT=$RESULT_DIR/build-tar-result-$FILE_NAME_EXTENSION.html
+JOURNAL_RESULT=$RESULT_DIR/build-tar-result-$FILE_NAME_EXTENSION.journal
+
+mkdir -p $RESULT_DIR
+
+tcc -c -p ./
+tcc -b -j $JOURNAL_RESULT -p ./
+grw -c 3 -f chtml -o $HTML_RESULT $JOURNAL_RESULT
diff --git a/wearable/TC/execute.sh b/wearable/TC/execute.sh
new file mode 100755 (executable)
index 0000000..6720da0
--- /dev/null
@@ -0,0 +1,19 @@
+#!/bin/sh
+export TET_INSTALL_PATH=/mnt/nfs/tetware
+export TET_TARGET_PATH=$TET_INSTALL_PATH/tetware-target
+export PATH=$TET_TARGET_PATH/bin:$PATH
+export LD_LIBRARY_PATH=$TET_TARGET_PATH/lib/tet3:$LD_LIBRARY_PATH
+
+export TET_ROOT=$TET_TARGET_PATH
+
+export TET_SUITE_ROOT=`pwd`
+FILE_NAME_EXTENSION=`date +%s`
+
+RESULT_DIR=results
+HTML_RESULT=$RESULT_DIR/exec-tar-result-$FILE_NAME_EXTENSION.html
+JOURNAL_RESULT=$RESULT_DIR/exec-tar-result-$FILE_NAME_EXTENSION.journal
+
+mkdir -p $RESULT_DIR
+
+tcc -e -j $JOURNAL_RESULT -p ./
+grw -c 3 -f chtml -o $HTML_RESULT $JOURNAL_RESULT
diff --git a/wearable/TC/tet_code b/wearable/TC/tet_code
new file mode 100755 (executable)
index 0000000..a2cf6c1
--- /dev/null
@@ -0,0 +1,12 @@
+# TET reserved codes
+0 "PASS"
+1 "FAIL"
+2 "UNRESOLVED"
+3 "NOTINUSE"
+4 "UNSUPPORTED"
+5 "UNTESTED"
+6 "UNINITIATED"
+7 "NORESULT"
+
+# Test suite additional codes
+33 "INSPECT"
diff --git a/wearable/TC/tet_scen b/wearable/TC/tet_scen
new file mode 100755 (executable)
index 0000000..43cbc9b
--- /dev/null
@@ -0,0 +1,7 @@
+all
+       ^TEST
+##### Scenarios for TEST #####
+
+# Test scenario
+TEST
+       :include:/unit/tslist
diff --git a/wearable/TC/tetbuild.cfg b/wearable/TC/tetbuild.cfg
new file mode 100755 (executable)
index 0000000..6192c78
--- /dev/null
@@ -0,0 +1,3 @@
+TET_OUTPUT_CAPTURE=False
+TET_BUILD_TOOL=make
+TET_PASS_TC_NAME=True
diff --git a/wearable/TC/tetclean.cfg b/wearable/TC/tetclean.cfg
new file mode 100755 (executable)
index 0000000..c66eda4
--- /dev/null
@@ -0,0 +1,2 @@
+TET_OUTPUT_CAPTURE=False
+TET_CLEAN_TOOL=make clean
diff --git a/wearable/TC/tetexec.cfg b/wearable/TC/tetexec.cfg
new file mode 100755 (executable)
index 0000000..0d9d39a
--- /dev/null
@@ -0,0 +1 @@
+TET_OUTPUT_CAPTURE=False
diff --git a/wearable/TC/unit/Makefile b/wearable/TC/unit/Makefile
new file mode 100644 (file)
index 0000000..631550c
--- /dev/null
@@ -0,0 +1,21 @@
+CC ?= gcc
+
+TARGETS = 
+PKGS = syspopup 
+
+LDFLAGS = `pkg-config --libs $(PKGS)`
+LDFLAGS += $(TET_ROOT)/lib/tet3/tcm_s.o
+LDFLAGS += -L$(TET_ROOT)/lib/tet3 -ltcm_s
+LDFLAGS += -L$(TET_ROOT)/lib/tet3 -lapi_s
+
+CFLAGS = -I. `pkg-config --cflags $(PKGS)`
+CFLAGS += -I$(TET_ROOT)/inc/tet3
+CFLAGS += -Wall
+
+all: $(TARGETS)
+
+$(TARGET): %: %.c
+       $(CC) -o $@ $< $(CFLAGS) $(LDFLAGS)
+
+clean:
+       rm -f $(TARGETS)
diff --git a/wearable/TC/unit/tc_gen.sh b/wearable/TC/unit/tc_gen.sh
new file mode 100755 (executable)
index 0000000..54f482d
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+TMPSTR=$0
+SCRIPT=${TMPSTR##*/}
+
+if [ $# -lt 2 ]; then
+       echo "Usage) $SCRIPT module_name api_name"
+       exit 1
+fi
+
+MODULE=$1
+API=$2
+TEMPLATE=utc_MODULE_API_func.c.in
+TESTCASE=utc_${MODULE}_${API}_func
+
+sed -e '
+       s^@API@^'"$API"'^g
+       s^@MODULE@^'"$MODULE"'^g
+       ' $TEMPLATE > $TESTCASE.c
+
+if [ ! -e "$TESTCASE.c" ]; then
+       echo "Failed"
+       exit 1
+fi
+echo "Testcase file is $TESTCASE.c"
+echo "Done"
+echo "please put \"$TESTCASE\" as Target in Makefile"
+echo "please put \"/unit/$TESTCASE\" in tslist"
diff --git a/wearable/TC/unit/tslist b/wearable/TC/unit/tslist
new file mode 100644 (file)
index 0000000..8b13789
--- /dev/null
@@ -0,0 +1 @@
+
diff --git a/wearable/TC/unit/utc_MODULE_API_func.c.in b/wearable/TC/unit/utc_MODULE_API_func.c.in
new file mode 100644 (file)
index 0000000..0227150
--- /dev/null
@@ -0,0 +1,64 @@
+#include <tet_api.h>
+
+static void startup(void);
+static void cleanup(void);
+
+void (*tet_startup)(void) = startup;
+void (*tet_cleanup)(void) = cleanup;
+
+static void utc_@MODULE@_@API@_func_01(void);
+static void utc_@MODULE@_@API@_func_02(void);
+
+enum {
+       POSITIVE_TC_IDX = 0x01,
+       NEGATIVE_TC_IDX,
+};
+
+struct tet_testlist tet_testlist[] = {
+       { utc_@MODULE@_@API@_func_01, POSITIVE_TC_IDX },
+       { utc_@MODULE@_@API@_func_02, NEGATIVE_TC_IDX },
+};
+
+static void startup(void)
+{
+}
+
+static void cleanup(void)
+{
+}
+
+/**
+ * @brief Positive test case of @API@()
+ */
+static void utc_@MODULE@_@API@_func_01(void)
+{
+       int r = 0;
+       char buf[MAX_LOCAL_BUFSZ];
+       
+       r = @API@(...);
+
+       if (r<0) {
+               tet_infoline("@API@() failed in positive test case");
+               tet_result(TET_FAIL);
+               return;
+       }
+       tet_result(TET_PASS);
+}
+
+/**
+ * @brief Negative test case of ug_init @API@()
+ */
+static void utc_@MODULE@_@API@_func_02(void)
+{
+       int r = 0;
+       char buf[MAX_LOCAL_BUFSZ];
+
+       r = @API@(...);
+
+       if (r>=0) {
+               tet_infoline("@API@() failed in negative test case");
+               tet_result(TET_FAIL);
+               return;
+       }
+       tet_result(TET_PASS);
+}
diff --git a/wearable/data/syspopup_db.sql b/wearable/data/syspopup_db.sql
new file mode 100755 (executable)
index 0000000..acf80eb
--- /dev/null
@@ -0,0 +1,26 @@
+PRAGMA journal_mode = PERSIST;
+
+/* prio : 0~2 (0:low, 2:high) */
+/* focus : 0~1 (0:focus, 1:unfocus) */
+/* timeout : -1 ~ integer value (-1:infinite, 0:don't use) */
+/* term_act : 0~2(0:TERM, 1:HIDE, 2:IGNORE) */
+/* endkey_act : 0~2(0:TERM, 1:HIDE, 2:IGNORE) */
+CREATE TABLE IF NOT EXISTS syspopup_info (
+       id INTEGER PRIMARY KEY,
+       name TEXT UNIQUE NOT NULL,
+       prio INTEGER,
+       focus INTEGER,
+       timeout INTEGER,
+       term_act INTEGER,
+       endkey_act INTEGER,
+       pkgname TEXT
+);
+
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"volume",                    1,1,-1,1,1,"com.samsung.windicator");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"bt-syspopup",              0,0,-1,0,0,"org.tizen.bt-syspopup");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"poweroff-syspopup",                2,0,-1,0,0,"org.tizen.poweroff-syspopup");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"lowmem-syspopup",          0,0,5,0,0,"org.tizen.lowmem-syspopup");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"lowbat-syspopup",          1,0,5,0,0,"org.tizen.lowbat-syspopup");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"safetyvolume-syspopup",    1,1,-1,0,0,"com.samsung.safetyvolume-syspopup");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"crash-popup",                      1,0,-1,0,0,"org.tizen.crash-popup");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"fota-syspopup",                    2,0,3,0,0,"com.samsung.fota-syspopup");
diff --git a/wearable/image/syspopup_diag.png b/wearable/image/syspopup_diag.png
new file mode 100755 (executable)
index 0000000..5108343
Binary files /dev/null and b/wearable/image/syspopup_diag.png differ
diff --git a/wearable/include/SLP_SYSPOPUP_PG.h b/wearable/include/SLP_SYSPOPUP_PG.h
new file mode 100755 (executable)
index 0000000..faa7b0e
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * syspopup
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@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.
+ *
+ */
+
+
+/**
+
+ *
+ * @ingroup   SLP_PG
+ * @defgroup   SYSPOPUP System Popup
+
+@par SYSPOPUP Programming Guide
+
+<h1 class="pg"> Introduction</h1>
+SYSPOPPUP is designed to create popups for system events like low battery, low memory, incoming call etc. Sys-popup (System Popup) Library provides API's for creating system popup applications and launching/destroying the system popup's.
+<h1 class="pg"> Scope</h1>
+The purpose of this document is to describe how applications can use System Popup Library APIs.\n
+This document gives only programming guidelines to system popup application engineers.
+The scope of this document is limited to System Popup API usage.
+
+<h1 class="pg"> Syspopup Features</h1>
+Syspopup exposes two kinds of API's.
+1. Create system popup application.\n
+2. Launch System popup application.
+
+<h1 class="pg"> Syspopup Architecture</h1>
+\image html syspopup_diag.png "Picture 1. Syspopup Process View"
+\image rtf syspopup_diag.png "Picture 1. Syspopup Process View"
+
+Whenever system daemon receives system event for which popup is to be created, it calls syspopup launch API with the required popup name (lowbatt, lowmem etc). Syspopup library finds the appropriate syspopup application to be launched based on the popup name. It then calls the AUL API for launching the syspoup application.
+The syspopup application calls syspopup's create API for creating the systempopup. Picture 1 above shows the process view of syspopup.
+
+<h1 class="pg">API list and description</h1>
+<ul>
+        <li>syspopup_create() : Creates System Popup</li>
+        <li>syspopup_reset() : Reset the created system popup properties</li>
+        <li>syspopup_has_popup() : Checks system popup is created and is running</li>
+       <li>syspopup_launch() : Launches system popup application</li>
+       <li>syspopup_destroy_all() : Destroy all the system popups</li>
+</ul>
+@}
+*/
+
diff --git a/wearable/include/pg-doxy/doxygen.conf b/wearable/include/pg-doxy/doxygen.conf
new file mode 100755 (executable)
index 0000000..a7cd424
--- /dev/null
@@ -0,0 +1,850 @@
+# Doxyfile 1.5.2
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+#       TAG = value [value, ...]
+# For lists items can also be appended using:
+#       TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+DOXYFILE_ENCODING      = UTF-8
+PROJECT_NAME           =  SLP-Developer Library
+PROJECT_NUMBER         = 
+OUTPUT_DIRECTORY       = ./doxygen_output
+CREATE_SUBDIRS         = NO
+OUTPUT_LANGUAGE        = English
+BRIEF_MEMBER_DESC      = YES
+REPEAT_BRIEF           = YES
+ABBREVIATE_BRIEF       = NO
+ALWAYS_DETAILED_SEC    = YES
+INLINE_INHERITED_MEMB  = NO
+FULL_PATH_NAMES        = NO
+STRIP_FROM_PATH        = 
+STRIP_FROM_INC_PATH    = 
+SHORT_NAMES            = YES
+JAVADOC_AUTOBRIEF      = NO
+MULTILINE_CPP_IS_BRIEF = NO
+DETAILS_AT_TOP         = YES
+INHERIT_DOCS           = YES
+SEPARATE_MEMBER_PAGES  = YES
+TAB_SIZE               = 8
+ALIASES                = 
+OPTIMIZE_OUTPUT_FOR_C  = NO
+OPTIMIZE_OUTPUT_JAVA   = NO
+BUILTIN_STL_SUPPORT    = NO
+CPP_CLI_SUPPORT        = NO
+DISTRIBUTE_GROUP_DOC   = NO
+SUBGROUPING            = YES
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+EXTRACT_ALL            = YES
+EXTRACT_PRIVATE        = YES
+EXTRACT_STATIC         = YES
+EXTRACT_LOCAL_CLASSES  = NO
+EXTRACT_LOCAL_METHODS  = YES
+HIDE_UNDOC_MEMBERS     = YES
+HIDE_UNDOC_CLASSES     = YES
+HIDE_FRIEND_COMPOUNDS  = YES
+HIDE_IN_BODY_DOCS      = NO
+INTERNAL_DOCS          = NO
+CASE_SENSE_NAMES       = YES
+HIDE_SCOPE_NAMES       = NO
+SHOW_INCLUDE_FILES     = YES
+INLINE_INFO            = YES
+SORT_MEMBER_DOCS       = YES
+SORT_BRIEF_DOCS        = YES
+SORT_BY_SCOPE_NAME     = YES
+SORT_GROUP_NAMES     = YES
+GENERATE_TODOLIST      = NO
+USE_INLINE_TREES      = NO
+SHOW_NAMESPACES                = NO
+HTML DYNAMIC SECTIONS          = YES
+GENERATE_TESTLIST      = NO
+GENERATE_BUGLIST       = NO
+GENERATE_DEPRECATEDLIST= NO
+ENABLED_SECTIONS       = 
+MAX_INITIALIZER_LINES  = 30
+SHOW_USED_FILES        = YES
+SHOW_DIRECTORIES       = NO
+FILE_VERSION_FILTER    = 
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated 
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET                  = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are 
+# generated by doxygen. Possible values are YES and NO. If left blank 
+# NO is used.
+
+WARNINGS               = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED   = YES
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
+# potential errors in the documentation, such as not documenting some 
+# parameters in a documented function, or documenting parameters that 
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR      = YES
+
+# This WARN_NO_PARAMDOC option can be abled to get warnings for 
+# functions that are documented, but have no documentation for their parameters 
+# or return value. If set to NO (the default) doxygen will only warn about 
+# wrong or incomplete parameter documentation, but not about the absence of 
+# documentation.
+
+WARN_NO_PARAMDOC       = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that 
+# doxygen can produce. The string should contain the $file, $line, and $text 
+# tags, which will be replaced by the file and line number from which the 
+# warning originated and the warning text. Optionally the format may contain 
+# $version, which will be replaced by the version of the file (if it could 
+# be obtained via FILE_VERSION_FILTER)
+
+WARN_FORMAT            = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning 
+# and error messages should be written. If left blank the output is written 
+# to stderr.
+
+WARN_LOGFILE           = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain 
+# documented source files. You may enter file names like "myfile.cpp" or 
+# directories like "/usr/src/myproject". Separate the files or directories 
+# with spaces.
+
+INPUT                  = .. 
+
+# This tag can be used to specify the character encoding of the source files that 
+# doxygen parses. Internally doxygen uses the UTF-8 encoding, which is also the default 
+# input encoding. Doxygen uses libiconv (or the iconv built into libc) for the transcoding. 
+# See http://www.gnu.org/software/libiconv for the list of possible encodings.
+
+INPUT_ENCODING         = UTF-8
+FILE_PATTERNS          = *.h \
+                        *.doxy
+RECURSIVE              = YES
+EXCLUDE                =  
+EXCLUDE_SYMLINKS       = NO
+EXCLUDE_PATTERNS       = */test/* \
+                       */debian/* \
+                       */lost+found/* \
+                       */i386/* \
+                       */arm/* \
+                       */simulator/*  \
+                       *test* \
+                       */voda3rd/* 
+EXCLUDE_SYMBOLS        = 
+EXAMPLE_PATH           = 
+EXAMPLE_PATTERNS       = 
+EXAMPLE_RECURSIVE      = NO
+IMAGE_PATH             = ../image 
+INPUT_FILTER           = 
+FILTER_PATTERNS        = 
+FILTER_SOURCE_FILES    = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
+# be generated. Documented entities will be cross-referenced with these sources. 
+# Note: To get rid of all source code in the generated output, make sure also 
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER         = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body 
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES         = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
+# doxygen to hide any special comment blocks from generated source code 
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS    = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES (the default) 
+# then for each documented function all documented 
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = YES
+
+# If the REFERENCES_RELATION tag is set to YES (the default) 
+# then for each documented function all documented entities 
+# called/used by that function will be listed.
+
+REFERENCES_RELATION    = YES
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
+# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
+# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
+# link to the source code.  Otherwise they will link to the documentstion.
+
+REFERENCES_LINK_SOURCE = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code 
+# will point to the HTML generated by the htags(1) tool instead of doxygen 
+# built-in source browser. The htags tool is part of GNU's global source 
+# tagging system (see http://www.gnu.org/software/global/global.html). You 
+# will need version 4.8.6 or higher.
+
+USE_HTAGS              = NO
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
+# will generate a verbatim copy of the header file for each class for 
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS       = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
+# of all compounds will be generated. Enable this if the project 
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX     = YES
+COLS_IN_ALPHA_INDEX    = 10
+IGNORE_PREFIX          = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
+# generate HTML output.
+
+GENERATE_HTML          = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT            = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION    = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard header.
+
+HTML_HEADER            = 
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard footer.
+
+HTML_FOOTER            =
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
+# style sheet that is used by each HTML page. It can be used to 
+# fine-tune the look of the HTML output. If the tag is left blank doxygen 
+# will generate a default style sheet. Note that doxygen will try to copy 
+# the style sheet file to the HTML output directory, so don't put your own 
+# stylesheet in the HTML output directory as well, or it will be erased!
+
+HTML_STYLESHEET        =./slp_doxy.css
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
+# files or namespaces will be aligned in HTML using tables. If set to 
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS     = YES
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files 
+# will be generated that can be used as input for tools like the 
+# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) 
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP      = YES
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 
+# be used to specify the file name of the resulting .chm file. You 
+# can add a path in front of the file if the result should not be 
+# written to the html output directory.
+
+CHM_FILE               = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 
+# be used to specify the location (absolute path including file name) of 
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION           = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 
+# controls if a separate .chi index file is generated (YES) or that 
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI           = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 
+# controls whether a binary table of contents is generated (YES) or a 
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC             = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members 
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND             = NO
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at 
+# top of each HTML page. The value NO (the default) enables the index and 
+# the value YES disables it.
+
+DISABLE_INDEX          = NO
+
+# This tag can be used to set the number of enum values (range [1..20]) 
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE   = 4
+
+# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
+# generated containing a tree-like index structure (just like the one that 
+# is generated for HTML Help). For this to work a browser that supports 
+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 
+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 
+# probably better off using the HTML help feature.
+
+GENERATE_TREEVIEW      = YES
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 
+# used to set the initial width (in pixels) of the frame in which the tree 
+# is shown.
+
+TREEVIEW_WIDTH         = 190
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
+# generate Latex output.
+
+GENERATE_LATEX         = NO
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT           = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
+# invoked. If left blank `latex' will be used as the default command name.
+
+LATEX_CMD_NAME         = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 
+# generate index for LaTeX. If left blank `makeindex' will be used as the 
+# default command name.
+
+MAKEINDEX_CMD_NAME     = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
+# LaTeX documents. This may be useful for small projects and may help to 
+# save some trees in general.
+
+COMPACT_LATEX          = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used 
+# by the printer. Possible values are: a4, a4wide, letter, legal and 
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE             = a4wide
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES         = 
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for 
+# the generated latex document. The header should contain everything until 
+# the first chapter. If it is left blank doxygen will generate a 
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER           = 
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will 
+# contain links (just like the HTML output) instead of page references 
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS         = NO
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 
+# plain latex in the generated Makefile. Set this option to YES to get a 
+# higher quality PDF documentation.
+
+USE_PDFLATEX           = NO
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
+# command to the generated LaTeX files. This will instruct LaTeX to keep 
+# running if errors occur, instead of asking the user for help. 
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE        = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not 
+# include the index chapters (such as File Index, Compound Index, etc.) 
+# in the output.
+
+LATEX_HIDE_INDICES     = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
+# The RTF output is optimized for Word 97 and may not look very pretty with 
+# other RTF readers or editors.
+
+GENERATE_RTF           = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT             = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact 
+# RTF documents. This may be useful for small projects and may help to 
+# save some trees in general.
+
+COMPACT_RTF            = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 
+# will contain hyperlink fields. The RTF file will 
+# contain links (just like the HTML output) instead of page references. 
+# This makes the output suitable for online browsing using WORD or other 
+# programs which support those fields. 
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS         = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's 
+# config file, i.e. a series of assignments. You only have to provide 
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE    = 
+
+# Set optional variables used in the generation of an rtf document. 
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE    = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
+# generate man pages
+
+GENERATE_MAN           = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT             = man
+
+# The MAN_EXTENSION tag determines the extension that is added to 
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION          = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output, 
+# then it will generate one additional man file for each entity 
+# documented in the real man page(s). These additional files 
+# only source the real man page, but without them the man command 
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS              = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will 
+# generate an XML file that captures the structure of 
+# the code including all documentation.
+
+GENERATE_XML           = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT             = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_SCHEMA             = 
+
+# The XML_DTD tag can be used to specify an XML DTD, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_DTD                = 
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will 
+# dump the program listings (including syntax highlighting 
+# and cross-referencing information) to the XML output. Note that 
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING     = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 
+# generate an AutoGen Definitions (see autogen.sf.net) file 
+# that captures the structure of the code including all 
+# documentation. Note that this feature is still experimental 
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF   = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will 
+# generate a Perl module file that captures the structure of 
+# the code including all documentation. Note that this 
+# feature is still experimental and incomplete at the 
+# moment.
+
+GENERATE_PERLMOD       = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate 
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able 
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX          = YES
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 
+# nicely formatted so it can be parsed by a human reader.  This is useful 
+# if you want to understand what is going on.  On the other hand, if this 
+# tag is set to NO the size of the Perl module output will be much smaller 
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY         = YES
+
+# The names of the make variables in the generated doxyrules.make file 
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 
+# This is useful so different doxyrules.make files included by the same 
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX = 
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor   
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
+# evaluate all C-preprocessor directives found in the sources and include 
+# files.
+
+ENABLE_PREPROCESSING   = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
+# names in the source code. If set to NO (the default) only conditional 
+# compilation will be performed. Macro expansion can be done in a controlled 
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION        = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
+# then the macro expansion is limited to the macros specified with the 
+# PREDEFINED and EXPAND_AS_DEFINED tags.
+
+EXPAND_ONLY_PREDEF     = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES        = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that 
+# contain include files that are not input files but should be processed by 
+# the preprocessor.
+
+INCLUDE_PATH           = 
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
+# patterns (like *.h and *.hpp) to filter out the header-files in the 
+# directories. If left blank, the patterns specified with FILE_PATTERNS will 
+# be used.
+
+INCLUDE_FILE_PATTERNS  = 
+
+# The PREDEFINED tag can be used to specify one or more macro names that 
+# are defined before the preprocessor is started (similar to the -D option of 
+# gcc). The argument of the tag is a list of macros of the form: name 
+# or name=definition (no spaces). If the definition and the = are 
+# omitted =1 is assumed. To prevent a macro definition from being 
+# undefined via #undef or recursively expanded use the := operator 
+# instead of the = operator.
+
+PREDEFINED             = 
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
+# this tag can be used to specify a list of macro names that should be expanded. 
+# The macro definition that is found in the sources will be used. 
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED      = 
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
+# doxygen's preprocessor will remove all function-like macros that are alone 
+# on a line, have an all uppercase name, and do not end with a semicolon. Such 
+# function macros are typically used for boiler-plate code, and will confuse 
+# the parser if not removed.
+
+SKIP_FUNCTION_MACROS   = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references   
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles. 
+# Optionally an initial location of the external documentation 
+# can be added for each tagfile. The format of a tag file without 
+# this location is as follows: 
+#   TAGFILES = file1 file2 ... 
+# Adding location for the tag files is done as follows: 
+#   TAGFILES = file1=loc1 "file2 = loc2" ... 
+# where "loc1" and "loc2" can be relative or absolute paths or 
+# URLs. If a location is present for each tag, the installdox tool 
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen 
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES               = 
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create 
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE       = 
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed 
+# in the class index. If set to NO only the inherited external classes 
+# will be listed.
+
+ALLEXTERNALS           = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 
+# in the modules index. If set to NO, only the current project's groups will 
+# be listed.
+
+EXTERNAL_GROUPS        = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script 
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH              = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool   
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base 
+# or super classes. Setting the tag to NO turns the diagrams off. Note that 
+# this option is superseded by the HAVE_DOT option below. This is only a 
+# fallback. It is recommended to install and use dot, since it yields more 
+# powerful graphs.
+
+CLASS_DIAGRAMS         = NO
+
+# You can define message sequence charts within doxygen comments using the \msc 
+# command. Doxygen will then run the mscgen tool (see http://www.mcternan.me.uk/mscgen/) to 
+# produce the chart and insert it in the documentation. The MSCGEN_PATH tag allows you to 
+# specify the directory where the mscgen tool resides. If left empty the tool is assumed to 
+# be found in the default search path.
+
+MSCGEN_PATH            = 
+
+# If set to YES, the inheritance and collaboration graphs will hide 
+# inheritance and usage relations if the target is undocumented 
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS   = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
+# available from the path. This tool is part of Graphviz, a graph visualization 
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section 
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT               = NO
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect inheritance relations. Setting this tag to YES will force the 
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH            = NO
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect implementation dependencies (inheritance, containment, and 
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH    = NO
+
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for groups, showing the direct groups dependencies
+
+GROUP_GRAPHS           = NO
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
+# collaboration diagrams in a style similar to the OMG's Unified Modeling 
+# Language.
+
+UML_LOOK               = NO
+
+# If set to YES, the inheritance and collaboration graphs will show the 
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS     = NO
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 
+# tags are set to YES then doxygen will generate a graph for each documented 
+# file showing the direct and indirect include dependencies of the file with 
+# other documented files.
+
+INCLUDE_GRAPH          = NO
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each 
+# documented header file showing the documented files that directly or 
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH      = NO
+
+# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will 
+# generate a call dependency graph for every global function or class method. 
+# Note that enabling this option will significantly increase the time of a run. 
+# So in most cases it will be better to enable call graphs for selected 
+# functions only using the \callgraph command.
+
+CALL_GRAPH             = NO
+
+# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then doxygen will 
+# generate a caller dependency graph for every global function or class method. 
+# Note that enabling this option will significantly increase the time of a run. 
+# So in most cases it will be better to enable caller graphs for selected 
+# functions only using the \callergraph command.
+
+CALLER_GRAPH           = NO
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY    = NO
+
+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES 
+# then doxygen will show the dependencies a directory has on other directories 
+# in a graphical way. The dependency relations are determined by the #include
+# relations between the files in the directories.
+
+DIRECTORY_GRAPH        = NO
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT       = jpg
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be 
+# found. If left blank, it is assumed the dot tool can be found in the path.
+
+DOT_PATH               = 
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that 
+# contain dot files that are included in the documentation (see the 
+# \dotfile command).
+
+DOTFILE_DIRS           = 
+
+# The MAX_DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of 
+# nodes that will be shown in the graph. If the number of nodes in a graph 
+# becomes larger than this value, doxygen will truncate the graph, which is 
+# visualized by representing a node as a red box. Note that doxygen will always 
+# show the root nodes and its direct children regardless of this setting.
+
+DOT_GRAPH_MAX_NODES    = 50
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent 
+# background. This is disabled by default, which results in a white background. 
+# Warning: Depending on the platform used, enabling this option may lead to 
+# badly anti-aliased labels on the edges of a graph (i.e. they become hard to 
+# read).
+
+DOT_TRANSPARENT        = NO
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output 
+# files in one run (i.e. multiple -o and -T options on the command line). This 
+# makes dot run faster, but since only newer versions of dot (>1.8.10) 
+# support this, this feature is disabled by default.
+
+DOT_MULTI_TARGETS      = NO
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 
+# generate a legend page explaining the meaning of the various boxes and 
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND        = NO
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 
+# remove the intermediate dot files that are used to generate 
+# the various graphs.
+
+DOT_CLEANUP            = NO
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine   
+#---------------------------------------------------------------------------
+
+# The SEARCHENGINE tag specifies whether or not a search engine should be 
+# used. If set to NO the values of all tags below this one will be ignored.
+
+SEARCHENGINE           = YES
diff --git a/wearable/include/pg-doxy/pg-doxy.sh b/wearable/include/pg-doxy/pg-doxy.sh
new file mode 100755 (executable)
index 0000000..c756291
--- /dev/null
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+# Create doxygen from debian package server
+# By Jungbae Lee (yi_jungbae@samsung.com)
+
+cd `dirname $0`
+CWD=`pwd`
+
+# Use doxygen 1.7.0
+export PATH=/usr/local/bin:${HOME}/mytools/bin:${PATH}
+export LD_LIBRARY_PATH=${HOME}/mytools/lib:${LD_LIBRARY_PATH}
+
+
+### Configuration
+SBOX=/scratchbox/users/$USER/home/$USER
+DOXYGEN_OUTPUT_DIR=$CWD/doxygen_output
+DOXYGEN=./tool/bin/doxygen
+DOXY_CONF=doxygen.conf
+IMAGE_DIR=../../image #need to change
+#IMAGE_DIR=[fill your image path]
+
+
+
+####doxygen configuration :: output Directory
+mkdir $DOXYGEN_OUTPUT_DIR
+
+echo "Doxygen running..."
+if [ ! -e $CWD/doxygen_output ]; then
+       mkdir $CWD/doxygen_output
+fi
+# Run doxygen
+$DOXYGEN $DOXY_CONF 2>&1
+
+#image copy
+cp $CWD/$IMAGE_DIR/* $DOXYGEN_OUTPUT_DIR/html/
+
+echo "Finished!"
+exit;
+
diff --git a/wearable/include/pg-doxy/slp_doxy.css b/wearable/include/pg-doxy/slp_doxy.css
new file mode 100644 (file)
index 0000000..12c03ac
--- /dev/null
@@ -0,0 +1,699 @@
+/* The standard CSS for doxygen */
+
+body, table, div, p, dl {
+       font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif;
+       font-size: 12px;
+}
+
+/* @group Heading Levels */
+
+h1 {
+       font-size: 18pt;
+       color: #3366ED;
+}
+
+h1.pg {
+       font-size: 18pt;
+       color: #336666;
+       margin-right:-0.6pt; 
+       margin-left:0cm; 
+       padding-top:0cm; 
+       padding-right:0cm; 
+       padding-bottom:1pt; 
+       padding-left:0cm; 
+       border-bottom-width:1.5pt; 
+       border-bottom-color:#336666; 
+       border-top-style:none; 
+       border-right-style:none; 
+       border-bottom-style:solid; 
+       border-left-style:none;
+}
+
+h2 {
+       font-size: 14pt;
+       color: #336666;
+}
+h2.pg {
+       font-size: 14pt;
+       color: #336666;
+       margin-right:-0.1pt; 
+       margin-left:0cm; 
+       padding-top:0cm; 
+       padding-right:0cm; 
+       padding-bottom:1pt; 
+       padding-left:0cm; 
+       border-bottom-width:1.2pt; 
+       border-bottom-color:#336666; 
+       border-top-style:none; 
+       border-right-style:none; 
+       border-bottom-style:solid; 
+       border-left-style:none;
+}
+
+
+h3 {
+       font-size: 12pt;
+       color: #336666;
+}
+h3.pg {
+       font-size: 12pt;
+       color: #336666;
+}
+
+
+
+dt {
+       font-weight: bold;
+}
+
+div.multicol {
+       -moz-column-gap: 1em;
+       -webkit-column-gap: 1em;
+       -moz-column-count: 3;
+       -webkit-column-count: 3;
+}
+
+p.startli, p.startdd, p.starttd {
+       margin-top: 2px;
+}
+
+p.endli {
+       margin-bottom: 0px;
+}
+
+p.enddd {
+       margin-bottom: 4px;
+}
+
+p.endtd {
+       margin-bottom: 2px;
+}
+
+/* @end */
+
+caption {
+       font-weight: bold;
+}
+
+span.legend {
+        font-size: 70%;
+        text-align: center;
+}
+
+h3.version {
+        font-size: 90%;
+        text-align: center;
+}
+
+div.qindex, div.navtab{
+       background-color: #EBEFF6;
+       border: 1px solid #A3B4D7;
+       text-align: center;
+       margin: 2px;
+       padding: 2px;
+}
+
+div.qindex, div.navpath {
+       width: 100%;
+       line-height: 140%;
+}
+
+div.navtab {
+       margin-right: 15px;
+}
+
+/* @group Link Styling */
+
+a {
+       color: #3D578C;
+       font-weight: normal;
+       text-decoration: none;
+}
+
+.contents a:visited {
+       color: #4665A2;
+}
+
+a:hover {
+       text-decoration: underline;
+}
+
+a.qindex {
+       font-weight: bold;
+}
+
+a.qindexHL {
+       font-weight: bold;
+       background-color: #9CAFD4;
+       color: #ffffff;
+       border: 1px double #869DCA;
+}
+
+.contents a.qindexHL:visited {
+        color: #ffffff;
+}
+
+a.el {
+       font-weight: bold;
+}
+
+a.elRef {
+}
+
+a.code {
+       color: #4665A2;
+}
+
+a.codeRef {
+       color: #4665A2;
+}
+
+/* @end */
+
+dl.el {
+       margin-left: -1cm;
+}
+
+.fragment {
+       font-family: monospace, fixed;
+       font-size: 105%;
+}
+
+pre.fragment {
+       border: 1px solid #C4CFE5;
+       background-color: #FBFCFD;
+       padding: 4px 6px;
+       margin: 4px 8px 4px 2px;
+       overflow: auto;
+       word-wrap: break-word;
+       font-size:  9pt;
+       line-height: 125%;
+}
+
+div.ah {
+       background-color: black;
+       font-weight: bold;
+       color: #ffffff;
+       margin-bottom: 3px;
+       margin-top: 3px
+       padding: .2em;
+       border: solid thin #333;
+       border-radius: .5em;
+       -webkit-border-radius: .5em;
+       -moz-border-radius: .5em;
+       -webkit-box-shadow: 2px 2px 3px #999;
+       -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+       background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
+       background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000);
+}
+
+div.groupHeader {
+       margin-left: 16px;
+       margin-top: 12px;
+       margin-bottom: 6px;
+       font-weight: bold;
+}
+
+div.groupText {
+       margin-left: 16px;
+       font-style: italic;
+}
+
+body {
+       background: white;
+       color: black;
+        margin: 0;
+}
+
+div.contents {
+       margin-top: 10px;
+       margin-left: 10px;
+       margin-right: 10px;
+}
+
+td.indexkey {
+       background-color: #EBEFF6;
+       font-weight: bold;
+       border: 1px solid #C4CFE5;
+       margin: 2px 0px 2px 0;
+       padding: 2px 10px;
+}
+
+td.indexvalue {
+       background-color: #EBEFF6;
+       border: 1px solid #C4CFE5;
+       padding: 2px 10px;
+       margin: 2px 0px;
+}
+
+tr.memlist {
+       background-color: #EEF1F7;
+}
+
+p.formulaDsp {
+       text-align: center;
+}
+
+img.formulaDsp {
+       
+}
+
+img.formulaInl {
+       vertical-align: middle;
+}
+
+div.center {
+       text-align: center;
+        margin-top: 0px;
+        margin-bottom: 0px;
+        padding: 0px;
+}
+
+div.center img {
+       border: 0px;
+}
+
+address.footer {
+       text-align: right;
+       padding-right: 12px;
+}
+
+img.footer {
+       border: 0px;
+       vertical-align: middle;
+}
+
+/* @group Code Colorization */
+
+span.keyword {
+       color: #008000
+}
+
+span.keywordtype {
+       color: #604020
+}
+
+span.keywordflow {
+       color: #e08000
+}
+
+span.comment {
+       color: #800000
+}
+
+span.preprocessor {
+       color: #806020
+}
+
+span.stringliteral {
+       color: #002080
+}
+
+span.charliteral {
+       color: #008080
+}
+
+span.vhdldigit { 
+       color: #ff00ff 
+}
+
+span.vhdlchar { 
+       color: #000000 
+}
+
+span.vhdlkeyword { 
+       color: #700070 
+}
+
+span.vhdllogic { 
+       color: #ff0000 
+}
+
+/* @end */
+
+/*
+.search {
+       color: #003399;
+       font-weight: bold;
+}
+
+form.search {
+       margin-bottom: 0px;
+       margin-top: 0px;
+}
+
+input.search {
+       font-size: 75%;
+       color: #000080;
+       font-weight: normal;
+       background-color: #e8eef2;
+}
+*/
+
+td.tiny {
+       font-size: 75%;
+}
+
+.dirtab {
+       padding: 4px;
+       border-collapse: collapse;
+       border: 1px solid #A3B4D7;
+}
+
+th.dirtab {
+       background: #EBEFF6;
+       font-weight: bold;
+}
+
+hr {
+       height: 0px;
+       border: none;
+       border-top: 1px solid #4A6AAA;
+}
+
+hr.footer {
+       height: 1px;
+}
+
+/* @group Member Descriptions */
+
+table.memberdecls {
+       border-spacing: 0px;
+       padding: 0px;
+}
+
+.mdescLeft, .mdescRight,
+.memItemLeft, .memItemRight,
+.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
+       background-color: #F9FAFC;
+       border: none;
+       margin: 4px;
+       padding: 1px 0 0 8px;
+}
+
+.mdescLeft, .mdescRight {
+       padding: 0px 8px 4px 8px;
+       color: #555;
+}
+
+.memItemLeft, .memItemRight, .memTemplParams {
+       border-top: 1px solid #C4CFE5;
+}
+
+.memItemLeft, .memTemplItemLeft {
+        white-space: nowrap;
+}
+
+.memTemplParams {
+       color: #4665A2;
+        white-space: nowrap;
+}
+
+/* @end */
+
+/* @group Member Details */
+
+/* Styles for detailed member documentation */
+
+.memtemplate {
+       font-size: 80%;
+       color: #4665A2;
+       font-weight: normal;
+       margin-left: 3px;
+}
+
+.memnav {
+       background-color: #EBEFF6;
+       border: 1px solid #A3B4D7;
+       text-align: center;
+       margin: 2px;
+       margin-right: 15px;
+       padding: 2px;
+}
+
+.memitem {
+       padding: 0;
+       margin-bottom: 10px;
+}
+
+.memname {
+        white-space: nowrap;
+        font-weight: bold;
+        margin-left: 6px;
+}
+
+.memproto {
+        border-top: 1px solid #A8B8D9;
+        border-left: 1px solid #A8B8D9;
+        border-right: 1px solid #A8B8D9;
+        padding: 6px 0px 6px 0px;
+        color: #253555;
+        font-weight: bold;
+        text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+        /* firefox specific markup */
+        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+        -moz-border-radius-topright: 8px;
+        -moz-border-radius-topleft: 8px;
+        /* webkit specific markup */
+        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+        -webkit-border-top-right-radius: 8px;
+        -webkit-border-top-left-radius: 8px;
+        background-image:url('nav_f.png');
+        background-repeat:repeat-x;
+        background-color: #E2E8F2;
+
+}
+
+.memdoc {
+        border-bottom: 1px solid #A8B8D9;      
+        border-left: 1px solid #A8B8D9;      
+        border-right: 1px solid #A8B8D9; 
+        padding: 2px 5px;
+        background-color: #FBFCFD;
+        border-top-width: 0;
+        /* firefox specific markup */
+        -moz-border-radius-bottomleft: 8px;
+        -moz-border-radius-bottomright: 8px;
+        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+        background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 60%, #F8 95%, #F0);
+        /* webkit specific markup */
+        -webkit-border-bottom-left-radius: 8px;
+        -webkit-border-bottom-right-radius: 8px;
+        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+        background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.6,#FFFFFF), color-stop(0.60,#FF), color-stop(0.95,#F8), to(#F0));
+}
+
+.paramkey {
+       text-align: right;
+}
+
+.paramtype {
+       white-space: nowrap;
+}
+
+.paramname {
+       color: #602020;
+       white-space: nowrap;
+}
+.paramname em {
+       font-style: normal;
+}
+
+/* @end */
+
+/* @group Directory (tree) */
+
+/* for the tree view */
+
+.ftvtree {
+       font-family: sans-serif;
+       margin: 0px;
+}
+
+/* these are for tree view when used as main index */
+
+.directory {
+       font-size: 9pt;
+       font-weight: bold;
+       margin: 5px;
+}
+
+.directory h3 {
+       margin: 0px;
+       margin-top: 1em;
+       font-size: 11pt;
+}
+
+/*
+The following two styles can be used to replace the root node title
+with an image of your choice.  Simply uncomment the next two styles,
+specify the name of your image and be sure to set 'height' to the
+proper pixel height of your image.
+*/
+
+/*
+.directory h3.swap {
+       height: 61px;
+       background-repeat: no-repeat;
+       background-image: url("yourimage.gif");
+}
+.directory h3.swap span {
+       display: none;
+}
+*/
+
+.directory > h3 {
+       margin-top: 0;
+}
+
+.directory p {
+       margin: 0px;
+       white-space: nowrap;
+}
+
+.directory div {
+       display: none;
+       margin: 0px;
+}
+
+.directory img {
+       vertical-align: -30%;
+}
+
+/* these are for tree view when not used as main index */
+
+.directory-alt {
+       font-size: 100%;
+       font-weight: bold;
+}
+
+.directory-alt h3 {
+       margin: 0px;
+       margin-top: 1em;
+       font-size: 11pt;
+}
+
+.directory-alt > h3 {
+       margin-top: 0;
+}
+
+.directory-alt p {
+       margin: 0px;
+       white-space: nowrap;
+}
+
+.directory-alt div {
+       display: none;
+       margin: 0px;
+}
+
+.directory-alt img {
+       vertical-align: -30%;
+}
+
+/* @end */
+
+div.dynheader {
+        margin-top: 8px;
+}
+
+address {
+       font-style: normal;
+       color: #2A3D61;
+}
+
+table.doxtable {
+       border-collapse:collapse;
+}
+
+table.doxtable td, table.doxtable th {
+       border: 1px solid #2D4068;
+       padding: 3px 7px 2px;
+}
+
+table.doxtable th {
+       background-color: #374F7F;
+       color: #FFFFFF;
+       font-size: 110%;
+       padding-bottom: 4px;
+       padding-top: 5px;
+       text-align:left;
+}
+
+.tabsearch {
+       top: 0px;
+       left: 10px;
+       height: 36px;
+       background-image: url('tab_b.png');
+       z-index: 101;
+       overflow: hidden;
+       font-size: 13px;
+}
+
+.navpath ul
+{
+       font-size: 11px;
+       background-image:url('tab_b.png');
+       background-repeat:repeat-x;
+       height:30px;
+       line-height:30px;
+       color:#8AA0CC;
+       border:solid 1px #C2CDE4;
+       overflow:hidden;
+       margin:0px;
+       padding:0px;
+}
+
+.navpath li
+{
+       list-style-type:none;
+       float:left;
+       padding-left:10px;
+       padding-right: 15px;
+       background-image:url('bc_s.png');
+       background-repeat:no-repeat;
+       background-position:right;
+       color:#364D7C;
+}
+
+.navpath a
+{
+       height:32px;
+       display:block;
+       text-decoration: none;
+       outline: none;
+}
+
+.navpath a:hover
+{
+       color:#6884BD;
+}
+
+div.summary
+{
+       float: right;
+       font-size: 8pt;
+       padding-right: 5px;
+       width: 50%;
+       text-align: right;
+}       
+
+div.summary a
+{
+       white-space: nowrap;
+}
+
+div.header
+{
+        background-image:url('nav_h.png');
+        background-repeat:repeat-x;
+       background-color: #F9FAFC;
+       margin:  0px;
+       border-bottom: 1px solid #C4CFE5;
+}
+
+div.headertitle
+{
+       padding: 5px 5px 5px 10px;
+}
+
diff --git a/wearable/include/pg-doxy/tool/bin/doxygen b/wearable/include/pg-doxy/tool/bin/doxygen
new file mode 100755 (executable)
index 0000000..3662da8
Binary files /dev/null and b/wearable/include/pg-doxy/tool/bin/doxygen differ
diff --git a/wearable/include/pg-doxy/tool/bin/doxytag b/wearable/include/pg-doxy/tool/bin/doxytag
new file mode 100755 (executable)
index 0000000..adb0c90
Binary files /dev/null and b/wearable/include/pg-doxy/tool/bin/doxytag differ
diff --git a/wearable/include/pg-doxy/tool/man/man1/doxygen.1 b/wearable/include/pg-doxy/tool/man/man1/doxygen.1
new file mode 100644 (file)
index 0000000..a3d8c9a
--- /dev/null
@@ -0,0 +1,46 @@
+.TH DOXYGEN "1" "July 2010" "doxygen 1.7.0" "User Commands"
+.SH NAME
+doxygen \- documentation system for various programming languages
+.SH DESCRIPTION
+Doxygen is a documentation system for C++, C, Java, Objective-C, IDL
+(Corba and Microsoft flavors) and to some extent PHP, C#, and D.
+.PP
+You can use doxygen in a number of ways:
+.TP
+1) Use doxygen to generate a template configuration file:
+.IP
+doxygen [-s] \fB\-g\fR [configName]
+.IP
+If - is used for configName doxygen will write to standard output.
+.TP 
+2) Use doxygen to update an old configuration file:
+.IP
+doxygen [-s] \fB\-u\fR [configName]
+.TP
+3) Use doxygen to generate documentation using an existing configuration file:
+.IP
+doxygen [configName]
+.IP
+If - is used for configName doxygen will read from standard input.
+.TP
+4) Use doxygen to generate a template style sheet file for RTF, HTML or Latex.
+.TP
+RTF:
+doxygen \fB\-w\fR rtf styleSheetFile
+.TP
+HTML:
+doxygen \fB\-w\fR html headerFile footerFile styleSheetFile [configFile]
+.TP
+LaTeX: doxygen \fB\-w\fR latex headerFile styleSheetFile [configFile]
+.TP
+5) Use doxygen to generate an rtf extensions file
+.TP
+RTF:
+doxygen \fB\-e\fR rtf extensionsFile
+.PP
+If \fB\-s\fR is specified the comments in the config file will be omitted.
+If configName is omitted `Doxyfile' will be used as a default.
+.SH AUTHOR
+Doxygen version 1.7.0, Copyright Dimitri van Heesch 1997-2007
+.SH SEE ALSO
+doxytag(1), doxywizard(1).
diff --git a/wearable/include/pg-doxy/tool/man/man1/doxytag.1 b/wearable/include/pg-doxy/tool/man/man1/doxytag.1
new file mode 100644 (file)
index 0000000..f496899
--- /dev/null
@@ -0,0 +1,21 @@
+.TH DOXYTAG "1" "July 2010" "doxytag 1.7.0" "User Commands"
+.SH NAME
+doxytag \- generates a tag file and/or a search index for a set of HTML files
+.SH SYNOPSIS
+.B doxytag
+[\fI-t tag_file\fR] [\fI-s index_file\fR] [ \fIhtml_file \fR[\fIhtml_file\fR...] ]
+.SH DESCRIPTION
+Generates a tag file and/or a search index for a set of HTML files.  Use
+doxysearch as a CGI program to search the tag file generated by doxytag.
+.SH OPTIONS
+.TP
+\fB\-t\fR <tag_file>
+Generate tag file <tag_file>.
+.TP
+\fB\-s\fR <index_file>
+Generate search index <index_file>.
+.PP
+If no HTML files are given all files in the current dir that
+have a .html extension are parsed.
+.SH SEE ALSO
+doxygen(1), doxywizard(1).
diff --git a/wearable/include/simple_util.h b/wearable/include/simple_util.h
new file mode 100755 (executable)
index 0000000..a3a346d
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * syspopup
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@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.
+ *
+ */
+
+
+#ifndef __SIMPLE_UTIL__
+#define __SIMPLE_UTIL__
+
+#include <unistd.h>
+#include <ctype.h>
+#include <dlog.h>
+
+#undef LOG_TAG
+#define LOG_TAG "SYSPOPUP"
+
+#define MAX_LOCAL_BUFSZ 128
+
+#define _E(fmt, arg...) LOGE(fmt,##arg)
+#define _D(fmt, arg...) LOGD(fmt,##arg)
+#define _I(fmt, arg...) LOGI(fmt,##arg)
+
+#define SYSPOPUP_DBUS_PATH "/syspopup/dbus_handler"
+#define SYSPOPUP_DBUS_SIGNAL_INTERFACE "com.samsung.syspopup.signal"
+#define SYSPOPUP_DBUS_SP_TERM_SIGNAL   "syspopup_term"
+
+#endif
+
diff --git a/wearable/include/syspopup.h b/wearable/include/syspopup.h
new file mode 100755 (executable)
index 0000000..79f8106
--- /dev/null
@@ -0,0 +1,140 @@
+/*
+ * syspopup
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@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.
+ *
+ */
+
+
+#ifndef __SYSPOPUP_H__
+#define __SYSPOPUP_H__
+
+#include <utilX.h>
+#include <bundle.h>
+#include <Elementary.h>
+
+/**
+ * @mainpage
+ * 
+ * This is System Popup Library 
+ * This library help to create system popup application & to launch/destroy system popup application
+ *
+ */
+
+/**
+ * @addtogroup APPLICATION_FRAMEWORK
+ * @{
+ *
+ * @defgroup syspopup System Popup Library 
+ * @{
+ */
+
+/**
+ * @file        syspopup.h 
+ * @brief       System Popup UI Library
+ *
+ * Patched by   Knhoon Baik <knhoon.baik@samsung.com>
+ * Patched by  Noha Park <noha.park@samsung.com> 
+ */
+
+/**
+ * @defgroup syspopup_ui       Helper Library to create system popup application
+ * @ingroup syspopup 
+ * @brief                      Helper Library to create system popup application
+ */
+
+/**
+ * @addtogroup syspopup_ui
+ * @{
+ */
+
+/** 
+ *@brief action handler supplied by user 
+ *     def_term_fn is called when event to destroy all system popup occur
+ *     def_timeout_fn is called when the system popup's timeout is expired
+ */
+struct _syspopup_handler {
+       int (*def_term_fn) (bundle *, void *);
+       /**< handler supplied by user to process termination request */
+       int (*def_timeout_fn) (bundle *, void *);
+       /**< handler supplied by user to process timeout */
+};
+
+typedef struct _syspopup_handler syspopup_handler;
+
+/**
+ * @brief       This API make elm system popup window
+ *
+ *              This API make elm system popup window. 
+ *             and then, make given elm system popup window as system popup type
+ *             and set system popup properties based on system popup information DB.\n
+ *             system popup properties to be set : timeout, default action type, ....
+ *
+ * @param[in]   b              bundle received by app_reset handler (included system popup name)
+ * @param[in]   handler         user-supplied handler for handling system popup internal event.
+ * @param[in]  parent          parent window created with elm_win_add.
+ * @param[in]   user_data      user-supplied data
+ * @return      0 if success, -1 if fail
+ * @retval      0              - success
+ * @retval      -1             - generic error
+ */
+int syspopup_create(bundle *b, syspopup_handler *handler,
+                   Evas_Object *parent, void *user_data);
+
+/**
+ * @brief       This API reset created the elm system popup's properties
+ *
+ *             This API reset created the elm system popup's properties based on system popup information DB after extracting popup name from given bundle
+ *             system popup properties to be reset : timeout, default action type, ....
+ *
+ * @param[in]   b              bundle received by app_reset handler (included system popup name)
+ * @return      0 if success, negative value(<0) if fail
+ * @retval      0              - success
+ * @retval      -1             - generic error
+ */
+int syspopup_reset(bundle *b);
+
+/**
+ * @brief       This API ask that the system popup is created and is running 
+ *
+ *             This API ask that the the system popup with popup name is created and is running after extracting popup name from given bundle. 
+ *
+ * @param[in]   b              bundle received by app_reset handler (included system popup name)
+ * @return     true / false      
+ * @retval     1       app already has the system popup
+ * @retval      0      app has not the system popup
+ */
+int syspopup_has_popup(bundle *b);
+
+/**
+ * @brief       This API reset timeout value of system popup.
+ *
+ *             This API reset timeout value of system popup.
+ *
+ * @param[in]   b      bundle received by app_reset handler (included system popup name)
+ * @param[in]   time   timeout time (sec)
+ * @return     0       if success, negative value(<0) if fail
+ * @retval     0       success
+ * @retval     -1      generic error
+ */
+int syspopup_reset_timeout(bundle *b, unsigned int time);
+
+/** @} */
+
+#endif
+
diff --git a/wearable/include/syspopup_api.h b/wearable/include/syspopup_api.h
new file mode 100755 (executable)
index 0000000..c107d76
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+ * syspopup
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@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.
+ *
+ */
+
+
+#ifndef API
+#define API __attribute__ ((visibility("default")))
+#endif
+
diff --git a/wearable/include/syspopup_caller.h b/wearable/include/syspopup_caller.h
new file mode 100755 (executable)
index 0000000..e00d5d2
--- /dev/null
@@ -0,0 +1,101 @@
+/*
+ * syspopup
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@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.
+ *
+ */
+
+
+#ifndef __SYSPOPUP_CALLER_H__
+#define __SYSPOPUP_CALLER_H__
+
+#include <bundle.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @file        syspopup_caller.h 
+ * @brief       Library to launch/destroy System Popup Application
+ *
+ * Patched by   Knhoon Baik <knhoon.baik@samsung.com>
+ * Patched by   Noha Park <noha.park@samsung.com> 
+ */
+
+/**
+ * @defgroup syspopup_caller    Helper Library to launch/destroy system popup application
+ * @ingroup syspopup 
+ * @brief                       Helper Library to launch/destroy system popup application
+ */
+
+/**
+ * @addtogroup syspopup_caller
+ * @{
+ */
+
+/**
+ * @brief       This API launch the system popup application with given popup name.
+ *
+ *              This API launch the system popup application.
+ *              This API find system popup application package name with given popup name from system popup infomation DB.\n
+ *              And then, launch found application package
+ *
+ * @param[in]   popup_name      system popup application name to launch (not package name)
+ * @param[in]   b               extra bundle(arguement) to toss the popup application 
+ * @return      0 if success, negative value(<0) if fail
+ * @retval      0               - success
+ * @retval      -1              - generic error
+ *
+ * @sample code
+ * @code
+ *
+ * ...
+ *     bundle *b = NULL;
+ *
+ *     b = bundle_create();
+ *     bundle_add(b, "_SYSPOPUP_TITLE_", "System Popup Title");
+ *     bundle_add(b, "_SYSPOPUP_CONTENT_", "System Popup Content");
+ *
+ *     ret = syspopup_launch("syspopup-app", b);
+ *
+ *     bundle_free(b);
+ * ...
+ *
+ * @endcode
+ */
+int syspopup_launch(char *popup_name, bundle *b);
+
+/**
+ * @brief       This API generate destroy event to all system popup application.
+ *             This API can call with proper permission (root or inhouse)
+ *
+ * @return      0 if success, negative value(<0) if fail
+ * @retval      0               - success
+ * @retval      -1              - generic error
+ */
+int syspopup_destroy_all();
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
diff --git a/wearable/include/syspopup_core.h b/wearable/include/syspopup_core.h
new file mode 100755 (executable)
index 0000000..463a60a
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * syspopup
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@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.
+ *
+ */
+
+
+#ifndef __SYSPOPUP_CORE_H__
+#define __SYSPOPUP_CORE_H__
+
+#include <glib.h>
+#include <bundle.h>
+#include "syspopup_db.h"
+
+#define SYSPOPUP_DEFAULT_TIMEOUT 20    /* sec */
+#define SYSPOPUP_TERM_NOTI_PATH  "/usr/share/popup_noti_term"
+
+struct _syspopup {
+       int id;
+       char *name;
+       int (*def_term_fn) (bundle *, void *);
+       int (*def_timeout_fn) (bundle *, void *);
+       guint timeout_id;
+       def_term_action_t term_act;
+       def_endkey_action_t endkey_act;
+       void *user_data;
+       void *internal_data;
+       void *win;
+       int (*rotate_cb) (void *, void *, void *);
+       bundle *dupped_bundle;
+       struct _syspopup *next;
+};
+
+typedef struct _syspopup syspopup;
+
+syspopup *_syspopup_get_head();
+int _syspopup_add_new(syspopup *pinfo);
+syspopup *_syspopup_find(const char *name);
+syspopup *_syspopup_find_by_id(int id);
+void _syspopup_del(int id);
+
+int _syspopup_init(void (*term_handler) (void *),
+                  gboolean(*timeout_handler) (void *));
+int _syspopup_reset_timeout(syspopup *sp, syspopup_info_t *info);
+int _syspopup_set_term_type(syspopup *sp, syspopup_info_t *info);
+int _syspopup_set_endkey_type(syspopup *sp, syspopup_info_t *info);
+
+const char *_syspopup_get_name_from_bundle(bundle *b);
+int _syspopup_set_name_to_bundle(bundle *b, char *popup_name);
+
+#endif
+
diff --git a/wearable/include/syspopup_db.h b/wearable/include/syspopup_db.h
new file mode 100755 (executable)
index 0000000..f57e0dd
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * syspopup
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@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.
+ *
+ */
+
+
+#ifndef __SYSPOPUP_DB_H__
+#define __SYSPOPUP_DB_H__
+
+enum _def_term_action_t {
+       SYSPOPUP_TERM,
+       SYSPOPUP_HIDE,
+       SYSPOPUP_IGNORE
+};
+
+typedef enum _def_term_action_t def_term_action_t;
+
+enum _def_endkey_action_t {
+       SYSPOPUP_KEYEND_TERM,
+       SYSPOPUP_KEYEND_HIDE,
+       SYSPOPUP_KEYEND_IGNORE
+};
+
+typedef enum _def_endkey_action_t def_endkey_action_t;
+
+struct _syspopup_info_t {
+       char *name;             /* system popup name */
+       int prio;               /* sys popup priority :
+                                        cf - Utilx_Notification_Level */
+       int focus;              /* sys popup focus : ecore_x_icccm_hints_set */
+       unsigned int timeout;   /* default system popup timeout */
+       def_term_action_t term_act;     /* default terminate act */
+       def_endkey_action_t endkey_act; /* default terminate act */
+       char *pkgname;          /* package name to be launched */
+};
+
+typedef struct _syspopup_info_t syspopup_info_t;
+
+int _syspopup_info_add(syspopup_info_t *pinfo);
+syspopup_info_t *_syspopup_info_get(const char *popup_name);
+void _syspopup_info_free(syspopup_info_t *pinfo);
+
+#endif
+
diff --git a/wearable/pg-doxy/doxygen.conf b/wearable/pg-doxy/doxygen.conf
new file mode 100755 (executable)
index 0000000..a7cd424
--- /dev/null
@@ -0,0 +1,850 @@
+# Doxyfile 1.5.2
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+#       TAG = value [value, ...]
+# For lists items can also be appended using:
+#       TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+DOXYFILE_ENCODING      = UTF-8
+PROJECT_NAME           =  SLP-Developer Library
+PROJECT_NUMBER         = 
+OUTPUT_DIRECTORY       = ./doxygen_output
+CREATE_SUBDIRS         = NO
+OUTPUT_LANGUAGE        = English
+BRIEF_MEMBER_DESC      = YES
+REPEAT_BRIEF           = YES
+ABBREVIATE_BRIEF       = NO
+ALWAYS_DETAILED_SEC    = YES
+INLINE_INHERITED_MEMB  = NO
+FULL_PATH_NAMES        = NO
+STRIP_FROM_PATH        = 
+STRIP_FROM_INC_PATH    = 
+SHORT_NAMES            = YES
+JAVADOC_AUTOBRIEF      = NO
+MULTILINE_CPP_IS_BRIEF = NO
+DETAILS_AT_TOP         = YES
+INHERIT_DOCS           = YES
+SEPARATE_MEMBER_PAGES  = YES
+TAB_SIZE               = 8
+ALIASES                = 
+OPTIMIZE_OUTPUT_FOR_C  = NO
+OPTIMIZE_OUTPUT_JAVA   = NO
+BUILTIN_STL_SUPPORT    = NO
+CPP_CLI_SUPPORT        = NO
+DISTRIBUTE_GROUP_DOC   = NO
+SUBGROUPING            = YES
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+EXTRACT_ALL            = YES
+EXTRACT_PRIVATE        = YES
+EXTRACT_STATIC         = YES
+EXTRACT_LOCAL_CLASSES  = NO
+EXTRACT_LOCAL_METHODS  = YES
+HIDE_UNDOC_MEMBERS     = YES
+HIDE_UNDOC_CLASSES     = YES
+HIDE_FRIEND_COMPOUNDS  = YES
+HIDE_IN_BODY_DOCS      = NO
+INTERNAL_DOCS          = NO
+CASE_SENSE_NAMES       = YES
+HIDE_SCOPE_NAMES       = NO
+SHOW_INCLUDE_FILES     = YES
+INLINE_INFO            = YES
+SORT_MEMBER_DOCS       = YES
+SORT_BRIEF_DOCS        = YES
+SORT_BY_SCOPE_NAME     = YES
+SORT_GROUP_NAMES     = YES
+GENERATE_TODOLIST      = NO
+USE_INLINE_TREES      = NO
+SHOW_NAMESPACES                = NO
+HTML DYNAMIC SECTIONS          = YES
+GENERATE_TESTLIST      = NO
+GENERATE_BUGLIST       = NO
+GENERATE_DEPRECATEDLIST= NO
+ENABLED_SECTIONS       = 
+MAX_INITIALIZER_LINES  = 30
+SHOW_USED_FILES        = YES
+SHOW_DIRECTORIES       = NO
+FILE_VERSION_FILTER    = 
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated 
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET                  = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are 
+# generated by doxygen. Possible values are YES and NO. If left blank 
+# NO is used.
+
+WARNINGS               = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED   = YES
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
+# potential errors in the documentation, such as not documenting some 
+# parameters in a documented function, or documenting parameters that 
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR      = YES
+
+# This WARN_NO_PARAMDOC option can be abled to get warnings for 
+# functions that are documented, but have no documentation for their parameters 
+# or return value. If set to NO (the default) doxygen will only warn about 
+# wrong or incomplete parameter documentation, but not about the absence of 
+# documentation.
+
+WARN_NO_PARAMDOC       = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that 
+# doxygen can produce. The string should contain the $file, $line, and $text 
+# tags, which will be replaced by the file and line number from which the 
+# warning originated and the warning text. Optionally the format may contain 
+# $version, which will be replaced by the version of the file (if it could 
+# be obtained via FILE_VERSION_FILTER)
+
+WARN_FORMAT            = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning 
+# and error messages should be written. If left blank the output is written 
+# to stderr.
+
+WARN_LOGFILE           = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain 
+# documented source files. You may enter file names like "myfile.cpp" or 
+# directories like "/usr/src/myproject". Separate the files or directories 
+# with spaces.
+
+INPUT                  = .. 
+
+# This tag can be used to specify the character encoding of the source files that 
+# doxygen parses. Internally doxygen uses the UTF-8 encoding, which is also the default 
+# input encoding. Doxygen uses libiconv (or the iconv built into libc) for the transcoding. 
+# See http://www.gnu.org/software/libiconv for the list of possible encodings.
+
+INPUT_ENCODING         = UTF-8
+FILE_PATTERNS          = *.h \
+                        *.doxy
+RECURSIVE              = YES
+EXCLUDE                =  
+EXCLUDE_SYMLINKS       = NO
+EXCLUDE_PATTERNS       = */test/* \
+                       */debian/* \
+                       */lost+found/* \
+                       */i386/* \
+                       */arm/* \
+                       */simulator/*  \
+                       *test* \
+                       */voda3rd/* 
+EXCLUDE_SYMBOLS        = 
+EXAMPLE_PATH           = 
+EXAMPLE_PATTERNS       = 
+EXAMPLE_RECURSIVE      = NO
+IMAGE_PATH             = ../image 
+INPUT_FILTER           = 
+FILTER_PATTERNS        = 
+FILTER_SOURCE_FILES    = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
+# be generated. Documented entities will be cross-referenced with these sources. 
+# Note: To get rid of all source code in the generated output, make sure also 
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER         = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body 
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES         = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
+# doxygen to hide any special comment blocks from generated source code 
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS    = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES (the default) 
+# then for each documented function all documented 
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = YES
+
+# If the REFERENCES_RELATION tag is set to YES (the default) 
+# then for each documented function all documented entities 
+# called/used by that function will be listed.
+
+REFERENCES_RELATION    = YES
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
+# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
+# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
+# link to the source code.  Otherwise they will link to the documentstion.
+
+REFERENCES_LINK_SOURCE = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code 
+# will point to the HTML generated by the htags(1) tool instead of doxygen 
+# built-in source browser. The htags tool is part of GNU's global source 
+# tagging system (see http://www.gnu.org/software/global/global.html). You 
+# will need version 4.8.6 or higher.
+
+USE_HTAGS              = NO
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
+# will generate a verbatim copy of the header file for each class for 
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS       = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
+# of all compounds will be generated. Enable this if the project 
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX     = YES
+COLS_IN_ALPHA_INDEX    = 10
+IGNORE_PREFIX          = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
+# generate HTML output.
+
+GENERATE_HTML          = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT            = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION    = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard header.
+
+HTML_HEADER            = 
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard footer.
+
+HTML_FOOTER            =
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
+# style sheet that is used by each HTML page. It can be used to 
+# fine-tune the look of the HTML output. If the tag is left blank doxygen 
+# will generate a default style sheet. Note that doxygen will try to copy 
+# the style sheet file to the HTML output directory, so don't put your own 
+# stylesheet in the HTML output directory as well, or it will be erased!
+
+HTML_STYLESHEET        =./slp_doxy.css
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
+# files or namespaces will be aligned in HTML using tables. If set to 
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS     = YES
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files 
+# will be generated that can be used as input for tools like the 
+# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) 
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP      = YES
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 
+# be used to specify the file name of the resulting .chm file. You 
+# can add a path in front of the file if the result should not be 
+# written to the html output directory.
+
+CHM_FILE               = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 
+# be used to specify the location (absolute path including file name) of 
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION           = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 
+# controls if a separate .chi index file is generated (YES) or that 
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI           = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 
+# controls whether a binary table of contents is generated (YES) or a 
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC             = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members 
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND             = NO
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at 
+# top of each HTML page. The value NO (the default) enables the index and 
+# the value YES disables it.
+
+DISABLE_INDEX          = NO
+
+# This tag can be used to set the number of enum values (range [1..20]) 
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE   = 4
+
+# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
+# generated containing a tree-like index structure (just like the one that 
+# is generated for HTML Help). For this to work a browser that supports 
+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 
+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 
+# probably better off using the HTML help feature.
+
+GENERATE_TREEVIEW      = YES
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 
+# used to set the initial width (in pixels) of the frame in which the tree 
+# is shown.
+
+TREEVIEW_WIDTH         = 190
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
+# generate Latex output.
+
+GENERATE_LATEX         = NO
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT           = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
+# invoked. If left blank `latex' will be used as the default command name.
+
+LATEX_CMD_NAME         = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 
+# generate index for LaTeX. If left blank `makeindex' will be used as the 
+# default command name.
+
+MAKEINDEX_CMD_NAME     = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
+# LaTeX documents. This may be useful for small projects and may help to 
+# save some trees in general.
+
+COMPACT_LATEX          = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used 
+# by the printer. Possible values are: a4, a4wide, letter, legal and 
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE             = a4wide
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES         = 
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for 
+# the generated latex document. The header should contain everything until 
+# the first chapter. If it is left blank doxygen will generate a 
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER           = 
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will 
+# contain links (just like the HTML output) instead of page references 
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS         = NO
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 
+# plain latex in the generated Makefile. Set this option to YES to get a 
+# higher quality PDF documentation.
+
+USE_PDFLATEX           = NO
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
+# command to the generated LaTeX files. This will instruct LaTeX to keep 
+# running if errors occur, instead of asking the user for help. 
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE        = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not 
+# include the index chapters (such as File Index, Compound Index, etc.) 
+# in the output.
+
+LATEX_HIDE_INDICES     = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
+# The RTF output is optimized for Word 97 and may not look very pretty with 
+# other RTF readers or editors.
+
+GENERATE_RTF           = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT             = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact 
+# RTF documents. This may be useful for small projects and may help to 
+# save some trees in general.
+
+COMPACT_RTF            = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 
+# will contain hyperlink fields. The RTF file will 
+# contain links (just like the HTML output) instead of page references. 
+# This makes the output suitable for online browsing using WORD or other 
+# programs which support those fields. 
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS         = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's 
+# config file, i.e. a series of assignments. You only have to provide 
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE    = 
+
+# Set optional variables used in the generation of an rtf document. 
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE    = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
+# generate man pages
+
+GENERATE_MAN           = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT             = man
+
+# The MAN_EXTENSION tag determines the extension that is added to 
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION          = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output, 
+# then it will generate one additional man file for each entity 
+# documented in the real man page(s). These additional files 
+# only source the real man page, but without them the man command 
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS              = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will 
+# generate an XML file that captures the structure of 
+# the code including all documentation.
+
+GENERATE_XML           = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT             = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_SCHEMA             = 
+
+# The XML_DTD tag can be used to specify an XML DTD, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_DTD                = 
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will 
+# dump the program listings (including syntax highlighting 
+# and cross-referencing information) to the XML output. Note that 
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING     = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 
+# generate an AutoGen Definitions (see autogen.sf.net) file 
+# that captures the structure of the code including all 
+# documentation. Note that this feature is still experimental 
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF   = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will 
+# generate a Perl module file that captures the structure of 
+# the code including all documentation. Note that this 
+# feature is still experimental and incomplete at the 
+# moment.
+
+GENERATE_PERLMOD       = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate 
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able 
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX          = YES
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 
+# nicely formatted so it can be parsed by a human reader.  This is useful 
+# if you want to understand what is going on.  On the other hand, if this 
+# tag is set to NO the size of the Perl module output will be much smaller 
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY         = YES
+
+# The names of the make variables in the generated doxyrules.make file 
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 
+# This is useful so different doxyrules.make files included by the same 
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX = 
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor   
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
+# evaluate all C-preprocessor directives found in the sources and include 
+# files.
+
+ENABLE_PREPROCESSING   = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
+# names in the source code. If set to NO (the default) only conditional 
+# compilation will be performed. Macro expansion can be done in a controlled 
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION        = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
+# then the macro expansion is limited to the macros specified with the 
+# PREDEFINED and EXPAND_AS_DEFINED tags.
+
+EXPAND_ONLY_PREDEF     = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES        = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that 
+# contain include files that are not input files but should be processed by 
+# the preprocessor.
+
+INCLUDE_PATH           = 
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
+# patterns (like *.h and *.hpp) to filter out the header-files in the 
+# directories. If left blank, the patterns specified with FILE_PATTERNS will 
+# be used.
+
+INCLUDE_FILE_PATTERNS  = 
+
+# The PREDEFINED tag can be used to specify one or more macro names that 
+# are defined before the preprocessor is started (similar to the -D option of 
+# gcc). The argument of the tag is a list of macros of the form: name 
+# or name=definition (no spaces). If the definition and the = are 
+# omitted =1 is assumed. To prevent a macro definition from being 
+# undefined via #undef or recursively expanded use the := operator 
+# instead of the = operator.
+
+PREDEFINED             = 
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
+# this tag can be used to specify a list of macro names that should be expanded. 
+# The macro definition that is found in the sources will be used. 
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED      = 
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
+# doxygen's preprocessor will remove all function-like macros that are alone 
+# on a line, have an all uppercase name, and do not end with a semicolon. Such 
+# function macros are typically used for boiler-plate code, and will confuse 
+# the parser if not removed.
+
+SKIP_FUNCTION_MACROS   = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references   
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles. 
+# Optionally an initial location of the external documentation 
+# can be added for each tagfile. The format of a tag file without 
+# this location is as follows: 
+#   TAGFILES = file1 file2 ... 
+# Adding location for the tag files is done as follows: 
+#   TAGFILES = file1=loc1 "file2 = loc2" ... 
+# where "loc1" and "loc2" can be relative or absolute paths or 
+# URLs. If a location is present for each tag, the installdox tool 
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen 
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES               = 
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create 
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE       = 
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed 
+# in the class index. If set to NO only the inherited external classes 
+# will be listed.
+
+ALLEXTERNALS           = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 
+# in the modules index. If set to NO, only the current project's groups will 
+# be listed.
+
+EXTERNAL_GROUPS        = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script 
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH              = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool   
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base 
+# or super classes. Setting the tag to NO turns the diagrams off. Note that 
+# this option is superseded by the HAVE_DOT option below. This is only a 
+# fallback. It is recommended to install and use dot, since it yields more 
+# powerful graphs.
+
+CLASS_DIAGRAMS         = NO
+
+# You can define message sequence charts within doxygen comments using the \msc 
+# command. Doxygen will then run the mscgen tool (see http://www.mcternan.me.uk/mscgen/) to 
+# produce the chart and insert it in the documentation. The MSCGEN_PATH tag allows you to 
+# specify the directory where the mscgen tool resides. If left empty the tool is assumed to 
+# be found in the default search path.
+
+MSCGEN_PATH            = 
+
+# If set to YES, the inheritance and collaboration graphs will hide 
+# inheritance and usage relations if the target is undocumented 
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS   = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
+# available from the path. This tool is part of Graphviz, a graph visualization 
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section 
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT               = NO
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect inheritance relations. Setting this tag to YES will force the 
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH            = NO
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect implementation dependencies (inheritance, containment, and 
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH    = NO
+
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for groups, showing the direct groups dependencies
+
+GROUP_GRAPHS           = NO
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
+# collaboration diagrams in a style similar to the OMG's Unified Modeling 
+# Language.
+
+UML_LOOK               = NO
+
+# If set to YES, the inheritance and collaboration graphs will show the 
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS     = NO
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 
+# tags are set to YES then doxygen will generate a graph for each documented 
+# file showing the direct and indirect include dependencies of the file with 
+# other documented files.
+
+INCLUDE_GRAPH          = NO
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each 
+# documented header file showing the documented files that directly or 
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH      = NO
+
+# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will 
+# generate a call dependency graph for every global function or class method. 
+# Note that enabling this option will significantly increase the time of a run. 
+# So in most cases it will be better to enable call graphs for selected 
+# functions only using the \callgraph command.
+
+CALL_GRAPH             = NO
+
+# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then doxygen will 
+# generate a caller dependency graph for every global function or class method. 
+# Note that enabling this option will significantly increase the time of a run. 
+# So in most cases it will be better to enable caller graphs for selected 
+# functions only using the \callergraph command.
+
+CALLER_GRAPH           = NO
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY    = NO
+
+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES 
+# then doxygen will show the dependencies a directory has on other directories 
+# in a graphical way. The dependency relations are determined by the #include
+# relations between the files in the directories.
+
+DIRECTORY_GRAPH        = NO
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT       = jpg
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be 
+# found. If left blank, it is assumed the dot tool can be found in the path.
+
+DOT_PATH               = 
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that 
+# contain dot files that are included in the documentation (see the 
+# \dotfile command).
+
+DOTFILE_DIRS           = 
+
+# The MAX_DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of 
+# nodes that will be shown in the graph. If the number of nodes in a graph 
+# becomes larger than this value, doxygen will truncate the graph, which is 
+# visualized by representing a node as a red box. Note that doxygen will always 
+# show the root nodes and its direct children regardless of this setting.
+
+DOT_GRAPH_MAX_NODES    = 50
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent 
+# background. This is disabled by default, which results in a white background. 
+# Warning: Depending on the platform used, enabling this option may lead to 
+# badly anti-aliased labels on the edges of a graph (i.e. they become hard to 
+# read).
+
+DOT_TRANSPARENT        = NO
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output 
+# files in one run (i.e. multiple -o and -T options on the command line). This 
+# makes dot run faster, but since only newer versions of dot (>1.8.10) 
+# support this, this feature is disabled by default.
+
+DOT_MULTI_TARGETS      = NO
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 
+# generate a legend page explaining the meaning of the various boxes and 
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND        = NO
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 
+# remove the intermediate dot files that are used to generate 
+# the various graphs.
+
+DOT_CLEANUP            = NO
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine   
+#---------------------------------------------------------------------------
+
+# The SEARCHENGINE tag specifies whether or not a search engine should be 
+# used. If set to NO the values of all tags below this one will be ignored.
+
+SEARCHENGINE           = YES
diff --git a/wearable/pg-doxy/pg-doxy.sh b/wearable/pg-doxy/pg-doxy.sh
new file mode 100755 (executable)
index 0000000..f542386
--- /dev/null
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+# Create doxygen from debian package server
+# By Jungbae Lee (yi_jungbae@samsung.com)
+
+cd `dirname $0`
+CWD=`pwd`
+
+# Use doxygen 1.7.0
+export PATH=/usr/local/bin:${HOME}/mytools/bin:${PATH}
+export LD_LIBRARY_PATH=${HOME}/mytools/lib:${LD_LIBRARY_PATH}
+
+
+### Configuration
+SBOX=/scratchbox/users/$USER/home/$USER
+DOXYGEN_OUTPUT_DIR=$CWD/doxygen_output
+DOXYGEN=./tool/bin/doxygen
+DOXY_CONF=doxygen.conf
+IMAGE_DIR=../image #need to change
+#IMAGE_DIR=[fill your image path]
+
+
+
+####doxygen configuration :: output Directory
+mkdir $DOXYGEN_OUTPUT_DIR
+
+echo "Doxygen running..."
+if [ ! -e $CWD/doxygen_output ]; then
+       mkdir $CWD/doxygen_output
+fi
+# Run doxygen
+$DOXYGEN $DOXY_CONF 2>&1
+
+#image copy
+cp $CWD/$IMAGE_DIR/* $DOXYGEN_OUTPUT_DIR/html/
+
+echo "Finished!"
+exit;
+
diff --git a/wearable/pg-doxy/slp_doxy.css b/wearable/pg-doxy/slp_doxy.css
new file mode 100644 (file)
index 0000000..12c03ac
--- /dev/null
@@ -0,0 +1,699 @@
+/* The standard CSS for doxygen */
+
+body, table, div, p, dl {
+       font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif;
+       font-size: 12px;
+}
+
+/* @group Heading Levels */
+
+h1 {
+       font-size: 18pt;
+       color: #3366ED;
+}
+
+h1.pg {
+       font-size: 18pt;
+       color: #336666;
+       margin-right:-0.6pt; 
+       margin-left:0cm; 
+       padding-top:0cm; 
+       padding-right:0cm; 
+       padding-bottom:1pt; 
+       padding-left:0cm; 
+       border-bottom-width:1.5pt; 
+       border-bottom-color:#336666; 
+       border-top-style:none; 
+       border-right-style:none; 
+       border-bottom-style:solid; 
+       border-left-style:none;
+}
+
+h2 {
+       font-size: 14pt;
+       color: #336666;
+}
+h2.pg {
+       font-size: 14pt;
+       color: #336666;
+       margin-right:-0.1pt; 
+       margin-left:0cm; 
+       padding-top:0cm; 
+       padding-right:0cm; 
+       padding-bottom:1pt; 
+       padding-left:0cm; 
+       border-bottom-width:1.2pt; 
+       border-bottom-color:#336666; 
+       border-top-style:none; 
+       border-right-style:none; 
+       border-bottom-style:solid; 
+       border-left-style:none;
+}
+
+
+h3 {
+       font-size: 12pt;
+       color: #336666;
+}
+h3.pg {
+       font-size: 12pt;
+       color: #336666;
+}
+
+
+
+dt {
+       font-weight: bold;
+}
+
+div.multicol {
+       -moz-column-gap: 1em;
+       -webkit-column-gap: 1em;
+       -moz-column-count: 3;
+       -webkit-column-count: 3;
+}
+
+p.startli, p.startdd, p.starttd {
+       margin-top: 2px;
+}
+
+p.endli {
+       margin-bottom: 0px;
+}
+
+p.enddd {
+       margin-bottom: 4px;
+}
+
+p.endtd {
+       margin-bottom: 2px;
+}
+
+/* @end */
+
+caption {
+       font-weight: bold;
+}
+
+span.legend {
+        font-size: 70%;
+        text-align: center;
+}
+
+h3.version {
+        font-size: 90%;
+        text-align: center;
+}
+
+div.qindex, div.navtab{
+       background-color: #EBEFF6;
+       border: 1px solid #A3B4D7;
+       text-align: center;
+       margin: 2px;
+       padding: 2px;
+}
+
+div.qindex, div.navpath {
+       width: 100%;
+       line-height: 140%;
+}
+
+div.navtab {
+       margin-right: 15px;
+}
+
+/* @group Link Styling */
+
+a {
+       color: #3D578C;
+       font-weight: normal;
+       text-decoration: none;
+}
+
+.contents a:visited {
+       color: #4665A2;
+}
+
+a:hover {
+       text-decoration: underline;
+}
+
+a.qindex {
+       font-weight: bold;
+}
+
+a.qindexHL {
+       font-weight: bold;
+       background-color: #9CAFD4;
+       color: #ffffff;
+       border: 1px double #869DCA;
+}
+
+.contents a.qindexHL:visited {
+        color: #ffffff;
+}
+
+a.el {
+       font-weight: bold;
+}
+
+a.elRef {
+}
+
+a.code {
+       color: #4665A2;
+}
+
+a.codeRef {
+       color: #4665A2;
+}
+
+/* @end */
+
+dl.el {
+       margin-left: -1cm;
+}
+
+.fragment {
+       font-family: monospace, fixed;
+       font-size: 105%;
+}
+
+pre.fragment {
+       border: 1px solid #C4CFE5;
+       background-color: #FBFCFD;
+       padding: 4px 6px;
+       margin: 4px 8px 4px 2px;
+       overflow: auto;
+       word-wrap: break-word;
+       font-size:  9pt;
+       line-height: 125%;
+}
+
+div.ah {
+       background-color: black;
+       font-weight: bold;
+       color: #ffffff;
+       margin-bottom: 3px;
+       margin-top: 3px
+       padding: .2em;
+       border: solid thin #333;
+       border-radius: .5em;
+       -webkit-border-radius: .5em;
+       -moz-border-radius: .5em;
+       -webkit-box-shadow: 2px 2px 3px #999;
+       -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+       background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
+       background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000);
+}
+
+div.groupHeader {
+       margin-left: 16px;
+       margin-top: 12px;
+       margin-bottom: 6px;
+       font-weight: bold;
+}
+
+div.groupText {
+       margin-left: 16px;
+       font-style: italic;
+}
+
+body {
+       background: white;
+       color: black;
+        margin: 0;
+}
+
+div.contents {
+       margin-top: 10px;
+       margin-left: 10px;
+       margin-right: 10px;
+}
+
+td.indexkey {
+       background-color: #EBEFF6;
+       font-weight: bold;
+       border: 1px solid #C4CFE5;
+       margin: 2px 0px 2px 0;
+       padding: 2px 10px;
+}
+
+td.indexvalue {
+       background-color: #EBEFF6;
+       border: 1px solid #C4CFE5;
+       padding: 2px 10px;
+       margin: 2px 0px;
+}
+
+tr.memlist {
+       background-color: #EEF1F7;
+}
+
+p.formulaDsp {
+       text-align: center;
+}
+
+img.formulaDsp {
+       
+}
+
+img.formulaInl {
+       vertical-align: middle;
+}
+
+div.center {
+       text-align: center;
+        margin-top: 0px;
+        margin-bottom: 0px;
+        padding: 0px;
+}
+
+div.center img {
+       border: 0px;
+}
+
+address.footer {
+       text-align: right;
+       padding-right: 12px;
+}
+
+img.footer {
+       border: 0px;
+       vertical-align: middle;
+}
+
+/* @group Code Colorization */
+
+span.keyword {
+       color: #008000
+}
+
+span.keywordtype {
+       color: #604020
+}
+
+span.keywordflow {
+       color: #e08000
+}
+
+span.comment {
+       color: #800000
+}
+
+span.preprocessor {
+       color: #806020
+}
+
+span.stringliteral {
+       color: #002080
+}
+
+span.charliteral {
+       color: #008080
+}
+
+span.vhdldigit { 
+       color: #ff00ff 
+}
+
+span.vhdlchar { 
+       color: #000000 
+}
+
+span.vhdlkeyword { 
+       color: #700070 
+}
+
+span.vhdllogic { 
+       color: #ff0000 
+}
+
+/* @end */
+
+/*
+.search {
+       color: #003399;
+       font-weight: bold;
+}
+
+form.search {
+       margin-bottom: 0px;
+       margin-top: 0px;
+}
+
+input.search {
+       font-size: 75%;
+       color: #000080;
+       font-weight: normal;
+       background-color: #e8eef2;
+}
+*/
+
+td.tiny {
+       font-size: 75%;
+}
+
+.dirtab {
+       padding: 4px;
+       border-collapse: collapse;
+       border: 1px solid #A3B4D7;
+}
+
+th.dirtab {
+       background: #EBEFF6;
+       font-weight: bold;
+}
+
+hr {
+       height: 0px;
+       border: none;
+       border-top: 1px solid #4A6AAA;
+}
+
+hr.footer {
+       height: 1px;
+}
+
+/* @group Member Descriptions */
+
+table.memberdecls {
+       border-spacing: 0px;
+       padding: 0px;
+}
+
+.mdescLeft, .mdescRight,
+.memItemLeft, .memItemRight,
+.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
+       background-color: #F9FAFC;
+       border: none;
+       margin: 4px;
+       padding: 1px 0 0 8px;
+}
+
+.mdescLeft, .mdescRight {
+       padding: 0px 8px 4px 8px;
+       color: #555;
+}
+
+.memItemLeft, .memItemRight, .memTemplParams {
+       border-top: 1px solid #C4CFE5;
+}
+
+.memItemLeft, .memTemplItemLeft {
+        white-space: nowrap;
+}
+
+.memTemplParams {
+       color: #4665A2;
+        white-space: nowrap;
+}
+
+/* @end */
+
+/* @group Member Details */
+
+/* Styles for detailed member documentation */
+
+.memtemplate {
+       font-size: 80%;
+       color: #4665A2;
+       font-weight: normal;
+       margin-left: 3px;
+}
+
+.memnav {
+       background-color: #EBEFF6;
+       border: 1px solid #A3B4D7;
+       text-align: center;
+       margin: 2px;
+       margin-right: 15px;
+       padding: 2px;
+}
+
+.memitem {
+       padding: 0;
+       margin-bottom: 10px;
+}
+
+.memname {
+        white-space: nowrap;
+        font-weight: bold;
+        margin-left: 6px;
+}
+
+.memproto {
+        border-top: 1px solid #A8B8D9;
+        border-left: 1px solid #A8B8D9;
+        border-right: 1px solid #A8B8D9;
+        padding: 6px 0px 6px 0px;
+        color: #253555;
+        font-weight: bold;
+        text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+        /* firefox specific markup */
+        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+        -moz-border-radius-topright: 8px;
+        -moz-border-radius-topleft: 8px;
+        /* webkit specific markup */
+        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+        -webkit-border-top-right-radius: 8px;
+        -webkit-border-top-left-radius: 8px;
+        background-image:url('nav_f.png');
+        background-repeat:repeat-x;
+        background-color: #E2E8F2;
+
+}
+
+.memdoc {
+        border-bottom: 1px solid #A8B8D9;      
+        border-left: 1px solid #A8B8D9;      
+        border-right: 1px solid #A8B8D9; 
+        padding: 2px 5px;
+        background-color: #FBFCFD;
+        border-top-width: 0;
+        /* firefox specific markup */
+        -moz-border-radius-bottomleft: 8px;
+        -moz-border-radius-bottomright: 8px;
+        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+        background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 60%, #F8 95%, #F0);
+        /* webkit specific markup */
+        -webkit-border-bottom-left-radius: 8px;
+        -webkit-border-bottom-right-radius: 8px;
+        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+        background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.6,#FFFFFF), color-stop(0.60,#FF), color-stop(0.95,#F8), to(#F0));
+}
+
+.paramkey {
+       text-align: right;
+}
+
+.paramtype {
+       white-space: nowrap;
+}
+
+.paramname {
+       color: #602020;
+       white-space: nowrap;
+}
+.paramname em {
+       font-style: normal;
+}
+
+/* @end */
+
+/* @group Directory (tree) */
+
+/* for the tree view */
+
+.ftvtree {
+       font-family: sans-serif;
+       margin: 0px;
+}
+
+/* these are for tree view when used as main index */
+
+.directory {
+       font-size: 9pt;
+       font-weight: bold;
+       margin: 5px;
+}
+
+.directory h3 {
+       margin: 0px;
+       margin-top: 1em;
+       font-size: 11pt;
+}
+
+/*
+The following two styles can be used to replace the root node title
+with an image of your choice.  Simply uncomment the next two styles,
+specify the name of your image and be sure to set 'height' to the
+proper pixel height of your image.
+*/
+
+/*
+.directory h3.swap {
+       height: 61px;
+       background-repeat: no-repeat;
+       background-image: url("yourimage.gif");
+}
+.directory h3.swap span {
+       display: none;
+}
+*/
+
+.directory > h3 {
+       margin-top: 0;
+}
+
+.directory p {
+       margin: 0px;
+       white-space: nowrap;
+}
+
+.directory div {
+       display: none;
+       margin: 0px;
+}
+
+.directory img {
+       vertical-align: -30%;
+}
+
+/* these are for tree view when not used as main index */
+
+.directory-alt {
+       font-size: 100%;
+       font-weight: bold;
+}
+
+.directory-alt h3 {
+       margin: 0px;
+       margin-top: 1em;
+       font-size: 11pt;
+}
+
+.directory-alt > h3 {
+       margin-top: 0;
+}
+
+.directory-alt p {
+       margin: 0px;
+       white-space: nowrap;
+}
+
+.directory-alt div {
+       display: none;
+       margin: 0px;
+}
+
+.directory-alt img {
+       vertical-align: -30%;
+}
+
+/* @end */
+
+div.dynheader {
+        margin-top: 8px;
+}
+
+address {
+       font-style: normal;
+       color: #2A3D61;
+}
+
+table.doxtable {
+       border-collapse:collapse;
+}
+
+table.doxtable td, table.doxtable th {
+       border: 1px solid #2D4068;
+       padding: 3px 7px 2px;
+}
+
+table.doxtable th {
+       background-color: #374F7F;
+       color: #FFFFFF;
+       font-size: 110%;
+       padding-bottom: 4px;
+       padding-top: 5px;
+       text-align:left;
+}
+
+.tabsearch {
+       top: 0px;
+       left: 10px;
+       height: 36px;
+       background-image: url('tab_b.png');
+       z-index: 101;
+       overflow: hidden;
+       font-size: 13px;
+}
+
+.navpath ul
+{
+       font-size: 11px;
+       background-image:url('tab_b.png');
+       background-repeat:repeat-x;
+       height:30px;
+       line-height:30px;
+       color:#8AA0CC;
+       border:solid 1px #C2CDE4;
+       overflow:hidden;
+       margin:0px;
+       padding:0px;
+}
+
+.navpath li
+{
+       list-style-type:none;
+       float:left;
+       padding-left:10px;
+       padding-right: 15px;
+       background-image:url('bc_s.png');
+       background-repeat:no-repeat;
+       background-position:right;
+       color:#364D7C;
+}
+
+.navpath a
+{
+       height:32px;
+       display:block;
+       text-decoration: none;
+       outline: none;
+}
+
+.navpath a:hover
+{
+       color:#6884BD;
+}
+
+div.summary
+{
+       float: right;
+       font-size: 8pt;
+       padding-right: 5px;
+       width: 50%;
+       text-align: right;
+}       
+
+div.summary a
+{
+       white-space: nowrap;
+}
+
+div.header
+{
+        background-image:url('nav_h.png');
+        background-repeat:repeat-x;
+       background-color: #F9FAFC;
+       margin:  0px;
+       border-bottom: 1px solid #C4CFE5;
+}
+
+div.headertitle
+{
+       padding: 5px 5px 5px 10px;
+}
+
diff --git a/wearable/pg-doxy/tool/bin/doxygen b/wearable/pg-doxy/tool/bin/doxygen
new file mode 100755 (executable)
index 0000000..3662da8
Binary files /dev/null and b/wearable/pg-doxy/tool/bin/doxygen differ
diff --git a/wearable/pg-doxy/tool/bin/doxytag b/wearable/pg-doxy/tool/bin/doxytag
new file mode 100755 (executable)
index 0000000..adb0c90
Binary files /dev/null and b/wearable/pg-doxy/tool/bin/doxytag differ
diff --git a/wearable/pg-doxy/tool/man/man1/doxygen.1 b/wearable/pg-doxy/tool/man/man1/doxygen.1
new file mode 100644 (file)
index 0000000..a3d8c9a
--- /dev/null
@@ -0,0 +1,46 @@
+.TH DOXYGEN "1" "July 2010" "doxygen 1.7.0" "User Commands"
+.SH NAME
+doxygen \- documentation system for various programming languages
+.SH DESCRIPTION
+Doxygen is a documentation system for C++, C, Java, Objective-C, IDL
+(Corba and Microsoft flavors) and to some extent PHP, C#, and D.
+.PP
+You can use doxygen in a number of ways:
+.TP
+1) Use doxygen to generate a template configuration file:
+.IP
+doxygen [-s] \fB\-g\fR [configName]
+.IP
+If - is used for configName doxygen will write to standard output.
+.TP 
+2) Use doxygen to update an old configuration file:
+.IP
+doxygen [-s] \fB\-u\fR [configName]
+.TP
+3) Use doxygen to generate documentation using an existing configuration file:
+.IP
+doxygen [configName]
+.IP
+If - is used for configName doxygen will read from standard input.
+.TP
+4) Use doxygen to generate a template style sheet file for RTF, HTML or Latex.
+.TP
+RTF:
+doxygen \fB\-w\fR rtf styleSheetFile
+.TP
+HTML:
+doxygen \fB\-w\fR html headerFile footerFile styleSheetFile [configFile]
+.TP
+LaTeX: doxygen \fB\-w\fR latex headerFile styleSheetFile [configFile]
+.TP
+5) Use doxygen to generate an rtf extensions file
+.TP
+RTF:
+doxygen \fB\-e\fR rtf extensionsFile
+.PP
+If \fB\-s\fR is specified the comments in the config file will be omitted.
+If configName is omitted `Doxyfile' will be used as a default.
+.SH AUTHOR
+Doxygen version 1.7.0, Copyright Dimitri van Heesch 1997-2007
+.SH SEE ALSO
+doxytag(1), doxywizard(1).
diff --git a/wearable/pg-doxy/tool/man/man1/doxytag.1 b/wearable/pg-doxy/tool/man/man1/doxytag.1
new file mode 100644 (file)
index 0000000..f496899
--- /dev/null
@@ -0,0 +1,21 @@
+.TH DOXYTAG "1" "July 2010" "doxytag 1.7.0" "User Commands"
+.SH NAME
+doxytag \- generates a tag file and/or a search index for a set of HTML files
+.SH SYNOPSIS
+.B doxytag
+[\fI-t tag_file\fR] [\fI-s index_file\fR] [ \fIhtml_file \fR[\fIhtml_file\fR...] ]
+.SH DESCRIPTION
+Generates a tag file and/or a search index for a set of HTML files.  Use
+doxysearch as a CGI program to search the tag file generated by doxytag.
+.SH OPTIONS
+.TP
+\fB\-t\fR <tag_file>
+Generate tag file <tag_file>.
+.TP
+\fB\-s\fR <index_file>
+Generate search index <index_file>.
+.PP
+If no HTML files are given all files in the current dir that
+have a .html extension are parsed.
+.SH SEE ALSO
+doxygen(1), doxywizard(1).
diff --git a/wearable/src/syspopup_core.c b/wearable/src/syspopup_core.c
new file mode 100755 (executable)
index 0000000..dc76dca
--- /dev/null
@@ -0,0 +1,264 @@
+/*
+ * syspopup
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@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.
+ *
+ */
+
+#include <stdio.h>
+#include <glib.h>
+#include <stdlib.h>
+#include <string.h>
+#include <dbus/dbus.h>
+#include <dbus/dbus-glib-lowlevel.h>
+#include "syspopup_core.h"
+#include "simple_util.h"
+
+#define SYSPOPUP_NAME "_INTERNAL_SYSPOPUP_NAME_"
+
+static syspopup *syspopup_head = NULL;
+
+static int initialized = 0;
+static DBusConnection *bus;
+static int noti_fd = -1;
+static int sp_id = 0;
+
+static void (*_term_handler) (void *data);
+static gboolean(*_timeout_handler) (void *data);
+
+syspopup *_syspopup_get_head()
+{
+       return syspopup_head;
+}
+
+int _syspopup_add_new(syspopup *sp)
+{
+       if (sp == NULL)
+               return -1;
+
+       sp->id = sp_id++;
+       sp->next = syspopup_head;
+       syspopup_head = sp;
+
+       return 0;
+}
+
+syspopup *_syspopup_find(const char *name)
+{
+       syspopup *tmp;
+       tmp = syspopup_head;
+       while (tmp) {
+               if (tmp->name) {
+                       if (strcmp(tmp->name, name) == 0)
+                               return tmp;
+               }
+               tmp = tmp->next;
+       }
+       return NULL;
+}
+
+syspopup *_syspopup_find_by_id(int id)
+{
+       syspopup *tmp;
+       tmp = syspopup_head;
+       while (tmp) {
+               if (tmp->id == id)
+                       return tmp;
+               tmp = tmp->next;
+       }
+       return NULL;
+}
+
+static void __syspopup_free(syspopup *sp)
+{
+       if (sp->name != NULL)
+               free(sp->name);
+       if (sp->dupped_bundle != NULL)
+               bundle_free(sp->dupped_bundle);
+       free(sp);
+}
+
+void _syspopup_del(int id)
+{
+       syspopup *tmp;
+       syspopup *target;
+
+       target = _syspopup_find_by_id(id);
+
+       if (syspopup_head == NULL || target == NULL)
+               return;
+
+       if (syspopup_head == target) {
+               syspopup_head = target->next;
+               __syspopup_free(target);
+               return;
+       }
+
+       tmp = syspopup_head;
+       while (tmp) {
+               if (tmp->next == target) {
+                       tmp->next = target->next;
+                       __syspopup_free(target);
+                       return;
+               }
+               tmp = tmp->next;
+       }
+}
+
+
+static DBusHandlerResult
+__sys_popup_dbus_signal_filter(DBusConnection *conn, DBusMessage *message,
+                                    void *user_data)
+{
+       const char *sender;
+       const char *interface;
+       int dead_pid;
+
+       DBusError error;
+       dbus_error_init(&error);
+
+       interface = dbus_message_get_interface(message);
+       if (interface == NULL) {
+               _E("reject by security issue - no interface\n");
+               return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+       }
+
+       if (dbus_message_is_signal(message, interface,
+                                  SYSPOPUP_DBUS_SP_TERM_SIGNAL)) {
+               if (_term_handler)
+                       _term_handler(NULL);
+
+               _D("term handler has been called");
+       }
+
+       return DBUS_HANDLER_RESULT_HANDLED;
+}
+
+
+
+int _syspopup_init(void (*term_handler) (void *),
+                  gboolean(*timeout_handler) (void *))
+{
+       DBusError error;
+       char rule[MAX_LOCAL_BUFSZ];
+
+       if (initialized)
+               return 0;
+
+       _term_handler = term_handler;
+       _timeout_handler = timeout_handler;
+
+       dbus_error_init(&error);
+       bus = dbus_bus_get_private(DBUS_BUS_SYSTEM, &error);
+       if (!bus) {
+               _E("Failed to connect to the D-BUS daemon: %s", error.message);
+               dbus_error_free(&error);
+               return -1;
+       }
+       dbus_connection_setup_with_g_main(bus, NULL);
+
+       snprintf(rule, MAX_LOCAL_BUFSZ,
+                "path='%s',type='signal',interface='%s'", SYSPOPUP_DBUS_PATH,
+                SYSPOPUP_DBUS_SIGNAL_INTERFACE);
+       /* listening to messages */
+       dbus_bus_add_match(bus, rule, &error);
+       if (dbus_error_is_set(&error)) {
+               _E("Fail to rule set: %s", error.message);
+               dbus_error_free(&error);
+               return -1;
+       }
+
+       if (dbus_connection_add_filter(bus, 
+               __sys_popup_dbus_signal_filter, NULL, NULL) == FALSE)
+               return -1;
+
+       _D("syspopup signal initialized");
+
+       initialized = 1;
+       return 0;
+}
+
+int _syspopup_reset_timeout(syspopup *sp, syspopup_info_t *info)
+{
+       if (!initialized) {
+               _E("no initialized");
+               return -1;
+       }
+       if (sp == NULL) {
+               _E("syspopup is NULL");
+               return -1;
+       }
+       if (info == NULL) {
+               _E("syspopup info is NULL");
+               return -1;
+       }
+
+       if (sp->timeout_id != 0)
+               g_source_remove(sp->timeout_id);
+
+       if(info->timeout > 0) {
+               sp->timeout_id = g_timeout_add_seconds(info->timeout, _timeout_handler,
+                                              (void *)sp->id);
+               _D("add timeout - timeout : id=%d,timeout=%d(sec)", sp->id, 
+                       info->timeout);
+       }
+
+       return 0;
+}
+
+int _syspopup_set_term_type(syspopup *sp, syspopup_info_t *info)
+{
+       sp->term_act = info->term_act;
+       return 0;
+}
+
+int _syspopup_set_endkey_type(syspopup *sp, syspopup_info_t *info)
+{
+       sp->endkey_act = info->endkey_act;
+       return 0;
+}
+
+const char *_syspopup_get_name_from_bundle(bundle *b)
+{
+       const char *name;
+
+       if (getuid() != 0 && getuid() != 5000) {
+               _E("syspopup permission error");
+               return NULL;
+       }
+
+       if (b == NULL) {
+               _E("bundle is NULL");
+               return NULL;
+       }
+
+       name = bundle_get_val(b, SYSPOPUP_NAME);
+       if (name == NULL) {
+               _E("this is no bundle for syspopup");
+       }
+       return name;
+}
+
+int _syspopup_set_name_to_bundle(bundle *b, char *popup_name)
+{
+       if ((b == NULL) || (popup_name == NULL))
+               return -1;
+       bundle_add(b, SYSPOPUP_NAME, popup_name);
+       return 0;
+}
+
diff --git a/wearable/src/syspopup_db.c b/wearable/src/syspopup_db.c
new file mode 100755 (executable)
index 0000000..80fb977
--- /dev/null
@@ -0,0 +1,251 @@
+/*
+ * syspopup
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@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.
+ *
+ */
+
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <sqlite3.h>
+#include "syspopup_db.h"
+#include "simple_util.h"
+
+#define SYSPOPUP_DB_PATH       "/opt/dbspace/.syspopup.db"
+#define QUERY_MAXLEN   4096
+
+#define SP_INFO_TBL            "syspopup_info"
+#define SP_INFO_TBL_F_NAME     "name"
+
+static sqlite3 *db = NULL;
+
+/**
+ * exec  
+ * param[in] db handler
+ * param[in] query query
+ * return This method returns 0 (SUCCESS) or -1 (FAIL)
+ */
+static int __exec(sqlite3 *db, char *query)
+{
+       int rc = 0;
+       char *errmsg = NULL;
+
+       if (db == NULL) {
+               _E("DB handler is null");
+               return -1;
+       }
+       rc = sqlite3_exec(db, query, NULL, 0, &errmsg);
+
+       if (rc != SQLITE_OK) {
+               _D("Query: [%s]", query);
+               _E("SQL error: %s\n", errmsg);
+               sqlite3_free(errmsg);
+               return (-1);
+       }
+
+       return 0;
+}
+
+/**
+ * db initialize
+ */
+static int __init(void)
+{
+       int rc;
+
+       if (db) {
+               _D("Already initialized\n");
+               return 0;
+       }
+
+       rc = sqlite3_open(SYSPOPUP_DB_PATH, &db);
+       if (rc) {
+               _E("Can't open database: %s / %d / %d", sqlite3_errmsg(db),
+                       rc, sqlite3_extended_errcode(db));
+               return -1;
+       }
+
+       return 0;
+}
+
+static int __fini(void)
+{
+       if (db) {
+               sqlite3_close(db);
+               db = NULL;
+       }
+       return 0;
+}
+
+static int __delete_all(const char *tbl_name)
+{
+       char *_sqlbuf;
+       int rc;
+
+       _sqlbuf = sqlite3_mprintf("DELETE FROM %s;", tbl_name);
+       rc = __exec(db, _sqlbuf);
+       sqlite3_free(_sqlbuf);
+
+       return rc;
+}
+
+static int __delete_with_field(const char *tbl_name, const char *f_name,
+                              const char *val)
+{
+       char *_sqlbuf;
+       int rc;
+
+       _sqlbuf = sqlite3_mprintf("DELETE FROM %s WHERE %s = '%s';",
+                                 tbl_name, f_name, val);
+       rc = __exec(db, _sqlbuf);
+       sqlite3_free(_sqlbuf);
+
+       return rc;
+}
+
+static int __count_with_field(const char *tbl_name, const char *f_name,
+                             const char *val)
+{
+       char *_sqlbuf;
+       int rc;
+       char **db_result = NULL;
+       char *db_err = NULL;
+       int nrows = 0;
+       int ncols = 0;
+       int cnt;
+
+       _sqlbuf = sqlite3_mprintf("SELECT COUNT(*) FROM %s WHERE %s = '%s';",
+                                 tbl_name, f_name, val);
+
+       rc = sqlite3_get_table(db, _sqlbuf, &db_result, &nrows, &ncols,
+                              &db_err);
+       if (rc == -1 || nrows == 0) {
+               _E("get count = 0 or fail");
+               sqlite3_free_table(db_result);
+               sqlite3_free(_sqlbuf);
+               return 0;
+       } else {
+               cnt = atoi(db_result[1]);
+               sqlite3_free_table(db_result);
+               sqlite3_free(_sqlbuf);
+       }
+
+       return cnt;
+}
+
+int _syspopup_info_add(syspopup_info_t *pinfo)
+{
+       int rc = -1;
+       int cnt = 0;
+       char *_sqlbuf;
+
+       if (pinfo->name == NULL) {
+               _E("Name is null\n");
+               return -1;
+       }
+
+       if (__init() < 0)
+               return -1;
+
+       cnt = __count_with_field(SP_INFO_TBL, SP_INFO_TBL_F_NAME, pinfo->name);
+
+       if (cnt == 0) {
+               _sqlbuf = sqlite3_mprintf("INSERT INTO %s "
+                                         "(name,prio,focus,timeout,term_act,endkey_act,pkgname) values "
+                                         "(\"%s\", %d, %d, %d, \"%s\");",
+                                         SP_INFO_TBL,
+                                         pinfo->name, pinfo->prio,
+                                         pinfo->focus, pinfo->timeout,
+                                         pinfo->term_act, pinfo->endkey_act,
+                                         pinfo->pkgname);
+               rc = __exec(db, _sqlbuf);
+               sqlite3_free(_sqlbuf);
+       } else {
+               _E("already exist - %s", pinfo->name);
+               rc = -1;
+       }
+
+       if (rc < 0)
+               _E("Fail to insert\n");
+
+       __fini();
+       return rc;
+}
+
+syspopup_info_t *_syspopup_info_get(const char *popup_name)
+{
+       int rc = 0;
+       char sqlbuf[256] = {0,};
+       sqlite3_stmt *stmt;
+       syspopup_info_t *pinfo = NULL;
+
+       if (popup_name == NULL) {
+               _E("no popup name");
+               return NULL;
+       }
+
+       if (__init() < 0)
+               return NULL;
+
+       snprintf(sqlbuf, 256,
+               "SELECT name,prio,focus,timeout,term_act,endkey_act,pkgname FROM %s WHERE %s='%s';",
+               SP_INFO_TBL, SP_INFO_TBL_F_NAME, popup_name);
+
+       rc = sqlite3_prepare_v2(db, sqlbuf, -1, &stmt, NULL);
+       if (rc == SQLITE_OK) {
+               rc = sqlite3_step(stmt);
+               if (rc == SQLITE_ROW) {
+                       pinfo = (syspopup_info_t *) malloc(sizeof(syspopup_info_t));
+                       if (pinfo == NULL) {
+                               _E("malloc error");
+                               goto out;
+                       }
+                       pinfo->name = strdup((char *) sqlite3_column_text(stmt, 0));
+                       pinfo->prio = sqlite3_column_int(stmt, 1);
+                       pinfo->focus = sqlite3_column_int(stmt, 2);
+                       pinfo->timeout = sqlite3_column_int(stmt, 3);
+                       pinfo->term_act = sqlite3_column_int(stmt, 4);
+                       pinfo->endkey_act = sqlite3_column_int(stmt, 5);
+                       if (sqlite3_column_text(stmt, 6) != NULL)
+                               pinfo->pkgname = strdup((char *) sqlite3_column_text(stmt, 6));
+                       else
+                               pinfo->pkgname = NULL;
+               }
+               sqlite3_finalize(stmt);
+       }
+
+       if(pinfo == NULL) {
+               _E("error(%d) in prepare", rc);
+       }
+
+out:
+       __fini();
+       return pinfo;
+}
+
+void _syspopup_info_free(syspopup_info_t *pinfo)
+{
+       if (pinfo->name)
+               free(pinfo->name);
+       if (pinfo->pkgname)
+               free(pinfo->pkgname);
+       free(pinfo);
+}
+
diff --git a/wearable/syspopup-caller.manifest b/wearable/syspopup-caller.manifest
new file mode 100755 (executable)
index 0000000..97e8c31
--- /dev/null
@@ -0,0 +1,5 @@
+<manifest>
+       <request>
+               <domain name="_"/>
+       </request>
+</manifest>
diff --git a/wearable/syspopup-caller/CMakeLists.txt b/wearable/syspopup-caller/CMakeLists.txt
new file mode 100644 (file)
index 0000000..47ffb1d
--- /dev/null
@@ -0,0 +1,67 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+SET(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)
+
+PROJECT(syspopup_caller C)
+SET(VERSION 1.1)
+
+### Global setting ###
+
+SET(PREFIX ${CMAKE_INSTALL_PREFIX})
+SET(EXEC_PREFIX "\${prefix}")
+SET(LIBDIR "\${prefix}/lib")
+SET(INCLUDEDIR "\${prefix}/include")
+
+# Build type : Release
+IF("${CMAKE_BUILD_TYPE}" STREQUAL "")
+       SET(CMAKE_BUILD_TYPE "Release")
+ENDIF()
+MESSAGE("Build type: ${CMAKE_BUILD_TYPE}")
+
+# Set required packages
+INCLUDE(FindPkgConfig)
+
+pkg_check_modules(spcpkgs REQUIRED dlog bundle sqlite3 glib-2.0 aul dbus-glib-1)
+
+FOREACH(flag ${spcpkgs_CFLAGS})
+       SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+# Compiler flags
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
+SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -Wl,-zdefs" )
+SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fvisibility=hidden")
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
+SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
+SET(CMAKE_C_FLAGS_RELEASE "-O2")
+
+SET(CMAKE_SKIP_BUILD_RPATH true)
+
+# Get uname value to set 'TARGET' definition 
+# TODO: Is this needed?
+FIND_PROGRAM(UNAME NAMES uname)
+EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH")
+IF("${ARCH}" STREQUAL "arm")
+       ADD_DEFINITIONS("-DTARGET")
+       MESSAGE("add -DTARGET")
+ENDIF("${ARCH}" STREQUAL "arm")
+
+ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"")
+
+# Linker flags
+SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed")
+
+### Build ###
+
+add_library(syspopup_caller SHARED syspopup_caller.c)
+target_link_libraries(syspopup_caller syspopup_mods ${spcpkgs_LDFLAGS})
+SET_TARGET_PROPERTIES(syspopup_caller PROPERTIES SOVERSION 0.1.0)
+
+# pkgconfig file
+#CONFIGURE_FILE(syspopup-caller.pc.in syspopup-caller/syspopup-caller.pc @ONLY)
+CONFIGURE_FILE(syspopup-caller.pc.in ${CMAKE_CURRENT_BINARY_DIR}/syspopup-caller.pc @ONLY)
+
+### Install ###
+INSTALL(TARGETS syspopup_caller DESTINATION lib COMPONENT RuntimeLibraries)
+INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/../include/syspopup_caller.h DESTINATION include)
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/syspopup-caller.pc DESTINATION lib/pkgconfig)
+
diff --git a/wearable/syspopup-caller/syspopup-caller.pc.in b/wearable/syspopup-caller/syspopup-caller.pc.in
new file mode 100644 (file)
index 0000000..c3fc022
--- /dev/null
@@ -0,0 +1,13 @@
+# Package Information for pkg-config
+
+prefix=/usr
+exec_prefix=@EXEC_PREFIX@
+libdir=@LIBDIR@
+includedir=@INCLUDEDIR@
+
+Name: libsyspopup_caller
+Description: system popup caller library - may be integrated in AUL
+Version: @VERSION@
+Requires: dlog bundle sqlite3 glib-2.0 aul 
+Libs: -L${libdir} -lsyspopup_caller
+Cflags: -I${includedir}
diff --git a/wearable/syspopup-caller/syspopup_caller.c b/wearable/syspopup-caller/syspopup_caller.c
new file mode 100755 (executable)
index 0000000..c5eca62
--- /dev/null
@@ -0,0 +1,116 @@
+/*
+ * syspopup
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@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.
+ *
+ */
+
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <glib.h>
+#include <dbus/dbus.h>
+#include <aul.h>
+
+#include "syspopup_core.h"
+#include "syspopup_db.h"
+#include "syspopup_api.h"
+#include "simple_util.h"
+
+API int syspopup_launch(char *popup_name, bundle *b)
+{
+       syspopup_info_t *info = NULL;
+       int ret;
+       int is_bundle = 0;
+
+       if (popup_name == NULL) {
+               _E("popup_name is NULL");
+               return -1;
+       }
+
+       info = _syspopup_info_get(popup_name);
+       if (info == NULL || info->pkgname == NULL) {
+               _E("info or info->pkgname is NULL");
+               if (info)
+                       _syspopup_info_free(info);
+               return -1;
+       }
+
+       if (b == NULL) {
+               b = bundle_create();
+               is_bundle = 1;
+       }
+
+       if (_syspopup_set_name_to_bundle(b, popup_name) < 0) {
+               _E("bundle set error\n");
+               _syspopup_info_free(info);
+
+               if (is_bundle == 1) {
+                       bundle_free(b);
+               }
+               return -1;
+       }
+
+       ret = aul_launch_app(info->pkgname, b);
+       if (ret < 0) {
+               _E("aul launch error - %d", ret);
+       }
+
+       if (is_bundle == 1) {
+               bundle_free(b);
+       }
+
+       _syspopup_info_free(info);
+
+       return ret;
+}
+
+API int syspopup_destroy_all()
+{
+       DBusMessage *message;
+       DBusError error;
+       DBusConnection *bus = NULL;
+
+       dbus_error_init(&error);
+       bus = dbus_bus_get_private(DBUS_BUS_SYSTEM, &error);
+       if (bus == NULL) {
+               _E("Failed to connect to the D-BUS daemon: %s", error.message);
+               dbus_error_free(&error);
+               return -1;
+       }
+
+       message = dbus_message_new_signal(SYSPOPUP_DBUS_PATH,
+                                         SYSPOPUP_DBUS_SIGNAL_INTERFACE,
+                                         SYSPOPUP_DBUS_SP_TERM_SIGNAL);
+
+       if (dbus_connection_send(bus, message, NULL) == FALSE) {
+               _E("dbus send error");
+               return -1;
+       }
+
+       dbus_connection_flush(bus);
+       dbus_message_unref(message);
+
+       dbus_connection_close(bus);
+
+       _D("send signal done\n");
+
+       return 0;
+}
+
diff --git a/wearable/syspopup.manifest b/wearable/syspopup.manifest
new file mode 100755 (executable)
index 0000000..1d49be5
--- /dev/null
@@ -0,0 +1,17 @@
+<manifest>
+       <define>
+               <domain name="syspopup"/>
+               <provide>
+                       <label name="syspopup::db"/>
+               </provide>
+       </define>
+       <request>
+               <domain name="syspopup"/>
+       </request>
+       <assign>
+               <filesystem path="/usr/lib/libsyspopup.so.0" label="_"/>
+               <filesystem path="/usr/lib/libsyspopup.so.0.1.0" label="_"/>
+               <filesystem path="/opt/dbspace/.syspopup.db" label="syspopup::db"/>
+               <filesystem path="/opt/dbspace/.syspopup.db-journal" label="syspopup::db"/>
+       </assign>
+</manifest>
diff --git a/wearable/syspopup/CMakeLists.txt b/wearable/syspopup/CMakeLists.txt
new file mode 100644 (file)
index 0000000..72a0929
--- /dev/null
@@ -0,0 +1,68 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+SET(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)
+
+PROJECT(syspopup C)
+SET(VERSION 1.1)
+
+### Global setting ###
+
+SET(PREFIX ${CMAKE_INSTALL_PREFIX})
+SET(EXEC_PREFIX "\${prefix}")
+SET(LIBDIR "\${prefix}/lib")
+SET(INCLUDEDIR "\${prefix}/include")
+
+# Build type : Release
+IF("${CMAKE_BUILD_TYPE}" STREQUAL "")
+       SET(CMAKE_BUILD_TYPE "Release")
+ENDIF()
+MESSAGE("Build type: ${CMAKE_BUILD_TYPE}")
+
+# Set required packages
+INCLUDE(FindPkgConfig)
+
+pkg_check_modules(sppkgs REQUIRED dlog bundle sqlite3 glib-2.0 evas elementary utilX ecore-x x11 ecore ecore-input dbus-glib-1)
+
+FOREACH(flag ${sppkgs_CFLAGS})
+       SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+# Compiler flags
+SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -Wl,-zdefs" )
+SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fvisibility=hidden")
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
+SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
+SET(CMAKE_C_FLAGS_RELEASE "-O2")
+
+SET(CMAKE_SKIP_BUILD_RPATH true)
+
+# Get uname value to set 'TARGET' definition 
+# TODO: Is this needed?
+FIND_PROGRAM(UNAME NAMES uname)
+EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH")
+IF("${ARCH}" STREQUAL "arm")
+       ADD_DEFINITIONS("-DTARGET")
+       MESSAGE("add -DTARGET")
+ENDIF("${ARCH}" STREQUAL "arm")
+
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
+ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"")
+
+# Linker flags
+SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed")
+
+
+### Build ###
+
+add_library(syspopup SHARED syspopup.c syspopup_efl.c)
+target_link_libraries(syspopup syspopup_mods ${sppkgs_LDFLAGS})
+SET_TARGET_PROPERTIES(syspopup PROPERTIES SOVERSION 0.1.0)
+
+# pkgconfig file
+#CONFIGURE_FILE(syspopup.pc.in syspopup/syspopup.pc @ONLY)
+CONFIGURE_FILE(syspopup.pc.in ${CMAKE_CURRENT_BINARY_DIR}/syspopup.pc @ONLY)
+
+### Install ###
+INSTALL(TARGETS syspopup DESTINATION lib COMPONENT RuntimeLibraries)
+INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/../include/syspopup.h DESTINATION include)
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/syspopup.pc DESTINATION lib/pkgconfig)
+
diff --git a/wearable/syspopup/syspopup.c b/wearable/syspopup/syspopup.c
new file mode 100755 (executable)
index 0000000..531157a
--- /dev/null
@@ -0,0 +1,486 @@
+/*
+ * syspopup
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@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.
+ *
+ */
+
+
+#include "syspopup_core.h"
+#include "syspopup.h"
+#include "syspopup_api.h"
+#include "simple_util.h"
+#include <X11/Xatom.h>
+#include <X11/Xutil.h>
+
+#define WIN_PROP_NAME "SYSTEM_POPUP"
+
+static int __utilx_ss_get_window_property(Display *dpy, Window win, Atom atom,
+                                         Atom type, unsigned int *val,
+                                         unsigned int len)
+{
+       unsigned char *prop_ret;
+       Atom type_ret;
+       unsigned long bytes_after;
+       unsigned long  num_ret;
+       int format_ret;
+       unsigned int i;
+       int num;
+
+       prop_ret = NULL;
+       if (XGetWindowProperty(dpy, win, atom, 0, 0x7fffffff, False,
+                              type, &type_ret, &format_ret, &num_ret,
+                              &bytes_after, &prop_ret) != Success)
+               return -1;
+
+       if (type_ret != type || format_ret != 32)
+               num = -1;
+       else if (num_ret == 0 || !prop_ret)
+               num = 0;
+       else {
+               if (num_ret < len)
+                       len = num_ret;
+               for (i = 0; i < len; i++) {
+                       val[i] = ((unsigned long *)prop_ret)[i];
+               }
+               num = len;
+       }
+
+       if (prop_ret)
+               XFree(prop_ret);
+
+       return num;
+}
+
+/*
+static Window get_active_win(Display *dpy, Window win, Atom property)
+{
+    Window active_win = None;
+    Atom actual_type;
+    int actual_format;
+    unsigned long nitems, bytes_after;
+    unsigned char *prop_return = NULL;
+
+    if(Success == XGetWindowProperty(dpy, win, property, 0L, sizeof(Window),
+                                    False, XA_WINDOW, &actual_type,
+                                    &actual_format, &nitems, &bytes_after,
+                                    &prop_return) && prop_return) {
+       active_win = *(Window *)prop_return;
+       XFree(prop_return);
+    }
+
+    return active_win;
+}
+*/
+
+static void __X_syspopup_term_handler(void *data)
+{
+       syspopup *tmp;
+       syspopup *next;
+       Display *d = NULL;
+       Window win;
+
+       _I("enter syspopup term handler");
+
+       d = XOpenDisplay(NULL);
+       if(!d){
+               _E("XOpenDisplay return null");
+       }
+
+       tmp = _syspopup_get_head();
+       while (tmp) {
+
+               _I("term action %d - %s", tmp->term_act, tmp->name);
+               next = tmp->next;
+
+               switch (tmp->term_act) {
+               case SYSPOPUP_TERM:
+                       win = (Window) tmp->internal_data;
+
+                       if (tmp->def_term_fn != NULL)
+                               tmp->def_term_fn(tmp->dupped_bundle, tmp->user_data);
+
+                       if(d) XKillClient(d, win);
+                       break;
+               case SYSPOPUP_HIDE:
+                       win = (Window) tmp->internal_data;
+
+                       if (tmp->def_term_fn != NULL)
+                               tmp->def_term_fn(tmp->dupped_bundle, tmp->user_data);
+
+                       if(d) XUnmapWindow(d, win);
+                       break;
+               default:
+                       _I("term action IGNORED - %s", tmp->name);
+               }
+               tmp = next;
+       }
+
+       if(d) XCloseDisplay(d);
+}
+
+static gboolean __X_syspopup_timeout_handler(void *user_data)
+{
+       syspopup *sp = NULL;
+       Display *d;
+       int id;
+       Window win;
+
+       id = (int)user_data;
+
+       d = XOpenDisplay(NULL);
+
+       sp = _syspopup_find_by_id(id);
+       if (sp != NULL) {
+               _D("find timeout - %s", sp->name);
+               if (sp->def_timeout_fn != NULL)
+                       sp->def_timeout_fn(sp->dupped_bundle, sp->user_data);
+               win = (Window) sp->internal_data;
+               XKillClient(d, win);
+       } else {
+               _E("no find timeout");
+       }
+
+       XCloseDisplay(d);
+
+       return 0;
+}
+
+static int __X_syspopup_change_xwin_type(Display *dpy, Window win)
+{
+       Atom win_type_atom;
+       Atom win_type_utility_atom;
+
+       win_type_atom = XInternAtom(dpy, "_NET_WM_WINDOW_TYPE", False);
+       win_type_utility_atom =
+           XInternAtom(dpy, "_NET_WM_WINDOW_TYPE_NOTIFICATION", False);
+       XChangeProperty(dpy, win, win_type_atom, XA_ATOM, 32, PropModeReplace,
+                       (unsigned char *)&win_type_utility_atom, 1);
+
+       return 0;
+}
+
+static int __X_syspopup_disable_focus(Display *dpy, Window win)
+{
+       XWMHints *hints;
+
+       hints = XAllocWMHints();
+       if (!hints) return -1;
+
+       hints->flags = InputHint | StateHint;
+       hints->input = 0;
+       hints->initial_state = NormalState;
+
+       XSetWMHints(dpy, win, hints);
+       XFree(hints);
+
+       return 0;
+}
+
+int X_syspopup_rotation_get(Display *dpy, Window win)
+{
+       Window active_win;
+       Window root_win;
+       int rotation = -1;
+       int ret;
+
+       int angles[2];
+
+       Atom atom_active_win;
+       Atom atom_win_rotate_angle;
+
+       root_win = XDefaultRootWindow(dpy);
+
+       atom_active_win = XInternAtom(dpy, "_NET_ACTIVE_WINDOW", False);
+       ret = __utilx_ss_get_window_property(dpy, root_win, atom_active_win,
+                                            XA_WINDOW,
+                                            (unsigned int *)&active_win, 1);
+
+       /*printf("[SYSPOPUP] Active win : %x, Window %x\n", active_win, win);*/
+
+       /*active_win = get_active_win(dpy, root_win, atom_active_win);*/
+       if (ret < 0)
+               return ret;
+
+       atom_win_rotate_angle =
+               XInternAtom(dpy, "_E_ILLUME_ROTATE_ROOT_ANGLE", False);
+       ret = __utilx_ss_get_window_property(dpy, root_win,
+                                         atom_win_rotate_angle, XA_CARDINAL,
+                                         (unsigned int *)&rotation, 1);
+
+       /*printf("[SYSPOPUP] Rotation %d\n", rotation);*/
+
+       if (ret != -1)
+               return rotation;
+
+       return -1;
+}
+
+int X_syspopup_process_keydown(int id, const char *keyname)
+{
+       Display *d;
+       Window win;
+       syspopup *sp = NULL;
+
+       if (strcmp(keyname, KEY_END) == 0) {
+               d = XOpenDisplay(NULL);
+               sp = _syspopup_find_by_id(id);
+               if (sp != NULL) {
+                       _D("find key down - %s", sp->name);
+                       if (sp->endkey_act == SYSPOPUP_KEYEND_TERM) {
+                               if (sp->def_term_fn != NULL)
+                                       sp->def_term_fn(sp->dupped_bundle,
+                                                       sp->user_data);
+                               win = (Window) sp->internal_data;
+                               XKillClient(d, win);
+
+                       } else if (sp->endkey_act == SYSPOPUP_KEYEND_HIDE) {
+                               if (sp->def_term_fn != NULL)
+                                       sp->def_term_fn(sp->dupped_bundle,
+                                                       sp->user_data);
+                               win = (Window) sp->internal_data;
+                               XUnmapWindow(d, win);
+                       }
+
+               } else {
+                       _E("no find key down");
+               }
+
+               XCloseDisplay(d);
+       }
+
+       return 0;
+}
+
+#ifdef ROTATE_USING_X_CLIENT
+int X_syspopup_process_rotate(int id)
+{
+       Display *d;
+       Window win;
+       syspopup *sp = NULL;
+
+       sp = _syspopup_find_by_id(id);
+
+       if (sp == NULL)
+               return -1;
+
+       win = (Window) sp->internal_data;
+
+       d = XOpenDisplay(NULL);
+       sp->rotate_cb(d, win, sp);
+       XCloseDisplay(d);
+
+       return 0;
+}
+#else
+static void __efl_rotation_set(Evas_Object* win, Ecore_X_Window xwin)
+{
+       ecore_x_icccm_name_class_set(xwin, WIN_PROP_NAME, WIN_PROP_NAME);
+       if (elm_win_wm_rotation_supported_get(win)) {
+               int rots[4] = { 0, 90, 180, 270 };
+               elm_win_wm_rotation_available_rotations_set(win, &rots, 4);
+       } else {
+               _E("win rotation no supported");
+       }
+}
+#endif
+
+int X_make_syspopup(bundle *b, Display *dpy, Window xwin, void *win,
+                   int (*rotate_func) (Display*, Window, syspopup*),
+                   syspopup_handler *handler, void *user_data)
+{
+       syspopup *sp = NULL;
+       syspopup_info_t *info;
+       const char *popup_name = _syspopup_get_name_from_bundle(b);
+       XWindowAttributes attr;
+       int is_unviewable = 0;
+
+       if (popup_name == NULL || handler == NULL)
+               return -1;
+
+       info = _syspopup_info_get(popup_name);
+       if (info == NULL)
+               return -1;
+
+       if (_syspopup_init(__X_syspopup_term_handler,
+                          __X_syspopup_timeout_handler) < 0){
+               _syspopup_info_free(info);
+               return -1;
+       }
+
+       XGetWindowAttributes(dpy, xwin, &attr);
+
+       if (attr.map_state == IsViewable) {
+               XUnmapWindow(dpy, xwin);
+               is_unviewable = 1;
+       }
+
+       sp = (syspopup *) malloc(sizeof(syspopup));
+       if (sp == NULL) {
+               _syspopup_info_free(info);
+               return -1;
+       }
+       
+       sp->name = strdup(info->name);
+       sp->def_term_fn = handler->def_term_fn;
+       sp->def_timeout_fn = handler->def_timeout_fn;
+       sp->user_data = user_data;
+       sp->internal_data = (void *)xwin;
+       sp->win = (void *)win;
+       sp->rotate_cb = rotate_func;
+       sp->timeout_id = 0;
+       sp->dupped_bundle = bundle_dup(b);
+       _syspopup_add_new(sp);
+
+       _syspopup_set_term_type(sp, info);
+       _syspopup_set_endkey_type(sp, info);
+
+       _syspopup_reset_timeout(sp, info);
+
+       __X_syspopup_change_xwin_type(dpy, xwin);
+       utilx_set_system_notification_level(dpy, xwin, info->prio);
+
+       utilx_grab_key(dpy, xwin, KEY_END, TOP_POSITION_GRAB);
+
+       if (info->focus == 1) {
+               __X_syspopup_disable_focus (dpy, xwin);
+       }
+
+#ifdef ROTATE_USING_X_CLIENT
+       rotate_func(dpy, xwin, sp);
+#else
+       __efl_rotation_set((Evas_Object* )win,(Ecore_X_Window)xwin);
+#endif
+
+       if (is_unviewable == 1) {
+               XMapWindow(dpy, xwin);
+       }
+
+       _syspopup_info_free(info);
+
+       return sp->id;
+}
+
+/**
+ * @brief       This API reset created the system popup's properties
+ *
+ *             This API reset created the system popup's properties based on
+ *             system popup information DB after extracting popup name from 
+ *             given bundle system popup properties to be reset : timeout, 
+ *             default action type, ....
+ *
+ * @param[in]   b              bundle received by app_reset handler
+ *                             (included system popup name)
+ * @return      0 if success, negative value(<0) if fail
+ * @retval      0              - success
+ * @retval      -1             - generic error
+ */
+int X_syspopup_reset(bundle *b)
+{
+       const char *popup_name;
+       syspopup_info_t *info;
+       syspopup *sp = NULL;
+
+       popup_name = _syspopup_get_name_from_bundle(b);
+       if (popup_name == NULL)
+               return -1;
+
+       sp = _syspopup_find(popup_name);
+       if (!sp)
+               return -1;
+       else {
+               Display *d;
+               Window win;
+
+               info = _syspopup_info_get(popup_name);
+               if (info == NULL)
+                       return -1;
+               _syspopup_reset_timeout(sp, info);
+
+               if (sp->dupped_bundle)
+                       free(sp->dupped_bundle);
+               sp->dupped_bundle = bundle_dup(b);
+
+               d = XOpenDisplay(NULL);
+               win = (Window) sp->internal_data;
+               utilx_set_system_notification_level(d, win, info->prio);
+
+               if (info->focus == 1) {
+                       __X_syspopup_disable_focus (d, win);
+               }
+
+#ifdef ROTATE_USING_X_CLIENT
+               int (*rotate_func) (Display *, Window, syspopup *);
+               rotate_func = sp->rotate_cb;
+               rotate_func(d, win, sp);
+#else
+               __efl_rotation_set((Evas_Object *)sp->win, (Ecore_X_Window)win);
+#endif
+               XMapWindow(d, win);
+               /*XMapRaised(d,win);*/
+               XCloseDisplay(d);
+
+               _syspopup_info_free(info);
+       }
+       return 0;
+}
+
+API int syspopup_has_popup(bundle *b)
+{
+       const char *popup_name;
+       popup_name = _syspopup_get_name_from_bundle(b);
+       if (popup_name == NULL)
+               return 0;
+
+       if (_syspopup_find(popup_name) != NULL)
+               return 1;
+       else
+               return 0;
+}
+
+API int syspopup_reset_timeout(bundle *b, unsigned int time)
+{
+       const char *popup_name;
+       syspopup_info_t *info;
+       syspopup *sp = NULL;
+       int ret;
+
+       popup_name = _syspopup_get_name_from_bundle(b);
+       if (popup_name == NULL) {
+               _E("popup_name is null");
+               return -1;
+       }
+
+       sp = _syspopup_find(popup_name);
+       if (!sp) {
+               _E("find syspopup error");
+               return -1;
+       } else {
+               info = _syspopup_info_get(popup_name);
+               if (info == NULL) {
+                       _E("get syspopup info error");
+                       return -1;
+               }
+               info->timeout = time;
+               ret = _syspopup_reset_timeout(sp, info);
+               _syspopup_info_free(info);
+       }
+
+       return ret;
+}
+
diff --git a/wearable/syspopup/syspopup.pc.in b/wearable/syspopup/syspopup.pc.in
new file mode 100644 (file)
index 0000000..8d5f38a
--- /dev/null
@@ -0,0 +1,13 @@
+# Package Information for pkg-config
+
+prefix=/usr
+exec_prefix=@EXEC_PREFIX@
+libdir=@LIBDIR@
+includedir=@INCLUDEDIR@
+
+Name: libsyspopup
+Description: system popup library for ui 
+Version: @VERSION@
+Requires: dlog bundle sqlite3 glib-2.0 elementary utilX ecore-x dbus-glib-1
+Libs: -L${libdir} -lsyspopup
+Cflags: -I${includedir}
diff --git a/wearable/syspopup/syspopup_efl.c b/wearable/syspopup/syspopup_efl.c
new file mode 100755 (executable)
index 0000000..7767d2f
--- /dev/null
@@ -0,0 +1,138 @@
+/*
+ * syspopup
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@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.
+ *
+ */
+
+
+#include "syspopup_core.h"
+#include "syspopup.h"
+#include "syspopup_api.h"
+#include "simple_util.h"
+#include <Evas.h>
+#include <Ecore.h>
+#include <Ecore_Input.h>
+#include <Ecore_X.h>
+
+static Eina_Bool __x_keydown_cb(void *data, int type, void *event)
+{
+       int id = (int)data;
+       Ecore_Event_Key *ev = event;
+
+       if (ev == NULL)
+               return 0;
+
+       X_syspopup_process_keydown(id, ev->keyname);
+
+       return ECORE_CALLBACK_DONE;
+}
+
+#ifdef ROTATE_USING_X_CLIENT
+static Eina_Bool __x_rotate_cb(void *data, int type, void *event)
+{
+       int id = (int)data;
+       Ecore_X_Event_Client_Message *ev = event;
+
+       if (!event)
+               return ECORE_CALLBACK_RENEW;
+
+       if (ev->message_type == ECORE_X_ATOM_E_ILLUME_ROTATE_ROOT_ANGLE)
+               X_syspopup_process_rotate(id);
+
+       return ECORE_CALLBACK_RENEW;
+}
+
+static int __efl_rotate(Display *dpy, Window win, syspopup *sp)
+{
+       int rotation;
+
+       rotation = X_syspopup_rotation_get(dpy, win);
+
+       if (rotation == -1) {
+               rotation = 0;
+       }
+
+       if (rotation >= 0)
+               elm_win_rotation_with_resize_set(sp->win, rotation);
+
+       return 0;
+}
+#else
+static int __efl_rotate(Display *dpy, Window win, syspopup *sp)
+{
+       return 0;
+}
+#endif
+
+API int syspopup_create(bundle *b, syspopup_handler *handler,
+                       Evas_Object *parent, void *user_data)
+{
+       Ecore_X_Window xwin;
+       Display *dpy;
+       const char *popup_name;
+       syspopup *sp = NULL;
+       int id;
+       XWindowAttributes attr;
+       int is_unviewable = 0;
+
+       popup_name = _syspopup_get_name_from_bundle(b);
+       if (popup_name == NULL || handler == NULL) {
+               _E("popup_name or handler is NULL");
+               return -1;
+       }
+
+       if (parent == NULL) {
+               _E("parent window is NULL");
+               return -1;
+       }
+
+       sp = _syspopup_find(popup_name);
+       if (sp) {
+               _E("already exist - syspopup %s", popup_name);
+               return -1;
+       } else {
+               xwin = elm_win_xwindow_get(parent);
+               dpy = ecore_x_display_get();
+
+               id = X_make_syspopup(b, dpy, xwin, parent, __efl_rotate,
+                                    handler, user_data);
+               if (id < 0) {
+                       _E("fail to make X syspopup");
+                       return -1;
+               }
+
+               ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, __x_keydown_cb,
+                                       (void *)id);
+
+               /* X_syspopup_core should process 2 events */
+               /* First, rotate event */
+               /* Second, keydown event */
+#ifdef ROTATE_USING_X_CLIENT
+               ecore_event_handler_add(ECORE_X_EVENT_CLIENT_MESSAGE,__x_rotate_cb, (void *)id);
+#endif
+       }
+
+       return 0;
+}
+
+API int syspopup_reset(bundle *b)
+{
+       return X_syspopup_reset(b);
+}
+
diff --git a/wearable/test/CMakeLists.txt b/wearable/test/CMakeLists.txt
new file mode 100644 (file)
index 0000000..86f105d
--- /dev/null
@@ -0,0 +1,8 @@
+# Test executables
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${TEST_CFLAGS}")
+
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/syspopup-caller)
+add_executable(sp_test test.c) 
+target_link_libraries(sp_test syspopup_caller ${pkgs_LDFLAGS})
+INSTALL(TARGETS sp_test DESTINATION bin)
+
diff --git a/wearable/test/test.c b/wearable/test/test.c
new file mode 100755 (executable)
index 0000000..ea23627
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * syspopup
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@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.
+ *
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "syspopup_caller.h"
+
+void usage()
+{
+       printf("[usage] sp_test launch/destroy popup_name..."
+                               "(key1,val1,key2,val2,...)\n");
+}
+
+int main(int argc, char **argv)
+{
+       bundle *b;
+       int i;
+       int ret = 0;
+
+       if (argc < 2) {
+               usage();
+               return -1;
+       }
+
+       if (strcmp(argv[1], "launch") == 0) {
+               if ((argc < 3) || (argc % 2 == 0)) {
+                       usage();
+                       return -1;
+               }
+
+               b = bundle_create();
+               for (i = 3; i < argc; i = i + 2)
+                       bundle_add(b, argv[i], argv[i + 1]);
+               ret = syspopup_launch(argv[2], b);
+               bundle_free(b);
+               if(ret < 0) return -1;
+
+       } else if (strcmp(argv[1], "destroy") == 0) {
+               ret = syspopup_destroy_all();
+               if(ret < 0) return -1;
+       } else {
+               usage();
+       }
+
+       return 0;
+}
+