summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyuho Jo <kyuho.jo@samsung.com>2015-06-09 21:37:30 +0900
committerKyuho Jo <kyuho.jo@samsung.com>2015-06-09 21:37:30 +0900
commit053c4f8234de9bf598be7bc8dc5909173492b80b (patch)
treea2992a01272b91184453f45c97bc4e02db201571
parent39b80fc914e7eaa43ae7477e547d66ffc286a276 (diff)
downloadminicontrol-053c4f8234de9bf598be7bc8dc5909173492b80b.tar.gz
minicontrol-053c4f8234de9bf598be7bc8dc5909173492b80b.tar.bz2
minicontrol-053c4f8234de9bf598be7bc8dc5909173492b80b.zip
Change-Id: I73bf7ba6fb5a56a1c7b9a110a16596a83c7cf068 Signed-off-by: Kyuho Jo <kyuho.jo@samsung.com>
-rwxr-xr-xAUTHORS2
-rwxr-xr-xCMakeLists.txt8
-rw-r--r--LICENSE227
-rwxr-xr-xLICENSE.Flora206
-rwxr-xr-xNOTICE3
-rw-r--r--debian/changelog15
-rw-r--r--debian/compat1
-rw-r--r--debian/control25
-rw-r--r--debian/dirs2
-rw-r--r--debian/docs1
-rw-r--r--debian/libminicontrol-dev.install.in2
-rw-r--r--debian/libminicontrol.install.in1
-rw-r--r--debian/rules116
-rw-r--r--doc/doxygen.conf1781
-rw-r--r--doc/minicontrol_doc.h62
-rwxr-xr-xinclude/minicontrol-error.h38
-rwxr-xr-xinclude/minicontrol-internal.h72
-rwxr-xr-xinclude/minicontrol-log.h18
-rwxr-xr-xinclude/minicontrol-monitor.h57
-rw-r--r--include/minicontrol-provider-internal.h35
-rwxr-xr-xinclude/minicontrol-provider.h69
-rwxr-xr-xinclude/minicontrol-type.h118
-rw-r--r--include/minicontrol-viewer-internal.h15
-rwxr-xr-xinclude/minicontrol-viewer.h82
-rwxr-xr-xinclude/minicontrol.h13
-rw-r--r--minicontrol-handler.pc.in11
-rw-r--r--minicontrol.manifest5
-rw-r--r--packaging/minicontrol.changes7
-rw-r--r--packaging/minicontrol.manifest5
-rw-r--r--[-rwxr-xr-x]packaging/minicontrol.spec74
-rwxr-xr-xsrc/minicontrol-internal.c162
-rwxr-xr-xsrc/minicontrol-monitor.c249
-rwxr-xr-xsrc/minicontrol-provider.c410
-rwxr-xr-xsrc/minicontrol-viewer.c230
34 files changed, 3346 insertions, 776 deletions
diff --git a/AUTHORS b/AUTHORS
deleted file mode 100755
index 24aebc0..0000000
--- a/AUTHORS
+++ /dev/null
@@ -1,2 +0,0 @@
-youngsub ko <ys4610.ko at samsung dot com>
-seung taek jung <seungtaek.chung at samsung dot com>
diff --git a/CMakeLists.txt b/CMakeLists.txt
index caad8fb..be7811c 100755
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -4,7 +4,7 @@ PROJECT(minicontrol C)
SET(PREFIX ${CMAKE_INSTALL_PREFIX})
SET(EXEC_PREFIX "\${prefix}")
SET(PROJECT_NAME "${PROJECT_NAME}")
-SET(LIBDIR "\${exec_prefix}/lib")
+SET(LIBDIR ${LIB_INSTALL_DIR})
SET(INCLUDEDIR "\${prefix}/include/${PROJECT_NAME}")
SET(VERSION_MAJOR 0)
SET(VERSION "${VERSION_MAJOR}.0.1")
@@ -14,9 +14,12 @@ SET(CMAKE_SKIP_BUILD_RPATH true)
SET(INSTALL_HEADERS
minicontrol-error.h
minicontrol-type.h
+ minicontrol-internal.h
minicontrol-monitor.h
minicontrol-provider.h
+ minicontrol-provider-internal.h
minicontrol-viewer.h
+ minicontrol-viewer-internal.h
)
SET(SUBMODULES
@@ -34,13 +37,14 @@ pkg_check_modules(pkgs REQUIRED
ecore-evas
dbus-1
dbus-glib-1
+ bundle
)
FOREACH(flag ${pkgs_CFLAGS})
SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
ENDFOREACH(flag)
-SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fvisibility=hidden -g -Wall")
+SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fvisibility=hidden -g -Wall -fPIC ")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..8bc1c9e
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,227 @@
+Copyright (c) 2012 - 2015 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.
+
+-------------------------------------------------------------------------------
+Copyright (c) 2005-2010, Troy D. Hanson http://tpl.sourceforge.net
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
diff --git a/LICENSE.Flora b/LICENSE.Flora
deleted file mode 100755
index 571fe79..0000000
--- a/LICENSE.Flora
+++ /dev/null
@@ -1,206 +0,0 @@
-Flora License
-
-Version 1.1, April, 2013
-
-http://floralicense.org/license/
-
-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.
-
-"Tizen Certified Platform" shall mean a software platform that complies
-with the standards set forth in the Tizen Compliance Specification
-and passes the Tizen Compliance Tests as defined from time to time
-by the Tizen Technical Steering Group and certified by the Tizen
-Association or its designated agent.
-
-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
-solely as incorporated into a Tizen Certified Platform, 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 solely
-as incorporated into a Tizen Certified Platform 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 pursuant to the copyright license
-above, in any medium, with or without modifications, and in Source or
-Object form, provided that You meet the following conditions:
-
- 1. You must give any other recipients of the Work or Derivative Works
- a copy of this License; and
- 2. You must cause any modified files to carry prominent notices stating
- that You changed the files; and
- 3. 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
- 4. 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
- and your own copyright statement or terms and conditions do not conflict
- the conditions stated in the License including section 3.
-
-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 Flora License to your work
-
-To apply the Flora 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 Flora License, Version 1.1 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://floralicense.org/license/
-
- 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/NOTICE b/NOTICE
deleted file mode 100755
index 94d56df..0000000
--- a/NOTICE
+++ /dev/null
@@ -1,3 +0,0 @@
-Copyright (c) 2012 Samsung Electronics Co., Ltd. All rights reserved.
-Except as noted, this software is licensed under Flora License, Version 1.1
-Please, see the LICENSE.Flora file for Flora License, Version 1.1 terms and conditions.
diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 0000000..e1156cc
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,15 @@
+minicontrol (0.0.1-2) unstable; urgency=low
+
+ * apply minicontrol priority
+ * Git: slp/pkgs/m/minicontrol
+ * Tag: minicontrol_0.0.1-2
+
+ -- Jeonghoon Park <jh1979.park@samsung.com> Thu, 05 Apr 2012 12:12:49 +0900
+
+minicontrol (0.0.1-1) unstable; urgency=low
+
+ * Initial Release.
+ * Git: slp/pkgs/m/minicontrol
+ * Tag: minicontrol_0.0.1-1
+
+ -- Jeonghoon Park <jh1979.park@samsung.com> Mon, 27 Feb 2012 14:14:00 +0900
diff --git a/debian/compat b/debian/compat
new file mode 100644
index 0000000..7ed6ff8
--- /dev/null
+++ b/debian/compat
@@ -0,0 +1 @@
+5
diff --git a/debian/control b/debian/control
new file mode 100644
index 0000000..4fb4138
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,25 @@
+Source: minicontrol
+Section: libs
+Priority: optional
+Maintainer: Jeonghoon Park <jh1979.park@samsung.com>, Young-joo Park <yjoo93.park@samsung.com>
+Build-Depends: debhelper (>= 5), libecore-dev, libevas-dev, dlog-dev, libaul-1-dev, libelm-dev, libdbus-1-dev, libdbus-glib-1-dev
+Standards-Version: 3.7.2
+
+Package: libminicontrol
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Minicontrol supporting library (shared object)
+
+Package: libminicontrol-dev
+Section: libs
+Architecture: any
+Depends: libminicontrol (= ${Source-Version})
+Description: Minicontrol supporting library (development)
+
+Package: libminicontrol-dbg
+Section: debug
+Architecture: any
+Depends: ${misc:Depends}, libminicontrol (= ${Source-Version})
+Description: Minicontrol supporting library (unstripped)
+
diff --git a/debian/dirs b/debian/dirs
new file mode 100644
index 0000000..ca882bb
--- /dev/null
+++ b/debian/dirs
@@ -0,0 +1,2 @@
+usr/bin
+usr/sbin
diff --git a/debian/docs b/debian/docs
new file mode 100644
index 0000000..a0f0008
--- /dev/null
+++ b/debian/docs
@@ -0,0 +1 @@
+CMakeLists.txt
diff --git a/debian/libminicontrol-dev.install.in b/debian/libminicontrol-dev.install.in
new file mode 100644
index 0000000..1bc0c16
--- /dev/null
+++ b/debian/libminicontrol-dev.install.in
@@ -0,0 +1,2 @@
+@PREFIX@/include/@PROJECT_NAME@/*.h
+@PREFIX@/lib/pkgconfig/*.pc
diff --git a/debian/libminicontrol.install.in b/debian/libminicontrol.install.in
new file mode 100644
index 0000000..bf766f0
--- /dev/null
+++ b/debian/libminicontrol.install.in
@@ -0,0 +1 @@
+@PREFIX@/lib/*.so*
diff --git a/debian/rules b/debian/rules
new file mode 100644
index 0000000..a8ed3d6
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,116 @@
+#!/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 -Werror -Winline
+LDFLAGS ?=
+PREFIX ?= /usr
+DATADIR ?= /opt
+PROJECT_NAME ?= minicontrol
+
+BUILDDIR ?= $(CURDIR)/cmake-tmp
+
+ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
+ CFLAGS += -O0
+else
+ CFLAGS += -O2
+endif
+
+LDFLAGS += -Wl,--rpath=$(PREFIX)/lib -Wl,--as-needed -lm
+
+configure: configure-stamp
+configure-stamp:
+ dh_testdir
+ # Add here commands to configure the package.
+ mkdir -p $(BUILDDIR) && cd $(BUILDDIR) && 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 $(BUILDDIR) && $(MAKE)
+ #docbook-to-man debian/wavplayer.sgml > wavplayer.1
+
+ 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#@PROJECT_NAME@#$(PROJECT_NAME)#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 $(BUILDDIR)
+ #rm -rf CMakeCache.txt CMakeFiles cmake_install.cmake Makefile install_manifest.txt
+
+ for f in `find $(CURDIR)/debian/ -name "*.in"`; do \
+ rm -f $${f%.in}; \
+ done
+
+ dh_clean
+
+install: build
+ dh_testdir
+ dh_testroot
+ dh_clean -k
+ dh_installdirs
+
+ # Add here commands to install the package into debian/wavplayer.
+ cd $(BUILDDIR) && $(MAKE) DESTDIR=$(CURDIR)/debian/tmp install
+
+
+# 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=libminicontrol-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/doc/doxygen.conf b/doc/doxygen.conf
new file mode 100644
index 0000000..e071192
--- /dev/null
+++ b/doc/doxygen.conf
@@ -0,0 +1,1781 @@
+# Doxyfile 1.7.6.1
+
+# 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
+#---------------------------------------------------------------------------
+
+# This tag specifies the encoding used for all characters in the config file
+# that follow. The default is UTF-8 which is also the encoding used for all
+# text before the first occurrence of this tag. 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.
+
+DOXYFILE_ENCODING = UTF-8
+
+# The PROJECT_NAME tag is a single word (or sequence of words) that should
+# identify the project. Note that if you do not use Doxywizard you need
+# to put quotes around the project name if it contains spaces.
+
+PROJECT_NAME = "My Project"
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number.
+# This could be handy for archiving the generated documentation or
+# if some version control system is used.
+
+PROJECT_NUMBER =
+
+# Using the PROJECT_BRIEF tag one can provide an optional one line description
+# for a project that appears at the top of each page and should give viewer
+# a quick idea about the purpose of the project. Keep the description short.
+
+PROJECT_BRIEF =
+
+# With the PROJECT_LOGO tag one can specify an logo or icon that is
+# included in the documentation. The maximum height of the logo should not
+# exceed 55 pixels and the maximum width should not exceed 200 pixels.
+# Doxygen will copy the logo to the output directory.
+
+PROJECT_LOGO =
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
+# base path where the generated documentation will be put.
+# If a relative path is entered, it will be relative to the location
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY =
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
+# 4096 sub-directories (in 2 levels) under the output directory of each output
+# format and will distribute the generated files over these directories.
+# Enabling this option can be useful when feeding doxygen a huge amount of
+# source files, where putting all generated files in the same directory would
+# otherwise cause performance problems for the file system.
+
+CREATE_SUBDIRS = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# The default language is English, other supported languages are:
+# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
+# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,
+# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English
+# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian,
+# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak,
+# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
+
+OUTPUT_LANGUAGE = English
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
+# include brief member descriptions after the members that are listed in
+# the file and class documentation (similar to JavaDoc).
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
+# the brief description of a member or function before the detailed description.
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator
+# that is used to form the text in various listings. Each string
+# in this list, if found as the leading text of the brief description, will be
+# stripped from the text and the result after processing the whole list, is
+# used as the annotated text. Otherwise, the brief description is used as-is.
+# If left blank, the following values are used ("$name" is automatically
+# replaced with the name of the entity): "The $name class" "The $name widget"
+# "The $name file" "is" "provides" "specifies" "contains"
+# "represents" "a" "an" "the"
+
+ABBREVIATE_BRIEF =
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# Doxygen will generate a detailed section even if there is only a brief
+# description.
+
+ALWAYS_DETAILED_SEC = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
+# inherited members of a class in the documentation of that class as if those
+# members were ordinary class members. Constructors, destructors and assignment
+# operators of the base classes will not be shown.
+
+INLINE_INHERITED_MEMB = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
+# path before files name in the file list and in the header files. If set
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES = YES
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
+# can be used to strip a user-defined part of the path. Stripping is
+# only done if one of the specified strings matches the left-hand part of
+# the path. The tag can be used to show relative paths in the file list.
+# If left blank the directory from which doxygen is run is used as the
+# path to strip.
+
+STRIP_FROM_PATH =
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
+# the path mentioned in the documentation of a class, which tells
+# the reader which header file to include in order to use a class.
+# If left blank only the name of the header file containing the class
+# definition is used. Otherwise one should specify the include paths that
+# are normally passed to the compiler using the -I flag.
+
+STRIP_FROM_INC_PATH =
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
+# (but less readable) file names. This can be useful if your file system
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
+# will interpret the first line (until the first dot) of a JavaDoc-style
+# comment as the brief description. If set to NO, the JavaDoc
+# comments will behave just like regular Qt-style comments
+# (thus requiring an explicit @brief command for a brief description.)
+
+JAVADOC_AUTOBRIEF = NO
+
+# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
+# interpret the first line (until the first dot) of a Qt-style
+# comment as the brief description. If set to NO, the comments
+# will behave just like regular Qt-style comments (thus requiring
+# an explicit \brief command for a brief description.)
+
+QT_AUTOBRIEF = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
+# treat a multi-line C++ special comment block (i.e. a block of //! or ///
+# comments) as a brief description. This used to be the default behaviour.
+# The new default is to treat a multi-line C++ comment block as a detailed
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
+# member inherits the documentation from any documented member that it
+# re-implements.
+
+INHERIT_DOCS = YES
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
+# a new page for each member. If set to NO, the documentation of a member will
+# be part of the file/class/namespace that contains it.
+
+SEPARATE_MEMBER_PAGES = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab.
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE = 8
+
+# This tag can be used to specify a number of aliases that acts
+# as commands in the documentation. An alias has the form "name=value".
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to
+# put the command \sideeffect (or @sideeffect) in the documentation, which
+# will result in a user-defined paragraph with heading "Side Effects:".
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES =
+
+# This tag can be used to specify a number of word-keyword mappings (TCL only).
+# A mapping has the form "name=value". For example adding
+# "class=itcl::class" will allow you to use the command class in the
+# itcl::class meaning.
+
+TCL_SUBST =
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
+# sources only. Doxygen will then generate output that is more tailored for C.
+# For instance, some of the names that are used will be different. The list
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C = NO
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
+# sources only. Doxygen will then generate output that is more tailored for
+# Java. For instance, namespaces will be presented as packages, qualified
+# scopes will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA = NO
+
+# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
+# sources only. Doxygen will then generate output that is more tailored for
+# Fortran.
+
+OPTIMIZE_FOR_FORTRAN = NO
+
+# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
+# sources. Doxygen will then generate output that is tailored for
+# VHDL.
+
+OPTIMIZE_OUTPUT_VHDL = NO
+
+# Doxygen selects the parser to use depending on the extension of the files it
+# parses. With this tag you can assign which parser to use for a given extension.
+# Doxygen has a built-in mapping, but you can override or extend it using this
+# tag. The format is ext=language, where ext is a file extension, and language
+# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C,
+# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make
+# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C
+# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions
+# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.
+
+EXTENSION_MAPPING =
+
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
+# to include (a tag file for) the STL sources as input, then you should
+# set this tag to YES in order to let doxygen match functions declarations and
+# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
+# func(std::string) {}). This also makes the inheritance and collaboration
+# diagrams that involve STL classes more complete and accurate.
+
+BUILTIN_STL_SUPPORT = NO
+
+# If you use Microsoft's C++/CLI language, you should set this option to YES to
+# enable parsing support.
+
+CPP_CLI_SUPPORT = NO
+
+# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
+# Doxygen will parse them like normal C++ but will assume all classes use public
+# instead of private inheritance when no explicit protection keyword is present.
+
+SIP_SUPPORT = NO
+
+# For Microsoft's IDL there are propget and propput attributes to indicate getter
+# and setter methods for a property. Setting this option to YES (the default)
+# will make doxygen replace the get and set methods by a property in the
+# documentation. This will only work if the methods are indeed getting or
+# setting a simple type. If this is not the case, or you want to show the
+# methods anyway, you should set this option to NO.
+
+IDL_PROPERTY_SUPPORT = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES, then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC = NO
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
+# the same type (for instance a group of public functions) to be put as a
+# subgroup of that type (e.g. under the Public Functions section). Set it to
+# NO to prevent subgrouping. Alternatively, this can be done per class using
+# the \nosubgrouping command.
+
+SUBGROUPING = YES
+
+# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and
+# unions are shown inside the group in which they are included (e.g. using
+# @ingroup) instead of on a separate page (for HTML and Man pages) or
+# section (for LaTeX and RTF).
+
+INLINE_GROUPED_CLASSES = NO
+
+# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and
+# unions with only public data fields will be shown inline in the documentation
+# of the scope in which they are defined (i.e. file, namespace, or group
+# documentation), provided this scope is documented. If set to NO (the default),
+# structs, classes, and unions are shown on a separate page (for HTML and Man
+# pages) or section (for LaTeX and RTF).
+
+INLINE_SIMPLE_STRUCTS = NO
+
+# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
+# is documented as struct, union, or enum with the name of the typedef. So
+# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
+# with name TypeT. When disabled the typedef will appear as a member of a file,
+# namespace, or class. And the struct will be named TypeS. This can typically
+# be useful for C code in case the coding convention dictates that all compound
+# types are typedef'ed and only the typedef is referenced, never the tag name.
+
+TYPEDEF_HIDES_STRUCT = NO
+
+# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
+# determine which symbols to keep in memory and which to flush to disk.
+# When the cache is full, less often used symbols will be written to disk.
+# For small to medium size projects (<1000 input files) the default value is
+# probably good enough. For larger projects a too small cache size can cause
+# doxygen to be busy swapping symbols to and from disk most of the time
+# causing a significant performance penalty.
+# If the system has enough physical memory increasing the cache will improve the
+# performance by keeping more symbols in memory. Note that the value works on
+# a logarithmic scale so increasing the size by one will roughly double the
+# memory usage. The cache size is given by this formula:
+# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
+# corresponding to a cache size of 2^16 = 65536 symbols.
+
+SYMBOL_CACHE_SIZE = 0
+
+# Similar to the SYMBOL_CACHE_SIZE the size of the symbol lookup cache can be
+# set using LOOKUP_CACHE_SIZE. This cache is used to resolve symbols given
+# their name and scope. Since this can be an expensive process and often the
+# same symbol appear multiple times in the code, doxygen keeps a cache of
+# pre-resolved symbols. If the cache is too small doxygen will become slower.
+# If the cache is too large, memory is wasted. The cache size is given by this
+# formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range is 0..9, the default is 0,
+# corresponding to a cache size of 2^16 = 65536 symbols.
+
+LOOKUP_CACHE_SIZE = 0
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# documentation are documented, even if no documentation was available.
+# Private class members and static file members will be hidden unless
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL = NO
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
+# will be included in the documentation.
+
+EXTRACT_PRIVATE = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file
+# will be included in the documentation.
+
+EXTRACT_STATIC = NO
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
+# defined locally in source files will be included in the documentation.
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES = YES
+
+# This flag is only useful for Objective-C code. When set to YES local
+# methods, which are defined in the implementation section but not in
+# the interface are included in the documentation.
+# If set to NO (the default) only methods in the interface are included.
+
+EXTRACT_LOCAL_METHODS = NO
+
+# If this flag is set to YES, the members of anonymous namespaces will be
+# extracted and appear in the documentation as a namespace called
+# 'anonymous_namespace{file}', where file will be replaced with the base
+# name of the file that contains the anonymous namespace. By default
+# anonymous namespaces are hidden.
+
+EXTRACT_ANON_NSPACES = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
+# undocumented members of documented classes, files or namespaces.
+# If set to NO (the default) these members will be included in the
+# various overviews, but no documentation section is generated.
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy.
+# If set to NO (the default) these classes will be included in the various
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
+# friend (class|struct|union) declarations.
+# If set to NO (the default) these declarations will be included in the
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
+# documentation blocks found inside the body of a function.
+# If set to NO (the default) these blocks will be appended to the
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS = NO
+
+# The INTERNAL_DOCS tag determines if documentation
+# that is typed after a \internal command is included. If the tag is set
+# to NO (the default) then the documentation will be excluded.
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
+# file names in lower-case letters. If set to YES upper-case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
+# and Mac users are advised to set this option to NO.
+
+CASE_SENSE_NAMES = YES
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
+# will show members with their full class and namespace scopes in the
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
+# will put a list of the files that are included by a file in the documentation
+# of that file.
+
+SHOW_INCLUDE_FILES = YES
+
+# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen
+# will list include files with double quotes in the documentation
+# rather than with sharp brackets.
+
+FORCE_LOCAL_INCLUDES = NO
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
+# is inserted in the documentation for inline members.
+
+INLINE_INFO = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
+# will sort the (detailed) documentation of file and class members
+# alphabetically by member name. If set to NO the members will appear in
+# declaration order.
+
+SORT_MEMBER_DOCS = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
+# brief documentation of file, namespace and class members alphabetically
+# by member name. If set to NO (the default) the members will appear in
+# declaration order.
+
+SORT_BRIEF_DOCS = NO
+
+# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen
+# will sort the (brief and detailed) documentation of class members so that
+# constructors and destructors are listed first. If set to NO (the default)
+# the constructors will appear in the respective orders defined by
+# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS.
+# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO
+# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.
+
+SORT_MEMBERS_CTORS_1ST = NO
+
+# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
+# hierarchy of group names into alphabetical order. If set to NO (the default)
+# the group names will appear in their defined order.
+
+SORT_GROUP_NAMES = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
+# sorted by fully-qualified names, including namespaces. If set to
+# NO (the default), the class list will be sorted only by class name,
+# not including the namespace part.
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the
+# alphabetical list.
+
+SORT_BY_SCOPE_NAME = NO
+
+# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to
+# do proper type resolution of all parameters of a function it will reject a
+# match between the prototype and the implementation of a member function even
+# if there is only one candidate or it is obvious which candidate to choose
+# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen
+# will still accept a match between prototype and implementation in such cases.
+
+STRICT_PROTO_MATCHING = NO
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or
+# disable (NO) the todo list. This list is created by putting \todo
+# commands in the documentation.
+
+GENERATE_TODOLIST = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or
+# disable (NO) the test list. This list is created by putting \test
+# commands in the documentation.
+
+GENERATE_TESTLIST = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or
+# disable (NO) the bug list. This list is created by putting \bug
+# commands in the documentation.
+
+GENERATE_BUGLIST = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
+# disable (NO) the deprecated list. This list is created by putting
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS =
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
+# the initial value of a variable or macro consists of for it to appear in
+# the documentation. If the initializer consists of more lines than specified
+# here it will be hidden. Use a value of 0 to hide initializers completely.
+# The appearance of the initializer of individual variables and macros in the
+# documentation can be controlled using \showinitializer or \hideinitializer
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
+# at the bottom of the documentation of classes and structs. If set to YES the
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES = YES
+
+# If the sources in your project are distributed over multiple directories
+# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
+# in the documentation. The default is NO.
+
+SHOW_DIRECTORIES = NO
+
+# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
+# This will remove the Files entry from the Quick Index and from the
+# Folder Tree View (if specified). The default is YES.
+
+SHOW_FILES = YES
+
+# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
+# Namespaces page.
+# This will remove the Namespaces entry from the Quick Index
+# and from the Folder Tree View (if specified). The default is YES.
+
+SHOW_NAMESPACES = YES
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that
+# doxygen should invoke to get the current version for each file (typically from
+# the version control system). Doxygen will invoke the program by executing (via
+# popen()) the command <command> <input-file>, where <command> is the value of
+# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
+# provided by doxygen. Whatever the program writes to standard output
+# is used as the file version. See the manual for examples.
+
+FILE_VERSION_FILTER =
+
+# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
+# by doxygen. The layout file controls the global structure of the generated
+# output files in an output format independent way. The create the layout file
+# that represents doxygen's defaults, run doxygen with the -l option.
+# You can optionally specify a file name after the option, if omitted
+# DoxygenLayout.xml will be used as the name of the layout file.
+
+LAYOUT_FILE =
+
+# The CITE_BIB_FILES tag can be used to specify one or more bib files
+# containing the references data. This must be a list of .bib files. The
+# .bib extension is automatically appended if omitted. Using this command
+# requires the bibtex tool to be installed. See also
+# http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style
+# of the bibliography can be controlled using LATEX_BIB_STYLE. To use this
+# feature you need bibtex and perl available in the search path.
+
+CITE_BIB_FILES =
+
+#---------------------------------------------------------------------------
+# 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
+
+# The WARN_NO_PARAMDOC option can be enabled 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 = ./minicontrol_doc.h ../include/minicontrol-error.h ../include/minicontrol.h ../include/minicontrol-monitor.h ../include/minicontrol-provider.h ../include/minicontrol-type.h ../include/minicontrol-viewer.h
+
+# 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
+
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank the following patterns are tested:
+# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh
+# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py
+# *.f90 *.f *.for *.vhd *.vhdl
+
+FILE_PATTERNS =
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories
+# should be searched for input files as well. Possible values are YES and NO.
+# If left blank NO is used.
+
+RECURSIVE = NO
+
+# The EXCLUDE tag can be used to specify files and/or directories that should be
+# excluded from the INPUT source files. This way you can easily exclude a
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+# Note that relative paths are relative to the directory from which doxygen is
+# run.
+
+EXCLUDE =
+
+# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
+# directories that are symbolic links (a Unix file system feature) are excluded
+# from the input.
+
+EXCLUDE_SYMLINKS = NO
+
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories. Note that the wildcards are matched
+# against the file with absolute path, so to exclude all test directories
+# for example use the pattern */test/*
+
+EXCLUDE_PATTERNS =
+
+# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
+# (namespaces, classes, functions, etc.) that should be excluded from the
+# output. The symbol name can be a fully qualified name, a word, or if the
+# wildcard * is used, a substring. Examples: ANamespace, AClass,
+# AClass::ANamespace, ANamespace::*Test
+
+EXCLUDE_SYMBOLS =
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or
+# directories that contain example code fragments that are included (see
+# the \include command).
+
+EXAMPLE_PATH =
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank all files are included.
+
+EXAMPLE_PATTERNS =
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+# searched for input files to be used with the \include or \dontinclude
+# commands irrespective of the value of the RECURSIVE tag.
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or
+# directories that contain image that are included in the documentation (see
+# the \image command).
+
+IMAGE_PATH =
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command <filter> <input-file>, where <filter>
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
+# input file. Doxygen will then use the output that the filter program writes
+# to standard output.
+# If FILTER_PATTERNS is specified, this tag will be
+# ignored.
+
+INPUT_FILTER =
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
+# basis.
+# Doxygen will compare the file name with each pattern and apply the
+# filter if there is a match.
+# The filters are a list of the form:
+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
+# info on how filters are used. If FILTER_PATTERNS is empty or if
+# non of the patterns match the file name, INPUT_FILTER is applied.
+
+FILTER_PATTERNS =
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER) will be used to filter the input files when producing source
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES = NO
+
+# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
+# pattern. A pattern will override the setting for FILTER_PATTERN (if any)
+# and it is also possible to disable source filtering for a specific pattern
+# using *.ext= (so without naming a filter). This option only has effect when
+# FILTER_SOURCE_FILES is enabled.
+
+FILTER_SOURCE_PATTERNS =
+
+#---------------------------------------------------------------------------
+# 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
+# then for each documented function all documented
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = NO
+
+# If the REFERENCES_RELATION tag is set to YES
+# then for each documented function all documented entities
+# called/used by that function will be listed.
+
+REFERENCES_RELATION = NO
+
+# 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 documentation.
+
+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
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX = 5
+
+# In case all classes in a project start with a common prefix, all
+# classes will be put under the same header in the alphabetical index.
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
+# should be ignored while generating the index headers.
+
+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. Note that when using a custom header you are responsible
+# for the proper inclusion of any scripts and style sheets that doxygen
+# needs, which is dependent on the configuration options used.
+# It is advised to generate a default header using "doxygen -w html
+# header.html footer.html stylesheet.css YourConfigFile" and then modify
+# that header. Note that the header is subject to change so you typically
+# have to redo this when upgrading to a newer version of doxygen or when
+# changing the value of configuration settings such as GENERATE_TREEVIEW!
+
+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
+# style sheet in the HTML output directory as well, or it will be erased!
+
+HTML_STYLESHEET =
+
+# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
+# other source files which should be copied to the HTML output directory. Note
+# that these files will be copied to the base HTML output directory. Use the
+# $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
+# files. In the HTML_STYLESHEET file, use the file name only. Also note that
+# the files will be copied as-is; there are no commands or markers available.
+
+HTML_EXTRA_FILES =
+
+# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
+# Doxygen will adjust the colors in the style sheet and background images
+# according to this color. Hue is specified as an angle on a colorwheel,
+# see http://en.wikipedia.org/wiki/Hue for more information.
+# For instance the value 0 represents red, 60 is yellow, 120 is green,
+# 180 is cyan, 240 is blue, 300 purple, and 360 is red again.
+# The allowed range is 0 to 359.
+
+HTML_COLORSTYLE_HUE = 220
+
+# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of
+# the colors in the HTML output. For a value of 0 the output will use
+# grayscales only. A value of 255 will produce the most vivid colors.
+
+HTML_COLORSTYLE_SAT = 100
+
+# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to
+# the luminance component of the colors in the HTML output. Values below
+# 100 gradually make the output lighter, whereas values above 100 make
+# the output darker. The value divided by 100 is the actual gamma applied,
+# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2,
+# and 100 does not change the gamma.
+
+HTML_COLORSTYLE_GAMMA = 80
+
+# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
+# page will contain the date and time when the page was generated. Setting
+# this to NO can help when comparing the output of multiple runs.
+
+HTML_TIMESTAMP = YES
+
+# 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 HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
+# documentation will contain sections that can be hidden and shown after the
+# page has loaded. For this to work a browser that supports
+# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox
+# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
+
+HTML_DYNAMIC_SECTIONS = NO
+
+# If the GENERATE_DOCSET tag is set to YES, additional index files
+# will be generated that can be used as input for Apple's Xcode 3
+# integrated development environment, introduced with OSX 10.5 (Leopard).
+# To create a documentation set, doxygen will generate a Makefile in the
+# HTML output directory. Running make will produce the docset in that
+# directory and running "make install" will install the docset in
+# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
+# it at startup.
+# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
+# for more information.
+
+GENERATE_DOCSET = NO
+
+# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
+# feed. A documentation feed provides an umbrella under which multiple
+# documentation sets from a single provider (such as a company or product suite)
+# can be grouped.
+
+DOCSET_FEEDNAME = "Doxygen generated docs"
+
+# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
+# should uniquely identify the documentation set bundle. This should be a
+# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
+# will append .docset to the name.
+
+DOCSET_BUNDLE_ID = org.doxygen.Project
+
+# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify
+# the documentation publisher. This should be a reverse domain-name style
+# string, e.g. com.mycompany.MyDocSet.documentation.
+
+DOCSET_PUBLISHER_ID = org.doxygen.Publisher
+
+# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher.
+
+DOCSET_PUBLISHER_NAME = Publisher
+
+# 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 compiled HTML help file (.chm)
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP = NO
+
+# 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 CHM_INDEX_ENCODING
+# is used to encode HtmlHelp index (hhk), content (hhc) and project file
+# content.
+
+CHM_INDEX_ENCODING =
+
+# 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
+
+# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
+# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated
+# that can be used as input for Qt's qhelpgenerator to generate a
+# Qt Compressed Help (.qch) of the generated HTML documentation.
+
+GENERATE_QHP = NO
+
+# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
+# be used to specify the file name of the resulting .qch file.
+# The path specified is relative to the HTML output folder.
+
+QCH_FILE =
+
+# The QHP_NAMESPACE tag specifies the namespace to use when generating
+# Qt Help Project output. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#namespace
+
+QHP_NAMESPACE = org.doxygen.Project
+
+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
+# Qt Help Project output. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#virtual-folders
+
+QHP_VIRTUAL_FOLDER = doc
+
+# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to
+# add. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#custom-filters
+
+QHP_CUST_FILTER_NAME =
+
+# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the
+# custom filter to add. For more information please see
+# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">
+# Qt Help Project / Custom Filters</a>.
+
+QHP_CUST_FILTER_ATTRS =
+
+# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
+# project's
+# filter section matches.
+# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">
+# Qt Help Project / Filter Attributes</a>.
+
+QHP_SECT_FILTER_ATTRS =
+
+# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
+# be used to specify the location of Qt's qhelpgenerator.
+# If non-empty doxygen will try to run qhelpgenerator on the generated
+# .qhp file.
+
+QHG_LOCATION =
+
+# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files
+# will be generated, which together with the HTML files, form an Eclipse help
+# plugin. To install this plugin and make it available under the help contents
+# menu in Eclipse, the contents of the directory containing the HTML and XML
+# files needs to be copied into the plugins directory of eclipse. The name of
+# the directory within the plugins directory should be the same as
+# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before
+# the help appears.
+
+GENERATE_ECLIPSEHELP = NO
+
+# A unique identifier for the eclipse help plugin. When installing the plugin
+# the directory name containing the HTML and XML files should also have
+# this name.
+
+ECLIPSE_DOC_ID = org.doxygen.Project
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs)
+# at top of each HTML page. The value NO (the default) enables the index and
+# the value YES disables it. Since the tabs have the same information as the
+# navigation tree you can set this option to NO if you already set
+# GENERATE_TREEVIEW to YES.
+
+DISABLE_INDEX = NO
+
+# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
+# structure should be generated to display hierarchical information.
+# If the tag value 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 (i.e. any modern browser).
+# Windows users are probably better off using the HTML help feature.
+# Since the tree basically has the same information as the tab index you
+# could consider to set DISABLE_INDEX to NO when enabling this option.
+
+GENERATE_TREEVIEW = NO
+
+# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values
+# (range [0,1..20]) that doxygen will group on one line in the generated HTML
+# documentation. Note that a value of 0 will completely suppress the enum
+# values from appearing in the overview section.
+
+ENUM_VALUES_PER_LINE = 4
+
+# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories,
+# and Class Hierarchy pages using a tree view instead of an ordered list.
+
+USE_INLINE_TREES = NO
+
+# 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 = 250
+
+# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open
+# links to external symbols imported via tag files in a separate window.
+
+EXT_LINKS_IN_WINDOW = NO
+
+# Use this tag to change the font size of Latex formulas included
+# as images in the HTML documentation. The default is 10. Note that
+# when you change the font size after a successful doxygen run you need
+# to manually remove any form_*.png images from the HTML output directory
+# to force them to be regenerated.
+
+FORMULA_FONTSIZE = 10
+
+# Use the FORMULA_TRANPARENT tag to determine whether or not the images
+# generated for formulas are transparent PNGs. Transparent PNGs are
+# not supported properly for IE 6.0, but are supported on all modern browsers.
+# Note that when changing this option you need to delete any form_*.png files
+# in the HTML output before the changes have effect.
+
+FORMULA_TRANSPARENT = YES
+
+# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax
+# (see http://www.mathjax.org) which uses client side Javascript for the
+# rendering instead of using prerendered bitmaps. Use this if you do not
+# have LaTeX installed or if you want to formulas look prettier in the HTML
+# output. When enabled you also need to install MathJax separately and
+# configure the path to it using the MATHJAX_RELPATH option.
+
+USE_MATHJAX = NO
+
+# When MathJax is enabled you need to specify the location relative to the
+# HTML output directory using the MATHJAX_RELPATH option. The destination
+# directory should contain the MathJax.js script. For instance, if the mathjax
+# directory is located at the same level as the HTML output directory, then
+# MATHJAX_RELPATH should be ../mathjax. The default value points to the
+# mathjax.org site, so you can quickly see the result without installing
+# MathJax, but it is strongly recommended to install a local copy of MathJax
+# before deployment.
+
+MATHJAX_RELPATH = http://www.mathjax.org/mathjax
+
+# The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension
+# names that should be enabled during MathJax rendering.
+
+MATHJAX_EXTENSIONS =
+
+# When the SEARCHENGINE tag is enabled doxygen will generate a search box
+# for the HTML output. The underlying search engine uses javascript
+# and DHTML and should work on any modern browser. Note that when using
+# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets
+# (GENERATE_DOCSET) there is already a search function so this one should
+# typically be disabled. For large projects the javascript based search engine
+# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution.
+
+SEARCHENGINE = YES
+
+# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
+# implemented using a PHP enabled web server instead of at the web client
+# using Javascript. Doxygen will generate the search PHP script and index
+# file to put on the web server. The advantage of the server
+# based approach is that it scales better to large projects and allows
+# full text search. The disadvantages are that it is more difficult to setup
+# and does not have live searching capabilities.
+
+SERVER_BASED_SEARCH = NO
+
+#---------------------------------------------------------------------------
+# 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 = YES
+
+# 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.
+# Note that when enabling USE_PDFLATEX this option is only used for
+# generating bitmaps for formulas in the HTML output, but not in the
+# Makefile that is written to the output directory.
+
+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, letter, legal and
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE = a4
+
+# 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 =
+
+# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for
+# the generated latex document. The footer should contain everything after
+# the last chapter. If it is left blank doxygen will generate a
+# standard footer. Notice: only use this tag if you know what you are doing!
+
+LATEX_FOOTER =
+
+# 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 = YES
+
+# 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 = YES
+
+# 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
+
+# If LATEX_SOURCE_CODE is set to YES then doxygen will include
+# source code with syntax highlighting in the LaTeX output.
+# Note that which sources are shown also depends on other settings
+# such as SOURCE_BROWSER.
+
+LATEX_SOURCE_CODE = NO
+
+# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
+# bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See
+# http://en.wikipedia.org/wiki/BibTeX for more info.
+
+LATEX_BIB_STYLE = plain
+
+#---------------------------------------------------------------------------
+# 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 style sheet 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 = NO
+
+# 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
+# pointed to by INCLUDE_PATH will be searched when 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 that
+# overrules the definition found in the source code.
+
+EXPAND_AS_DEFINED =
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
+# doxygen's preprocessor will remove all references to function-like macros
+# that are alone on a line, have an all uppercase name, and do not end with a
+# semicolon, because these 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 also works with HAVE_DOT disabled, but it is recommended to
+# install and use dot, since it yields more powerful graphs.
+
+CLASS_DIAGRAMS = YES
+
+# 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
+
+# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is
+# allowed to run in parallel. When set to 0 (the default) doxygen will
+# base this on the number of processors available in the system. You can set it
+# explicitly to a value larger than 0 to get control over the balance
+# between CPU load and processing speed.
+
+DOT_NUM_THREADS = 0
+
+# By default doxygen will use the Helvetica font for all dot files that
+# doxygen generates. When you want a differently looking font you can specify
+# the font name using DOT_FONTNAME. You need to make sure dot is able to find
+# the font, which can be done by putting it in a standard location or by setting
+# the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the
+# directory containing the font.
+
+DOT_FONTNAME = Helvetica
+
+# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
+# The default size is 10pt.
+
+DOT_FONTSIZE = 10
+
+# By default doxygen will tell dot to use the Helvetica font.
+# If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to
+# set the path where dot can find it.
+
+DOT_FONTPATH =
+
+# 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
+# CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH = YES
+
+# 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 = YES
+
+# 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 = YES
+
+# 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 = YES
+
+# 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 = YES
+
+# If the CALL_GRAPH and HAVE_DOT options 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 generate a graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY = YES
+
+# 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 = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
+# generated by dot. Possible values are svg, png, jpg, or gif.
+# If left blank png will be used. If you choose svg you need to set
+# HTML_FILE_EXTENSION to xhtml in order to make the SVG files
+# visible in IE 9+ (other browsers do not have this requirement).
+
+DOT_IMAGE_FORMAT = png
+
+# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
+# enable generation of interactive SVG images that allow zooming and panning.
+# Note that this requires a modern browser other than Internet Explorer.
+# Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you
+# need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files
+# visible. Older versions of IE do not have SVG support.
+
+INTERACTIVE_SVG = NO
+
+# 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 MSCFILE_DIRS tag can be used to specify one or more directories that
+# contain msc files that are included in the documentation (see the
+# \mscfile command).
+
+MSCFILE_DIRS =
+
+# The 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 if the
+# number of direct children of the root node in a graph is already larger than
+# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
+# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
+
+DOT_GRAPH_MAX_NODES = 50
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
+# graphs generated by dot. A depth value of 3 means that only nodes reachable
+# from the root by following a path via at most 3 edges will be shown. Nodes
+# that lay further from the root node will be omitted. Note that setting this
+# option to 1 or 2 may greatly reduce the computation time needed for large
+# code bases. Also note that the size of a graph can be further restricted by
+# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
+
+MAX_DOT_GRAPH_DEPTH = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
+# background. This is disabled by default, because dot on Windows does not
+# seem to support this out of the box. 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 = YES
+
+# 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 = YES
+
+# 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 = YES
diff --git a/doc/minicontrol_doc.h b/doc/minicontrol_doc.h
new file mode 100644
index 0000000..693235f
--- /dev/null
+++ b/doc/minicontrol_doc.h
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2013-2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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.
+ */
+
+/**
+ *
+ * @defgroup MINICONTROL_LIBRARY Minicontrol
+ * @ingroup CAPI_UI_FRAMEWORK
+ *
+ * @section MINICONTROL_LIBRARY_OVERVIEW Overview
+ * <table>
+ * <tr>
+ * <th>API</th>
+ * <th>Description</th>
+ * </tr>
+ * <tr>
+ * <td>@ref MINICONTROL_PROVIDER_MODULE </td>
+ * <td>Provides functions for creating EFL socket window. Application developers can make a minicontrol by composing ELF objects on this socket window</td>
+ * </tr>
+ * <tr>
+ * <td>@ref MINICONTROL_VIEWER_MODULE </td>
+ * <td>Provides functions for displaying EFL socket window.<br>
+ * minicontrol holders calls this functions to attach minicontrols on UI area.</td>
+ * </tr>
+ * </table>
+ */
+
+/**
+ * @defgroup MINICONTROL_PROVIDER_MODULE Provider
+ * @brief Minicontrol Provider APIs
+ * @ingroup MINICONTROL_LIBRARY
+ *
+ * @section MINICONTROL_PROVIDER_MODULE_HEADER Required Header
+ * \#include <minicontrol-provider.h>
+ * @section MINICONTROL_PROVIDER_MODULE_OVERVIEW Overview
+ * It provides functions for creating EFL socket window.
+ *
+ */
+
+/**
+ * @defgroup MINICONTROL_VIEWER_MODULE Viewer
+ * @brief Minicontrol Viewer APIs
+ * @ingroup MINICONTROL_LIBRARY
+ *
+ * @section MINICONTROL_VIEWER_MODULE_HEADER Required Header
+ * \#include <minicontrol-viewer.h>
+ * @section MINICONTROL_VIEWER_MODULE_OVERVIEW Overview
+ * It provides functions for displaying EFL socket window
+ *
+ */
diff --git a/include/minicontrol-error.h b/include/minicontrol-error.h
index 0f55862..ffa7d4c 100755
--- a/include/minicontrol-error.h
+++ b/include/minicontrol-error.h
@@ -1,14 +1,14 @@
/*
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Copyright (c) 2013-2015 Samsung Electronics Co., Ltd All Rights Reserved
*
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * 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://floralicense.org/license/
+ * 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,
+ * 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.
@@ -17,26 +17,36 @@
#ifndef _MINICTRL_ERROR_H_
#define _MINICTRL_ERROR_H_
+#include <tizen_error.h>
+
/**
- * @defgroup MINICONTROL_LIBRARY_ERROR_TYPE minicontrol monitor error type
- * @brief minicontrol library error type
+ * @file minicontrol-error.h
+ * @brief Minicontrol library error type.
*/
/**
- * @addtogroup MINICONTROL_LIBRARY_ERROR_TYPE
+ * @addtogroup MINICONTROL_LIBRARY
* @{
*/
/**
- * @breief Enumeration describing error code of minicontrol library
+ * @brief Enumeration for describing error code of minicontrol library.
+ * @since_tizen 2.4
*/
typedef enum _minicontrol_error {
- MINICONTROL_ERROR_NONE = 0,
- MINICONTROL_ERROR_INVALID_PARAMETER = -1,
- MINICONTROL_ERROR_OUT_OF_MEMORY = -2,
- MINICONTROL_ERROR_DBUS = -3,
- MINICONTROL_ERROR_UNKNOWN = -100,
-}minicontrol_error_e;
+ MINICONTROL_ERROR_NONE = TIZEN_ERROR_NONE, /**< MiniControl error none */
+ MINICONTROL_ERROR_INVALID_PARAMETER = TIZEN_ERROR_INVALID_PARAMETER, /**< Invalid parameter */
+ MINICONTROL_ERROR_OUT_OF_MEMORY = TIZEN_ERROR_OUT_OF_MEMORY, /**< Out of memory */
+ MINICONTROL_ERROR_PERMISSION_DENIED = TIZEN_ERROR_PERMISSION_DENIED, /**< Permission denied */
+ MINICONTROL_ERROR_IPC_FAILURE = TIZEN_ERROR_MINICONTROL | 0x02, /**< IPC error */
+ MINICONTROL_ERROR_NOT_SUPPORTED = TIZEN_ERROR_NOT_SUPPORTED, /**< This function is not supported */
+ MINICONTROL_ERROR_ELM_FAILURE = TIZEN_ERROR_MINICONTROL | 0x03, /**< Some error occurred when creating a minicontrol window */
+ MINICONTROL_ERROR_UNKNOWN = TIZEN_ERROR_UNKNOWN, /**< Unknown error */
+} minicontrol_error_e;
+
+/**
+ * @}
+ */
#endif /* _MINICTRL_ERROR_H_ */
diff --git a/include/minicontrol-internal.h b/include/minicontrol-internal.h
index f67fd53..a41c217 100755
--- a/include/minicontrol-internal.h
+++ b/include/minicontrol-internal.h
@@ -1,14 +1,14 @@
/*
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Copyright (c) 2013-2015 Samsung Electronics Co., Ltd All Rights Reserved
*
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * 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://floralicense.org/license/
+ * 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,
+ * 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.
@@ -18,23 +18,68 @@
#define _MINICTRL_INTERNAL_H_
#include <dbus/dbus.h>
+#include <sys/types.h>
+#include <unistd.h>
+#include <bundle.h>
#include "minicontrol-type.h"
#ifndef EXPORT_API
#define EXPORT_API __attribute__ ((visibility("default")))
#endif /* EXPORT_API */
-#define MINICTRL_DBUS_SIG_START "minicontrol_start"
-#define MINICTRL_DBUS_SIG_STOP "minicontrol_stop"
-#define MINICTRL_DBUS_SIG_RESIZE "minicontrol_resize"
#define MINICTRL_DBUS_SIG_RUNNING_REQ "minicontrol_running_request"
-#define MINICTRL_DBUS_SIG_REQUEST "minicontrol_request"
+
+#define MINICTRL_DBUS_SIG_TO_PROVIDER "minicontrol_signal_to_provider"
+#define MINICTRL_DBUS_SIG_TO_VIEWER "minicontrol_signal_to_viewer"
+
+#define BUNDLE_BUFFER_LENGTH 100
+
+/**
+ * @brief Enumeration for describing type of dbus.
+ */
+
+enum _minictrl_PROC_DBUS_TYPE {
+ MINICONTROL_DBUS_PROC_EXCLUDE, /**< Request to exclude from the unfreezing process list */
+ MINICONTROL_DBUS_PROC_INCLUDE, /**< Request to include to the unfreezing process list */
+};
+
+/**
+ * @brief Enumeration for describing type of actions allowed to inhouse apps.
+ * @since_tizen 2.4
+ */
+typedef enum {
+ MINICONTROL_REQ_NONE = 0,
+ MINICONTROL_REQ_HIDE_VIEWER = 100, /**< Requests that the minicontrol viewer(s) close the provider's minicontrol */
+ MINICONTROL_REQ_FREEZE_SCROLL_VIEWER, /**< Requests that the minicontrol viewer(s) freeze its window scroll */
+ MINICONTROL_REQ_UNFREEZE_SCROLL_VIEWER, /**< Requests that the minicontrol viewer(s) unfreeze its window scroll */
+ MINICONTROL_REQ_REPORT_VIEWER_ANGLE, /**< Requests the current angle of the minicontrol viewer */
+ MINICONTROL_REQ_ROTATE_PROVIDER = 200, /**< Requests that the minicontrol provider rotate the provider's minicontrol */
+} minicontrol_request_e;
+
+/**
+ * @brief Enumeration for describing priority of a minicontrol provider.
+ * @since_tizen 2.4
+ */
+typedef enum {
+ MINICONTROL_PRIORITY_TOP = 1000, /**< Top priority */
+ MINICONTROL_PRIORITY_MIDDLE = 100, /**< Middle priority */
+ MINICONTROL_PRIORITY_LOW = 1, /**< Low priority */
+} minicontrol_priority_e;
+
+/**
+ * @brief Enumeration for describing type of events originated by a minicontrol provider.
+ * @since_tizen 2.4
+ */
+typedef enum _minicontrol_action {
+ MINICONTROL_ACTION_START = 0, /**< A minicontrol object is created */
+ MINICONTROL_ACTION_STOP, /**< A minicontrol object is deleted */
+ MINICONTROL_ACTION_RESIZE, /**< A minicontrol object is resized */
+ MINICONTROL_ACTION_REQUEST, /**< the viewer of the minicontrol object is asked to do something */
+} minicontrol_action_e;
typedef struct _minictrl_sig_handle minictrl_sig_handle;
-int _minictrl_provider_message_send(const char *sig_name, const char *svr_name,
- unsigned int witdh, unsigned int height,
- minicontrol_priority_e priority);
+int _minictrl_provider_message_send(int event, const char *minicontrol_name, unsigned int witdh, unsigned int height, minicontrol_priority_e priority);
int _minictrl_viewer_req_message_send(void);
@@ -44,5 +89,10 @@ minictrl_sig_handle *_minictrl_dbus_sig_handle_attach(const char *signal,
void _minictrl_dbus_sig_handle_dettach(minictrl_sig_handle *handle);
+int _minictrl_provider_proc_send(int type);
+
+/* new */
+int _minictrl_send_event(const char *signal_name, const char *provider_app_id, int event, bundle *signal_arg);
+
#endif /* _MINICTRL_INTERNAL_H_ */
diff --git a/include/minicontrol-log.h b/include/minicontrol-log.h
index 88bf64f..b11cf88 100755
--- a/include/minicontrol-log.h
+++ b/include/minicontrol-log.h
@@ -1,14 +1,14 @@
/*
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Copyright (c) 2013-2015 Samsung Electronics Co., Ltd All Rights Reserved
*
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * 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://floralicense.org/license/
+ * 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,
+ * 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.
@@ -27,25 +27,25 @@
#undef LOG_TAG
#endif
-#define LOG_TAG "libminicontrol"
+#define LOG_TAG "MINICONTROL"
#define DBG(fmt , args...) \
do{ \
- LOGD("[%s : %d] "fmt"\n",__func__,__LINE__,##args ); \
+ SECURE_LOGD("[%s : %d] "fmt"\n",__func__,__LINE__,##args ); \
} while(0)
#define INFO(fmt , args...) \
do{ \
- LOGI("[%s : %d] "fmt"\n",__func__,__LINE__,##args ); \
+ SECURE_LOGI("[%s : %d] "fmt"\n",__func__,__LINE__,##args ); \
} while(0)
#define WARN(fmt , args...) \
do{ \
- LOGI("[%s : %d] "fmt"\n",__func__,__LINE__,##args ); \
+ SECURE_LOGW("[%s : %d] "fmt"\n",__func__,__LINE__,##args ); \
} while(0)
#define ERR(fmt , args...) \
do{ \
- LOGI("[%s : %d] "fmt"\n",__func__,__LINE__,##args ); \
+ SECURE_LOGE("[%s : %d] "fmt"\n",__func__,__LINE__,##args ); \
} while(0)
#else /* MINICTRL_USE_DLOG */
diff --git a/include/minicontrol-monitor.h b/include/minicontrol-monitor.h
index 57bc0a5..404dd9e 100755
--- a/include/minicontrol-monitor.h
+++ b/include/minicontrol-monitor.h
@@ -1,14 +1,14 @@
/*
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Copyright (c) 2013-2015 Samsung Electronics Co., Ltd All Rights Reserved
*
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * 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://floralicense.org/license/
+ * 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,
+ * 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.
@@ -19,39 +19,12 @@
#include <minicontrol-error.h>
#include <minicontrol-type.h>
+#include <minicontrol-internal.h>
#ifdef __cplusplus
extern "C" {
#endif
-/**
- * @defgroup MINICONTROL_MONITOR_LIBRARY minicontrol monitor library
- * @brief This minicontrol monitor library used to manage events triggered by minicontrol provider
- */
-
-/**
- * @ingroup MINICONTROL_MONITOR_LIBRARY
- * @defgroup MINICONTROL_MONITOR_LIBRARY_TYPE minicontrol monitor library type
- * @brief minicontrol monitor library type
- */
-
-/**
- * @addtogroup MINICONTROL_MONITOR_LIBRARY_TYPE
- * @{
- */
-
- /**
- * @brief Called when event is triggered
- * @param[in] action The type of fired event
- * @param[in] name The name of provider
- * @param[in] width The width of provider
- * @param[in] height The height of provider
- * @param[in] priority The priority of provider
- * @param[in] data user data
- * @pre minicontrol_monitor_start() used to register this callback
- * @see #minicontrol_action_e
- * @see #minicontrol_priority_e
- */
typedef void (*minicontrol_monitor_cb) (minicontrol_action_e action,
const char *name,
unsigned int width,
@@ -59,25 +32,9 @@ typedef void (*minicontrol_monitor_cb) (minicontrol_action_e action,
minicontrol_priority_e priority,
void *data);
-/**
- * @addtogroup MINICONTROL_MONITOR_LIBRARY
- * @{
- */
-
-/**
- * @brief Register a callback for events originated by minicontrol provider
- * @param[in] callback callback function
- * @param[in] data user data
- */
-minicontrol_error_e minicontrol_monitor_start(minicontrol_monitor_cb callback,
- void *data);
+int minicontrol_monitor_start(minicontrol_monitor_cb callback, void *data) DEPRECATED;
-/**
- * @brief Unregister a callback for events originated by minicontrol provider
- * @return #MINICONTROL_ERROR_NONE if success, other value if failure
- * @see #minicontrol_error_e
- */
-minicontrol_error_e minicontrol_monitor_stop(void);
+int minicontrol_monitor_stop(void) DEPRECATED;
#ifdef __cplusplus
}
diff --git a/include/minicontrol-provider-internal.h b/include/minicontrol-provider-internal.h
new file mode 100644
index 0000000..952db84
--- /dev/null
+++ b/include/minicontrol-provider-internal.h
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2013-2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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 _MINICONTROL_PROVIDER_INTERNAL_H_
+#define _MINICONTROL_PROVIDER_INTERNAL_H_
+
+#include <Evas.h>
+#include "minicontrol-error.h"
+#include "minicontrol-type.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+Evas_Object *minicontrol_win_add(const char *name) DEPRECATED;
+
+int minicontrol_request(Evas_Object *mincontrol, minicontrol_request_e request) DEPRECATED;
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* _MINICONTROL_PROVIDER_INTERNAL_H_ */
diff --git a/include/minicontrol-provider.h b/include/minicontrol-provider.h
index db26613..b02dc59 100755
--- a/include/minicontrol-provider.h
+++ b/include/minicontrol-provider.h
@@ -1,14 +1,14 @@
/*
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Copyright (c) 2013-2015 Samsung Electronics Co., Ltd All Rights Reserved
*
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * 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://floralicense.org/license/
+ * 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,
+ * 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.
@@ -18,6 +18,7 @@
#define _MINICTRL_PROVIDER_H_
#include <Evas.h>
+#include <bundle.h>
#include "minicontrol-error.h"
#include "minicontrol-type.h"
@@ -26,29 +27,65 @@ extern "C" {
#endif
/**
- * @defgroup MINICONTROL_PROVIDER_LIBRARY minicontrol provider library
- * @brief This minicontrol provider library used to create evas socket window
+ * @file minicontrol-provider.h
+ * @brief This minicontrol provider library used to create evas socket window.\n
+ * This library is providing functions for create a remote evas object to draw a minicontrol on a minicontrol viewer and\n
+ * sending some requests to the minicontrol viewer.\n
+ * Drawings on this remote evas object will be shown on the place ofthe minicontrol viewer.
*/
/**
- * @addtogroup MINICONTROL_PROVIDER_LIBRARY
+ * @addtogroup MINICONTROL_PROVIDER_MODULE
* @{
*/
/**
- * @brief This function create evas socket window
- * @param[in] name name of socket window
- * @return evas object of socket window
+ * @brief Called when a event comes from viewer
+ * @since_tizen 2.4
+ * @param[in] event_type The type of fired event
+ * @param[in] event_arg argument of the event
+ * @pre minicontrol_viewer_register_event_callback() used to register this callback.
+ * @see #minicontrol_create_window
+ * @see #minicontrol_viewer_event_e
*/
-Evas_Object *minicontrol_win_add(const char *name);
+typedef void (*minicontrol_event_cb) (minicontrol_viewer_event_e event_type, bundle *event_arg);
/**
- * @brief This function request various action to viewer
- * @param[in] minicontrol evas object of socket window
- * @param[in] action type of action
- * @return evas object of socket window
+ * @brief Creates a window for minicontrol.
+ * @since_tizen 2.4
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/minicontrol.provider
+ * @param[in] name Name of minicontrol socket window
+ * @param[in] target_viewer Target viewer for minicontrol. You can select multiple viewers by using bitwise OR operator.
+ * @param[in] callback a callback function for events originated by minicontrol viewer.
+ * @return Evas object of socket window. @c NULL failed to create, get_last_result() will returns reason of failure.
+ * @see #minicontrol_target_viewer_e
+ * @see #minicontrol_event_cb
+ */
+Evas_Object* minicontrol_create_window(const char *name, minicontrol_target_viewer_e target_viewer, minicontrol_event_cb callback);
+
+/**
+ * @brief Sends a event to the viewer.
+ * @remarks When a viewer doesn't handle some events, it can be ignored.
+ * @since_tizen 2.4
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/minicontrol.provider
+ * @param[in] minicontrol minicontrol window
+ * @param[in] event Type of the event
+ * @param[in] event_arg Bundle argument of the event
+ * @return #MINICONTROL_ERROR_NONE on success,
+ * otherwise an error code (see #MINICONTROL_ERROR_XXX) on failure
+ * @retval #MINICONTROL_ERROR_INVALID_PARAMETER Invalid argument
+ * @retval #MINICONTROL_ERROR_PERMISSION_DENIED Permission denied
+ * @see #minicontrol_provider_event_e
+ * @see #minicontrol_create_window
+ * @see #minicontrol_request_to_viewer_e
+ */
+int minicontrol_send_event(Evas_Object *mincontrol, minicontrol_provider_event_e event, bundle *event_arg);
+
+/**
+ * @}
*/
-minicontrol_error_e minicontrol_request(Evas_Object *mincontrol, minicontrol_request_e request);
#ifdef __cplusplus
}
diff --git a/include/minicontrol-type.h b/include/minicontrol-type.h
index 8a79337..18d04d4 100755
--- a/include/minicontrol-type.h
+++ b/include/minicontrol-type.h
@@ -1,14 +1,14 @@
/*
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Copyright (c) 2013-2015 Samsung Electronics Co., Ltd All Rights Reserved
*
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * 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://floralicense.org/license/
+ * 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,
+ * 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.
@@ -18,42 +18,110 @@
#define _MINICTRL_TYPE_H_
/**
- * @defgroup MINICONTROL_LIBRARY_TYPE minicontrol monitor error type
- * @brief minicontrol library type
+ * @file minicontrol-type.h
+ * @brief Minicontrol library type.
*/
/**
- * @addtogroup MINICONTROL_LIBRARY_TYPE
+ * @addtogroup MINICONTROL_LIBRARY
* @{
*/
+#ifndef DEPRECATED
+#define DEPRECATED __attribute__((deprecated))
+#endif /* DEPRECATED */
+
+/**
+@section MINICONTROL_LIBRARY_EVENTS Events
+
+<TABLE>
+<TR>
+<TD>Event Type</TD><TD>Originated by</TD>
+<TD>Argument 1 Key</TD><TD>Argument 1 Type</TD>
+<TD>Argument 2 Key</TD><TD>Argument 2 Type</TD>
+<TD>Argument 3 Key</TD><TD>Argument 3 Type</TD>
+</TR>
+<TR>
+<TD>MINICONTROL_EVENT_START</TD><TD>provider</TD>
+<TD>minicontrol_name</TD><TD>string</TD>
+<TD>width</TD><TD>integer</TD>
+<TD>height</TD><TD>integer</TD>
+</TR>
+<TR>
+<TD>MINICONTROL_EVENT_STOP</TD><TD>provider</TD>
+<TD></TD><TD></TD>
+<TD></TD><TD></TD>
+<TD></TD><TD></TD>
+</TR>
+<TR>
+<TD>MINICONTROL_EVENT_RESIZE</TD><TD>provider</TD>
+<TD>minicontrol_name</TD><TD>string</TD>
+<TD>width</TD><TD>integer</TD>
+<TD>height</TD><TD>integer</TD>
+</TR>
+<TR>
+<TD>MINICONTROL_EVENT_REQUEST_HIDE</TD><TD>provider</TD>
+<TD></TD><TD></TD>
+<TD></TD><TD></TD>
+<TD></TD><TD></TD>
+</TR>
+<TR>
+<TD>MINICONTROL_EVENT_REQUEST_ANGLE</TD><TD>provider</TD>
+<TD></TD><TD></TD>
+<TD></TD><TD></TD>
+<TD></TD><TD></TD>
+</TR>
+<TR>
+<TD>MINICONTROL_EVENT_REPORT_ANGLE</TD><TD>viewer</TD>
+<TD>angle</TD><TD>string</TD>
+<TD></TD><TD></TD>
+<TD></TD><TD></TD>
+</TR>
+</TABLE>
+*/
+
+/**
+ * @brief Enumerations for describing types of events originated by a minicontrol provider.
+ * @since_tizen 2.4
+ */
+typedef enum {
+ MINICONTROL_EVENT_START, /**< A minicontrol object is created */
+ MINICONTROL_EVENT_STOP, /**< A minicontrol object is deleted */
+ MINICONTROL_EVENT_RESIZE, /**< A minicontrol object is resized */
+ MINICONTROL_EVENT_REQUEST_HIDE = 100, /**< Requests that the minicontrol viewer(s) close the provider's minicontrol */
+ MINICONTROL_EVENT_REQUEST_ANGLE = 103, /**< Requests the current angle of the minicontrol viewer */
+ MINICONTROL_EVENT_REPORT_ANGLE = 200, /**< Reports the current angle of the minicontrol viewer */
+} minicontrol_event_e;
+
/**
- * @breief Enumeration describing type of events originated by minicontrol provider
+ * @brief Enumerations for types of events which will be sent by minicontrol_send_event.
+ * @since_tizen 2.4
*/
-typedef enum _minicontrol_action {
- MINICONTROL_ACTION_START = 0,
- MINICONTROL_ACTION_STOP,
- MINICONTROL_ACTION_RESIZE,
- MINICONTROL_ACTION_REQUEST,
-} minicontrol_action_e;
+typedef enum {
+ MINICONTROL_PROVIDER_EVENT_REQUEST_HIDE = MINICONTROL_EVENT_REQUEST_HIDE, /**< Requests that the minicontrol viewer(s) close the provider's minicontrol. Required bundle argument : NULL. */
+ MINICONTROL_PROVIDER_EVENT_REQUEST_ANGLE = MINICONTROL_EVENT_REQUEST_ANGLE, /**< Requests the current angle of the minicontrol viewer. Required bundle argument : NULL. */
+} minicontrol_provider_event_e;
/**
- * @breief Enumeration describing priority of minicontrol provider
+ * @brief Enumerations for types of events which will be sent by minicontrol_viewer_send_event.
+ * @since_tizen 2.4
*/
typedef enum {
- MINICONTROL_PRIORITY_TOP = 1000,
- MINICONTROL_PRIORITY_MIDDLE = 100,
- MINICONTROL_PRIORITY_LOW = 1,
-}minicontrol_priority_e;
+ MINICONTROL_VIEWER_EVENT_REPORT_ANGLE = MINICONTROL_EVENT_REPORT_ANGLE, /**< Reports the current angle of the minicontrol viewer. Required argument : Angle of minicontrol viewer, Bundle Key : "angle", Bundle Value Type : string.*/
+} minicontrol_viewer_event_e;
/**
- * @breief Enumeration describing type of actions
+ * @brief Enumerations for selecting target viewers.
+ * @since_tizen 2.4
*/
typedef enum {
- MINICONTROL_REQ_NONE = 0,
- MINICONTROL_REQ_HIDE_VIEWER = 100,
- MINICONTROL_REQ_FREEZE_SCROLL_VIEWER,
- MINICONTROL_REQ_UNFREEZE_SCROLL_VIEWER,
-}minicontrol_request_e;
+ MINICONTROL_TARGET_VIEWER_QUICK_PANEL = 0x0001, /* Request to place the minicontrol on the quickpanel */
+ MINICONTROL_TARGET_VIEWER_STOCK_LOCK_SCREEN = 0x0002, /* Request to place the minicontrol on the stock lock screen */
+ MINICONTROL_TARGET_VIEWER_CUSTOM_LOCK_SCREEN = 0x0004, /* Request to place the minicontrol on a lock screen replacement application */
+} minicontrol_target_viewer_e;
+
+/**
+ * @}
+ */
#endif /* _MINICTRL_TYPE_H_ */
diff --git a/include/minicontrol-viewer-internal.h b/include/minicontrol-viewer-internal.h
new file mode 100644
index 0000000..2d93f7e
--- /dev/null
+++ b/include/minicontrol-viewer-internal.h
@@ -0,0 +1,15 @@
+/*
+ * minicontrol-viewer-internal.h
+ *
+ * Created on: 2015. 4. 13.
+ * Author: kyuho.jo
+ */
+
+#ifndef _MINICONTROL_VIEWER_INTERNAL_H_
+#define _MINICONTROL_VIEWER_INTERNAL_H_
+
+int minicontrol_viewer_request(const char *appid, minicontrol_request_e request, int value) DEPRECATED;
+
+Evas_Object *minicontrol_viewer_image_object_get(const Evas_Object *obj) DEPRECATED;
+
+#endif /* _MINICONTROL_VIEWER_INTERNAL_H_ */
diff --git a/include/minicontrol-viewer.h b/include/minicontrol-viewer.h
index 36bcc75..6629c0f 100755
--- a/include/minicontrol-viewer.h
+++ b/include/minicontrol-viewer.h
@@ -1,14 +1,14 @@
/*
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Copyright (c) 2013-2015 Samsung Electronics Co., Ltd All Rights Reserved
*
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * 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://floralicense.org/license/
+ * 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,
+ * 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.
@@ -18,35 +18,85 @@
#define _MINICTRL_VIEWER_H_
#include <Evas.h>
+#include <bundle.h>
+#include "minicontrol-error.h"
+#include "minicontrol-type.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
- * @defgroup MINICONTROL_VIEWER_LIBRARY minicontrol provider library
- * @brief This minicontrol viewer library used to display minicontrol which created by minicontrol provider
+ * @file minicontrol-viewer.h
+ * @brief This minicontrol viewer library used to display minicontrol which created by the minicontrol provider.\n
+ * This library is providing functions for attach a minicontrol viewer to a parent evas object and sending some requests to a minicontrol provider.\n
+ * The minicontrol viewer places a space which will be used by the minicontrol provider to draw minicontrol.
*/
/**
- * @addtogroup MINICONTROL_VIEWER_LIBRARY
+ * @addtogroup MINICONTROL_VIEWER_MODULE
* @{
*/
/**
- * @brief This function add minicontrol named as "svr_name" to given parent evas object then return it
- * @param[in] parent minicontrol object will be added to this parent evas object
- * @param[in] svr_name name of minicontrol
- * @return evas object of minicontrol
+ * @brief Adds minicontrol named as "minicontrol_name" to a given parent evas object and returns it.
+ * @since_tizen 2.4
+ * @param[in] parent Minicontrol object will be added to this parent evas object
+ * @param[in] minicontrol_name Name of minicontrol
+ * @return Evas object of minicontrol. @c NULL failed to add, get_last_result() will returns reason of failure.
*/
-Evas_Object *minicontrol_viewer_add(Evas_Object *parent, const char *svr_name);
+Evas_Object *minicontrol_viewer_add(Evas_Object *parent, const char *minicontrol_name);
/**
- * @brief Get the basic evas image object from given minicontrol object
- * @param[in] obj minicontrol object
- * @return basic evas image object of minicontrol object
+ * @brief Sends a event to the provider.
+ * @since_tizen 2.4
+ * @param[in] provider_app_id Application id of the minicontrol provider
+ * @param[in] event Type of the event
+ * @param[in] event_arg A bundle of arguments
+ * @return #MINICONTROL_ERROR_NONE on success,
+ * otherwise an error code (see #MINICONTROL_ERROR_XXX) on failure
+ * @retval #MINICONTROL_ERROR_INVALID_PARAMETER Invalid argument
+ * @see #minicontrol_viewer_event_e
+ */
+int minicontrol_viewer_send_event(const char *provider_app_id, minicontrol_viewer_event_e event, bundle *event_arg);
+
+/**
+ * @brief Called when a event comes from the provider
+ * @since_tizen 2.4
+ * @param[in] event The type of fired event
+ * @param[in] minicontrol_name The name of the minicontrol window
+ * @param[in] event_arg A bundle of arguments
+ * @param[in] data User data
+ * @see #minicontrol_viewer_set_event_cb
+ */
+typedef void (*minicontrol_viewer_event_cb) (minicontrol_event_e event, const char *minicontrol_name, bundle *event_arg, void *data);
+
+/**
+ * @brief Registers a callback for events originated by minicontrol provider.
+ * @since_tizen 2.4
+ * @param[in] callback Callback function
+ * @param[in] user_data User data
+ * @return #MINICONTROL_ERROR_NONE on success,
+ * otherwise an error code (see #MINICONTROL_ERROR_XXX) on failure
+ * @retval #MINICONTROL_ERROR_INVALID_PARAMETER Invalid argument
+ * @retval #MINICONTROL_ERROR_IPC_FAILURE IPC failure
+ * @retval #MINICONTROL_ERROR_OUT_OF_MEMORY out of memory
+ * @see #minicontrol_viewer_unset_event_cb
+ * @see #minicontrol_viewer_event_cb
+ */
+int minicontrol_viewer_set_event_cb(minicontrol_viewer_event_cb callback, void *user_data);
+
+/**
+ * @brief Unregisters a callback for events originated by minicontrol provider.
+ * @since_tizen 2.4
+ * @return #MINICONTROL_ERROR_NONE if success, other value if failure
+ * @see #minicontrol_viewer_set_event_cb
+ */
+int minicontrol_viewer_unset_event_cb(void);
+
+/**
+ * @}
*/
-Evas_Object *minicontrol_viewer_image_object_get(const Evas_Object *obj);
#ifdef __cplusplus
}
diff --git a/include/minicontrol.h b/include/minicontrol.h
index 2873ff9..c626c20 100755
--- a/include/minicontrol.h
+++ b/include/minicontrol.h
@@ -1,14 +1,14 @@
/*
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Copyright (c) 2013-2015 Samsung Electronics Co., Ltd All Rights Reserved
*
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * 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://floralicense.org/license/
+ * 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,
+ * 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.
@@ -17,8 +17,11 @@
#ifndef _MINICONTROL_H_DEF_
#define _MINICONTROL_H_DEF_
+#include <minicontrol-internal.h>
#include <minicontrol-provider.h>
+#include <minicontrol-provider_internal.h>
#include <minicontrol-viewer.h>
-#include <minicontrol-monitor.h>
+#include <minicontrol-viewer_internal.h>
+
#endif /* _MINICONTROL_H_DEF_ */
diff --git a/minicontrol-handler.pc.in b/minicontrol-handler.pc.in
new file mode 100644
index 0000000..7e0ea32
--- /dev/null
+++ b/minicontrol-handler.pc.in
@@ -0,0 +1,11 @@
+prefix=@PREFIX@
+exec_prefix=@EXEC_PREFIX@
+libdir=@LIBDIR@
+includedir=@INCLUDEDIR@
+
+Name: minicontrol-handler
+Description: minicontrol handler supporting library
+Version: @VERSION@
+Requires: evas
+Libs: -L${libdir} -lminicontrol-handler
+Cflags: -I${includedir}
diff --git a/minicontrol.manifest b/minicontrol.manifest
new file mode 100644
index 0000000..97e8c31
--- /dev/null
+++ b/minicontrol.manifest
@@ -0,0 +1,5 @@
+<manifest>
+ <request>
+ <domain name="_"/>
+ </request>
+</manifest>
diff --git a/packaging/minicontrol.changes b/packaging/minicontrol.changes
deleted file mode 100644
index 8fcdbf4..0000000
--- a/packaging/minicontrol.changes
+++ /dev/null
@@ -1,7 +0,0 @@
-* Tue Sep 24 2013 Anas Nashif <anas.nashif@intel.com> accepted/tizen/20130912.195945@869fa8a
-- fixed packaging
-- resetting manifest requested domain to floor
-- Updated the license and boilerplate
-- updated license file
-- sync with private git
-
diff --git a/packaging/minicontrol.manifest b/packaging/minicontrol.manifest
deleted file mode 100644
index 017d22d..0000000
--- a/packaging/minicontrol.manifest
+++ /dev/null
@@ -1,5 +0,0 @@
-<manifest>
- <request>
- <domain name="_"/>
- </request>
-</manifest>
diff --git a/packaging/minicontrol.spec b/packaging/minicontrol.spec
index c2d9d4c..100e2fb 100755..100644
--- a/packaging/minicontrol.spec
+++ b/packaging/minicontrol.spec
@@ -1,57 +1,79 @@
-Name: minicontrol
-Version: 0.0.6
-Release: 1
-License: Flora
-Summary: Minicontrol Library
-Group: Applications/Core Applications
-Source0: %{name}-%{version}.tar.gz
-Source1001: minicontrol.manifest
-BuildRequires: cmake
-BuildRequires: pkgconfig(dbus-1)
-BuildRequires: pkgconfig(dbus-glib-1)
-BuildRequires: pkgconfig(dlog)
-BuildRequires: pkgconfig(ecore-evas)
-BuildRequires: pkgconfig(elementary)
-BuildRequires: pkgconfig(evas)
+Name: minicontrol
+Summary: Library packaes for minicontrol
+Version: 0.1.1
+Release: 1
+Group: Application Framework/Other
+License: Apache-2.0
+Source0: %{name}-%{version}.tar.gz
+BuildRequires: pkgconfig(dbus-1)
+BuildRequires: pkgconfig(dbus-glib-1)
+BuildRequires: pkgconfig(elementary)
+BuildRequires: pkgconfig(evas)
+BuildRequires: pkgconfig(ecore-evas)
+BuildRequires: pkgconfig(dlog)
+BuildRequires: pkgconfig(bundle)
+BuildRequires: cmake
+Requires(post): /sbin/ldconfig
+requires(postun): /sbin/ldconfig
%description
-Minicontrol library.
+Minicontrol is a small control panel on notification panel or lock screen. This package supports to develop minicontrols.
%prep
%setup -q
-cp %{SOURCE1001} .
%package devel
-Summary: Minicontrol library (devel)
-Requires: %{name} = %{version}
+Summary: Minicontrol library (devel)
+Group: Development/Libraries
+Requires: %{name} = %{version}-%{release}
%description devel
Minicontrol library (devel).
%build
-CFLAGS="$CFLAGS -fPIC"
-%cmake .
-make %{?_smp_mflags}
+%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
+%if 0%{?sec_build_binary_debug_enable}
+export CFLAGS="$CFLAGS -DTIZEN_DEBUG_ENABLE"
+export CXXFLAGS="$CXXFLAGS -DTIZEN_DEBUG_ENABLE"
+export FFLAGS="$FFLAGS -DTIZEN_DEBUG_ENABLE"
+%endif
+export CFLAGS+=" -fPIC "
+export LDFLAGS+="-Wl,--rpath=%{_prefix}/lib -Wl,--as-needed"
+LDFLAGS="$LDFLAGS"
+%if %{with wayland}
+%cmake . -DCMAKE_INSTALL_PREFIX=%{_prefix} -DHAVE_WAYLAND=On
+%else
+%cmake . -DCMAKE_INSTALL_PREFIX=%{_prefix} -DHAVE_X11=On
+%endif
+make %{?jobs:-j%jobs}
%install
%make_install
+mkdir -p %{buildroot}/usr/share/license
+cp -f LICENSE %{buildroot}/usr/share/license/%{name}
-%post -p /sbin/ldconfig
+
+%post
+/sbin/ldconfig
%postun -p /sbin/ldconfig
%files
-%manifest %{name}.manifest
-%license LICENSE.Flora
+%manifest minicontrol.manifest
%defattr(-,root,root,-)
%{_libdir}/libminicontrol-provider.so*
%{_libdir}/libminicontrol-viewer.so*
%{_libdir}/libminicontrol-monitor.so*
+/usr/share/license/%{name}
%files devel
-%manifest %{name}.manifest
%defattr(-,root,root,-)
%{_includedir}/%{name}/*.h
%{_libdir}/pkgconfig/minicontrol-provider.pc
%{_libdir}/pkgconfig/minicontrol-monitor.pc
%{_libdir}/pkgconfig/minicontrol-viewer.pc
+
diff --git a/src/minicontrol-internal.c b/src/minicontrol-internal.c
index b62be1e..b414169 100755
--- a/src/minicontrol-internal.c
+++ b/src/minicontrol-internal.c
@@ -1,14 +1,14 @@
/*
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Copyright (c) 2013-2015 Samsung Electronics Co., Ltd All Rights Reserved
*
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * 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://floralicense.org/license/
+ * 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,
+ * 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.
@@ -17,6 +17,7 @@
#include <stdlib.h>
#include <dbus/dbus.h>
#include <dbus/dbus-glib-lowlevel.h>
+#include <bundle.h>
#include "minicontrol-error.h"
#include "minicontrol-type.h"
@@ -26,6 +27,12 @@
#define MINICTRL_DBUS_PATH "/org/tizen/minicontrol"
#define MINICTRL_DBUS_INTERFACE "org.tizen.minicontrol.signal"
+#define PROC_DBUS_OBJECT "/Org/Tizen/ResourceD/Process"
+#define PROC_DBUS_INTERFACE "org.tizen.resourced.process"
+#define PROC_DBUS_METHOD "ProcExclude"
+#define PROC_DBUS_EXCLUDE "exclude"
+#define PROC_DBUS_INCLUDE "include"
+
struct _minictrl_sig_handle {
DBusConnection *conn;
void (*callback) (void *data, DBusMessage *msg);
@@ -45,7 +52,7 @@ int _minictrl_viewer_req_message_send(void)
connection = dbus_bus_get(DBUS_BUS_SYSTEM, &err);
if (!connection) {
ERR("Fail to dbus_bus_get : %s", err.message);
- ret = MINICONTROL_ERROR_DBUS;
+ ret = MINICONTROL_ERROR_IPC_FAILURE;
goto release_n_return;
}
@@ -61,7 +68,7 @@ int _minictrl_viewer_req_message_send(void)
dbus_ret = dbus_connection_send(connection, message, NULL);
if (!dbus_ret) {
ERR("fail to send dbus viewer req message");
- ret = MINICONTROL_ERROR_DBUS;
+ ret = MINICONTROL_ERROR_IPC_FAILURE;
goto release_n_return;
}
@@ -79,23 +86,70 @@ release_n_return:
return ret;
}
-int _minictrl_provider_message_send(const char *sig_name, const char *svr_name,
- unsigned int witdh, unsigned int height,
- minicontrol_priority_e priority)
+int _minictrl_provider_proc_send(int type)
+{
+ DBusError err;
+ DBusConnection* conn = NULL;
+ DBusMessage* msg = NULL;
+ int ret = -1;
+ int pid = getpid();
+ dbus_uint32_t serial = 0;
+ char *typestr;
+ if (type == MINICONTROL_DBUS_PROC_EXCLUDE)
+ typestr = PROC_DBUS_EXCLUDE;
+ else if (type == MINICONTROL_DBUS_PROC_INCLUDE)
+ typestr = PROC_DBUS_INCLUDE;
+ else {
+ ERR("Check unsupported type : %d", type);
+ return ret;
+ }
+ DBG("_minictrl_provider_proc_send : %d, %d", pid, type);
+ dbus_error_init(&err);
+ conn = dbus_bus_get(DBUS_BUS_SYSTEM, &err);
+ if (!conn) {
+ ERR("Fail to dbus_bus_get : %s", err.message);
+ ret = MINICONTROL_ERROR_IPC_FAILURE;
+ goto release_n_return;
+ }
+ msg = dbus_message_new_signal(PROC_DBUS_OBJECT, // object name of the signal
+ PROC_DBUS_INTERFACE, // interface name of the signal
+ PROC_DBUS_METHOD); // name of the signal
+ if (!msg) {
+ ERR("ERR Could not create DBus Message");
+ goto release_n_return;
+ }
+ ret = dbus_message_append_args(msg,
+ DBUS_TYPE_STRING, &typestr,
+ DBUS_TYPE_INT32, &pid,
+ DBUS_TYPE_INVALID);
+ if (!dbus_connection_send(conn, msg, &serial))
+ ERR("ERR send DBus Message");
+ dbus_connection_flush(conn);
+release_n_return:
+ dbus_error_free(&err);
+
+ if (msg)
+ dbus_message_unref(msg);
+
+ if (conn)
+ dbus_connection_unref(conn);
+
+ return ret;
+
+}
+
+int _minictrl_send_event(const char *signal_name, const char *provider_app_id, int event, bundle *signal_arg)
{
DBusConnection *connection = NULL;
DBusMessage *message = NULL;
DBusError err;
dbus_bool_t dbus_ret;
+ bundle_raw *serialized_arg = NULL;
+ unsigned int serialized_arg_length = 0;
int ret = MINICONTROL_ERROR_NONE;
- if (!sig_name) {
- ERR("sig_name is NULL, invaild parameter");
- return MINICONTROL_ERROR_INVALID_PARAMETER;
- }
-
- if (!svr_name) {
- ERR("svr_name is NULL, invaild parameter");
+ if (provider_app_id == NULL) {
+ ERR("Invaild parameter");
return MINICONTROL_ERROR_INVALID_PARAMETER;
}
@@ -103,13 +157,11 @@ int _minictrl_provider_message_send(const char *sig_name, const char *svr_name,
connection = dbus_bus_get(DBUS_BUS_SYSTEM, &err);
if (!connection) {
ERR("Fail to dbus_bus_get : %s", err.message);
- ret = MINICONTROL_ERROR_DBUS;
+ ret = MINICONTROL_ERROR_IPC_FAILURE;
goto release_n_return;
}
- message = dbus_message_new_signal(MINICTRL_DBUS_PATH,
- MINICTRL_DBUS_INTERFACE,
- sig_name);
+ message = dbus_message_new_signal(MINICTRL_DBUS_PATH, MINICTRL_DBUS_INTERFACE, signal_name);
if (!message) {
ERR("fail to create dbus message");
@@ -117,32 +169,47 @@ int _minictrl_provider_message_send(const char *sig_name, const char *svr_name,
goto release_n_return;
}
+ if (signal_arg != NULL) {
+ if (bundle_encode(signal_arg, &serialized_arg, (int*)&serialized_arg_length) != BUNDLE_ERROR_NONE) {
+ ERR("fail to serialize bundle argument");
+ ret = MINICONTROL_ERROR_OUT_OF_MEMORY;
+ goto release_n_return;
+ }
+ }
+ else {
+ serialized_arg = (bundle_raw*)strdup("");
+ serialized_arg_length = 0;
+ }
+
dbus_ret = dbus_message_append_args(message,
- DBUS_TYPE_STRING, &svr_name,
- DBUS_TYPE_UINT32, &witdh,
- DBUS_TYPE_UINT32, &height,
- DBUS_TYPE_UINT32, &priority,
+ DBUS_TYPE_STRING, &provider_app_id,
+ DBUS_TYPE_INT32, &event,
+ DBUS_TYPE_STRING, &serialized_arg,
+ DBUS_TYPE_UINT32, &serialized_arg_length,
DBUS_TYPE_INVALID);
+
if (!dbus_ret) {
- ERR("fail to append name to dbus message : %s", svr_name);
+ ERR("fail to append arguments to dbus message : [%s][%d]", provider_app_id, event);
ret = MINICONTROL_ERROR_OUT_OF_MEMORY;
goto release_n_return;
}
dbus_ret = dbus_connection_send(connection, message, NULL);
+
if (!dbus_ret) {
- ERR("fail to send dbus message : %s", svr_name);
- ret = MINICONTROL_ERROR_DBUS;
+ ERR("fail to send dbus message : %s", provider_app_id);
+ ret = MINICONTROL_ERROR_IPC_FAILURE;
goto release_n_return;
}
dbus_connection_flush(connection);
- INFO("[%s][%s] size-[%ux%u] priority[%u]",
- sig_name, svr_name, witdh, height, priority);
release_n_return:
dbus_error_free(&err);
+ if (serialized_arg)
+ free(serialized_arg);
+
if (message)
dbus_message_unref(message);
@@ -152,8 +219,38 @@ release_n_return:
return ret;
}
-static DBusHandlerResult _minictrl_signal_filter(DBusConnection *conn,
- DBusMessage *msg, void *user_data)
+
+int _minictrl_provider_message_send(int event, const char *minicontrol_name, unsigned int witdh, unsigned int height, minicontrol_priority_e priority)
+{
+ bundle *event_arg_bundle = NULL;
+ int ret = MINICONTROL_ERROR_NONE;
+ char bundle_value_buffer[BUNDLE_BUFFER_LENGTH] = { 0, };
+
+ event_arg_bundle = bundle_create();
+
+ if (event_arg_bundle == NULL) {
+ ERR("fail to create a bundle instance");
+ ret = MINICONTROL_ERROR_OUT_OF_MEMORY;
+ goto out;
+ }
+
+ snprintf(bundle_value_buffer, BUNDLE_BUFFER_LENGTH, "%s", minicontrol_name);
+
+ bundle_add_str(event_arg_bundle, "minicontrol_name", bundle_value_buffer);
+ bundle_add_byte(event_arg_bundle, "width", (void*)&witdh, sizeof(int));
+ bundle_add_byte(event_arg_bundle, "height", (void*)&height, sizeof(int));
+ bundle_add_byte(event_arg_bundle, "priority", (void*)&priority, sizeof(int));
+
+ _minictrl_send_event(MINICTRL_DBUS_SIG_TO_VIEWER, minicontrol_name, event, event_arg_bundle);
+
+out:
+ if (event_arg_bundle)
+ bundle_free(event_arg_bundle);
+
+ return ret;
+}
+
+static DBusHandlerResult _minictrl_signal_filter(DBusConnection *conn, DBusMessage *msg, void *user_data)
{
minictrl_sig_handle *handle = NULL;
const char *interface;
@@ -276,8 +373,7 @@ void _minictrl_dbus_sig_handle_dettach(minictrl_sig_handle *handle)
dbus_error_init(&err);
- dbus_connection_remove_filter(handle->conn,
- _minictrl_signal_filter, handle);
+ dbus_connection_remove_filter(handle->conn, _minictrl_signal_filter, handle);
snprintf(rule, 1024,
"path='%s',type='signal',interface='%s',member='%s'",
diff --git a/src/minicontrol-monitor.c b/src/minicontrol-monitor.c
index 1f0024d..2f94835 100755
--- a/src/minicontrol-monitor.c
+++ b/src/minicontrol-monitor.c
@@ -1,14 +1,14 @@
/*
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Copyright (c) 2013-2015 Samsung Electronics Co., Ltd All Rights Reserved
*
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * 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://floralicense.org/license/
+ * 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,
+ * 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.
@@ -20,18 +20,16 @@
#include "minicontrol-error.h"
#include "minicontrol-internal.h"
#include "minicontrol-monitor.h"
+#include "minicontrol-viewer.h"
#include "minicontrol-log.h"
struct _minicontrol_monitor {
- minictrl_sig_handle *start_sh;
- minictrl_sig_handle *stop_sh;
- minictrl_sig_handle *resize_sh;
- minictrl_sig_handle *request_sh;
+ minictrl_sig_handle *event_sh;
minicontrol_monitor_cb callback;
void *user_data;
};
-static struct _minicontrol_monitor *g_monitor_h;
+static struct _minicontrol_monitor *g_monitor_h = NULL;
static minicontrol_priority_e _int_to_priority(unsigned int value)
{
@@ -51,202 +49,74 @@ static minicontrol_priority_e _int_to_priority(unsigned int value)
return priority;
}
-static void _provider_start_cb(void *data, DBusMessage *msg)
+static void _sig_to_viewer_handler_cb(minicontrol_event_e event, const char *minicontrol_name, bundle *event_arg, void *data)
{
- DBusError err;
- char *svr_name = NULL;
- unsigned int w = 0;
- unsigned int h = 0;
- unsigned int pri = 0;
- minicontrol_priority_e priority;
- dbus_bool_t dbus_ret;
-
- dbus_error_init(&err);
-
- dbus_ret = dbus_message_get_args(msg, &err,
- DBUS_TYPE_STRING, &svr_name,
- DBUS_TYPE_UINT32, &w,
- DBUS_TYPE_UINT32, &h,
- DBUS_TYPE_UINT32, &pri,
- DBUS_TYPE_INVALID);
- if (!dbus_ret) {
- ERR("fail to get args : %s", err.message);
- dbus_error_free(&err);
- return;
- }
-
- priority = _int_to_priority(pri);
-
- if (g_monitor_h->callback)
- g_monitor_h->callback(MINICONTROL_ACTION_START,
- svr_name, w, h, priority,
- g_monitor_h->user_data);
+ minicontrol_action_e action;
+ int width = 0;
+ int height = 0;
+ int priority_from_signal = 0;
+ minicontrol_priority_e priority = 0;
+ size_t n_size;
+
+ switch(event) {
+ case MINICONTROL_EVENT_START:
+ action = MINICONTROL_ACTION_START;
+ break;
- dbus_error_free(&err);
-}
+ case MINICONTROL_EVENT_STOP:
+ action = MINICONTROL_ACTION_STOP;
+ break;
-static void _provider_stop_cb(void *data, DBusMessage *msg)
-{
- DBusError err;
- char *svr_name = NULL;
- dbus_bool_t dbus_ret;
+ case MINICONTROL_EVENT_RESIZE:
+ action = MINICONTROL_ACTION_RESIZE;
+ break;
- dbus_error_init(&err);
+ case MINICONTROL_EVENT_REQUEST_HIDE:
+ case MINICONTROL_EVENT_REQUEST_ANGLE:
+ action = MINICONTROL_ACTION_REQUEST;
+ break;
- dbus_ret = dbus_message_get_args(msg, &err,
- DBUS_TYPE_STRING, &svr_name,
- DBUS_TYPE_INVALID);
- if (!dbus_ret) {
- ERR("fail to get args : %s", err.message);
- dbus_error_free(&err);
- return;
+ default:
+ WARN("Not supported event [%d]", event);
+ action = event;
+ break;
}
- if (g_monitor_h->callback)
- g_monitor_h->callback(MINICONTROL_ACTION_STOP,
- svr_name, 0, 0, MINICONTROL_PRIORITY_LOW,
- g_monitor_h->user_data);
-
- dbus_error_free(&err);
-}
-
-static void _provider_resize_cb(void *data, DBusMessage *msg)
-{
- DBusError err;
- char *svr_name = NULL;
- unsigned int w = 0;
- unsigned int h = 0;
- unsigned int pri = 0;
- minicontrol_priority_e priority;
- dbus_bool_t dbus_ret;
-
- dbus_error_init(&err);
-
- dbus_ret = dbus_message_get_args(msg, &err,
- DBUS_TYPE_STRING, &svr_name,
- DBUS_TYPE_UINT32, &w,
- DBUS_TYPE_UINT32, &h,
- DBUS_TYPE_UINT32, &pri,
- DBUS_TYPE_INVALID);
- if (!dbus_ret) {
- ERR("fail to get args : %s", err.message);
- dbus_error_free(&err);
- return;
+ if (action == MINICONTROL_ACTION_START || action == MINICONTROL_ACTION_RESIZE || action == MINICONTROL_ACTION_REQUEST) {
+ bundle_get_byte(event_arg, "width", (void*)&width, &n_size);
+ bundle_get_byte(event_arg, "height", (void*)&height, &n_size);
+ bundle_get_byte(event_arg, "priority", (void*)&priority_from_signal, &n_size);
+ priority = _int_to_priority(priority_from_signal);
}
-
- priority = _int_to_priority(pri);
-
- if (g_monitor_h->callback)
- g_monitor_h->callback(MINICONTROL_ACTION_RESIZE,
- svr_name, w, h, priority,
- g_monitor_h->user_data);
-
- dbus_error_free(&err);
-}
-
-static void _provider_request_cb(void *data, DBusMessage *msg)
-{
- DBusError err;
- char *svr_name = NULL;
- unsigned int w = 0;
- unsigned int h = 0;
- unsigned int pri = 0;
- minicontrol_priority_e priority;
- dbus_bool_t dbus_ret;
-
- dbus_error_init(&err);
-
- dbus_ret = dbus_message_get_args(msg, &err,
- DBUS_TYPE_STRING, &svr_name,
- DBUS_TYPE_UINT32, &w,
- DBUS_TYPE_UINT32, &h,
- DBUS_TYPE_UINT32, &pri,
- DBUS_TYPE_INVALID);
- if (!dbus_ret) {
- ERR("fail to get args : %s", err.message);
- dbus_error_free(&err);
- return;
+ else {
+ priority = MINICONTROL_PRIORITY_LOW;
}
- priority = _int_to_priority(pri);
-
- if (g_monitor_h->callback)
- g_monitor_h->callback(MINICONTROL_ACTION_REQUEST,
- svr_name, w, h, priority,
- g_monitor_h->user_data);
-
- dbus_error_free(&err);
+ g_monitor_h->callback(action, minicontrol_name, width, height, priority, g_monitor_h->user_data);
}
-EXPORT_API minicontrol_error_e minicontrol_monitor_start(
- minicontrol_monitor_cb callback, void *data)
+EXPORT_API minicontrol_error_e minicontrol_monitor_start(minicontrol_monitor_cb callback, void *data)
{
if (!callback)
return MINICONTROL_ERROR_INVALID_PARAMETER;
- if (!g_monitor_h) {
- minictrl_sig_handle *start_sh;
- minictrl_sig_handle *stop_sh;
- minictrl_sig_handle *resize_sh;
- minictrl_sig_handle *request_sh;
- struct _minicontrol_monitor *monitor_h;
-
- start_sh = _minictrl_dbus_sig_handle_attach(
- MINICTRL_DBUS_SIG_START,
- _provider_start_cb, NULL);
- if (!start_sh) {
- ERR("fail to _minictrl_dbus_sig_handle_attach - %s",
- MINICTRL_DBUS_SIG_START);
- return MINICONTROL_ERROR_DBUS;
- }
-
- stop_sh = _minictrl_dbus_sig_handle_attach(
- MINICTRL_DBUS_SIG_STOP,
- _provider_stop_cb, NULL);
- if (!stop_sh) {
- ERR("fail to _minictrl_dbus_sig_handle_attach - %s",
- MINICTRL_DBUS_SIG_STOP);
- return MINICONTROL_ERROR_DBUS;
- }
-
- resize_sh = _minictrl_dbus_sig_handle_attach(
- MINICTRL_DBUS_SIG_RESIZE,
- _provider_resize_cb, NULL);
- if (!resize_sh) {
- ERR("fail to _minictrl_dbus_sig_handle_attach - %s",
- MINICTRL_DBUS_SIG_RESIZE);
- return MINICONTROL_ERROR_DBUS;
- }
-
- request_sh = _minictrl_dbus_sig_handle_attach(
- MINICTRL_DBUS_SIG_REQUEST,
- _provider_request_cb, NULL);
- if (!request_sh) {
- ERR("fail to _minictrl_dbus_sig_handle_attach - %s",
- MINICTRL_DBUS_SIG_REQUEST);
- return MINICONTROL_ERROR_DBUS;
- }
+ INFO("callback[%p], data[%p]", callback, data);
- monitor_h = malloc(sizeof(struct _minicontrol_monitor));
- if (!monitor_h) {
- ERR("fail to alloc monitor_h");
- _minictrl_dbus_sig_handle_dettach(start_sh);
- _minictrl_dbus_sig_handle_dettach(stop_sh);
- _minictrl_dbus_sig_handle_dettach(resize_sh);
- _minictrl_dbus_sig_handle_dettach(request_sh);
- return MINICONTROL_ERROR_OUT_OF_MEMORY;
- }
+ if (g_monitor_h) {
+ ERR("Already started");
+ return MINICONTROL_ERROR_UNKNOWN;
+ }
- monitor_h->start_sh = start_sh;
- monitor_h->stop_sh = stop_sh;
- monitor_h->resize_sh = resize_sh;
- monitor_h->request_sh = request_sh;
- g_monitor_h = monitor_h;
+ g_monitor_h = malloc(sizeof(struct _minicontrol_monitor));
+ if (g_monitor_h == NULL) {
+ ERR("fail to alloc monitor_h");
+ return MINICONTROL_ERROR_OUT_OF_MEMORY;
}
+ minicontrol_viewer_set_event_cb(_sig_to_viewer_handler_cb, data);
+
g_monitor_h->callback = callback;
g_monitor_h->user_data = data;
- INFO("callback[%p], data[%p]", callback, data);
return _minictrl_viewer_req_message_send();
}
@@ -256,21 +126,10 @@ EXPORT_API minicontrol_error_e minicontrol_monitor_stop(void)
if (!g_monitor_h)
return MINICONTROL_ERROR_NONE;
- if (g_monitor_h->start_sh)
- _minictrl_dbus_sig_handle_dettach(g_monitor_h->start_sh);
-
- if (g_monitor_h->stop_sh)
- _minictrl_dbus_sig_handle_dettach(g_monitor_h->stop_sh);
-
- if (g_monitor_h->resize_sh)
- _minictrl_dbus_sig_handle_dettach(g_monitor_h->resize_sh);
-
- if (g_monitor_h->request_sh)
- _minictrl_dbus_sig_handle_dettach(g_monitor_h->request_sh);
+ minicontrol_viewer_unset_event_cb();
free(g_monitor_h);
g_monitor_h = NULL;
return MINICONTROL_ERROR_NONE;
}
-
diff --git a/src/minicontrol-provider.c b/src/minicontrol-provider.c
index 9f8178b..706c721 100755
--- a/src/minicontrol-provider.c
+++ b/src/minicontrol-provider.c
@@ -1,25 +1,27 @@
/*
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Copyright (c) 2013-2015 Samsung Electronics Co., Ltd All Rights Reserved
*
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * 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://floralicense.org/license/
+ * 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,
+ * 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 <Elementary.h>
+#include <Ecore_Evas.h>
#include "minicontrol-error.h"
#include "minicontrol-type.h"
#include "minicontrol-internal.h"
#include "minicontrol-provider.h"
+#include "minicontrol-provider-internal.h"
#include "minicontrol-log.h"
#define MINICTRL_PRIORITY_SUFFIX_TOP "__minicontrol_top"
@@ -31,50 +33,65 @@ enum {
MINICTRL_STATE_RUNNING,
};
-struct _provider_data {
+struct _minicontrol_provider {
char *name;
int state;
- minicontrol_priority_e priority;
Evas_Object *obj;
- minictrl_sig_handle *sh;
+ minictrl_sig_handle *running_sh;
+ minictrl_sig_handle *event_sh;
+ minicontrol_event_cb event_callback;
};
-static void __provider_data_free(struct _provider_data *pd)
+static void _minictrl_win_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
+static void _minictrl_win_hide_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
+static void _minictrl_win_show_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
+static void _minictrl_win_resize_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
+
+static void __minicontrol_provider_free(struct _minicontrol_provider *pd)
{
if (pd) {
if (pd->name)
free(pd->name);
- if (pd->sh)
- _minictrl_dbus_sig_handle_dettach(pd->sh);
+ if (pd->running_sh)
+ _minictrl_dbus_sig_handle_dettach(pd->running_sh);
+
+ if (pd->event_sh)
+ _minictrl_dbus_sig_handle_dettach(pd->event_sh);
free(pd);
}
}
-static int __str_has_suffix(const char *str, const char *suffix)
+static void _running_req_cb(void *data, DBusMessage *msg)
{
- int str_len;
- int suffix_len;
-
- if (!str)
- return -1;
-
- if (!suffix)
- return -1;
-
- str_len = strlen (str);
- suffix_len = strlen (suffix);
+ struct _minicontrol_provider *pd;
- if (str_len < suffix_len)
- return -1;
+ if (!data) {
+ ERR("data is NULL");
+ return;
+ }
+ pd = data;
- return strcmp(str + str_len - suffix_len, suffix);
+ if (pd->state == MINICTRL_STATE_RUNNING) {
+ Evas_Coord w = 0;
+ Evas_Coord h = 0;
+ evas_object_geometry_get(pd->obj, NULL, NULL, &w, &h);
+ _minictrl_provider_message_send(MINICONTROL_EVENT_START, pd->name, w, h, 0);
+ }
}
-static void _running_req_cb(void *data, DBusMessage *msg)
+static void _sig_to_provider_handler_cb(void *data, DBusMessage *msg)
{
- struct _provider_data *pd;
+ struct _minicontrol_provider *pd;
+ DBusError err;
+ char *provider_app_id = NULL;
+ minicontrol_viewer_event_e event;
+ dbus_bool_t dbus_ret;
+ bundle *event_arg_bundle = NULL;
+ bundle_raw *serialized_arg = NULL;
+ unsigned int serialized_arg_length = 0;
+
if (!data) {
ERR("data is NULL");
@@ -82,18 +99,184 @@ static void _running_req_cb(void *data, DBusMessage *msg)
}
pd = data;
+ dbus_error_init(&err); /* Does not allocate any memory. the error only needs to be freed if it is set at some point. */
+
+ dbus_ret = dbus_message_get_args(msg, &err,
+ DBUS_TYPE_STRING, &provider_app_id,
+ DBUS_TYPE_INT32, &event,
+ DBUS_TYPE_STRING, &serialized_arg,
+ DBUS_TYPE_UINT32, &serialized_arg_length,
+ DBUS_TYPE_INVALID);
+
+ if (!dbus_ret) {
+ ERR("fail to get args : %s", err.message);
+ dbus_error_free(&err);
+ return;
+ }
+
+ event_arg_bundle = bundle_decode(serialized_arg, serialized_arg_length);
+
+ if (event_arg_bundle == NULL) {
+ ERR("fail to deserialize arguments");
+ return;
+ }
+
+ if (pd->event_callback)
+ pd->event_callback(event, event_arg_bundle);
+}
+
+
+
+static char *_minictrl_create_name(const char *name)
+{
+ char *buf;
+ int size = 0;
+
+ if (!name) {
+ ERR("name is NULL, invaild parameter");
+ set_last_result(MINICONTROL_ERROR_INVALID_PARAMETER);
+ return NULL;
+ }
+
+ size = snprintf(NULL, 0, "[%s]", name) + 1;
+ buf = (char *)malloc(sizeof(char) * size);
+ if (!buf) {
+ ERR("fail to alloc buf");
+ set_last_result(MINICONTROL_ERROR_OUT_OF_MEMORY);
+ return NULL;
+ }
+
+ snprintf(buf, size, "[%s]", name);
+
+ return buf;
+}
+
+static void _access_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ Ecore_Evas *ee = ecore_evas_ecore_evas_get(evas_object_evas_get(obj));
+ if (ee != NULL) {
+ if (elm_config_access_get()) {
+ /* TODO : Check this API is supported
+ ecore_evas_extn_socket_events_block_set(ee, EINA_TRUE);
+ */
+ }
+ else {
+ /* TODO : Check this API is supported
+ ecore_evas_extn_socket_events_block_set(ee, EINA_FALSE);
+ */
+ }
+ }
+}
+
+
+EXPORT_API Evas_Object* minicontrol_create_window(const char *name, minicontrol_target_viewer_e target_viewer, minicontrol_event_cb event_callback)
+{
+ Evas_Object *win = NULL;
+ char *name_inter = NULL;
+ struct _minicontrol_provider *pd;
+
+ if (!name) {
+ ERR("invalid parameter");
+ set_last_result(MINICONTROL_ERROR_INVALID_PARAMETER);
+ return NULL;
+ }
+
+ win = elm_win_add(NULL, "minicontrol", ELM_WIN_SOCKET_IMAGE);
+ if (!win) {
+ ERR("elm_win_add failed");
+ set_last_result(MINICONTROL_ERROR_ELM_FAILURE);
+ return NULL;
+ }
+
+ if (elm_config_access_get()) {
+ Ecore_Evas *ee = ecore_evas_ecore_evas_get(evas_object_evas_get(win));
+
+ if (ee != NULL) {
+ /* TODO : Check this API is supported
+ ecore_evas_extn_socket_events_block_set(ee, EINA_TRUE);
+ */
+ }
+
+ }
+ evas_object_smart_callback_add(win, "access,changed", _access_changed_cb, NULL);
+
+ name_inter = _minictrl_create_name(name);
+ if (!name_inter) {
+ ERR("Fail to create name_inter for : %s", name);
+ evas_object_del(win);
+ return NULL;
+ }
+
+ if (!elm_win_socket_listen(win, name_inter, 0, EINA_TRUE)) {
+ ERR("Fail to elm win socket listen");
+ set_last_result(MINICONTROL_ERROR_ELM_FAILURE);
+ evas_object_del(win);
+ free(name_inter);
+ return NULL;
+ }
+
+ pd = malloc(sizeof(struct _minicontrol_provider));
+ if (!pd) {
+ ERR("Fail to alloc memory");
+ set_last_result(MINICONTROL_ERROR_OUT_OF_MEMORY);
+ evas_object_del(win);
+ free(name_inter);
+ return NULL;
+
+ }
+ memset(pd, 0x00, sizeof(struct _minicontrol_provider));
+ pd->name = name_inter;
+ pd->state = MINICTRL_STATE_READY;
+ pd->obj = win;
+
+ evas_object_data_set(win ,MINICTRL_DATA_KEY,pd);
+
+ elm_win_autodel_set(win, EINA_TRUE);
+
+ evas_object_event_callback_add(win, EVAS_CALLBACK_DEL, _minictrl_win_del_cb, pd);
+ evas_object_event_callback_add(win, EVAS_CALLBACK_SHOW, _minictrl_win_show_cb, pd);
+ evas_object_event_callback_add(win, EVAS_CALLBACK_HIDE, _minictrl_win_hide_cb, pd);
+ evas_object_event_callback_add(win, EVAS_CALLBACK_RESIZE, _minictrl_win_resize_cb, pd);
+
+ pd->running_sh = _minictrl_dbus_sig_handle_attach(MINICTRL_DBUS_SIG_RUNNING_REQ, _running_req_cb, pd);
+ pd->event_sh = _minictrl_dbus_sig_handle_attach(MINICTRL_DBUS_SIG_TO_PROVIDER, _sig_to_provider_handler_cb, pd);
+ pd->event_callback = event_callback;
+
+ INFO("new minicontrol created - %s", pd->name);
+ return win;
+}
+
+EXPORT_API int minicontrol_send_event(Evas_Object *mincontrol, minicontrol_provider_event_e event, bundle *event_arg)
+{
+ struct _minicontrol_provider *pd;
+ int ret = MINICONTROL_ERROR_NONE;
+
+ if (!mincontrol) {
+ ERR("mincontrol is NULL, invaild parameter");
+ return MINICONTROL_ERROR_INVALID_PARAMETER;
+ }
+
+ pd = evas_object_data_get(mincontrol, MINICTRL_DATA_KEY);
+ if (!pd) {
+ ERR("pd is NULL, invaild parameter");
+ return MINICONTROL_ERROR_INVALID_PARAMETER;
+ }
+
+ if (!pd->name) {
+ ERR("pd name is NULL, invaild parameter");
+ return MINICONTROL_ERROR_INVALID_PARAMETER;
+ }
+
if (pd->state == MINICTRL_STATE_RUNNING) {
- Evas_Coord w = 0;
- Evas_Coord h = 0;
- evas_object_geometry_get(pd->obj, NULL, NULL, &w, &h);
- _minictrl_provider_message_send(MINICTRL_DBUS_SIG_START,
- pd->name, w, h, pd->priority);
+ ret = _minictrl_send_event(MINICTRL_DBUS_SIG_TO_VIEWER, pd->name, event, event_arg);
}
+
+ return ret;
}
static int minicontrol_win_start(Evas_Object *mincontrol)
{
- struct _provider_data *pd;
+ struct _minicontrol_provider *pd;
int ret = MINICONTROL_ERROR_NONE;
if (!mincontrol) {
@@ -118,8 +301,8 @@ static int minicontrol_win_start(Evas_Object *mincontrol)
pd->state = MINICTRL_STATE_RUNNING;
evas_object_geometry_get(mincontrol, NULL, NULL, &w, &h);
- ret = _minictrl_provider_message_send(MINICTRL_DBUS_SIG_START,
- pd->name, w, h, pd->priority);
+ _minictrl_provider_proc_send(MINICONTROL_DBUS_PROC_EXCLUDE);
+ ret = _minictrl_provider_message_send(MINICONTROL_EVENT_START, pd->name, w, h, 0);
}
return ret;
@@ -127,7 +310,7 @@ static int minicontrol_win_start(Evas_Object *mincontrol)
static int minicontrol_win_stop(Evas_Object *mincontrol)
{
- struct _provider_data *pd;
+ struct _minicontrol_provider *pd;
int ret = MINICONTROL_ERROR_NONE;
if (!mincontrol) {
@@ -147,42 +330,41 @@ static int minicontrol_win_stop(Evas_Object *mincontrol)
}
if (pd->state != MINICTRL_STATE_READY) {
pd->state = MINICTRL_STATE_READY;
- ret = _minictrl_provider_message_send(MINICTRL_DBUS_SIG_STOP,
- pd->name, 0, 0, pd->priority);
+ _minictrl_provider_proc_send(MINICONTROL_DBUS_PROC_INCLUDE);
+ ret = _minictrl_provider_message_send(MINICONTROL_EVENT_STOP, pd->name, 0, 0, 0);
}
return ret;
}
-static void _minictrl_win_del(void *data, Evas *e,
- Evas_Object *obj, void *event_info)
+static void _minictrl_win_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
{
- struct _provider_data *pd = NULL;
+ struct _minicontrol_provider *pd = NULL;
minicontrol_win_stop(obj);
pd = evas_object_data_get(obj, MINICTRL_DATA_KEY);
- __provider_data_free(pd);
+ __minicontrol_provider_free(pd);
evas_object_data_set(obj, MINICTRL_DATA_KEY, NULL);
}
-static void _minictrl_win_hide(void *data, Evas *e,
- Evas_Object *obj, void *event_info)
+static void _minictrl_win_hide_cb(void *data, Evas *e,
+ Evas_Object *obj, void *event_info)
{
minicontrol_win_stop(obj);
}
-static void _minictrl_win_show(void *data, Evas *e,
- Evas_Object *obj, void *event_info)
+static void _minictrl_win_show_cb(void *data, Evas *e,
+ Evas_Object *obj, void *event_info)
{
minicontrol_win_start(obj);
}
-static void _minictrl_win_resize(void *data, Evas *e,
- Evas_Object *obj, void *event_info)
+static void _minictrl_win_resize_cb(void *data, Evas *e,
+ Evas_Object *obj, void *event_info)
{
- struct _provider_data *pd;
+ struct _minicontrol_provider *pd;
if (!data) {
ERR("data is NULL, invaild parameter");
@@ -195,64 +377,40 @@ static void _minictrl_win_resize(void *data, Evas *e,
Evas_Coord h = 0;
evas_object_geometry_get(obj, NULL, NULL, &w, &h);
- _minictrl_provider_message_send(MINICTRL_DBUS_SIG_RESIZE,
- pd->name, w, h, pd->priority);
+ _minictrl_provider_message_send(MINICONTROL_EVENT_RESIZE, pd->name, w, h, 0);
}
}
-static char *_minictrl_create_name(const char *name)
+EXPORT_API Evas_Object *minicontrol_win_add(const char *name)
{
- time_t now;
- struct tm *now_tm;
- char time_buf[20]; /* 18 chars to represent time */
- char *buf;
- int size = 0;
+ Evas_Object *win = NULL;
+ char *name_inter = NULL;
+ struct _minicontrol_provider *pd;
+
+ INFO("minicontrol_win_add [%s]", name);
if (!name) {
- ERR("name is NULL, invaild parameter");
+ ERR("name is null");
return NULL;
}
- now = time(NULL);
- now_tm = localtime(&now);
- strftime(time_buf, sizeof(time_buf), "%y-%m-%d-%H:%M:%S", now_tm);
-
- size = snprintf(NULL, 0, "[%s]-[%s]", name, time_buf) + 1;
- buf = (char *)malloc(sizeof(char) * size);
- if (!buf) {
- ERR("fail to alloc buf");
- return NULL;
+ win = elm_win_add(NULL, "minicontrol", ELM_WIN_SOCKET_IMAGE);
+ if (!win) {
+ ERR("elm_win_add returns null for [%s]", name);
+ return NULL;
}
- snprintf(buf, size, "[%s]-[%s]", name, time_buf);
+ if (elm_config_access_get()) {
+ Ecore_Evas *ee = ecore_evas_ecore_evas_get(evas_object_evas_get(win));
- return buf;
-}
-
-static minicontrol_priority_e _minictrl_get_priroty_by_name(const char *name)
-{
- minicontrol_priority_e priority = MINICONTROL_PRIORITY_MIDDLE;
+ if (ee != NULL) {
+ /* TODO : Check this API is supported
+ ecore_evas_extn_socket_events_block_set(ee, EINA_TRUE);
+ */
+ }
- if (!__str_has_suffix(name, MINICTRL_PRIORITY_SUFFIX_TOP))
- priority = MINICONTROL_PRIORITY_TOP;
- else if (!__str_has_suffix(name, MINICTRL_PRIORITY_SUFFIX_LOW))
- priority = MINICONTROL_PRIORITY_LOW;
-
- return priority;
-}
-
-EXPORT_API Evas_Object *minicontrol_win_add(const char *name)
-{
- Evas_Object *win = NULL;
- char *name_inter = NULL;
- struct _provider_data *pd;
-
- if (!name)
- return NULL;
-
- win = elm_win_add(NULL, "minicontrol", ELM_WIN_SOCKET_IMAGE);
- if (!win)
- return NULL;
+ }
+ evas_object_smart_callback_add(win, "access,changed", _access_changed_cb, NULL);
name_inter = _minictrl_create_name(name);
if (!name_inter) {
@@ -260,17 +418,16 @@ EXPORT_API Evas_Object *minicontrol_win_add(const char *name)
ERR("Fail to create name_inter for : %s", name);
evas_object_del(win);
return NULL;
-
}
- if (!elm_win_socket_listen(win, name_inter, 0, EINA_FALSE)) {
+ if (!elm_win_socket_listen(win, name_inter, 0, EINA_TRUE)) {
ERR("Fail to elm win socket listen");
evas_object_del(win);
free(name_inter);
return NULL;
}
- pd = malloc(sizeof(struct _provider_data));
+ pd = malloc(sizeof(struct _minicontrol_provider));
if (!pd) {
ERR("Fail to alloc memory");
evas_object_del(win);
@@ -278,41 +435,31 @@ EXPORT_API Evas_Object *minicontrol_win_add(const char *name)
return NULL;
}
- memset(pd, 0x00, sizeof(struct _provider_data));
+ memset(pd, 0x00, sizeof(struct _minicontrol_provider));
pd->name = name_inter;
pd->state = MINICTRL_STATE_READY;
pd->obj = win;
- pd->priority = _minictrl_get_priroty_by_name(name);
evas_object_data_set(win ,MINICTRL_DATA_KEY,pd);
elm_win_autodel_set(win, EINA_TRUE);
- evas_object_event_callback_add(win, EVAS_CALLBACK_DEL,
- _minictrl_win_del, pd);
-
- evas_object_event_callback_add(win, EVAS_CALLBACK_SHOW,
- _minictrl_win_show, pd);
+ evas_object_event_callback_add(win, EVAS_CALLBACK_DEL, _minictrl_win_del_cb, pd);
+ evas_object_event_callback_add(win, EVAS_CALLBACK_SHOW, _minictrl_win_show_cb, pd);
+ evas_object_event_callback_add(win, EVAS_CALLBACK_HIDE, _minictrl_win_hide_cb, pd);
+ evas_object_event_callback_add(win, EVAS_CALLBACK_RESIZE, _minictrl_win_resize_cb, pd);
- evas_object_event_callback_add(win, EVAS_CALLBACK_HIDE,
- _minictrl_win_hide, pd);
-
- evas_object_event_callback_add(win, EVAS_CALLBACK_RESIZE,
- _minictrl_win_resize, pd);
-
- pd->sh = _minictrl_dbus_sig_handle_attach(MINICTRL_DBUS_SIG_RUNNING_REQ,
- _running_req_cb, pd);
-
- INFO("new minicontrol win[%p] created - %s, priority[%d]",
- win, pd->name, pd->priority);
+ pd->running_sh = _minictrl_dbus_sig_handle_attach(MINICTRL_DBUS_SIG_RUNNING_REQ, _running_req_cb, pd);
+ INFO("new minicontrol created - %s", pd->name);
return win;
}
-EXPORT_API minicontrol_error_e minicontrol_request(Evas_Object *mincontrol, minicontrol_request_e request)
+EXPORT_API int minicontrol_request(Evas_Object *mincontrol, minicontrol_request_e request)
{
- struct _provider_data *pd;
+ struct _minicontrol_provider *pd;
int ret = MINICONTROL_ERROR_NONE;
+ minicontrol_event_e event;
if (!mincontrol) {
ERR("mincontrol is NULL, invaild parameter");
@@ -331,9 +478,32 @@ EXPORT_API minicontrol_error_e minicontrol_request(Evas_Object *mincontrol, mini
}
if (pd->state == MINICTRL_STATE_RUNNING) {
- ret = _minictrl_provider_message_send(MINICTRL_DBUS_SIG_REQUEST,
- pd->name, request, request, pd->priority);
+ switch(request) {
+ case MINICONTROL_REQ_HIDE_VIEWER :
+ event = MINICONTROL_EVENT_REQUEST_HIDE;
+ break;
+
+ case MINICONTROL_REQ_REPORT_VIEWER_ANGLE :
+ event = MINICONTROL_EVENT_REQUEST_ANGLE;
+ break;
+
+ case MINICONTROL_REQ_FREEZE_SCROLL_VIEWER :
+ case MINICONTROL_REQ_UNFREEZE_SCROLL_VIEWER :
+ case MINICONTROL_REQ_ROTATE_PROVIDER :
+ WARN("Could be not supported [%d]", request);
+ event = request;
+ break;
+
+ case MINICONTROL_REQ_NONE :
+ default :
+ ERR("Not supported request[%d]", request);
+ ret = MINICONTROL_ERROR_NOT_SUPPORTED;
+ goto out;
+ }
+
+ _minictrl_send_event(MINICTRL_DBUS_SIG_TO_VIEWER, pd->name, event, NULL);
}
-
+out:
return ret;
}
+
diff --git a/src/minicontrol-viewer.c b/src/minicontrol-viewer.c
index 87e4dd8..8205108 100755
--- a/src/minicontrol-viewer.c
+++ b/src/minicontrol-viewer.c
@@ -1,14 +1,14 @@
/*
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Copyright (c) 2013-2015 Samsung Electronics Co., Ltd All Rights Reserved
*
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * 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://floralicense.org/license/
+ * 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,
+ * 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.
@@ -20,66 +20,183 @@
#include "minicontrol-internal.h"
#include "minicontrol-type.h"
#include "minicontrol-viewer.h"
+#include "minicontrol-viewer-internal.h"
#include "minicontrol-log.h"
#define MINICTRL_PLUG_DATA_KEY "__minictrl_plug_name"
+struct _minicontrol_viewer {
+ minictrl_sig_handle *event_sh;
+ minicontrol_viewer_event_cb callback;
+ void *user_data;
+};
+
+static struct _minicontrol_viewer *g_minicontrol_viewer_h = NULL;
+
+EXPORT_API int minicontrol_viewer_send_event(const char *provider_app_id, minicontrol_viewer_event_e event, bundle *event_arg)
+{
+ int ret = MINICONTROL_ERROR_NONE;
+
+ if (provider_app_id == NULL) {
+ ERR("appid is NULL, invaild parameter");
+ return MINICONTROL_ERROR_INVALID_PARAMETER;
+ }
+
+ ret = _minictrl_send_event(MINICTRL_DBUS_SIG_TO_PROVIDER, provider_app_id, event, event_arg);
+
+ return ret;
+}
+
+
+static void _sig_to_viewer_handler_cb(void *data, DBusMessage *msg)
+{
+ DBusError err;
+ char *provider_app_id = NULL;
+ minicontrol_event_e event;
+ dbus_bool_t dbus_ret;
+ bundle *event_arg_bundle = NULL;
+ bundle_raw *serialized_arg = NULL;
+ unsigned int serialized_arg_length = 0;
+
+ dbus_error_init(&err); /* Does not allocate any memory. the error only needs to be freed if it is set at some point. */
+
+ dbus_ret = dbus_message_get_args(msg, &err,
+ DBUS_TYPE_STRING, &provider_app_id,
+ DBUS_TYPE_INT32, &event,
+ DBUS_TYPE_STRING, &serialized_arg,
+ DBUS_TYPE_UINT32, &serialized_arg_length,
+ DBUS_TYPE_INVALID);
+
+ if (!dbus_ret) {
+ ERR("fail to get args : %s", err.message);
+ dbus_error_free(&err);
+ return;
+ }
+
+ if (serialized_arg_length != 0) {
+ event_arg_bundle = bundle_decode(serialized_arg, serialized_arg_length);
+
+ if (event_arg_bundle == NULL) {
+ ERR("fail to deserialize arguments");
+ return;
+ }
+ }
+
+ if (g_minicontrol_viewer_h->callback)
+ g_minicontrol_viewer_h->callback(event, provider_app_id, event_arg_bundle, g_minicontrol_viewer_h->user_data);
+
+ bundle_free(event_arg_bundle);
+ dbus_error_free(&err);
+}
+
+
+EXPORT_API int minicontrol_viewer_set_event_cb(minicontrol_viewer_event_cb callback, void *data)
+{
+ if (!callback) {
+ ERR("MINICONTROL_ERROR_INVALID_PARAMETER");
+ return MINICONTROL_ERROR_INVALID_PARAMETER;
+ }
+
+ INFO("g_minicontrol_viewer_h [%p]", g_minicontrol_viewer_h);
+
+ if (g_minicontrol_viewer_h == NULL) {
+ minictrl_sig_handle *event_sh;
+ struct _minicontrol_viewer *minicontrol_viewer_h;
+
+ event_sh = _minictrl_dbus_sig_handle_attach(MINICTRL_DBUS_SIG_TO_VIEWER, _sig_to_viewer_handler_cb, NULL);
+ if (!event_sh) {
+ ERR("fail to _minictrl_dbus_sig_handle_attach - %s", MINICTRL_DBUS_SIG_TO_VIEWER);
+ return MINICONTROL_ERROR_IPC_FAILURE;
+ }
+
+ minicontrol_viewer_h = malloc(sizeof(struct _minicontrol_viewer));
+ if (!minicontrol_viewer_h) {
+ ERR("fail to alloc minicontrol_viewer_h");
+ _minictrl_dbus_sig_handle_dettach(event_sh);
+ return MINICONTROL_ERROR_OUT_OF_MEMORY;
+ }
+
+ minicontrol_viewer_h->event_sh = event_sh;
+ g_minicontrol_viewer_h = minicontrol_viewer_h;
+ }
+
+ g_minicontrol_viewer_h->callback = callback;
+ g_minicontrol_viewer_h->user_data = data;
+ INFO("callback[%p], data[%p]", callback, data);
+
+ return _minictrl_viewer_req_message_send();
+}
+
+EXPORT_API int minicontrol_viewer_unset_event_cb(void)
+{
+ if (!g_minicontrol_viewer_h)
+ return MINICONTROL_ERROR_NONE;
+
+ if (g_minicontrol_viewer_h->event_sh)
+ _minictrl_dbus_sig_handle_dettach(g_minicontrol_viewer_h->event_sh);
+
+ free(g_minicontrol_viewer_h);
+ g_minicontrol_viewer_h = NULL;
+
+ return MINICONTROL_ERROR_NONE;
+}
+
static void _minictrl_plug_server_del(Ecore_Evas *ee)
{
- char *svr_name = NULL;
+ char *minicontrol_name = NULL;
- svr_name = ecore_evas_data_get(ee, MINICTRL_PLUG_DATA_KEY);
- if (!svr_name) {
- ERR("fail to get svr_name");
+ minicontrol_name = ecore_evas_data_get(ee, MINICTRL_PLUG_DATA_KEY);
+ if (!minicontrol_name) {
+ ERR("fail to get minicontrol_name");
return;
}
- INFO("server - %s is deleted", svr_name);
+ INFO("server - %s is deleted", minicontrol_name);
/* send message to remve plug */
- _minictrl_provider_message_send(MINICTRL_DBUS_SIG_STOP,
- svr_name, 0, 0,
- MINICONTROL_PRIORITY_LOW);
+ _minictrl_provider_message_send(MINICONTROL_EVENT_STOP, minicontrol_name, 0, 0, MINICONTROL_PRIORITY_LOW);
+ _minictrl_provider_proc_send(MINICONTROL_DBUS_PROC_INCLUDE);
}
-static void _minictrl_plug_del(void *data, Evas *e,
- Evas_Object *obj, void *event_info)
+static void _minictrl_plug_del(void *data, Evas *e, Evas_Object *obj, void *event_info)
{
Ecore_Evas *ee = NULL;
- char *svr_name = NULL;
+ char *minicontrol_name = NULL;
ee = ecore_evas_ecore_evas_get(evas_object_evas_get(obj));
if (!ee)
return;
- svr_name = ecore_evas_data_get(ee, MINICTRL_PLUG_DATA_KEY);
- if (svr_name)
- free(svr_name);
+ minicontrol_name = ecore_evas_data_get(ee, MINICTRL_PLUG_DATA_KEY);
+ if (minicontrol_name)
+ free(minicontrol_name);
ecore_evas_data_set(ee, MINICTRL_PLUG_DATA_KEY, NULL);
}
-EXPORT_API
-Evas_Object *minicontrol_viewer_image_object_get(const Evas_Object *obj)
-{
- return elm_plug_image_object_get(obj);
-}
-
-EXPORT_API Evas_Object *minicontrol_viewer_add(Evas_Object *parent,
- const char *svr_name)
+EXPORT_API Evas_Object *minicontrol_viewer_add(Evas_Object *parent, const char *minicontrol_name)
{
Evas_Object *plug = NULL;
Evas_Object *plug_img = NULL;
Ecore_Evas *ee = NULL;
+ if (parent == NULL || minicontrol_name == NULL) {
+ ERR("invalid parameter");
+ set_last_result(MINICONTROL_ERROR_INVALID_PARAMETER);
+ return NULL;
+ }
+
plug = elm_plug_add(parent);
+
if (!plug) {
ERR("fail to create plug");
+ set_last_result(MINICONTROL_ERROR_ELM_FAILURE);
return NULL;
}
- if (!elm_plug_connect(plug, svr_name, 0, EINA_FALSE)) {
- ERR("Cannot connect plug[%s]", svr_name);
+ if (!elm_plug_connect(plug, minicontrol_name, 0, EINA_TRUE)) {
+ ERR("Cannot connect plug[%s]", minicontrol_name);
+ set_last_result(MINICONTROL_ERROR_ELM_FAILURE);
evas_object_del(plug);
return NULL;
}
@@ -87,12 +204,63 @@ EXPORT_API Evas_Object *minicontrol_viewer_add(Evas_Object *parent,
plug_img = elm_plug_image_object_get(plug);
ee = ecore_evas_object_ecore_evas_get(plug_img);
- ecore_evas_data_set(ee, MINICTRL_PLUG_DATA_KEY, strdup(svr_name));
+ ecore_evas_data_set(ee, MINICTRL_PLUG_DATA_KEY, strdup(minicontrol_name));
ecore_evas_callback_delete_request_set(ee, _minictrl_plug_server_del);
- evas_object_event_callback_add(plug, EVAS_CALLBACK_DEL,
- _minictrl_plug_del, plug);
+ evas_object_event_callback_add(plug, EVAS_CALLBACK_DEL, _minictrl_plug_del, plug);
return plug;
}
+EXPORT_API Evas_Object *minicontrol_viewer_image_object_get(const Evas_Object *obj)
+{
+ return elm_plug_image_object_get(obj);
+}
+
+EXPORT_API int minicontrol_viewer_request(const char *appid, minicontrol_request_e request, int value)
+{
+ int ret = MINICONTROL_ERROR_NONE;
+ minicontrol_viewer_event_e event = 0;
+ bundle *event_arg_bundle = NULL;
+ char bundle_value_buffer[BUNDLE_BUFFER_LENGTH] = { 0, };
+
+ if (appid == NULL) {
+ ERR("appid is NULL, invaild parameter");
+ return MINICONTROL_ERROR_INVALID_PARAMETER;
+ }
+
+ switch(request) {
+ case MINICONTROL_REQ_ROTATE_PROVIDER: {
+ event = MINICONTROL_EVENT_REPORT_ANGLE;
+ event_arg_bundle = bundle_create();
+
+ if (event_arg_bundle == NULL) {
+ ERR("fail to create a bundle instance");
+ ret = MINICONTROL_ERROR_OUT_OF_MEMORY;
+ goto out;
+ }
+
+ snprintf(bundle_value_buffer, BUNDLE_BUFFER_LENGTH, "%d", value);
+
+ bundle_add_str(event_arg_bundle, "angle", bundle_value_buffer);
+ break;
+ }
+ case MINICONTROL_REQ_NONE:
+ case MINICONTROL_REQ_HIDE_VIEWER:
+ case MINICONTROL_REQ_FREEZE_SCROLL_VIEWER:
+ case MINICONTROL_REQ_UNFREEZE_SCROLL_VIEWER:
+ case MINICONTROL_REQ_REPORT_VIEWER_ANGLE:
+ default :
+ ret = MINICONTROL_ERROR_INVALID_PARAMETER;
+ goto out;
+ }
+
+ _minictrl_send_event(MINICTRL_DBUS_SIG_TO_PROVIDER, appid, event, event_arg_bundle);
+
+out:
+ if (event_arg_bundle)
+ bundle_free(event_arg_bundle);
+
+ return ret;
+}
+