+++ /dev/null
-Pius Lee <pius.lee@samsung.com>
SET(INC_DIR include)
INCLUDE_DIRECTORIES(${INC_DIR})
-SET(dependents "devman dlog vconf capi-base-common")
+SET(dependents "deviced dlog vconf dbus-1 dbus-glib-1 capi-base-common capi-system-info")
SET(pc_dependents "capi-base-common")
INCLUDE(FindPkgConfig)
ENDIF("${ARCH}" STREQUAL "arm")
ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"")
-ADD_DEFINITIONS("-DTIZEN_DEBUG")
+ADD_DEFINITIONS("-DFEATURE_DEVICE_DLOG")
SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -Wl,--rpath=/usr/lib")
)
INSTALL(TARGETS ${fw_name} DESTINATION lib)
+INSTALL(FILES ${INC_DIR}/device.h ${INC_DIR}/device-error.h
+ DESTINATION include/system)
INSTALL(
- DIRECTORY ${INC_DIR}/ DESTINATION include/system
+ DIRECTORY ${INC_DIR}/ DESTINATION include/device
FILES_MATCHING
- PATTERN "*_private.h" EXCLUDE
+ PATTERN "*_doc.h" EXCLUDE
+ PATTERN "device.h" EXCLUDE
PATTERN "${INC_DIR}/*.h"
)
+++ /dev/null
-Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.\r
-\r
- GNU LESSER GENERAL PUBLIC LICENSE\r
- Version 2.1, February 1999\r
-\r
- Copyright (C) 1991, 1999 Free Software Foundation, Inc.\r
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\r
- Everyone is permitted to copy and distribute verbatim copies\r
- of this license document, but changing it is not allowed.\r
-\r
-[This is the first released version of the Lesser GPL. It also counts\r
- as the successor of the GNU Library Public License, version 2, hence\r
- the version number 2.1.]\r
-\r
- Preamble\r
-\r
- The licenses for most software are designed to take away your\r
-freedom to share and change it. By contrast, the GNU General Public\r
-Licenses are intended to guarantee your freedom to share and change\r
-free software--to make sure the software is free for all its users.\r
-\r
- This license, the Lesser General Public License, applies to some\r
-specially designated software packages--typically libraries--of the\r
-Free Software Foundation and other authors who decide to use it. You\r
-can use it too, but we suggest you first think carefully about whether\r
-this license or the ordinary General Public License is the better\r
-strategy to use in any particular case, based on the explanations below.\r
-\r
- When we speak of free software, we are referring to freedom of use,\r
-not price. Our General Public Licenses are designed to make sure that\r
-you have the freedom to distribute copies of free software (and charge\r
-for this service if you wish); that you receive source code or can get\r
-it if you want it; that you can change the software and use pieces of\r
-it in new free programs; and that you are informed that you can do\r
-these things.\r
-\r
- To protect your rights, we need to make restrictions that forbid\r
-distributors to deny you these rights or to ask you to surrender these\r
-rights. These restrictions translate to certain responsibilities for\r
-you if you distribute copies of the library or if you modify it.\r
-\r
- For example, if you distribute copies of the library, whether gratis\r
-or for a fee, you must give the recipients all the rights that we gave\r
-you. You must make sure that they, too, receive or can get the source\r
-code. If you link other code with the library, you must provide\r
-complete object files to the recipients, so that they can relink them\r
-with the library after making changes to the library and recompiling\r
-it. And you must show them these terms so they know their rights.\r
-\r
- We protect your rights with a two-step method: (1) we copyright the\r
-library, and (2) we offer you this license, which gives you legal\r
-permission to copy, distribute and/or modify the library.\r
-\r
- To protect each distributor, we want to make it very clear that\r
-there is no warranty for the free library. Also, if the library is\r
-modified by someone else and passed on, the recipients should know\r
-that what they have is not the original version, so that the original\r
-author's reputation will not be affected by problems that might be\r
-introduced by others.\r
-\f\r
- Finally, software patents pose a constant threat to the existence of\r
-any free program. We wish to make sure that a company cannot\r
-effectively restrict the users of a free program by obtaining a\r
-restrictive license from a patent holder. Therefore, we insist that\r
-any patent license obtained for a version of the library must be\r
-consistent with the full freedom of use specified in this license.\r
-\r
- Most GNU software, including some libraries, is covered by the\r
-ordinary GNU General Public License. This license, the GNU Lesser\r
-General Public License, applies to certain designated libraries, and\r
-is quite different from the ordinary General Public License. We use\r
-this license for certain libraries in order to permit linking those\r
-libraries into non-free programs.\r
-\r
- When a program is linked with a library, whether statically or using\r
-a shared library, the combination of the two is legally speaking a\r
-combined work, a derivative of the original library. The ordinary\r
-General Public License therefore permits such linking only if the\r
-entire combination fits its criteria of freedom. The Lesser General\r
-Public License permits more lax criteria for linking other code with\r
-the library.\r
-\r
- We call this license the "Lesser" General Public License because it\r
-does Less to protect the user's freedom than the ordinary General\r
-Public License. It also provides other free software developers Less\r
-of an advantage over competing non-free programs. These disadvantages\r
-are the reason we use the ordinary General Public License for many\r
-libraries. However, the Lesser license provides advantages in certain\r
-special circumstances.\r
-\r
- For example, on rare occasions, there may be a special need to\r
-encourage the widest possible use of a certain library, so that it becomes\r
-a de-facto standard. To achieve this, non-free programs must be\r
-allowed to use the library. A more frequent case is that a free\r
-library does the same job as widely used non-free libraries. In this\r
-case, there is little to gain by limiting the free library to free\r
-software only, so we use the Lesser General Public License.\r
-\r
- In other cases, permission to use a particular library in non-free\r
-programs enables a greater number of people to use a large body of\r
-free software. For example, permission to use the GNU C Library in\r
-non-free programs enables many more people to use the whole GNU\r
-operating system, as well as its variant, the GNU/Linux operating\r
-system.\r
-\r
- Although the Lesser General Public License is Less protective of the\r
-users' freedom, it does ensure that the user of a program that is\r
-linked with the Library has the freedom and the wherewithal to run\r
-that program using a modified version of the Library.\r
-\r
- The precise terms and conditions for copying, distribution and\r
-modification follow. Pay close attention to the difference between a\r
-"work based on the library" and a "work that uses the library". The\r
-former contains code derived from the library, whereas the latter must\r
-be combined with the library in order to run.\r
-\f\r
- GNU LESSER GENERAL PUBLIC LICENSE\r
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\r
-\r
- 0. This License Agreement applies to any software library or other\r
-program which contains a notice placed by the copyright holder or\r
-other authorized party saying it may be distributed under the terms of\r
-this Lesser General Public License (also called "this License").\r
-Each licensee is addressed as "you".\r
-\r
- A "library" means a collection of software functions and/or data\r
-prepared so as to be conveniently linked with application programs\r
-(which use some of those functions and data) to form executables.\r
-\r
- The "Library", below, refers to any such software library or work\r
-which has been distributed under these terms. A "work based on the\r
-Library" means either the Library or any derivative work under\r
-copyright law: that is to say, a work containing the Library or a\r
-portion of it, either verbatim or with modifications and/or translated\r
-straightforwardly into another language. (Hereinafter, translation is\r
-included without limitation in the term "modification".)\r
-\r
- "Source code" for a work means the preferred form of the work for\r
-making modifications to it. For a library, complete source code means\r
-all the source code for all modules it contains, plus any associated\r
-interface definition files, plus the scripts used to control compilation\r
-and installation of the library.\r
-\r
- Activities other than copying, distribution and modification are not\r
-covered by this License; they are outside its scope. The act of\r
-running a program using the Library is not restricted, and output from\r
-such a program is covered only if its contents constitute a work based\r
-on the Library (independent of the use of the Library in a tool for\r
-writing it). Whether that is true depends on what the Library does\r
-and what the program that uses the Library does.\r
-\r
- 1. You may copy and distribute verbatim copies of the Library's\r
-complete source code as you receive it, in any medium, provided that\r
-you conspicuously and appropriately publish on each copy an\r
-appropriate copyright notice and disclaimer of warranty; keep intact\r
-all the notices that refer to this License and to the absence of any\r
-warranty; and distribute a copy of this License along with the\r
-Library.\r
-\r
- You may charge a fee for the physical act of transferring a copy,\r
-and you may at your option offer warranty protection in exchange for a\r
-fee.\r
-\f\r
- 2. You may modify your copy or copies of the Library or any portion\r
-of it, thus forming a work based on the Library, and copy and\r
-distribute such modifications or work under the terms of Section 1\r
-above, provided that you also meet all of these conditions:\r
-\r
- a) The modified work must itself be a software library.\r
-\r
- b) You must cause the files modified to carry prominent notices\r
- stating that you changed the files and the date of any change.\r
-\r
- c) You must cause the whole of the work to be licensed at no\r
- charge to all third parties under the terms of this License.\r
-\r
- d) If a facility in the modified Library refers to a function or a\r
- table of data to be supplied by an application program that uses\r
- the facility, other than as an argument passed when the facility\r
- is invoked, then you must make a good faith effort to ensure that,\r
- in the event an application does not supply such function or\r
- table, the facility still operates, and performs whatever part of\r
- its purpose remains meaningful.\r
-\r
- (For example, a function in a library to compute square roots has\r
- a purpose that is entirely well-defined independent of the\r
- application. Therefore, Subsection 2d requires that any\r
- application-supplied function or table used by this function must\r
- be optional: if the application does not supply it, the square\r
- root function must still compute square roots.)\r
-\r
-These requirements apply to the modified work as a whole. If\r
-identifiable sections of that work are not derived from the Library,\r
-and can be reasonably considered independent and separate works in\r
-themselves, then this License, and its terms, do not apply to those\r
-sections when you distribute them as separate works. But when you\r
-distribute the same sections as part of a whole which is a work based\r
-on the Library, the distribution of the whole must be on the terms of\r
-this License, whose permissions for other licensees extend to the\r
-entire whole, and thus to each and every part regardless of who wrote\r
-it.\r
-\r
-Thus, it is not the intent of this section to claim rights or contest\r
-your rights to work written entirely by you; rather, the intent is to\r
-exercise the right to control the distribution of derivative or\r
-collective works based on the Library.\r
-\r
-In addition, mere aggregation of another work not based on the Library\r
-with the Library (or with a work based on the Library) on a volume of\r
-a storage or distribution medium does not bring the other work under\r
-the scope of this License.\r
-\r
- 3. You may opt to apply the terms of the ordinary GNU General Public\r
-License instead of this License to a given copy of the Library. To do\r
-this, you must alter all the notices that refer to this License, so\r
-that they refer to the ordinary GNU General Public License, version 2,\r
-instead of to this License. (If a newer version than version 2 of the\r
-ordinary GNU General Public License has appeared, then you can specify\r
-that version instead if you wish.) Do not make any other change in\r
-these notices.\r
-\f\r
- Once this change is made in a given copy, it is irreversible for\r
-that copy, so the ordinary GNU General Public License applies to all\r
-subsequent copies and derivative works made from that copy.\r
-\r
- This option is useful when you wish to copy part of the code of\r
-the Library into a program that is not a library.\r
-\r
- 4. You may copy and distribute the Library (or a portion or\r
-derivative of it, under Section 2) in object code or executable form\r
-under the terms of Sections 1 and 2 above provided that you accompany\r
-it with the complete corresponding machine-readable source code, which\r
-must be distributed under the terms of Sections 1 and 2 above on a\r
-medium customarily used for software interchange.\r
-\r
- If distribution of object code is made by offering access to copy\r
-from a designated place, then offering equivalent access to copy the\r
-source code from the same place satisfies the requirement to\r
-distribute the source code, even though third parties are not\r
-compelled to copy the source along with the object code.\r
-\r
- 5. A program that contains no derivative of any portion of the\r
-Library, but is designed to work with the Library by being compiled or\r
-linked with it, is called a "work that uses the Library". Such a\r
-work, in isolation, is not a derivative work of the Library, and\r
-therefore falls outside the scope of this License.\r
-\r
- However, linking a "work that uses the Library" with the Library\r
-creates an executable that is a derivative of the Library (because it\r
-contains portions of the Library), rather than a "work that uses the\r
-library". The executable is therefore covered by this License.\r
-Section 6 states terms for distribution of such executables.\r
-\r
- When a "work that uses the Library" uses material from a header file\r
-that is part of the Library, the object code for the work may be a\r
-derivative work of the Library even though the source code is not.\r
-Whether this is true is especially significant if the work can be\r
-linked without the Library, or if the work is itself a library. The\r
-threshold for this to be true is not precisely defined by law.\r
-\r
- If such an object file uses only numerical parameters, data\r
-structure layouts and accessors, and small macros and small inline\r
-functions (ten lines or less in length), then the use of the object\r
-file is unrestricted, regardless of whether it is legally a derivative\r
-work. (Executables containing this object code plus portions of the\r
-Library will still fall under Section 6.)\r
-\r
- Otherwise, if the work is a derivative of the Library, you may\r
-distribute the object code for the work under the terms of Section 6.\r
-Any executables containing that work also fall under Section 6,\r
-whether or not they are linked directly with the Library itself.\r
-\f\r
- 6. As an exception to the Sections above, you may also combine or\r
-link a "work that uses the Library" with the Library to produce a\r
-work containing portions of the Library, and distribute that work\r
-under terms of your choice, provided that the terms permit\r
-modification of the work for the customer's own use and reverse\r
-engineering for debugging such modifications.\r
-\r
- You must give prominent notice with each copy of the work that the\r
-Library is used in it and that the Library and its use are covered by\r
-this License. You must supply a copy of this License. If the work\r
-during execution displays copyright notices, you must include the\r
-copyright notice for the Library among them, as well as a reference\r
-directing the user to the copy of this License. Also, you must do one\r
-of these things:\r
-\r
- a) Accompany the work with the complete corresponding\r
- machine-readable source code for the Library including whatever\r
- changes were used in the work (which must be distributed under\r
- Sections 1 and 2 above); and, if the work is an executable linked\r
- with the Library, with the complete machine-readable "work that\r
- uses the Library", as object code and/or source code, so that the\r
- user can modify the Library and then relink to produce a modified\r
- executable containing the modified Library. (It is understood\r
- that the user who changes the contents of definitions files in the\r
- Library will not necessarily be able to recompile the application\r
- to use the modified definitions.)\r
-\r
- b) Use a suitable shared library mechanism for linking with the\r
- Library. A suitable mechanism is one that (1) uses at run time a\r
- copy of the library already present on the user's computer system,\r
- rather than copying library functions into the executable, and (2)\r
- will operate properly with a modified version of the library, if\r
- the user installs one, as long as the modified version is\r
- interface-compatible with the version that the work was made with.\r
-\r
- c) Accompany the work with a written offer, valid for at\r
- least three years, to give the same user the materials\r
- specified in Subsection 6a, above, for a charge no more\r
- than the cost of performing this distribution.\r
-\r
- d) If distribution of the work is made by offering access to copy\r
- from a designated place, offer equivalent access to copy the above\r
- specified materials from the same place.\r
-\r
- e) Verify that the user has already received a copy of these\r
- materials or that you have already sent this user a copy.\r
-\r
- For an executable, the required form of the "work that uses the\r
-Library" must include any data and utility programs needed for\r
-reproducing the executable from it. However, as a special exception,\r
-the materials to be distributed need not include anything that is\r
-normally distributed (in either source or binary form) with the major\r
-components (compiler, kernel, and so on) of the operating system on\r
-which the executable runs, unless that component itself accompanies\r
-the executable.\r
-\r
- It may happen that this requirement contradicts the license\r
-restrictions of other proprietary libraries that do not normally\r
-accompany the operating system. Such a contradiction means you cannot\r
-use both them and the Library together in an executable that you\r
-distribute.\r
-\f\r
- 7. You may place library facilities that are a work based on the\r
-Library side-by-side in a single library together with other library\r
-facilities not covered by this License, and distribute such a combined\r
-library, provided that the separate distribution of the work based on\r
-the Library and of the other library facilities is otherwise\r
-permitted, and provided that you do these two things:\r
-\r
- a) Accompany the combined library with a copy of the same work\r
- based on the Library, uncombined with any other library\r
- facilities. This must be distributed under the terms of the\r
- Sections above.\r
-\r
- b) Give prominent notice with the combined library of the fact\r
- that part of it is a work based on the Library, and explaining\r
- where to find the accompanying uncombined form of the same work.\r
-\r
- 8. You may not copy, modify, sublicense, link with, or distribute\r
-the Library except as expressly provided under this License. Any\r
-attempt otherwise to copy, modify, sublicense, link with, or\r
-distribute the Library is void, and will automatically terminate your\r
-rights under this License. However, parties who have received copies,\r
-or rights, from you under this License will not have their licenses\r
-terminated so long as such parties remain in full compliance.\r
-\r
- 9. You are not required to accept this License, since you have not\r
-signed it. However, nothing else grants you permission to modify or\r
-distribute the Library or its derivative works. These actions are\r
-prohibited by law if you do not accept this License. Therefore, by\r
-modifying or distributing the Library (or any work based on the\r
-Library), you indicate your acceptance of this License to do so, and\r
-all its terms and conditions for copying, distributing or modifying\r
-the Library or works based on it.\r
-\r
- 10. Each time you redistribute the Library (or any work based on the\r
-Library), the recipient automatically receives a license from the\r
-original licensor to copy, distribute, link with or modify the Library\r
-subject to these terms and conditions. You may not impose any further\r
-restrictions on the recipients' exercise of the rights granted herein.\r
-You are not responsible for enforcing compliance by third parties with\r
-this License.\r
-\f\r
- 11. If, as a consequence of a court judgment or allegation of patent\r
-infringement or for any other reason (not limited to patent issues),\r
-conditions are imposed on you (whether by court order, agreement or\r
-otherwise) that contradict the conditions of this License, they do not\r
-excuse you from the conditions of this License. If you cannot\r
-distribute so as to satisfy simultaneously your obligations under this\r
-License and any other pertinent obligations, then as a consequence you\r
-may not distribute the Library at all. For example, if a patent\r
-license would not permit royalty-free redistribution of the Library by\r
-all those who receive copies directly or indirectly through you, then\r
-the only way you could satisfy both it and this License would be to\r
-refrain entirely from distribution of the Library.\r
-\r
-If any portion of this section is held invalid or unenforceable under any\r
-particular circumstance, the balance of the section is intended to apply,\r
-and the section as a whole is intended to apply in other circumstances.\r
-\r
-It is not the purpose of this section to induce you to infringe any\r
-patents or other property right claims or to contest validity of any\r
-such claims; this section has the sole purpose of protecting the\r
-integrity of the free software distribution system which is\r
-implemented by public license practices. Many people have made\r
-generous contributions to the wide range of software distributed\r
-through that system in reliance on consistent application of that\r
-system; it is up to the author/donor to decide if he or she is willing\r
-to distribute software through any other system and a licensee cannot\r
-impose that choice.\r
-\r
-This section is intended to make thoroughly clear what is believed to\r
-be a consequence of the rest of this License.\r
-\r
- 12. If the distribution and/or use of the Library is restricted in\r
-certain countries either by patents or by copyrighted interfaces, the\r
-original copyright holder who places the Library under this License may add\r
-an explicit geographical distribution limitation excluding those countries,\r
-so that distribution is permitted only in or among countries not thus\r
-excluded. In such case, this License incorporates the limitation as if\r
-written in the body of this License.\r
-\r
- 13. The Free Software Foundation may publish revised and/or new\r
-versions of the Lesser General Public License from time to time.\r
-Such new versions will be similar in spirit to the present version,\r
-but may differ in detail to address new problems or concerns.\r
-\r
-Each version is given a distinguishing version number. If the Library\r
-specifies a version number of this License which applies to it and\r
-"any later version", you have the option of following the terms and\r
-conditions either of that version or of any later version published by\r
-the Free Software Foundation. If the Library does not specify a\r
-license version number, you may choose any version ever published by\r
-the Free Software Foundation.\r
-\f\r
- 14. If you wish to incorporate parts of the Library into other free\r
-programs whose distribution conditions are incompatible with these,\r
-write to the author to ask for permission. For software which is\r
-copyrighted by the Free Software Foundation, write to the Free\r
-Software Foundation; we sometimes make exceptions for this. Our\r
-decision will be guided by the two goals of preserving the free status\r
-of all derivatives of our free software and of promoting the sharing\r
-and reuse of software generally.\r
-\r
- NO WARRANTY\r
-\r
- 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO\r
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.\r
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR\r
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY\r
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE\r
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\r
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE\r
-LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME\r
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\r
-\r
- 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN\r
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY\r
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU\r
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR\r
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE\r
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING\r
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A\r
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF\r
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
-DAMAGES.\r
-\r
- END OF TERMS AND CONDITIONS\r
-\f\r
- How to Apply These Terms to Your New Libraries\r
-\r
- If you develop a new library, and you want it to be of the greatest\r
-possible use to the public, we recommend making it free software that\r
-everyone can redistribute and change. You can do so by permitting\r
-redistribution under these terms (or, alternatively, under the terms of the\r
-ordinary General Public License).\r
-\r
- To apply these terms, attach the following notices to the library. It is\r
-safest to attach them to the start of each source file to most effectively\r
-convey the exclusion of warranty; and each file should have at least the\r
-"copyright" line and a pointer to where the full notice is found.\r
-\r
- <one line to give the library's name and a brief idea of what it does.>\r
- Copyright (C) <year> <name of author>\r
-\r
- This library is free software; you can redistribute it and/or\r
- modify it under the terms of the GNU Lesser General Public\r
- License as published by the Free Software Foundation; either\r
- version 2.1 of the License, or (at your option) any later version.\r
-\r
- This library is distributed in the hope that it will be useful,\r
- but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
- Lesser General Public License for more details.\r
-\r
- You should have received a copy of the GNU Lesser General Public\r
- License along with this library; if not, write to the Free Software\r
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\r
-\r
-Also add information on how to contact you by electronic and paper mail.\r
-\r
-You should also get your employer (if you work as a programmer) or your\r
-school, if any, to sign a "copyright disclaimer" for the library, if\r
-necessary. Here is a sample; alter the names:\r
-\r
- Yoyodyne, Inc., hereby disclaims all copyright interest in the\r
- library `Frob' (a library for tweaking knobs) written by James Random Hacker.\r
-\r
- <signature of Ty Coon>, 1 April 1990\r
- Ty Coon, President of Vice\r
-\r
-That's all there is to it!\r
-\r
-\r
--- /dev/null
+Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.\r
+\r
+ Apache License\r
+ Version 2.0, January 2004\r
+ http://www.apache.org/licenses/\r
+\r
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\r
+\r
+ 1. Definitions.\r
+\r
+ "License" shall mean the terms and conditions for use, reproduction,\r
+ and distribution as defined by Sections 1 through 9 of this document.\r
+\r
+ "Licensor" shall mean the copyright owner or entity authorized by\r
+ the copyright owner that is granting the License.\r
+\r
+ "Legal Entity" shall mean the union of the acting entity and all\r
+ other entities that control, are controlled by, or are under common\r
+ control with that entity. For the purposes of this definition,\r
+ "control" means (i) the power, direct or indirect, to cause the\r
+ direction or management of such entity, whether by contract or\r
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the\r
+ outstanding shares, or (iii) beneficial ownership of such entity.\r
+\r
+ "You" (or "Your") shall mean an individual or Legal Entity\r
+ exercising permissions granted by this License.\r
+\r
+ "Source" form shall mean the preferred form for making modifications,\r
+ including but not limited to software source code, documentation\r
+ source, and configuration files.\r
+\r
+ "Object" form shall mean any form resulting from mechanical\r
+ transformation or translation of a Source form, including but\r
+ not limited to compiled object code, generated documentation,\r
+ and conversions to other media types.\r
+\r
+ "Work" shall mean the work of authorship, whether in Source or\r
+ Object form, made available under the License, as indicated by a\r
+ copyright notice that is included in or attached to the work\r
+ (an example is provided in the Appendix below).\r
+\r
+ "Derivative Works" shall mean any work, whether in Source or Object\r
+ form, that is based on (or derived from) the Work and for which the\r
+ editorial revisions, annotations, elaborations, or other modifications\r
+ represent, as a whole, an original work of authorship. For the purposes\r
+ of this License, Derivative Works shall not include works that remain\r
+ separable from, or merely link (or bind by name) to the interfaces of,\r
+ the Work and Derivative Works thereof.\r
+\r
+ "Contribution" shall mean any work of authorship, including\r
+ the original version of the Work and any modifications or additions\r
+ to that Work or Derivative Works thereof, that is intentionally\r
+ submitted to Licensor for inclusion in the Work by the copyright owner\r
+ or by an individual or Legal Entity authorized to submit on behalf of\r
+ the copyright owner. For the purposes of this definition, "submitted"\r
+ means any form of electronic, verbal, or written communication sent\r
+ to the Licensor or its representatives, including but not limited to\r
+ communication on electronic mailing lists, source code control systems,\r
+ and issue tracking systems that are managed by, or on behalf of, the\r
+ Licensor for the purpose of discussing and improving the Work, but\r
+ excluding communication that is conspicuously marked or otherwise\r
+ designated in writing by the copyright owner as "Not a Contribution."\r
+\r
+ "Contributor" shall mean Licensor and any individual or Legal Entity\r
+ on behalf of whom a Contribution has been received by Licensor and\r
+ subsequently incorporated within the Work.\r
+\r
+ 2. Grant of Copyright License. Subject to the terms and conditions of\r
+ this License, each Contributor hereby grants to You a perpetual,\r
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable\r
+ copyright license to reproduce, prepare Derivative Works of,\r
+ publicly display, publicly perform, sublicense, and distribute the\r
+ Work and such Derivative Works in Source or Object form.\r
+\r
+ 3. Grant of Patent License. Subject to the terms and conditions of\r
+ this License, each Contributor hereby grants to You a perpetual,\r
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable\r
+ (except as stated in this section) patent license to make, have made,\r
+ use, offer to sell, sell, import, and otherwise transfer the Work,\r
+ where such license applies only to those patent claims licensable\r
+ by such Contributor that are necessarily infringed by their\r
+ Contribution(s) alone or by combination of their Contribution(s)\r
+ with the Work to which such Contribution(s) was submitted. If You\r
+ institute patent litigation against any entity (including a\r
+ cross-claim or counterclaim in a lawsuit) alleging that the Work\r
+ or a Contribution incorporated within the Work constitutes direct\r
+ or contributory patent infringement, then any patent licenses\r
+ granted to You under this License for that Work shall terminate\r
+ as of the date such litigation is filed.\r
+\r
+ 4. Redistribution. You may reproduce and distribute copies of the\r
+ Work or Derivative Works thereof in any medium, with or without\r
+ modifications, and in Source or Object form, provided that You\r
+ meet the following conditions:\r
+\r
+ (a) You must give any other recipients of the Work or\r
+ Derivative Works a copy of this License; and\r
+\r
+ (b) You must cause any modified files to carry prominent notices\r
+ stating that You changed the files; and\r
+\r
+ (c) You must retain, in the Source form of any Derivative Works\r
+ that You distribute, all copyright, patent, trademark, and\r
+ attribution notices from the Source form of the Work,\r
+ excluding those notices that do not pertain to any part of\r
+ the Derivative Works; and\r
+\r
+ (d) If the Work includes a "NOTICE" text file as part of its\r
+ distribution, then any Derivative Works that You distribute must\r
+ include a readable copy of the attribution notices contained\r
+ within such NOTICE file, excluding those notices that do not\r
+ pertain to any part of the Derivative Works, in at least one\r
+ of the following places: within a NOTICE text file distributed\r
+ as part of the Derivative Works; within the Source form or\r
+ documentation, if provided along with the Derivative Works; or,\r
+ within a display generated by the Derivative Works, if and\r
+ wherever such third-party notices normally appear. The contents\r
+ of the NOTICE file are for informational purposes only and\r
+ do not modify the License. You may add Your own attribution\r
+ notices within Derivative Works that You distribute, alongside\r
+ or as an addendum to the NOTICE text from the Work, provided\r
+ that such additional attribution notices cannot be construed\r
+ as modifying the License.\r
+\r
+ You may add Your own copyright statement to Your modifications and\r
+ may provide additional or different license terms and conditions\r
+ for use, reproduction, or distribution of Your modifications, or\r
+ for any such Derivative Works as a whole, provided Your use,\r
+ reproduction, and distribution of the Work otherwise complies with\r
+ the conditions stated in this License.\r
+\r
+ 5. Submission of Contributions. Unless You explicitly state otherwise,\r
+ any Contribution intentionally submitted for inclusion in the Work\r
+ by You to the Licensor shall be under the terms and conditions of\r
+ this License, without any additional terms or conditions.\r
+ Notwithstanding the above, nothing herein shall supersede or modify\r
+ the terms of any separate license agreement you may have executed\r
+ with Licensor regarding such Contributions.\r
+\r
+ 6. Trademarks. This License does not grant permission to use the trade\r
+ names, trademarks, service marks, or product names of the Licensor,\r
+ except as required for reasonable and customary use in describing the\r
+ origin of the Work and reproducing the content of the NOTICE file.\r
+\r
+ 7. Disclaimer of Warranty. Unless required by applicable law or\r
+ agreed to in writing, Licensor provides the Work (and each\r
+ Contributor provides its Contributions) on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\r
+ implied, including, without limitation, any warranties or conditions\r
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\r
+ PARTICULAR PURPOSE. You are solely responsible for determining the\r
+ appropriateness of using or redistributing the Work and assume any\r
+ risks associated with Your exercise of permissions under this License.\r
+\r
+ 8. Limitation of Liability. In no event and under no legal theory,\r
+ whether in tort (including negligence), contract, or otherwise,\r
+ unless required by applicable law (such as deliberate and grossly\r
+ negligent acts) or agreed to in writing, shall any Contributor be\r
+ liable to You for damages, including any direct, indirect, special,\r
+ incidental, or consequential damages of any character arising as a\r
+ result of this License or out of the use or inability to use the\r
+ Work (including but not limited to damages for loss of goodwill,\r
+ work stoppage, computer failure or malfunction, or any and all\r
+ other commercial damages or losses), even if such Contributor\r
+ has been advised of the possibility of such damages.\r
+\r
+ 9. Accepting Warranty or Additional Liability. While redistributing\r
+ the Work or Derivative Works thereof, You may choose to offer,\r
+ and charge a fee for, acceptance of support, warranty, indemnity,\r
+ or other liability obligations and/or rights consistent with this\r
+ License. However, in accepting such obligations, You may act only\r
+ on Your own behalf and on Your sole responsibility, not on behalf\r
+ of any other Contributor, and only if You agree to indemnify,\r
+ defend, and hold each Contributor harmless for any liability\r
+ incurred by, or claims asserted against, such Contributor by reason\r
+ of your accepting any such warranty or additional liability.\r
+\r
+ END OF TERMS AND CONDITIONS\r
+\r
+ APPENDIX: How to apply the Apache License to your work.\r
+\r
+ To apply the Apache License to your work, attach the following\r
+ boilerplate notice, with the fields enclosed by brackets "[]"\r
+ replaced with your own identifying information. (Don't include\r
+ the brackets!) The text should be enclosed in the appropriate\r
+ comment syntax for the file format. We also recommend that a\r
+ file or class name and description of purpose be included on the\r
+ same "printed page" as the copyright notice for easier\r
+ identification within third-party archives.\r
+\r
+ Copyright [yyyy] [name of copyright owner]\r
+\r
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.\r
+\r
+\r
+\r
/testcase/utc_system_device_battery
/testcase/utc_system_device_brightness
+/testcase/utc_system_device_flash
+/testcase/utc_system_device_memory
+/testcase/utc_system_device_cpu
#include <tet_api.h>
#include <device.h>
+#define API_NAME_DEVICE_BATTERY_GET_WARNING_STATUS "device_battery_get_warning_status"
+#define API_NAME_DEVICE_BATTERY_WARNING_SET_CB "device_battery_warning_set_cb"
+#define API_NAME_DEVICE_BATTERY_WARNING_UNSET_CB "device_battery_warning_unset_cb"
#define API_NAME_DEVICE_BATTERY_GET_PERCENT "device_battery_get_percent"
-#define API_NAME_DEVICE_BATTERY_IS_FULL "device_battery_is_full"
+#define API_NAME_DEVICE_BATTERY_GET_DETAIL "device_battery_get_detail"
#define API_NAME_DEVICE_BATTERY_IS_CHARGING "device_battery_is_charging"
#define API_NAME_DEVICE_BATTERY_SET_CB "device_battery_set_cb"
#define API_NAME_DEVICE_BATTERY_UNSET_CB "device_battery_unset_cb"
+#define API_NAME_DEVICE_BATTERY_IS_FULL "device_battery_is_full"
+#define API_NAME_DEVICE_BATTERY_GET_REMAINING_TIME "device_battery_get_remaining_time"
+#define API_NAME_DEVICE_BATTERY_SET_REMAINING_TIME_CHANGED_CB "device_battery_set_remaining_time_changed_cb"
+#define API_NAME_DEVICE_BATTERY_UNSET_REMAINING_TIME_CHANGED_CB "device_battery_unset_remaining_time_changed_cb"
+#define API_NAME_DEVICE_BATTERY_GET_LEVEL_STATUS "device_battery_get_level_status"
+#define API_NAME_DEVICE_BATTERY_LEVEL_SET_CB "device_battery_level_set_cb"
static void startup(void);
static void cleanup(void);
void (*tet_startup)(void) = startup;
void (*tet_cleanup)(void) = cleanup;
+
+static void utc_system_device_battery_get_warning_status_p(void);
+static void utc_system_device_battery_get_warning_status_n(void);
+static void utc_system_device_battery_warning_set_cb_p(void);
+static void utc_system_device_battery_warning_set_cb_n(void);
+static void utc_system_device_battery_warning_unset_cb_p(void);
static void utc_system_device_battery_get_percent_p(void);
static void utc_system_device_battery_get_percent_n(void);
-static void utc_system_device_battery_is_full_p(void);
-static void utc_system_device_battery_is_full_n(void);
+static void utc_system_device_battery_get_detail_p(void);
+static void utc_system_device_battery_get_detail_n(void);
static void utc_system_device_battery_is_charging_p(void);
static void utc_system_device_battery_is_charging_n(void);
static void utc_system_device_battery_set_cb_p(void);
static void utc_system_device_battery_set_cb_n(void);
static void utc_system_device_battery_unset_cb_p(void);
-
+static void utc_system_device_battery_is_full_p(void);
+static void utc_system_device_battery_is_full_n(void);
+static void utc_system_device_battery_get_remaining_time_p(void);
+static void utc_system_device_battery_get_remaining_time_n_1(void);
+static void utc_system_device_battery_get_remaining_time_n_2(void);
+static void utc_system_device_battery_set_remaining_time_changed_cb_p(void);
+static void utc_system_device_battery_set_remaining_time_changed_cb_n_1(void);
+static void utc_system_device_battery_set_remaining_time_changed_cb_n_2(void);
+static void utc_system_device_battery_unset_remaining_time_changed_cb_p(void);
+static void utc_system_device_battery_unset_remaining_time_changed_cb_n(void);
+static void utc_system_device_battery_get_level_status_p(void);
+static void utc_system_device_battery_get_level_status_n(void);
+static void utc_system_device_battery_level_set_cb_p(void);
+static void utc_system_device_battery_level_set_cb_n(void);
enum {
POSITIVE_TC_IDX = 0x01,
};
struct tet_testlist tet_testlist[] = {
+ { utc_system_device_battery_get_warning_status_p, POSITIVE_TC_IDX },
+ { utc_system_device_battery_get_warning_status_n, NEGATIVE_TC_IDX },
+ { utc_system_device_battery_warning_set_cb_p, POSITIVE_TC_IDX },
+ { utc_system_device_battery_warning_set_cb_n, NEGATIVE_TC_IDX },
+ { utc_system_device_battery_warning_unset_cb_p, POSITIVE_TC_IDX },
{ utc_system_device_battery_get_percent_p, POSITIVE_TC_IDX },
{ utc_system_device_battery_get_percent_n, NEGATIVE_TC_IDX },
- { utc_system_device_battery_is_full_p, POSITIVE_TC_IDX },
- { utc_system_device_battery_is_full_n, NEGATIVE_TC_IDX },
+ { utc_system_device_battery_get_detail_p, POSITIVE_TC_IDX },
+ { utc_system_device_battery_get_detail_n, NEGATIVE_TC_IDX },
{ utc_system_device_battery_is_charging_p, POSITIVE_TC_IDX },
{ utc_system_device_battery_is_charging_n, NEGATIVE_TC_IDX },
{ utc_system_device_battery_set_cb_p, POSITIVE_TC_IDX },
{ utc_system_device_battery_set_cb_n, NEGATIVE_TC_IDX },
{ utc_system_device_battery_unset_cb_p, POSITIVE_TC_IDX },
+ { utc_system_device_battery_is_full_p, POSITIVE_TC_IDX },
+ { utc_system_device_battery_is_full_n, NEGATIVE_TC_IDX },
+ { utc_system_device_battery_get_remaining_time_p, POSITIVE_TC_IDX },
+ { utc_system_device_battery_get_remaining_time_n_1, NEGATIVE_TC_IDX },
+ { utc_system_device_battery_get_remaining_time_n_2, NEGATIVE_TC_IDX },
+ { utc_system_device_battery_set_remaining_time_changed_cb_p, POSITIVE_TC_IDX },
+ { utc_system_device_battery_set_remaining_time_changed_cb_n_1, NEGATIVE_TC_IDX },
+ { utc_system_device_battery_set_remaining_time_changed_cb_n_2, NEGATIVE_TC_IDX },
+ { utc_system_device_battery_unset_remaining_time_changed_cb_p, POSITIVE_TC_IDX },
+ { utc_system_device_battery_unset_remaining_time_changed_cb_n, NEGATIVE_TC_IDX },
+ { utc_system_device_battery_get_level_status_p, POSITIVE_TC_IDX },
+ { utc_system_device_battery_get_level_status_n, NEGATIVE_TC_IDX },
+ { utc_system_device_battery_level_set_cb_p, POSITIVE_TC_IDX },
+ { utc_system_device_battery_level_set_cb_n, NEGATIVE_TC_IDX },
{ NULL, 0},
};
}
/**
+ * @brief Positive test case of device_battery_get_warning_status()
+ */
+static void utc_system_device_battery_get_warning_status_p(void)
+{
+ device_battery_warn_e status = 0;
+ int error = DEVICE_ERROR_NONE;
+ error = device_battery_get_warning_status(&status);
+
+ dts_check_eq(API_NAME_DEVICE_BATTERY_GET_WARNING_STATUS, error, DEVICE_ERROR_NONE);
+}
+
+/**
+ * @brief Negative test case of device_battery_get_warning_status()
+ */
+static void utc_system_device_battery_get_warning_status_n(void)
+{
+ int error = DEVICE_ERROR_NONE;
+ error = device_battery_get_warning_status(NULL);
+
+ dts_check_ne(API_NAME_DEVICE_BATTERY_GET_PERCENT, error, DEVICE_ERROR_NONE);
+}
+
+static void warning_set_cb(device_battery_warn_e status, void *user_data)
+{
+
+}
+
+/**
+ * @brief Positive test case of device_battery_warning_set_cb()
+ */
+static void utc_system_device_battery_warning_set_cb_p(void)
+{
+ int error = DEVICE_ERROR_NONE;
+ error = device_battery_warning_set_cb(warning_set_cb, NULL);
+
+ dts_check_eq(API_NAME_DEVICE_BATTERY_WARNING_SET_CB, error, DEVICE_ERROR_NONE);
+}
+
+/**
+ * @brief Negative test case of device_battery_warning_set_cb()
+ */
+static void utc_system_device_battery_warning_set_cb_n(void)
+{
+ int error = DEVICE_ERROR_NONE;
+ error = device_battery_warning_set_cb(NULL, NULL);
+
+ dts_check_ne(API_NAME_DEVICE_BATTERY_WARNING_SET_CB, error, DEVICE_ERROR_NONE);
+}
+
+/**
+ * @brief Positive test case of device_battery_warning_unset_cb()
+ */
+static void utc_system_device_battery_warning_unset_cb_p(void)
+{
+ int error = DEVICE_ERROR_NONE;
+ error = device_battery_warning_unset_cb();
+
+ dts_check_eq(API_NAME_DEVICE_BATTERY_WARNING_SET_CB, error, DEVICE_ERROR_NONE);
+}
+
+/**
* @brief Positive test case of device_battery_get_percent()
*/
static void utc_system_device_battery_get_percent_p(void)
{
- int percent = 0;
- int error = DEVICE_ERROR_NONE;
- error = device_battery_get_percent(&percent);
+ int percent = 0;
+ int error = DEVICE_ERROR_NONE;
+ error = device_battery_get_percent(&percent);
- dts_check_eq(API_NAME_DEVICE_BATTERY_GET_PERCENT, error, DEVICE_ERROR_NONE);
+ dts_check_eq(API_NAME_DEVICE_BATTERY_GET_PERCENT, error, DEVICE_ERROR_NONE);
}
/**
*/
static void utc_system_device_battery_get_percent_n(void)
{
- int error = DEVICE_ERROR_NONE;
- error = device_battery_get_percent(NULL);
+ int error = DEVICE_ERROR_NONE;
+ error = device_battery_get_percent(NULL);
- dts_check_ne(API_NAME_DEVICE_BATTERY_GET_PERCENT, error, DEVICE_ERROR_NONE);
+ dts_check_ne(API_NAME_DEVICE_BATTERY_GET_PERCENT, error, DEVICE_ERROR_NONE);
}
/**
- * @brief Positive test case of device_battery_is_full()
+ * @brief Positive test case of device_battery_get_detail()
*/
-static void utc_system_device_battery_is_full_p(void)
+static void utc_system_device_battery_get_detail_p(void)
{
- bool full;
- int error = DEVICE_ERROR_NONE;
- error = device_battery_is_full(&full);
- dts_check_eq(API_NAME_DEVICE_BATTERY_IS_FULL, error, DEVICE_ERROR_NONE);
+ int detail = 0;
+ int error = DEVICE_ERROR_NONE;
+ error = device_battery_get_detail(&detail);
+
+ dts_check_eq(API_NAME_DEVICE_BATTERY_GET_DETAIL, error, DEVICE_ERROR_NONE);
}
/**
- * @brief Negative test case of device_battery_is_full()
+ * @brief Negative test case of device_battery_get_detail()
*/
-static void utc_system_device_battery_is_full_n(void)
+static void utc_system_device_battery_get_detail_n(void)
{
- int error = DEVICE_ERROR_NONE;
- error = device_battery_is_full(NULL);
- dts_check_ne(API_NAME_DEVICE_BATTERY_IS_FULL, error, DEVICE_ERROR_NONE);
-}
+ int error = DEVICE_ERROR_NONE;
+ error = device_battery_get_detail(NULL);
+ dts_check_ne(API_NAME_DEVICE_BATTERY_GET_DETAIL, error, DEVICE_ERROR_NONE);
+}
+/**
+ * @brief Positive test case of device_battery_is_charging()
+ */
static void utc_system_device_battery_is_charging_p(void)
{
- bool charging;
- int error = DEVICE_ERROR_NONE;
- error = device_battery_is_charging(&charging);
- dts_check_eq(API_NAME_DEVICE_BATTERY_IS_CHARGING, error, DEVICE_ERROR_NONE);
+ bool charging;
+ int error = DEVICE_ERROR_NONE;
+ error = device_battery_is_charging(&charging);
+ dts_check_eq(API_NAME_DEVICE_BATTERY_IS_CHARGING, error, DEVICE_ERROR_NONE);
}
+/**
+ * @brief Negative test case of device_battery_is_charging()
+ */
static void utc_system_device_battery_is_charging_n(void)
{
- bool charging;
- int error = DEVICE_ERROR_NONE;
- error = device_battery_is_charging(NULL);
- dts_check_ne(API_NAME_DEVICE_BATTERY_IS_CHARGING, error, DEVICE_ERROR_NONE);
+ int error = DEVICE_ERROR_NONE;
+ error = device_battery_is_charging(NULL);
+ dts_check_ne(API_NAME_DEVICE_BATTERY_IS_CHARGING, error, DEVICE_ERROR_NONE);
}
static void battery_cb(int percent, void *user_data)
{
}
+/**
+ * @brief Positive test case of device_battery_set_cb()
+ */
static void utc_system_device_battery_set_cb_p(void)
{
- int error = device_battery_set_cb(battery_cb, NULL);
- device_battery_unset_cb();
- dts_check_eq(API_NAME_DEVICE_BATTERY_SET_CB, error, DEVICE_ERROR_NONE);
+ int error = device_battery_set_cb(battery_cb, NULL);
+ device_battery_unset_cb();
+ dts_check_eq(API_NAME_DEVICE_BATTERY_SET_CB, error, DEVICE_ERROR_NONE);
}
+/**
+ * @brief Negative test case of device_battery_set_cb()
+ */
static void utc_system_device_battery_set_cb_n(void)
{
- int error = device_battery_set_cb(NULL, NULL);
- device_battery_unset_cb();
- dts_check_ne(API_NAME_DEVICE_BATTERY_SET_CB, error, DEVICE_ERROR_NONE);
+ int error = device_battery_set_cb(NULL, NULL);
+ device_battery_unset_cb();
+ dts_check_ne(API_NAME_DEVICE_BATTERY_SET_CB, error, DEVICE_ERROR_NONE);
}
+/**
+ * @brief Positive test case of device_battery_unset_cb()
+ */
static void utc_system_device_battery_unset_cb_p(void)
{
- device_battery_set_cb(battery_cb, NULL);
- int error = device_battery_unset_cb();
- dts_check_eq(API_NAME_DEVICE_BATTERY_SET_CB, error, DEVICE_ERROR_NONE);
+ device_battery_set_cb(battery_cb, NULL);
+ int error = device_battery_unset_cb();
+ dts_check_eq(API_NAME_DEVICE_BATTERY_SET_CB, error, DEVICE_ERROR_NONE);
+}
+
+/**
+ * @brief Positive test case of device_battery_is_full()
+ */
+static void utc_system_device_battery_is_full_p(void)
+{
+ bool full;
+ int error = DEVICE_ERROR_NONE;
+ error = device_battery_is_full(&full);
+ dts_check_eq(API_NAME_DEVICE_BATTERY_IS_FULL, error, DEVICE_ERROR_NONE);
+}
+
+/**
+ * @brief Negative test case of device_battery_is_full()
+ */
+static void utc_system_device_battery_is_full_n(void)
+{
+ int error = DEVICE_ERROR_NONE;
+ error = device_battery_is_full(NULL);
+ dts_check_ne(API_NAME_DEVICE_BATTERY_IS_FULL, error, DEVICE_ERROR_NONE);
+}
+
+/**
+ * @brief Positive test case of device_battery_get_remaining_time()
+ */
+static void utc_system_device_battery_get_remaining_time_p(void)
+{
+ int stime = 0;
+ int error = DEVICE_ERROR_NONE;
+ error = device_battery_get_remaining_time(DEVICE_BATTERY_REMAINING_TIME_TO_FULLY_CHARGED, &stime);
+ dts_check_eq(API_NAME_DEVICE_BATTERY_GET_REMAINING_TIME, error, DEVICE_ERROR_NONE);
+}
+
+/**
+ * @brief Negative test case of device_battery_get_remaing_time()
+ */
+static void utc_system_device_battery_get_remaining_time_n_1(void)
+{
+ int stime = 0;
+ int error = DEVICE_ERROR_NONE;
+ error = device_battery_get_remaining_time(-1, &stime);
+ dts_check_ne(API_NAME_DEVICE_BATTERY_IS_FULL, error, DEVICE_ERROR_NONE);
+}
+
+/**
+ * @brief Negative test case of device_battery_get_remaing_time()
+ */
+static void utc_system_device_battery_get_remaining_time_n_2(void)
+{
+ int error = DEVICE_ERROR_NONE;
+ error = device_battery_get_remaining_time(DEVICE_BATTERY_REMAINING_TIME_TO_FULLY_CHARGED, NULL);
+ dts_check_ne(API_NAME_DEVICE_BATTERY_IS_FULL, error, DEVICE_ERROR_NONE);
+}
+
+static void remaining_time_changed_cb(int time, void *user_data)
+{
+
+}
+
+/**
+ * @brief Positive test case of device_battery_set_remaining_time_changed_cb()
+ */
+static void utc_system_device_battery_set_remaining_time_changed_cb_p(void)
+{
+ int error = DEVICE_ERROR_NONE;
+ error = device_battery_set_remaining_time_changed_cb(
+ DEVICE_BATTERY_REMAINING_TIME_TO_FULLY_CHARGED,
+ remaining_time_changed_cb, NULL);
+ dts_check_eq(API_NAME_DEVICE_BATTERY_SET_REMAINING_TIME_CHANGED_CB, error, DEVICE_ERROR_NONE);
+}
+
+/**
+ * @brief Negative test case of device_battery_set_remaing_time_changed_cb()
+ */
+static void utc_system_device_battery_set_remaining_time_changed_cb_n_1(void)
+{
+ int error = DEVICE_ERROR_NONE;
+ error = device_battery_set_remaining_time_changed_cb(
+ -1, remaining_time_changed_cb, NULL);
+ dts_check_ne(API_NAME_DEVICE_BATTERY_SET_REMAINING_TIME_CHANGED_CB, error, DEVICE_ERROR_NONE);
+}
+
+/**
+ * @brief Negative test case of device_battery_set_remaing_time_changed_cb()
+ */
+static void utc_system_device_battery_set_remaining_time_changed_cb_n_2(void)
+{
+ int error = DEVICE_ERROR_NONE;
+ error = device_battery_set_remaining_time_changed_cb(
+ DEVICE_BATTERY_REMAINING_TIME_TO_FULLY_CHARGED, NULL, NULL);
+ dts_check_ne(API_NAME_DEVICE_BATTERY_SET_REMAINING_TIME_CHANGED_CB, error, DEVICE_ERROR_NONE);
+}
+
+/**
+ * @brief Positive test case of device_battery_unset_remaining_time_changed_cb()
+ */
+static void utc_system_device_battery_unset_remaining_time_changed_cb_p(void)
+{
+ int error = DEVICE_ERROR_NONE;
+ error = device_battery_unset_remaining_time_changed_cb(
+ DEVICE_BATTERY_REMAINING_TIME_TO_FULLY_CHARGED);
+ dts_check_eq(API_NAME_DEVICE_BATTERY_UNSET_REMAINING_TIME_CHANGED_CB, error, DEVICE_ERROR_NONE);
+}
+
+/**
+ * @brief Negative test case of device_battery_unset_remaing_time_changed_cb()
+ */
+static void utc_system_device_battery_unset_remaining_time_changed_cb_n(void)
+{
+ int error = DEVICE_ERROR_NONE;
+ error = device_battery_unset_remaining_time_changed_cb(-1);
+ dts_check_ne(API_NAME_DEVICE_BATTERY_UNSET_REMAINING_TIME_CHANGED_CB, error, DEVICE_ERROR_NONE);
+}
+
+/**
+ * @brief Positive test case of device_battery_get_level_status()
+ */
+static void utc_system_device_battery_get_level_status_p(void)
+{
+ device_battery_level_e status;
+ int error = DEVICE_ERROR_NONE;
+ error = device_battery_get_level_status(&status);
+ dts_check_eq(API_NAME_DEVICE_BATTERY_GET_LEVEL_STATUS, error, DEVICE_ERROR_NONE);
+}
+
+/**
+ * @brief Negative test case of device_battery_get_level_status()
+ */
+static void utc_system_device_battery_get_level_status_n(void)
+{
+ int error = DEVICE_ERROR_NONE;
+ error = device_battery_get_level_status(NULL);
+ dts_check_ne(API_NAME_DEVICE_BATTERY_GET_LEVEL_STATUS, error, DEVICE_ERROR_NONE);
+}
+
+static void level_set_cb(device_battery_level_e status, void *user_data)
+{
+
+}
+
+/**
+ * @brief Positive test case of device_battery_level_set_cb()
+ */
+static void utc_system_device_battery_level_set_cb_p(void)
+{
+ int error = DEVICE_ERROR_NONE;
+ error = device_battery_level_set_cb(level_set_cb, NULL);
+ dts_check_eq(API_NAME_DEVICE_BATTERY_LEVEL_SET_CB, error, DEVICE_ERROR_NONE);
+}
+
+/**
+ * @brief Negative test case of device_battery_level_set_cb()
+ */
+static void utc_system_device_battery_level_set_cb_n(void)
+{
+ int error = DEVICE_ERROR_NONE;
+ error = device_battery_level_set_cb(NULL, NULL);
+ dts_check_ne(API_NAME_DEVICE_BATTERY_LEVEL_SET_CB, error, DEVICE_ERROR_NONE);
}
#define API_NAME_DEVICE_GET_DISPLAY_COUNT "device_get_display_numbers"
#define API_NAME_DEVICE_GET_BRIGHTNESS "device_get_brightness"
-#define API_NAME_DEVICE_GET_MAX_BRIGHTNESS "device_get_max_brightness"
#define API_NAME_DEVICE_SET_BRIGHTNESS "device_set_brightness"
+#define API_NAME_DEVICE_GET_MAX_BRIGHTNESS "device_get_max_brightness"
#define API_NAME_DEVICE_SET_BRIGHTNESS_FROM_SETTINGS "device_set_brightness_from_settings"
+#define API_NAME_DEVICE_SET_BRIGHTNESS_TO_SETTINGS "device_set_brightness_to_settings"
static void startup(void);
static void cleanup(void);
static void utc_system_device_get_display_numbers_p(void);
+static void utc_system_device_get_display_numbers_n(void);
static void utc_system_device_get_brightness_p(void);
static void utc_system_device_get_brightness_n_1(void);
static void utc_system_device_get_brightness_n_2(void);
+static void utc_system_device_set_brightness_p(void);
+static void utc_system_device_set_brightness_n_1(void);
+static void utc_system_device_set_brightness_n_2(void);
static void utc_system_device_get_max_brightness_p(void);
static void utc_system_device_get_max_brightness_n_1(void);
static void utc_system_device_get_max_brightness_n_2(void);
-static void utc_system_device_set_brightness_p_1(void);
-static void utc_system_device_set_brightness_p_2(void);
-static void utc_system_device_set_brightness_n_1(void);
-static void utc_system_device_set_brightness_n_2(void);
static void utc_system_device_set_brightness_from_settings_p(void);
static void utc_system_device_set_brightness_from_settings_n(void);
-
+static void utc_system_device_set_brightness_to_settings_p(void);
+static void utc_system_device_set_brightness_to_settings_n(void);
enum {
POSITIVE_TC_IDX = 0x01,
};
struct tet_testlist tet_testlist[] = {
- { utc_system_device_get_display_numbers_p, POSITIVE_TC_IDX},
+ { utc_system_device_get_display_numbers_p, POSITIVE_TC_IDX},
+ { utc_system_device_get_display_numbers_n, NEGATIVE_TC_IDX },
{ utc_system_device_get_brightness_p, POSITIVE_TC_IDX },
{ utc_system_device_get_brightness_n_1, NEGATIVE_TC_IDX },
{ utc_system_device_get_brightness_n_2, NEGATIVE_TC_IDX },
+ { utc_system_device_set_brightness_p, POSITIVE_TC_IDX },
+ { utc_system_device_set_brightness_n_1, NEGATIVE_TC_IDX },
+ { utc_system_device_set_brightness_n_2, NEGATIVE_TC_IDX },
{ utc_system_device_get_max_brightness_p, POSITIVE_TC_IDX },
{ utc_system_device_get_max_brightness_n_1, NEGATIVE_TC_IDX },
{ utc_system_device_get_max_brightness_n_2, NEGATIVE_TC_IDX },
- { utc_system_device_set_brightness_p_1, POSITIVE_TC_IDX },
- { utc_system_device_set_brightness_p_2, POSITIVE_TC_IDX },
- { utc_system_device_set_brightness_n_1, NEGATIVE_TC_IDX },
- { utc_system_device_set_brightness_n_2, NEGATIVE_TC_IDX },
{ utc_system_device_set_brightness_from_settings_p, POSITIVE_TC_IDX },
{ utc_system_device_set_brightness_from_settings_n, NEGATIVE_TC_IDX },
+ { utc_system_device_set_brightness_to_settings_p, POSITIVE_TC_IDX },
+ { utc_system_device_set_brightness_to_settings_n, NEGATIVE_TC_IDX },
{ NULL, 0},
};
static void startup(void)
{
/* start of TC */
- power_wakeup();
- power_lock_state(POWER_STATE_NORMAL, 0);
+ power_wakeup(false);
+ power_lock_state(POWER_STATE_NORMAL, 0);
- device_get_display_numbers(&cnt);
+ device_get_display_numbers(&cnt);
}
static void cleanup(void)
{
/* end of TC */
- power_unlock_state(POWER_STATE_NORMAL);
+ power_unlock_state(POWER_STATE_NORMAL);
}
+/**
+ * @brief Positive test case of device_get_display_numbers()
+ */
static void utc_system_device_get_display_numbers_p(void)
{
- int _cnt, err;
- err = device_get_display_numbers(&_cnt);
-
- if(err < 0){
- dts_fail(API_NAME_DEVICE_GET_DISPLAY_COUNT);
- }
- else{
- dts_pass(API_NAME_DEVICE_GET_DISPLAY_COUNT);
- }
+ int _cnt, error = DEVICE_ERROR_NONE;
+ error = device_get_display_numbers(&_cnt);
+
+ dts_check_eq(API_NAME_DEVICE_GET_DISPLAY_COUNT, error, DEVICE_ERROR_NONE);
}
/**
- * @brief Positive test case of device_get_brightness()
+ * @brief Negative test case of device_get_display_numbers()
*/
-static void utc_system_device_get_brightness_p(void)
+static void utc_system_device_get_display_numbers_n(void)
{
- int i;
- int value = 0;
- int error = DEVICE_ERROR_NONE;
-
- for(i=0; i<cnt; i++){
- error = device_get_brightness(i, &value);
+ int error = DEVICE_ERROR_NONE;
+ error = device_get_display_numbers(NULL);
- if (error != DEVICE_ERROR_NONE){
- dts_fail(API_NAME_DEVICE_GET_BRIGHTNESS);
- }
+ dts_check_ne(API_NAME_DEVICE_GET_DISPLAY_COUNT, error, DEVICE_ERROR_NONE);
+}
- if (value < 0){
- dts_fail(API_NAME_DEVICE_GET_BRIGHTNESS);
- }
- }
+/**
+ * @brief Positive test case of device_get_brightness()
+ */
+static void utc_system_device_get_brightness_p(void)
+{
+ int i;
+ int value = 0;
+ int error = DEVICE_ERROR_NONE;
- dts_pass(API_NAME_DEVICE_GET_BRIGHTNESS);
+ for (i = 0; i < cnt; i++) {
+ error = device_get_brightness(i, &value);
+ dts_check_eq(API_NAME_DEVICE_GET_BRIGHTNESS, error, DEVICE_ERROR_NONE);
+ }
}
/**
*/
static void utc_system_device_get_brightness_n_1(void)
{
- int value = 0;
- int error = DEVICE_ERROR_NONE;
-
- error = device_get_brightness(cnt+1, &value);
- dts_check_ne(API_NAME_DEVICE_GET_BRIGHTNESS, error, DEVICE_ERROR_NONE);
+ int value = 0;
+ int error = DEVICE_ERROR_NONE;
+
+ error = device_get_brightness(cnt+1, &value);
+ dts_check_ne(API_NAME_DEVICE_GET_BRIGHTNESS, error, DEVICE_ERROR_NONE);
}
/**
*/
static void utc_system_device_get_brightness_n_2(void)
{
- int value = 0, i=0;
- int error = DEVICE_ERROR_NONE;
-
- for(i=0; i<cnt; i++){
- error = device_get_brightness(i, NULL);
+ int i;
+ int error = DEVICE_ERROR_NONE;
- if(error == DEVICE_ERROR_NONE){
- dts_fail(API_NAME_DEVICE_GET_BRIGHTNESS);
- }
- }
- dts_pass(API_NAME_DEVICE_GET_BRIGHTNESS);
+ for (i = 0; i < cnt; i++) {
+ error = device_get_brightness(i, NULL);
+ dts_check_ne(API_NAME_DEVICE_GET_BRIGHTNESS, error, DEVICE_ERROR_NONE);
+ }
}
/**
- * @brief Positive test case of device_get_max_brightness()
+ * @brief Positive test case of device_set_brightness()
*/
-static void utc_system_device_get_max_brightness_p(void)
+static void utc_system_device_set_brightness_p(void)
{
- int value = 0, i=0;
- int error = DEVICE_ERROR_NONE;
+ int i, max;
+ int error = DEVICE_ERROR_NONE;
+
+ dts_message(API_NAME_DEVICE_SET_BRIGHTNESS, "!@#$ cnt=%d", cnt);
- for(i=0; i<cnt; i++){
- error = device_get_max_brightness(i, &value);
+ for (i = 0; i < cnt; i++) {
+ dts_message(API_NAME_DEVICE_SET_BRIGHTNESS, "index=%d", i);
- if(error != DEVICE_ERROR_NONE){
- dts_fail(API_NAME_DEVICE_GET_MAX_BRIGHTNESS);
- }
- }
- dts_pass(API_NAME_DEVICE_GET_MAX_BRIGHTNESS);
+ if (device_get_max_brightness(i, &max) != DEVICE_ERROR_NONE)
+ dts_fail(API_NAME_DEVICE_SET_BRIGHTNESS);
+
+ error = device_set_brightness(i, max);
+ dts_check_eq(API_NAME_DEVICE_SET_BRIGHTNESS, error, DEVICE_ERROR_NONE);
+ }
}
/**
- * @brief Negative test case of device_get_max_brightness() with bad display parameter
+ * @brief Negative test case of device_set_brightness()
*/
-static void utc_system_device_get_max_brightness_n_1(void)
+static void utc_system_device_set_brightness_n_1(void)
{
- int value = 0;
- int error = DEVICE_ERROR_NONE;
- error = device_get_max_brightness(cnt+1, &value);
+ int error = DEVICE_ERROR_NONE;
- dts_check_ne(API_NAME_DEVICE_GET_MAX_BRIGHTNESS, error, DEVICE_ERROR_NONE);
+ error = device_set_brightness(-1, 0);
+ dts_check_ne(API_NAME_DEVICE_SET_BRIGHTNESS, error, DEVICE_ERROR_NONE);
}
/**
- * @brief Negative test case of device_get_max_brightness() with null pointer
+ * @brief Negative test case of device_set_brightness()
*/
-static void utc_system_device_get_max_brightness_n_2(void)
+static void utc_system_device_set_brightness_n_2(void)
{
- int error = DEVICE_ERROR_NONE, i=0;
+ int i;
+ int error = DEVICE_ERROR_NONE;
- for(i=0; i<cnt; i++){
- error = device_get_max_brightness(i, NULL);
+ for (i = 0; i < cnt; i++) {
+ dts_message(API_NAME_DEVICE_SET_BRIGHTNESS, "index=%d", i);
- if(error == DEVICE_ERROR_NONE){
- dts_fail(API_NAME_DEVICE_GET_MAX_BRIGHTNESS);
- }
- }
- dts_pass(API_NAME_DEVICE_GET_MAX_BRIGHTNESS);
+ error = device_set_brightness(i, -1);
+ dts_check_ne(API_NAME_DEVICE_SET_BRIGHTNESS, error, DEVICE_ERROR_NONE);
+ }
}
/**
- * @brief Positive test case of device_set_brightness()
+ * @brief Positive test case of device_get_max_brightness()
*/
-static void utc_system_device_set_brightness_p_1(void)
+static void utc_system_device_get_max_brightness_p(void)
{
- int i=0;
- int err;
-
- dts_message(API_NAME_DEVICE_SET_BRIGHTNESS, "!@#$ cnt=%d", cnt);
-
- for(i=0; i<cnt; i++){
- dts_message(API_NAME_DEVICE_SET_BRIGHTNESS, "index=%d", i);
- err = device_set_brightness(i, 0);
- dts_message(API_NAME_DEVICE_SET_BRIGHTNESS, "error=%d", err);
- if(err != DEVICE_ERROR_NONE) {
- dts_fail(API_NAME_DEVICE_SET_BRIGHTNESS);
- }
- }
- dts_pass(API_NAME_DEVICE_SET_BRIGHTNESS);
+ int value = 0, i;
+ int error = DEVICE_ERROR_NONE;
+
+ for (i = 0; i < cnt; i++) {
+ dts_message(API_NAME_DEVICE_GET_MAX_BRIGHTNESS, "index=%d", i);
+
+ error = device_get_max_brightness(i, &value);
+ dts_check_eq(API_NAME_DEVICE_GET_MAX_BRIGHTNESS, error, DEVICE_ERROR_NONE);
+ }
}
/**
- * @brief Positive test case of device_set_brightness()
+ * @brief Negative test case of device_get_max_brightness() with bad display parameter
*/
-static void utc_system_device_set_brightness_p_2(void)
+static void utc_system_device_get_max_brightness_n_1(void)
{
- int setting = 0;
- int max_value = 0;
- int value = 0, i=0;
-
- for(i=0; i<cnt; i++){
- if( device_get_max_brightness(i, &max_value) != DEVICE_ERROR_NONE ) {
- dts_fail(API_NAME_DEVICE_SET_BRIGHTNESS);
- }
-
- if( max_value < 0 ) {
- dts_fail(API_NAME_DEVICE_SET_BRIGHTNESS);
- }
-
- setting = max_value > 1 ? max_value / 2 : 1;
-
- if( device_set_brightness(i, setting) != DEVICE_ERROR_NONE ) {
- dts_fail(API_NAME_DEVICE_SET_BRIGHTNESS);
- }
- dts_message(API_NAME_DEVICE_SET_BRIGHTNESS, "brightness=%d", setting);
+ int value = 0;
+ int error = DEVICE_ERROR_NONE;
+ error = device_get_max_brightness(cnt+1, &value);
+ dts_check_ne(API_NAME_DEVICE_GET_MAX_BRIGHTNESS, error, DEVICE_ERROR_NONE);
+}
- if ( device_get_brightness(i, &value) != DEVICE_ERROR_NONE ) {
- dts_fail(API_NAME_DEVICE_SET_BRIGHTNESS);
- }
- dts_message(API_NAME_DEVICE_SET_BRIGHTNESS, "brightness=%d", value);
+/**
+ * @brief Negative test case of device_get_max_brightness() with null pointer
+ */
+static void utc_system_device_get_max_brightness_n_2(void)
+{
+ int i;
+ int error = DEVICE_ERROR_NONE;
- if ( value != setting ){
- dts_fail(API_NAME_DEVICE_SET_BRIGHTNESS);
- }
- }
+ for (i = 0; i < cnt; i++) {
+ dts_message(API_NAME_DEVICE_GET_MAX_BRIGHTNESS, "index=%d", i);
- dts_pass(API_NAME_DEVICE_SET_BRIGHTNESS);
+ error = device_get_max_brightness(i, NULL);
+ dts_check_ne(API_NAME_DEVICE_GET_MAX_BRIGHTNESS, error, DEVICE_ERROR_NONE);
+ }
}
/**
- * @brief Negative test case of device_set_brightness()
+ * @brief Positive test case of device_set_brightness_from_settings()
*/
-static void utc_system_device_set_brightness_n_1(void)
+static void utc_system_device_set_brightness_from_settings_p(void)
{
- int i=0;
- int max_value = 0;
-
- for(i=0; i<cnt; i++){
- if( device_get_max_brightness(i, &max_value) != DEVICE_ERROR_NONE ) {
- dts_fail(API_NAME_DEVICE_SET_BRIGHTNESS, "fail get_max_brightness");
- }
+ int i;
+ int error = DEVICE_ERROR_NONE;
- if( device_set_brightness(i, max_value+1) == DEVICE_ERROR_NONE ) {
- dts_fail(API_NAME_DEVICE_SET_BRIGHTNESS, "fail set_brightness");
- }
- }
+ for (i = 0; i < cnt; i++) {
+ dts_message(API_NAME_DEVICE_SET_BRIGHTNESS_FROM_SETTINGS, "index=%d", i);
- dts_pass(API_NAME_DEVICE_SET_BRIGHTNESS);
+ error = device_set_brightness_from_settings(i);
+ dts_check_eq(API_NAME_DEVICE_SET_BRIGHTNESS_FROM_SETTINGS, error, DEVICE_ERROR_NONE);
+ }
}
/**
- * @brief Negative test case of device_set_brightness()
+ * @brief Negative test case of device_set_brightness_from_settings() with bad display parameter
*/
-static void utc_system_device_set_brightness_n_2(void)
+static void utc_system_device_set_brightness_from_settings_n(void)
{
- int i=0;
+ int error = DEVICE_ERROR_NONE;
- for(i=0; i<cnt; i++){
- if( device_set_brightness(i, -1) == DEVICE_ERROR_NONE ) {
- dts_fail(API_NAME_DEVICE_SET_BRIGHTNESS);
- }
- }
+ error = device_set_brightness_from_settings(cnt+1);
- dts_pass(API_NAME_DEVICE_SET_BRIGHTNESS);
+ dts_check_ne(API_NAME_DEVICE_SET_BRIGHTNESS_FROM_SETTINGS, error, DEVICE_ERROR_NONE);
}
/**
- * @brief Positive test case of device_set_brightness_from_settings()
+ * @brief Positive test case of device_set_brightness_to_settings()
*/
-static void utc_system_device_set_brightness_from_settings_p(void)
+static void utc_system_device_set_brightness_to_settings_p(void)
{
- int i, error;
-
- dts_message(API_NAME_DEVICE_SET_BRIGHTNESS_FROM_SETTINGS, "display cnt=%d", cnt);
-
- for(i=0; i<cnt; i++){
- dts_message(API_NAME_DEVICE_SET_BRIGHTNESS_FROM_SETTINGS, "index=%d", i);
- error = device_set_brightness_from_settings(i);
- dts_message(API_NAME_DEVICE_SET_BRIGHTNESS_FROM_SETTINGS, "error=%d", error);
- if(error != DEVICE_ERROR_NONE) {
- dts_fail(API_NAME_DEVICE_SET_BRIGHTNESS_FROM_SETTINGS);
- }
- }
- dts_pass(API_NAME_DEVICE_SET_BRIGHTNESS_FROM_SETTINGS);
+ int i, max;
+ int error = DEVICE_ERROR_NONE;
+
+ for (i = 0; i < cnt; i++) {
+ dts_message(API_NAME_DEVICE_SET_BRIGHTNESS_TO_SETTINGS, "index=%d", i);
+
+ if (device_get_max_brightness(i, &max) != DEVICE_ERROR_NONE)
+ dts_fail(API_NAME_DEVICE_SET_BRIGHTNESS_TO_SETTINGS);
+
+ error = device_set_brightness_to_settings(i, max);
+ dts_check_eq(API_NAME_DEVICE_SET_BRIGHTNESS_TO_SETTINGS, error, DEVICE_ERROR_NONE);
+ }
}
/**
- * @brief Negative test case of device_set_brightness_from_settings() with bad display parameter
+ * @brief Negative test case of device_set_brightness_to_settings()
*/
-static void utc_system_device_set_brightness_from_settings_n(void)
+static void utc_system_device_set_brightness_to_settings_n(void)
{
int error = DEVICE_ERROR_NONE;
- error = device_set_brightness_from_settings(cnt+1);
+ error = device_set_brightness_to_settings(cnt+1, 0);
- dts_check_ne(API_NAME_DEVICE_SET_BRIGHTNESS_FROM_SETTINGS, error, DEVICE_ERROR_NONE);
+ dts_check_ne(API_NAME_DEVICE_SET_BRIGHTNESS_TO_SETTINGS, error, DEVICE_ERROR_NONE);
}
--- /dev/null
+/*
+ *
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG
+ * ELECTRONICS ("Confidential Information"). You agree and acknowledge that
+ * this software is owned by Samsung and you shall not disclose such
+ * Confidential Information and shall use it only in accordance with the terms
+ * of the license agreement you entered into with SAMSUNG ELECTRONICS. SAMSUNG
+ * make no representations or warranties about the suitability of the software,
+ * either express or implied, including but not limited to the implied
+ * warranties of merchantability, fitness for a particular purpose, or
+ * non-infringement. SAMSUNG shall not be liable for any damages suffered by
+ * licensee arising out of or related to this software.
+ *
+ */
+#include <tet_api.h>
+#include <device.h>
+
+#define API_NAME_DEVICE_CPU_GET_SYSTEM_TIME "device_cpu_get_system_time"
+#define API_NAME_DEVICE_CPU_GET_COUNT "device_cpu_get_count"
+#define API_NAME_DEVICE_CPU_GET_CURRENT_FREQ "device_cpu_get_current_freq"
+#define API_NAME_DEVICE_CPU_GET_MAX_FREQ "device_cpu_get_max_freq"
+
+static void startup(void);
+static void cleanup(void);
+
+void (*tet_startup)(void) = startup;
+void (*tet_cleanup)(void) = cleanup;
+
+
+static void utc_system_device_cpu_get_system_time_p(void);
+static void utc_system_device_cpu_get_system_time_n(void);
+static void utc_system_device_cpu_get_count_p(void);
+static void utc_system_device_cpu_get_count_n(void);
+static void utc_system_device_cpu_get_current_freq_p(void);
+static void utc_system_device_cpu_get_current_freq_n_1(void);
+static void utc_system_device_cpu_get_current_freq_n_2(void);
+static void utc_system_device_cpu_get_max_freq_p(void);
+static void utc_system_device_cpu_get_max_freq_n_1(void);
+static void utc_system_device_cpu_get_max_freq_n_2(void);
+
+
+enum {
+ POSITIVE_TC_IDX = 0x01,
+ NEGATIVE_TC_IDX,
+};
+
+struct tet_testlist tet_testlist[] = {
+ { utc_system_device_cpu_get_system_time_p, POSITIVE_TC_IDX },
+ { utc_system_device_cpu_get_system_time_n, NEGATIVE_TC_IDX },
+ { utc_system_device_cpu_get_count_p, POSITIVE_TC_IDX },
+ { utc_system_device_cpu_get_count_n, NEGATIVE_TC_IDX },
+ { utc_system_device_cpu_get_current_freq_p, POSITIVE_TC_IDX },
+ { utc_system_device_cpu_get_current_freq_n_1, NEGATIVE_TC_IDX },
+ { utc_system_device_cpu_get_current_freq_n_2, NEGATIVE_TC_IDX },
+ { utc_system_device_cpu_get_max_freq_p, POSITIVE_TC_IDX },
+ { utc_system_device_cpu_get_max_freq_n_1, NEGATIVE_TC_IDX },
+ { utc_system_device_cpu_get_max_freq_n_2, NEGATIVE_TC_IDX },
+ { NULL, 0},
+};
+
+static int cnt;
+
+static void startup(void)
+{
+ /* start of TC */
+
+ device_cpu_get_count(&cnt);
+}
+
+static void cleanup(void)
+{
+ /* end of TC */
+}
+
+/**
+ * @brief Positive test case of device_cpu_get_system_time()
+ */
+static void utc_system_device_cpu_get_system_time_p(void)
+{
+ device_system_time_s stime;
+ int error = DEVICE_ERROR_NONE;
+ error = device_cpu_get_system_time(&stime);
+
+ dts_check_eq(API_NAME_DEVICE_CPU_GET_SYSTEM_TIME, error, DEVICE_ERROR_NONE);
+}
+
+/**
+ * @brief Negative test case of device_cpu_get_system_time()
+ */
+static void utc_system_device_cpu_get_system_time_n(void)
+{
+ int error = DEVICE_ERROR_NONE;
+ error = device_cpu_get_system_time(NULL);
+
+ dts_check_ne(API_NAME_DEVICE_CPU_GET_SYSTEM_TIME, error, DEVICE_ERROR_NONE);
+}
+
+/**
+ * @brief Positive test case of device_cpu_get_count()
+ */
+static void utc_system_device_cpu_get_count_p(void)
+{
+ int _cnt;
+ int error = DEVICE_ERROR_NONE;
+ error = device_cpu_get_count(&_cnt);
+
+ dts_check_eq(API_NAME_DEVICE_CPU_GET_COUNT, error, DEVICE_ERROR_NONE);
+}
+
+/**
+ * @brief Negative test case of device_cpu_get_count()
+ */
+static void utc_system_device_cpu_get_count_n(void)
+{
+ int error = DEVICE_ERROR_NONE;
+ error = device_cpu_get_count(NULL);
+
+ dts_check_ne(API_NAME_DEVICE_CPU_GET_COUNT, error, DEVICE_ERROR_NONE);
+}
+
+/**
+ * @brief Positive test case of device_cpu_get_current_freq()
+ */
+static void utc_system_device_cpu_get_current_freq_p(void)
+{
+ unsigned int freq;
+ int i;
+ int error = DEVICE_ERROR_NONE;
+
+ for (i = 0; i < cnt; ++i) {
+ dts_message(API_NAME_DEVICE_CPU_GET_CURRENT_FREQ, "index=%d", i);
+
+ error = device_cpu_get_current_freq(i, &freq);
+ dts_check_eq(API_NAME_DEVICE_CPU_GET_CURRENT_FREQ, error, DEVICE_ERROR_NONE);
+ }
+}
+
+/**
+ * @brief Negative test case of device_cpu_get_current_freq()
+ */
+static void utc_system_device_cpu_get_current_freq_n_1(void)
+{
+ unsigned int freq;
+ int error = DEVICE_ERROR_NONE;
+ error = device_cpu_get_current_freq(-1, &freq);
+
+ dts_check_ne(API_NAME_DEVICE_CPU_GET_CURRENT_FREQ, error, DEVICE_ERROR_NONE);
+}
+
+/**
+ * @brief Negative test case of device_cpu_get_current_freq()
+ */
+static void utc_system_device_cpu_get_current_freq_n_2(void)
+{
+ int i;
+ int error = DEVICE_ERROR_NONE;
+
+ for (i = 0; i < cnt; ++i) {
+ dts_message(API_NAME_DEVICE_CPU_GET_CURRENT_FREQ, "index=%d", i);
+
+ error = device_cpu_get_current_freq(i, NULL);
+ dts_check_ne(API_NAME_DEVICE_CPU_GET_CURRENT_FREQ, error, DEVICE_ERROR_NONE);
+ }
+}
+
+/**
+ * @brief Positive test case of device_cpu_get_max_freq()
+ */
+static void utc_system_device_cpu_get_max_freq_p(void)
+{
+ unsigned int freq;
+ int i;
+ int error = DEVICE_ERROR_NONE;
+
+ for (i = 0; i < cnt; ++i) {
+ dts_message(API_NAME_DEVICE_CPU_GET_MAX_FREQ, "index=%d", i);
+
+ error = device_cpu_get_max_freq(i, &freq);
+ dts_check_eq(API_NAME_DEVICE_CPU_GET_MAX_FREQ, error, DEVICE_ERROR_NONE);
+ }
+}
+
+/**
+ * @brief Negative test case of device_cpu_get_max_freq()
+ */
+static void utc_system_device_cpu_get_max_freq_n_1(void)
+{
+ unsigned int freq;
+ int error = DEVICE_ERROR_NONE;
+ error = device_cpu_get_max_freq(-1, &freq);
+
+ dts_check_ne(API_NAME_DEVICE_CPU_GET_MAX_FREQ, error, DEVICE_ERROR_NONE);
+}
+
+/**
+ * @brief Negative test case of device_cpu_get_max_freq()
+ */
+static void utc_system_device_cpu_get_max_freq_n_2(void)
+{
+ int i;
+ int error = DEVICE_ERROR_NONE;
+
+ for (i = 0; i < cnt; ++i) {
+ dts_message(API_NAME_DEVICE_CPU_GET_MAX_FREQ, "index=%d", i);
+
+ error = device_cpu_get_max_freq(i, NULL);
+ dts_check_ne(API_NAME_DEVICE_CPU_GET_MAX_FREQ, error, DEVICE_ERROR_NONE);
+ }
+}
--- /dev/null
+/*
+ *
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG
+ * ELECTRONICS ("Confidential Information"). You agree and acknowledge that
+ * this software is owned by Samsung and you shall not disclose such
+ * Confidential Information and shall use it only in accordance with the terms
+ * of the license agreement you entered into with SAMSUNG ELECTRONICS. SAMSUNG
+ * make no representations or warranties about the suitability of the software,
+ * either express or implied, including but not limited to the implied
+ * warranties of merchantability, fitness for a particular purpose, or
+ * non-infringement. SAMSUNG shall not be liable for any damages suffered by
+ * licensee arising out of or related to this software.
+ *
+ */
+#include <tet_api.h>
+#include <device.h>
+
+#define API_NAME_DEVICE_FLASH_GET_BRIGHTNESS "device_flash_get_brightness"
+#define API_NAME_DEVICE_FLASH_SET_BRIGHTNESS "device_flash_set_brightness"
+#define API_NAME_DEVICE_FLASH_GET_MAX_BRIGHTNESS "device_flash_get_max_brightness"
+
+static void startup(void);
+static void cleanup(void);
+
+void (*tet_startup)(void) = startup;
+void (*tet_cleanup)(void) = cleanup;
+
+
+static void utc_system_device_flash_get_brightness_p(void);
+static void utc_system_device_flash_get_brightness_n(void);
+static void utc_system_device_flash_set_brightness_p(void);
+static void utc_system_device_flash_set_brightness_n(void);
+static void utc_system_device_flash_get_max_brightness_p(void);
+static void utc_system_device_flash_get_max_brightness_n(void);
+
+
+enum {
+ POSITIVE_TC_IDX = 0x01,
+ NEGATIVE_TC_IDX,
+};
+
+struct tet_testlist tet_testlist[] = {
+ { utc_system_device_flash_get_brightness_p, POSITIVE_TC_IDX},
+ { utc_system_device_flash_get_brightness_n, NEGATIVE_TC_IDX },
+ { utc_system_device_flash_set_brightness_p, POSITIVE_TC_IDX},
+ { utc_system_device_flash_set_brightness_n, NEGATIVE_TC_IDX },
+ { utc_system_device_flash_get_max_brightness_p, POSITIVE_TC_IDX},
+ { utc_system_device_flash_get_max_brightness_n, NEGATIVE_TC_IDX },
+ { NULL, 0},
+};
+
+static void startup(void)
+{
+ /* start of TC */
+}
+
+static void cleanup(void)
+{
+ /* end of TC */
+}
+
+/**
+ * @brief Positive test case of device_flash_get_brightness()
+ */
+static void utc_system_device_flash_get_brightness_p(void)
+{
+ int brightness;
+ int error = DEVICE_ERROR_NONE;
+ error = device_flash_get_brightness(&brightness);
+
+ dts_check_eq(API_NAME_DEVICE_FLASH_GET_BRIGHTNESS, error, DEVICE_ERROR_NONE);
+}
+
+/**
+ * @brief Negative test case of device_flash_get_brightness()
+ */
+static void utc_system_device_flash_get_brightness_n(void)
+{
+ int error = DEVICE_ERROR_NONE;
+ error = device_flash_get_brightness(NULL);
+
+ dts_check_ne(API_NAME_DEVICE_FLASH_GET_BRIGHTNESS, error, DEVICE_ERROR_NONE);
+}
+
+/**
+ * @brief Positive test case of device_flash_set_brightness()
+ */
+static void utc_system_device_flash_set_brightness_p(void)
+{
+ int max;
+ int error = DEVICE_ERROR_NONE;
+
+ if (device_flash_get_max_brightness(&max) != DEVICE_ERROR_NONE)
+ dts_fail(API_NAME_DEVICE_FLASH_SET_BRIGHTNESS);
+
+ error = device_flash_set_brightness(max);
+
+ dts_check_eq(API_NAME_DEVICE_FLASH_SET_BRIGHTNESS, error, DEVICE_ERROR_NONE);
+}
+
+/**
+ * @brief Negative test case of device_flash_set_brightness()
+ */
+static void utc_system_device_flash_set_brightness_n(void)
+{
+ int error = DEVICE_ERROR_NONE;
+ error = device_flash_set_brightness(-1);
+
+ dts_check_ne(API_NAME_DEVICE_FLASH_SET_BRIGHTNESS, error, DEVICE_ERROR_NONE);
+}
+
+/**
+ * @brief Positive test case of device_flash_get_max_brightness()
+ */
+static void utc_system_device_flash_get_max_brightness_p(void)
+{
+ int max;
+ int error = DEVICE_ERROR_NONE;
+ error = device_flash_get_max_brightness(&max);
+
+ dts_check_eq(API_NAME_DEVICE_FLASH_GET_MAX_BRIGHTNESS, error, DEVICE_ERROR_NONE);
+}
+
+/**
+ * @brief Negative test case of device_flash_get_max_brightness()
+ */
+static void utc_system_device_flash_get_max_brightness_n(void)
+{
+ int error = DEVICE_ERROR_NONE;
+ error = device_flash_get_max_brightness(NULL);
+
+ dts_check_ne(API_NAME_DEVICE_FLASH_GET_MAX_BRIGHTNESS, error, DEVICE_ERROR_NONE);
+}
--- /dev/null
+/*
+ *
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG
+ * ELECTRONICS ("Confidential Information"). You agree and acknowledge that
+ * this software is owned by Samsung and you shall not disclose such
+ * Confidential Information and shall use it only in accordance with the terms
+ * of the license agreement you entered into with SAMSUNG ELECTRONICS. SAMSUNG
+ * make no representations or warranties about the suitability of the software,
+ * either express or implied, including but not limited to the implied
+ * warranties of merchantability, fitness for a particular purpose, or
+ * non-infringement. SAMSUNG shall not be liable for any damages suffered by
+ * licensee arising out of or related to this software.
+ *
+ */
+#include <tet_api.h>
+#include <device.h>
+
+#define API_NAME_DEVICE_MEMORY_GET_TOTAL "device_memory_get_total"
+#define API_NAME_DEVICE_MEMORY_GET_AVAILABLE "device_memory_get_available"
+
+static void startup(void);
+static void cleanup(void);
+
+void (*tet_startup)(void) = startup;
+void (*tet_cleanup)(void) = cleanup;
+
+
+static void utc_system_device_memory_get_total_p(void);
+static void utc_system_device_memory_get_total_n(void);
+static void utc_system_device_memory_get_available_p(void);
+static void utc_system_device_memory_get_available_n(void);
+
+
+enum {
+ POSITIVE_TC_IDX = 0x01,
+ NEGATIVE_TC_IDX,
+};
+
+struct tet_testlist tet_testlist[] = {
+ { utc_system_device_memory_get_total_p, POSITIVE_TC_IDX },
+ { utc_system_device_memory_get_total_n, NEGATIVE_TC_IDX },
+ { utc_system_device_memory_get_available_p, POSITIVE_TC_IDX },
+ { utc_system_device_memory_get_available_n, NEGATIVE_TC_IDX },
+ { NULL, 0},
+};
+
+static void startup(void)
+{
+ /* start of TC */
+}
+
+static void cleanup(void)
+{
+ /* end of TC */
+}
+
+/**
+ * @brief Positive test case of device_memory_get_total()
+ */
+static void utc_system_device_memory_get_total_p(void)
+{
+ unsigned int total;
+ int error = DEVICE_ERROR_NONE;
+ error = device_memory_get_total(&total);
+
+ dts_check_eq(API_NAME_DEVICE_MEMORY_GET_TOTAL, error, DEVICE_ERROR_NONE);
+}
+
+/**
+ * @brief Negative test case of device_memory_get_total()
+ */
+static void utc_system_device_memory_get_total_n(void)
+{
+ int error = DEVICE_ERROR_NONE;
+ error = device_memory_get_total(NULL);
+
+ dts_check_ne(API_NAME_DEVICE_MEMORY_GET_TOTAL, error, DEVICE_ERROR_NONE);
+}
+
+/**
+ * @brief Positive test case of device_memory_get_available()
+ */
+static void utc_system_device_memory_get_available_p(void)
+{
+ unsigned int avail;
+ int error = DEVICE_ERROR_NONE;
+ error = device_memory_get_available(&avail);
+
+ dts_check_eq(API_NAME_DEVICE_MEMORY_GET_AVAILABLE, error, DEVICE_ERROR_NONE);
+}
+
+/**
+ * @brief Negative test case of device_memory_get_available()
+ */
+static void utc_system_device_memory_get_available_n(void)
+{
+ int error = DEVICE_ERROR_NONE;
+ error = device_memory_get_available(NULL);
+
+ dts_check_ne(API_NAME_DEVICE_MEMORY_GET_AVAILABLE, error, DEVICE_ERROR_NONE);
+}
prefix=@PREFIX@
exec_prefix=/usr
libdir=/usr/lib
-includedir=/usr/include/system
+includedir=/usr/include
Name: @PC_NAME@
Description: @PACKAGE_DESCRIPTION@
Version: @VERSION@
-Requires: @PC_REQUIRED@
+Requires: @PC_REQUIRED@
Libs: -L${libdir} @PC_LDFLAGS@
-Cflags: -I${includedir}
-
+Cflags: -I${includedir} -I/usr/include/system
+++ /dev/null
-/usr/include/*
-/usr/include/*/*
-/usr/lib/pkgconfig/*.pc
-
+++ /dev/null
-/usr/lib/lib*.so*
+++ /dev/null
-capi-system-device (0.1.0-10) unstable; urgency=low
-
- * add functions to control the LED that placed to camera flash.
- * add getting battery detail function
- * Git: slp/api/device
- * Tag: capi-system-device_0.1.0-10
-
- -- Jiyoung Yun <jy910.yun@samsung.com> Fri, 20 Jul 2012 16:06:31 +0900
-
-capi-system-device (0.1.0-9) unstable; urgency=low
-
- * add a function to set the display brightness value that registed in settings
- * Git: slp/api/device
- * Tag: capi-system-device_0.1.0-9
-
- -- Jiyoung Yun <jy910.yun@samsung.com> Tue, 26 Jun 2012 17:32:03 +0900
-
-capi-system-device (0.1.0-8) unstable; urgency=low
-
- * add new battery warning status for battery full
- * Git: slp/api/device
- * Tag: capi-system-device_0.1.0-8
-
- -- Jinkun Jang <jinkun.jang@samsung.com> Tue, 05 Jun 2012 16:33:50 +0900
-
-capi-system-device (0.1.0-7) unstable; urgency=low
-
- * battery warning status API and battery warning status callback API added
- * Git: slp/api/device
- * Tag: capi-system-device_0.1.0-7
-
- -- Jinkun Jang <jinkun.jang@samsung.com> Wed, 25 Apr 2012 20:51:50 +0900
-
-capi-system-device (0.1.0-6) unstable; urgency=low
-
- * so version added
- * Git: slp/api/device
- * Tag: capi-system-device_0.1.0-6
-
- -- pius lee <pius.lee@samsung.com> Thu, 16 Feb 2012 16:51:50 +0900
-
-capi-system-device (0.1.0-5) unstable; urgency=low
-
- * battery chaging status API and battery chage percentage callback API added
- * Git: slp/api/device
- * Tag: capi-system-device_0.1.0-5
-
- -- pius lee <pius.lee@samsung.com> Wed, 07 Dec 2011 02:43:55 +0900
-
-capi-system-device (0.1.0-4) unstable; urgency=low
-
- * fix success code
- * Git: slp-source.sec.samsung.net:slp/api/device
- * Tag: capi-system-device_0.1.0-4
-
- -- pius lee <pius.lee@samsung.com> Mon, 05 Dec 2011 15:42:45 +0900
-
-capi-system-device (0.1.0-3) unstable; urgency=low
-
- * replace boilerplate
- * Git: slp-source.sec.samsung.net:slp/api/device
- * Tag: capi-system-device_0.1.0-3
-
- -- pius lee <pius.lee@samsung.com> Fri, 02 Dec 2011 11:17:48 +0900
-
-capi-system-device (0.1.0-2) unstable; urgency=low
-
- * replace project name from SLP to Tizen
- * Git: slp-source.sec.samsung.net:slp/api/device
- * Tag: capi-system-device_0.1.0-2
-
- -- pius lee <pius.lee@samsung.com> Wed, 23 Nov 2011 13:08:30 +0900
-
-capi-system-device (0.1.0-1) unstable; urgency=low
-
- * fix TC and update documents
- * Git: slp-source.sec.samsung.net:slp/api/device
- * Tag: capi-system-device_0.1.0-1
-
- -- pius lee <pius.lee@samsung.com> Tue, 27 Sep 2011 21:53:47 +0900
-
-capi-system-device (0.0.1-6) unstable; urgency=low
-
- * change get_display_count function to get_display_numbers
- * Git: slp-source.sec.samsung.net:slp/api/device
- * Tag: capi-system-device_0.0.1-6
-
- -- pius lee <pius.lee@samsung.com> Tue, 27 Sep 2011 20:30:18 +0900
-
-capi-system-device (0.0.1-5) unstable; urgency=low
-
- * count function return value through parameter
- * Git: slp-source.sec.samsung.net:slp/api/device
- * Tag: capi-system-device_0.0.1-5
-
- -- pius lee <pius.lee@samsung.com> Tue, 27 Sep 2011 16:12:46 +0900
-
-capi-system-device (0.0.1-4) unstable; urgency=low
-
- * Fix version number
- * Git: slp-source.sec.samsung.net:slp/api/device
- * Tag: capi-system-device_0.0.1-4
-
- -- pius lee <pius.lee@samsung.com> Mon, 26 Sep 2011 21:53:36 +0900
-
-capi-system-device (0.0.1-3-docfix) unstable; urgency=low
-
- * Fix documents
- * Git: slp-source.sec.samsung.net:slp/api/device
- * Tag: capi-system-device_0.0.1-3-docfix
-
- -- pius lee <pius.lee@samsung.com> Mon, 26 Sep 2011 21:07:34 +0900
-
-capi-system-device (0.0.1-3) unstable; urgency=low
-
- * Remove useless errors and fix documents
- * Git: slp-source.sec.samsung.net:slp/api/device
- * Tag: capi-system-device_0.0.1-3
-
- -- pius lee <pius.lee@samsung.com> Mon, 26 Sep 2011 14:50:05 +0900
-
-capi-system-device (0.0.1-2) unstable; urgency=low
-
- * change unknown device error to more meaningful
- * Git: slp-source.sec.samsung.net:slp/api/device
- * Tag: capi-system-device_0.0.1-2
-
- -- pius lee <pius.lee@samsung.com> Mon, 29 Aug 2011 18:03:03 +0900
-
-capi-system-device (0.0.1-1) unstable; urgency=low
-
- * Initial upload
- * Git: slp-source.sec.samsung.net:slp/api/device
- * Tag: capi-system-device_0.0.1-1
-
- -- pius lee <pius.lee@samsung.com> Fri, 05 Aug 2011 11:29:51 +0900
+++ /dev/null
-
-Source: capi-system-device
-Section: libs
-Priority: extra
-Maintainer: pius lee <pius.lee@samsung.com>
-Build-Depends: debhelper (>= 5), dlog-dev, libdevman-dev, libglib2.0-dev, capi-base-common-dev, libvconf-dev
-
-Package: capi-system-device
-Architecture: any
-Depends: ${shlibs:Depends}, ${misc:Depends}
-Description: A Device library in Tizen Native API
-
-Package: capi-system-device-dev
-Architecture: any
-Depends: ${shlibs:Depends}, ${misc:Depends}, capi-system-device (= ${Source-Version}), dlog-dev, libdevman-dev, capi-base-common-dev, libvconf-dev
-Description: A Device library in Tizen Native API (DEV)
-
-Package: capi-system-device-dbg
-Architecture: any
-Depends: ${shlibs:Depends}, ${misc:Depends}, capi-system-device (= ${Source-Version})
-Description: A Device library in Tizen Native API (DBG)
-
+++ /dev/null
-#!/usr/bin/make -f
-
-FULLVER ?= $(shell dpkg-parsechangelog | grep Version: | cut -d ' ' -f 2 | cut -d '-' -f 1)
-MAJORVER ?= $(shell echo $(FULLVER) | cut -d '.' -f 1)
-
-CFLAGS = -Wall -g
-
-ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
- CFLAGS += -O0
-else
- CFLAGS += -O2
-endif
-CMAKE_ROOT_DIR ?= $(CURDIR)
-CMAKE_BUILD_DIR ?= $(CURDIR)/cmake_build_tmp
-
-configure: configure-stamp
-configure-stamp:
- dh_testdir
- mkdir -p $(CMAKE_BUILD_DIR) && cd $(CMAKE_BUILD_DIR) && cmake .. -DFULLVER=${FULLVER} -DMAJORVER=${MAJORVER}
- touch configure-stamp
-
-
-build: build-stamp
-build-stamp: configure-stamp
- dh_testdir
- cd $(CMAKE_BUILD_DIR) && $(MAKE)
- touch $@
-
-clean:
- cd $(CMAKE_ROOT_DIR)
- dh_testdir
- dh_testroot
- rm -f build-stamp configure-stamp
- rm -f `find . -name *.pc`
- rm -rf $(CMAKE_BUILD_DIR)
- dh_clean
-
-install: build
- dh_testdir
- dh_testroot
- dh_clean -k
- dh_installdirs
-
- cd $(CMAKE_BUILD_DIR) && $(MAKE) DESTDIR=$(CURDIR)/debian/tmp install
-
-binary-indep: build install
-
-binary-arch: build install
- dh_testdir
- dh_testroot
- dh_installchangelogs
- dh_installdocs
- dh_installexamples
- dh_install --sourcedir=debian/tmp
- dh_installman
- dh_link
- dh_strip --dbg-package=capi-system-device-dbg
- dh_fixperms
- 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
-
--- /dev/null
+/*
+ * Copyright (c) 2011 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 __TIZEN_SYSTEM_DEVICE_DOC_H__
+#define __TIZEN_SYSTEM_DEVICE_DOC_H__
+
+/**
+ * @ingroup CAPI_SYSTEM_FRAMEWORK
+ * @defgroup CAPI_SYSTEM_DEVICE_MODULE Device
+ * @brief The DEVICE API provides functions to control devices or to get status of devices.
+ *
+ * @section CAPI_SYSTEM_DEVICE_MODULE_HEADER Required Header
+ * \#include <device/battery.h> \n
+ * \#include <device/callback.h> \n
+ * \#include <device/display.h> \n
+ * \#include <device/haptic.h> \n
+ * \#include <device/led.h> \n
+ * \#include <device/power.h>
+ *
+ * @section CAPI_SYSTEM_DEVICE_MODULE_OVERVIEW Overview
+ * The DEVICE API provides functions to control devices or to get status of devices.
+ *
+ * This API allows checking of the following parameters:
+ * - Battery
+ * - Display
+ * - Haptic
+ * - LED
+ * - Power
+ */
+
+/**
+ * @ingroup CAPI_SYSTEM_DEVICE_MODULE
+ * @defgroup CAPI_SYSTEM_DEVICE_BATTERY_MODULE Battery
+ * @brief The Battery API provides functions to get information about the battery.
+ *
+ * @section CAPI_SYSTEM_DEVICE_BATTERY_MODULE_HEADER Required Header
+ * \#include <device/battery.h> \n
+ * \#include <device/callback.h> \n
+ *
+ * @section CAPI_SYSTEM_DEVICE_BATTERY_MODULE_OVERVIEW Overview
+ * The Battery API provides the way to get the current battery capacity value, battery state and charging state.
+ * It also supports the API for an application to receive the battery events from the system.
+ * To receive the battery event it should be described by the callback function.
+ *
+ */
+
+/**
+ * @ingroup CAPI_SYSTEM_DEVICE_MODULE
+ * @defgroup CAPI_SYSTEM_DEVICE_DISPLAY_MODULE Display
+ * @brief The Display API provides functions to control the display status.
+ *
+ * @section CAPI_SYSTEM_DEVICE_DISPLAY_MODULE_HEADER Required Header
+ * \#include <device/display.h> \n
+ * \#include <device/callback.h> \n
+ *
+ * @section CAPI_SYSTEM_DEVICE_DISPLAY_MODULE_OVERVIEW Overview
+ * The Display API provides the way to get supported display count and the display brightness.
+ * It also supports the API to set the display brightness.
+ * Application can receive the display event by callback function from the system.
+ *
+ */
+
+/**
+ * @ingroup CAPI_SYSTEM_DEVICE_MODULE
+ * @defgroup CAPI_SYSTEM_DEVICE_HAPTIC_MODULE Haptic
+ * @brief The Haptic API provides functions to control a vibrator.
+ *
+ * @section CAPI_SYSTEM_DEVICE_HAPTIC_MODULE_HEADER Required Header
+ * \#include <device/haptic.h> \n
+ *
+ * @section CAPI_SYSTEM_DEVICE_HAPTIC_MODULE_OVERVIEW Overview
+ * The Haptic API provides the way to control vibration functionality of a device.
+ * It allows the management of the device's vibrator parameters, such as the vibration count and level.
+ *
+ */
+
+/**
+ * @ingroup CAPI_SYSTEM_DEVICE_MODULE
+ * @defgroup CAPI_SYSTEM_DEVICE_LED_MODULE Led
+ * @brief The Led API provides functions to control the attached led device.
+ *
+ * @section CAPI_SYSTEM_DEVICE_LED_MODULE_HEADER Required Header
+ * \#include <device/led.h> \n
+ *
+ * @section CAPI_SYSTEM_DEVICE_LED_MODULE_OVERVIEW Overview
+ * The Led API provides the way to control the attached LED device such as the camera flash and service LED.
+ * It supports to turn on the camera flash and set the pattern to the service LED which is located to the front of a device.
+ * @section CAPI_SYSTEM_DEVICE_LED_MODULE_FEATURE Related Features
+ * This API is related with the following features:\n
+ * - http://tizen.org/feature/led\n
+ * - http://tizen.org/feature/camera.back.flash\n
+ *
+ * It is recommended to design feature related codes in your application for reliability.\n
+ *
+ * You can check if a devrice supports the related features for this API by using @ref CAPI_SYSTEM_SYSTEM_INFO_MODULE, thereby controlling the procedure of your application.\n
+ *
+ * To ensure your application is only running on the device with specific features, please define the features in your manifest file using the manifest editor in the SDK.\n
+ *
+ * More details on featuring your application can be found from <a href="../org.tizen.mobile.native.appprogramming/html/ide_sdk_tools/feature_element.htm"><b>Feature Element</b>.</a>
+ *
+ */
+
+/**
+ * @ingroup CAPI_SYSTEM_DEVICE_MODULE
+ * @defgroup CAPI_SYSTEM_DEVICE_POWER_MODULE Power
+ * @brief The Power API provides functions to control the power service.
+ *
+ * @section CAPI_SYSTEM_DEVICE_POWER_MODULE_HEADER Required Header
+ * \#include <device/power.h> \n
+ *
+ * @section CAPI_SYSTEM_DEVICE_POWER_MODULE_OVERVIEW Overview
+ * The Power API provides the way to control the power service.
+ * It can be made to hold the specific state to avoid changing display and CPU state internally.
+ *
+ */
+
+/**
+ * @ingroup CAPI_SYSTEM_DEVICE_MODULE
+ * @defgroup CAPI_SYSTEM_DEVICE_CALLBACK_MODULE Callback
+ * @brief The Callback API provides functions to observe the changing of device state.
+ *
+ * @section CAPI_SYSTEM_DEVICE_CALLBACK_MODULE_HEADER Required Header
+ * \#include <device/callback.h> \n
+ *
+ * @section CAPI_SYSTEM_DEVICE_CALLBACK_MODULE_OVERVIEW Overview
+ * The Callback API provides the way to observe the changing of device state.
+ *
+ * This API allows observing of the following events:
+ * - Battery capacity
+ * - Battery level
+ * - Battery charging
+ * - Display state
+ */
+
+#endif /* __TIZEN_SYSTEM_DEVICE_DOC_H__ */
--- /dev/null
+/*
+ * Copyright (c) 2014 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 __TIZEN_SYSTEM_BATTERY_H__
+#define __TIZEN_SYSTEM_BATTERY_H__
+
+#include <stdbool.h>
+#include "device-error.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/**
+ * @addtogroup CAPI_SYSTEM_DEVICE_BATTERY_MODULE
+ * @{
+ */
+
+/**
+ * @brief Enumeration for the battery level status.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ */
+typedef enum
+{
+ DEVICE_BATTERY_LEVEL_EMPTY = 0, /**< The battery goes empty. Prepare for the safe termination of the application, because the device starts a shutdown process soon after entering this level. */
+ DEVICE_BATTERY_LEVEL_CRITICAL, /**< The battery charge is at a critical state. You may have to stop using multimedia features, because they are not guaranteed to work correctly at this battery status. */
+ DEVICE_BATTERY_LEVEL_LOW, /**< The battery has little charge left. */
+ DEVICE_BATTERY_LEVEL_HIGH, /**< The battery status is not to be careful. */
+ DEVICE_BATTERY_LEVEL_FULL, /**< The battery status is full. */
+} device_battery_level_e;
+
+/**
+ * @brief Gets the battery charge percentage.
+ * @details It returns an integer value from @c 0 to @c 100 that indicates remaining battery charge
+ * as a percentage of the maximum level.
+ *
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ *
+ * @remarks In order to be notified when the battery state changes, use system_info_set_changed_cb().
+ *
+ * @param[out] percent The remaining battery charge percentage (@c 0 ~ @c 100)
+ *
+ * @return @c 0 on success,
+ * otherwise a negative error value
+ *
+ * @retval #DEVICE_ERROR_NONE Successful
+ * @retval #DEVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #DEVICE_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #DEVICE_ERROR_OPERATION_FAILED Operation failed
+ */
+int device_battery_get_percent(int *percent);
+
+/**
+ * @brief Gets the charging state.
+ *
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ *
+ * @param[out] charging The battery charging state
+ *
+ * @return @c 0 on success,
+ * otherwise a negative error value
+ *
+ * @retval #DEVICE_ERROR_NONE Successful
+ * @retval #DEVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #DEVICE_ERROR_OPERATION_FAILED Operation failed
+ *
+ * @see device_add_callback
+ * @see device_remove_callback
+ * @see #DEVICE_CALLBACK_BATTERY_CHARGING
+ */
+int device_battery_is_charging(bool *charging);
+
+/**
+ * @brief Gets the battery level status.
+ *
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ *
+ * @param[out] status The battery level status
+ *
+ * @return @c 0 on success,
+ * otherwise a negative error value
+ *
+ * @retval #DEVICE_ERROR_NONE Successful
+ * @retval #DEVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #DEVICE_ERROR_OPERATION_FAILED Operation failed
+ *
+ * @see device_battery_level_e
+ * @see device_add_callback
+ * @see device_remove_callback
+ * @see #DEVICE_CALLBACK_BATTERY_LEVEL
+ */
+int device_battery_get_level_status(device_battery_level_e *status);
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // __TIZEN_SYSTEM_BATTERY_H__
--- /dev/null
+/*
+ * Copyright (c) 2014 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 __TIZEN_SYSTEM_CALLBACK_H__
+#define __TIZEN_SYSTEM_CALLBACK_H__
+
+#include <stdbool.h>
+#include "device-error.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/**
+ * @addtogroup CAPI_SYSTEM_DEVICE_CALLBACK_MODULE
+ * @{
+ */
+
+/**
+ * @brief Enumeration for the device state callback.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ */
+typedef enum
+{
+ DEVICE_CALLBACK_BATTERY_CAPACITY, /**< Called when a battery charge percentage is changed */
+ DEVICE_CALLBACK_BATTERY_LEVEL, /**< Called when a battery level is changed */
+ DEVICE_CALLBACK_BATTERY_CHARGING, /**< Called when battery charging state is changed */
+ DEVICE_CALLBACK_DISPLAY_STATE, /**< Called when a display state is changed */
+ DEVICE_CALLBACK_MAX
+} device_callback_e;
+
+/**
+ * @brief Called when a device status is changed.
+ * @details Each device callback has a different output param type. \n
+ * So you need to check below output param before using this function. \n
+ * callback enum output type \n
+ * DEVICE_CALLBACK_BATTERY_CAPACITY int \n
+ * DEVICE_CALLBACK_BATTERY_LEVEL int \n
+ * DEVICE_CALLBACK_BATTERY_CHARGING bool \n
+ * DEVICE_CALLBACK_DISPLAY_STATE int
+ *
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ *
+ * @param[out] type The device type to monitor
+ * @param[out] value The changed value \n
+ * @param[out] user_data The user data passed from the callback registration function
+ */
+typedef void (*device_changed_cb)(device_callback_e type, void *value, void *user_data);
+
+/**
+ * @brief Adds a callback to the observing device state.
+ *
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ *
+ * @param[in] type The device type to monitor
+ * @param[in] callback The callback function to add
+ * @param[in] user_data The user data to be passed to the callback function
+ *
+ * @return @c 0 on success,
+ * otherwise a negative error value
+ *
+ * @retval #DEVICE_ERROR_NONE Successful
+ * @retval #DEVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #DEVICE_ERROR_ALREADY_IN_PROGRESS Operation already
+ * @retval #DEVICE_ERROR_OPERATION_FAILED Operation failed
+ */
+int device_add_callback(device_callback_e type, device_changed_cb callback, void *user_data);
+
+/**
+ * @brief Removes a device callback function.
+ *
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ *
+ * @param[in] type The device type to monitor
+ * @param[in] callback The callback function to remove
+ *
+ * @return @c 0 on success,
+ * otherwise a negative error value
+ *
+ * @retval #DEVICE_ERROR_NONE Successful
+ * @retval #DEVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #DEVICE_ERROR_OPERATION_FAILED Operation failed
+ */
+int device_remove_callback(device_callback_e type, device_changed_cb callback);
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // __TIZEN_SYSTEM_CALLBACK_H__
--- /dev/null
+/*
+ * Copyright (c) 2014 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 __TIZEN_SYSTEM_DEVICE_ERROR_H__
+#define __TIZEN_SYSTEM_DEVICE_ERROR_H__
+
+#include <tizen_error.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/**
+ * @addtogroup CAPI_SYSTEM_DEVICE_MODULE
+ * @{
+ */
+
+/**
+ * @brief Enumerations of error code for Device.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ */
+typedef enum
+{
+ DEVICE_ERROR_NONE = TIZEN_ERROR_NONE, /**< Successful */
+ DEVICE_ERROR_OPERATION_FAILED = TIZEN_ERROR_NOT_PERMITTED, /**< Operation not permitted */
+ DEVICE_ERROR_PERMISSION_DENIED = TIZEN_ERROR_PERMISSION_DENIED, /**< Permission denied */
+ DEVICE_ERROR_INVALID_PARAMETER = TIZEN_ERROR_INVALID_PARAMETER, /**< Invalid parameter */
+ DEVICE_ERROR_ALREADY_IN_PROGRESS = TIZEN_ERROR_ALREADY_IN_PROGRESS, /**< Operation already in progress */
+ DEVICE_ERROR_NOT_SUPPORTED = TIZEN_ERROR_NOT_SUPPORTED, /**< Not supported in this device */
+ DEVICE_ERROR_NOT_INITIALIZED = TIZEN_ERROR_DEVICE | 0x13, /**< Not initialized */
+} device_error_e;
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // __TIZEN_SYSTEM_DEVICE_ERROR_H__
#define __TIZEN_SYSTEM_DEVICE_H__
#include <stdbool.h>
-#include <tizen_error.h>
+#include "device-error.h"
#ifdef __cplusplus
extern "C" {
*/
/**
- * @brief Enumerations of error code for Device.
- */
-typedef enum
-{
- DEVICE_ERROR_NONE = TIZEN_ERROR_NONE, /**< Successful */
- DEVICE_ERROR_INVALID_PARAMETER = TIZEN_ERROR_INVALID_PARAMETER, /**< Invalid parameter */
- DEVICE_ERROR_OPERATION_FAILED = TIZEN_ERROR_SYSTEM_CLASS | 0x12, /**< Operation failed */
- DEVICE_ERROR_NOT_SUPPORTED = TIZEN_ERROR_SYSTEM_CLASS | 0x13, /**< Not supported in this device */
-} device_error_e;
-
-/**
* @brief Enumerations of the battery warning status
*/
typedef enum
} device_battery_warn_e;
/**
+ * @brief Enumerations of the battery remaining time type
+ */
+typedef enum
+{
+ DEVICE_BATTERY_REMAINING_TIME_TO_FULLY_CHARGED,
+ DEVICE_BATTERY_REMAINING_TIME_TO_DISCHARGED
+} device_battery_remaining_time_type_e;
+
+/**
+ * @brief Enumerations of the battery level status
+ */
+typedef enum
+{
+ DEVICE_BATTERY_LEVEL_EMPTY = 0, /**< The battery goes empty. Prepare for the safe termination of the application, because the device starts a shutdown process soon after entering this level. */
+ DEVICE_BATTERY_LEVEL_CRITICAL, /**< The battery charge is at a critical state. You may have to stop using multimedia features, because they are not guaranteed to work correctly at this battery status. */
+ DEVICE_BATTERY_LEVEL_LOW, /**< The battery has little charge left. */
+ DEVICE_BATTERY_LEVEL_HIGH, /**< The battery status is not to be careful. */
+ DEVICE_BATTERY_LEVEL_FULL, /**< The battery status is full. */
+} device_battery_level_e;
+
+
+/**
+ * @brief Structure of the time information system spent, measured in units of USER_HZ
+ */
+typedef struct {
+ unsigned long long total;
+ unsigned long long user;
+ unsigned long long nice;
+ unsigned long long system;
+ unsigned long long idle;
+ unsigned long long iowait;
+ unsigned long long irq;
+ unsigned long long softirq;
+} device_system_time_s;
+
+/**
* @}
*/
typedef void (*device_battery_warn_cb)(device_battery_warn_e status, void *user_data);
/**
+ * @brief Called when an battery level changed
+ *
+ * @param[in] status The remaining battery level (empty[0~1] critical[2~5] low[6~15] high[16~94] full[95~100])
+ * @param[in] user_data The user data passed from the callback registration function
+ *
+ */
+typedef void (*device_battery_level_cb)(device_battery_level_e status, void *user_data);
+
+/**
* @brief Gets the battery warning status.
*
* @param[out] status The battery warning status.
int device_battery_get_percent(int *percent);
/**
- * @brief Gets the battery detail charge as a per ten thousand.
- * @details It return integer value from 0 to 10000 that indicates remaining battery charge as a per ten thousand of the maximum level.
- * @remarks this function return #DEVICE_ERROR_NOT_SUPPORTED when device can not be supported detail battery information.
- *
- * @param[out] detail The remaining battery charge as a per ten thousand. (0 ~ 10000)
- *
- * @return 0 on success, otherwise a negative error value.
- * @retval #DEVICE_ERROR_NONE Successful
- * @retval #DEVICE_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #DEVICE_ERROR_OPERATION_FAILED Operation failed
- * @retval #DEVICE_ERROR_NOT_SUPPORTED Not supported device
- *
- * @see device_battery_is_full()
- * @see device_battery_get_percent()
- * @see device_battery_set_cb()
- */
-int device_battery_get_detail(int *detail);
-
-/**
* @brief Get charging state
*
* @param[out] charging The battery charging state.
int device_battery_is_full(bool *full);
/**
+ * @brief Gets the battery level status.
+ *
+ * @param[out] status The battery level status.
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #DEVICE_ERROR_NONE Successful
+ * @retval #DEVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #DEVICE_ERROR_OPERATION_FAILED Operation failed
+ *
+ * @see device_battery_level_e
+ * @see device_battery_level_set_cb()
+ */
+int device_battery_get_level_status(device_battery_level_e *status);
+
+/**
+ * @brief Set/Unset callback to be observing battery level.
+ *
+ * @param[in] callback The callback function to set, if you input NULL, observing is disabled
+ * @param[in] user_data The user data to be passed to the callback function
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #DEVICE_ERROR_NONE Successful
+ * @retval #DEVICE_ERROR_OPERATION_FAILED Operation failed
+ *
+ * @see device_battery_level_e
+ * @see device_battery_get_level_status()
+ */
+int device_battery_level_set_cb(device_battery_level_cb callback, void* user_data);
+
+/**
* @brief Gets the number of display devices.
*
* @return The number of display devices that the device provides.
* @see device_get_brightness()
* @see device_set_brightness()
* @see device_get_max_brightness()
+ * @see device_set_brightness_from_settings()
+ * @see device_set_brightness_to_settings()
*/
int device_get_display_numbers(int* device_number);
* @see device_set_brightness()
* @see device_get_max_brightness()
* @see device_set_brightness_from_settings()
+ * @see device_set_brightness_to_settings()
*/
int device_get_brightness(int display_index, int *brightness);
* @see device_get_max_brightness()
* @see device_get_brightness()
* @see device_set_brightness_from_settings()
+ * @see device_set_brightness_to_settings()
*/
int device_set_brightness(int display_index, int brightness);
* @see device_set_brightness()
* @see device_get_brightness()
* @see device_set_brightness_from_settings()
+ * @see device_set_brightness_to_settings()
*/
int device_get_max_brightness(int display_index, int *max_brightness);
/**
- * @brief Sets the display brightness value that registed in settings.
+ * @brief Sets the display brightness value from registed in settings.
*
* @details
* This function set display brightness to condition in the settings.
* @see device_get_max_brightness()
* @see device_set_brightness()
* @see device_get_brightness()
+ * @see device_set_brightness_to_settings()
*/
int device_set_brightness_from_settings(int display_index);
/**
+ * @brief Sets the display brightness value to specific display and set to variable in settings.
+ *
+ * @details
+ * This function set given brightness value to given index of display.
+ * And also brightness variable in settings will be changed to given brightness value too.
+ *
+ * @param[in] display_index The index of the display, it be greater than or equal to 0 and less than \n
+ * the number of displays returned by device_get_display_numbers().\n
+ * The index zero is always assigned to the main display.
+ * @param[in] brightness The new brightness value to set \n
+ * The maximum value can be represented by device_get_max_brightness()
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #DEVICE_ERROR_NONE Successful
+ * @retval #DEVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #DEVICE_ERROR_OPERATION_FAILED Operation failed
+ *
+ * @see device_get_display_numbers()
+ * @see device_get_max_brightness()
+ * @see device_set_brightness()
+ * @see device_get_brightness()
+ * @see device_set_brightness_from_settings()
+ */
+int device_set_brightness_to_settings(int display_index, int brightness);
+
+/**
* @brief Get brightness value of LED that placed to camera flash.
*
* @param[out] brightness brightness value of LED (0 ~ MAX)
int device_flash_get_max_brightness(int *max_brightness);
/**
+ * @brief Get total amount of physical RAM, in kilobytes
+ *
+ * @remark
+ *
+ * @param[out] total_mem total amount of physical RAM
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #DEVICE_ERROR_NONE Successful
+ * @retval #DEVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #DEVICE_ERROR_OPERATION_FAILED Operation failed
+ */
+int device_memory_get_total(unsigned int *total_mem);
+
+/**
+ * @brief Get available amount of physical RAM, in kilobytes
+ *
+ * @remark
+ * Available amount is defined by following formula currently.
+ * available mem = MemFree+Buffers+Cached+SwapCached-Shmem
+ *
+ * @param[out] avail_mem available amount of physical RAM
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #DEVICE_ERROR_NONE Successful
+ * @retval #DEVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #DEVICE_ERROR_OPERATION_FAILED Operation failed
+ */
+int device_memory_get_available(unsigned int *avail_mem);
+
+/**
+ * @brief Get time information the CPU has spent performing work.
+ *
+ * @remark
+ * Time units are in USER_HZ (typically hundredths of a second).
+ *
+ * @param[out] time structure of time information the CPU has spent
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #DEVICE_ERROR_NONE Successful
+ * @retval #DEVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #DEVICE_ERROR_OPERATION_FAILED Operation failed
+ */
+int device_cpu_get_system_time(device_system_time_s *time);
+
+/**
+ * @brief Get all of CPU count
+ *
+ * @remark
+ *
+ * @param[out] cpu_cnt total count of CPU
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #DEVICE_ERROR_NONE Successful
+ * @retval #DEVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #DEVICE_ERROR_OPERATION_FAILED Operation failed
+ */
+int device_cpu_get_count(int *cpu_cnt);
+
+/**
+ * @brief Get currently frequency of CPU
+ *
+ * @remark
+ *
+ * @param[in] cpu the index of CPU which want to know
+ * @param[out] cur_freq currently frequency value of CPU
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #DEVICE_ERROR_NONE Successful
+ * @retval #DEVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #DEVICE_ERROR_OPERATION_FAILED Operation failed
+ */
+int device_cpu_get_current_freq(int cpu, unsigned int *cur_freq);
+
+/**
+ * @brief Get max frequency of CPU
+ *
+ * @remark
+ *
+ * @param[in] cpu the index of CPU which want to know
+ * @param[out] max_freq max frequency value of CPU
+ *
+ * @return 0 on success, otherwise a negative error value.
+ * @retval #DEVICE_ERROR_NONE Successful
+ * @retval #DEVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #DEVICE_ERROR_OPERATION_FAILED Operation failed
+ */
+int device_cpu_get_max_freq(int cpu, unsigned int *max_freq);
+
+/**
* @}
*/
--- /dev/null
+/*
+ * Copyright (c) 2014 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 __TIZEN_SYSTEM_DISPLAY_H__
+#define __TIZEN_SYSTEM_DISPLAY_H__
+
+#include "device-error.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/**
+ * @addtogroup CAPI_SYSTEM_DEVICE_DISPLAY_MODULE
+ * @{
+ */
+
+/**
+ * @brief Gets the number of display devices.
+ *
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/display
+ *
+ * @param[out] device_number The total number of displays
+ *
+ * @return @c 0 on success,
+ * otherwise a negative error value
+ *
+ * @retval #DEVICE_ERROR_NONE Successful
+ * @retval #DEVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #DEVICE_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #DEVICE_ERROR_OPERATION_FAILED Operation failed
+ *
+ * @see device_display_get_brightness()
+ * @see device_display_set_brightness()
+ * @see device_display_get_max_brightness()
+ */
+int device_display_get_numbers(int *device_number);
+
+/**
+ * @brief Gets the maximum brightness value that can be set.
+ *
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/display
+ *
+ * @param[in] display_index The index of the display \n
+ * It can be greater than or equal to @c 0 and less than
+ * the number of displays returned by device_display_get_numbers(). \n
+ * The index zero is always assigned to the main display.
+ * @param[out] max_brightness The maximum brightness value of the display
+ *
+ * @return @c 0 on success,
+ * otherwise a negative error value
+ *
+ * @retval #DEVICE_ERROR_NONE Successful
+ * @retval #DEVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #DEVICE_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #DEVICE_ERROR_OPERATION_FAILED Operation failed
+ *
+ * @see device_display_get_numbers()
+ * @see device_display_set_brightness()
+ * @see device_display_get_brightness()
+ */
+int device_display_get_max_brightness(int display_index, int *max_brightness);
+
+/**
+ * @brief Gets the display brightness value.
+ *
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/display
+ *
+ * @param[in] display_index The index of the display \n
+ * It can be greater than or equal to @c 0 and less than
+ * the number of displays returned by device_display_get_numbers(). \n
+ * The index zero is always assigned to the main display.
+ * @param[out] brightness The current brightness value of the display
+ *
+ * @return @c 0 on success,
+ * otherwise a negative error value
+ *
+ * @retval #DEVICE_ERROR_NONE Successful
+ * @retval #DEVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #DEVICE_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #DEVICE_ERROR_OPERATION_FAILED Operation failed
+ *
+ * @see device_display_get_numbers()
+ * @see device_display_set_brightness()
+ * @see device_display_get_max_brightness()
+ */
+int device_display_get_brightness(int display_index, int *brightness);
+
+/**
+ * @brief Sets the display brightness value.
+ *
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/display
+ *
+ * @param[in] display_index The index of the display \n
+ * It can be greater than or equal to @c 0 and less than
+ * the number of displays returned by device_display_get_numbers(). \n
+ * The index zero is always assigned to the main display.
+ * @param[in] brightness The new brightness value to set \n
+ * The maximum value can be represented by device_display_get_max_brightness().
+ *
+ * @return @c 0 on success,
+ * otherwise a negative error value
+ *
+ * @retval #DEVICE_ERROR_NONE Successful
+ * @retval #DEVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #DEVICE_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #DEVICE_ERROR_OPERATION_FAILED Operation failed
+ *
+ * @see device_display_get_numbers()
+ * @see device_display_get_max_brightness()
+ * @see device_display_get_brightness()
+ */
+int device_display_set_brightness(int display_index, int brightness);
+
+/**
+ * @brief Enumeration for the available display states.
+ * @details An application cannot put the device into the power off state or the suspend state.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ */
+typedef enum
+{
+ DISPLAY_STATE_NORMAL, /**< Normal state */
+ DISPLAY_STATE_SCREEN_DIM, /**< Screen dim state */
+ DISPLAY_STATE_SCREEN_OFF, /**< Screen off state */
+} display_state_e;
+
+/**
+ * @brief Gets the current display state.
+ *
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/display
+ *
+ * @param[out] state the display state
+ *
+ * @return @c 0 on success,
+ * otherwise a negative error value
+ *
+ * @retval #DEVICE_ERROR_NONE Successful
+ * @retval #DEVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #DEVICE_ERROR_OPERATION_FAILED Operation failed
+ *
+ * @see device_add_callback
+ * @see device_remove_callback
+ * @see #DEVICE_CALLBACK_DISPLAY_STATE
+ */
+int device_display_get_state(display_state_e *state);
+
+/**
+ * @brief Changes the display state by force.
+ *
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/display
+ *
+ * @remarks Display state may not be changed immediately
+ *
+ * @param[in] state the display state
+ *
+ * @return @c 0 on success,
+ * otherwise a negative error value
+ *
+ * @retval #DEVICE_ERROR_NONE Successful
+ * @retval #DEVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #DEVICE_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #DEVICE_ERROR_OPERATION_FAILED Operation failed
+ *
+ * @see device_power_request_lock()
+ * @see device_power_release_lock()
+ * @see device_add_callback
+ * @see device_remove_callback
+ * @see #DEVICE_CALLBACK_DISPLAY_STATE
+ *
+ * @par Example
+ * @code
+ * ...
+ * result = device_display_change_state(DISPLAY_STATE_SCREEN_OFF);
+ * if( result < 0 )
+ * printf("[ERROR] return value result =%d, \n",result);
+ * else
+ * printf("[SUCCESS] return value result =%d \n",result);
+ * ...
+ * @endcode
+ */
+int device_display_change_state(display_state_e state);
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // __TIZEN_SYSTEM_DISPLAY_H__
--- /dev/null
+/*
+ * Copyright (c) 2014 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 __TIZEN_SYSTEM_HAPTIC_H__
+#define __TIZEN_SYSTEM_HAPTIC_H__
+
+#include "device-error.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/**
+ * @addtogroup CAPI_SYSTEM_DEVICE_HAPTIC_MODULE
+ * @{
+ */
+
+/**
+ * @brief The haptic device handle.
+ */
+typedef void* haptic_device_h;
+
+/**
+ * @brief The haptic effect handle.
+ */
+typedef void* haptic_effect_h;
+
+/**
+ * @brief Gets the number of vibrators.
+ *
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/haptic
+ *
+ * @param[in] device_number The number of vibrators
+ *
+ * @return @c 0 on success,
+ * otherwise a negative error value
+ *
+ * @retval #DEVICE_ERROR_NONE Successful
+ * @retval #DEVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #DEVICE_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #DEVICE_ERROR_OPERATION_FAILED Operation failed
+ * @retval #DEVICE_ERROR_NOT_SUPPORTED Not supported device
+ */
+int device_haptic_get_count(int *device_number);
+
+/**
+ * @brief Opens a haptic-vibration device.
+ * @details Internally, it makes a connection to the vibrator.
+ *
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/haptic
+ *
+ * @remarks You must close the Haptic API using device_haptic_close().
+ *
+ * @param[in] device_index The index of device what you want to vibrate \n
+ * The index starts from @c 0.
+ * @param[out] device_handle The handle of vibrator
+ *
+ * @return @c 0 on success,
+ * otherwise a negative error value
+ *
+ * @retval #DEVICE_ERROR_NONE Successful
+ * @retval #DEVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #DEVICE_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #DEVICE_ERROR_OPERATION_FAILED Operation failed
+ * @retval #DEVICE_ERROR_NOT_SUPPORTED Not supported device
+ *
+ * @see device_haptic_close()
+ */
+int device_haptic_open(int device_index, haptic_device_h *device_handle);
+
+/**
+ * @brief Closes a haptic-vibration device.
+ * @details Internally, it disconnects the connection to the vibrator.
+ *
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/haptic
+ *
+ * @param[in] device_handle The device handle from device_haptic_open()
+ *
+ * @return @c 0 on success,
+ * otherwise a negative error value
+ *
+ * @retval #DEVICE_ERROR_NONE Successful
+ * @retval #DEVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #DEVICE_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #DEVICE_ERROR_OPERATION_FAILED Operation failed
+ * @retval #DEVICE_ERROR_NOT_SUPPORTED Not supported device
+ *
+ * @see device_haptic_open()
+ */
+int device_haptic_close(haptic_device_h device_handle);
+
+/**
+ * @brief Vibrates during the specified time with a constant intensity.
+ * @details This function can be used to start monotonous vibration for the specified time.
+ *
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/haptic
+ *
+ * @remarks @a feedback level is reserved for auto changing to save variable in the settings.
+ * @remarks @a effect_handle effect_handle value can be @c 0(zero).
+ *
+ * @param[in] device_handle The device handle from device_haptic_open()
+ * @param[in] duration The play duration in milliseconds
+ * @param[in] feedback The amount of the intensity variation (@c 0 ~ @c 100)
+ * @param[out] effect_handle The pointer to the variable that will receive a handle to the playing effect
+ *
+ * @return @c 0 on success,
+ * otherwise a negative error value
+ *
+ * @retval #DEVICE_ERROR_NONE Successful
+ * @retval #DEVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #DEVICE_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #DEVICE_ERROR_OPERATION_FAILED Operation failed
+ * @retval #DEVICE_ERROR_NOT_SUPPORTED Not supported device
+ *
+ * @see device_haptic_stop()
+ */
+
+int device_haptic_vibrate(haptic_device_h device_handle,
+ int duration, int feedback, haptic_effect_h *effect_handle);
+
+/**
+ * @brief Stops all vibration effects which are being played.
+ * @details This function can be used to stop all effects started by device_haptic_vibrate().
+ *
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/haptic
+ *
+ * @param[in] device_handle The device handle from device_haptic_open()
+ * @param[in] effect_handle The effect handle from device_haptic_vibrate()
+ *
+ * @return @c 0 on success,
+ * otherwise a negative error value
+ *
+ * @retval #DEVICE_ERROR_NONE Successful
+ * @retval #DEVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #DEVICE_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #DEVICE_ERROR_OPERATION_FAILED Operation failed
+ * @retval #DEVICE_ERROR_NOT_SUPPORTED Not supported device
+ *
+ * @see device_haptic_vibrate()
+ */
+int device_haptic_stop(haptic_device_h device_handle, haptic_effect_h effect_handle);
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // __TIZEN_SYSTEM_HAPTIC_H__
--- /dev/null
+/*
+ * Copyright (c) 2014 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 __TIZEN_SYSTEM_LED_H__
+#define __TIZEN_SYSTEM_LED_H__
+
+#include "device-error.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/**
+ * @addtogroup CAPI_SYSTEM_DEVICE_LED_MODULE
+ * @{
+ */
+
+/**
+ * @brief Gets the max brightness value of a LED that is located next to the camera.
+ *
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/led
+ *
+ * @param[out] max_brightness The max brightness value of the LED
+ *
+ * @return @c 0 on success,
+ * otherwise a negative error value
+ *
+ * @retval #DEVICE_ERROR_NONE Successful
+ * @retval #DEVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #DEVICE_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #DEVICE_ERROR_OPERATION_FAILED Operation failed
+ * @retval #DEVICE_ERROR_NOT_SUPPORTED Not supported device
+ */
+int device_flash_get_max_brightness(int *max_brightness);
+
+/**
+ * @brief Gets the brightness value of a LED that is located next to the camera.
+ *
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/led
+ *
+ * @param[out] brightness The brightness value of LED (@c 0 ~ MAX)
+ *
+ * @return @c 0 on success,
+ * otherwise a negative error value
+ *
+ * @retval #DEVICE_ERROR_NONE Successful
+ * @retval #DEVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #DEVICE_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #DEVICE_ERROR_OPERATION_FAILED Operation failed
+ * @retval #DEVICE_ERROR_NOT_SUPPORTED Not supported device
+ */
+int device_flash_get_brightness(int *brightness);
+
+/**
+ * @brief Sets the brightness value of a LED that is located next to the camera.
+ *
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/led
+ *
+ * @param[in] brightness The brightness value of LED (@c 0 ~ MAX)
+ *
+ * @return @c 0 on success,
+ * otherwise a negative error value
+ *
+ * @retval #DEVICE_ERROR_NONE Successful
+ * @retval #DEVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #DEVICE_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #DEVICE_ERROR_OPERATION_FAILED Operation failed
+ * @retval #DEVICE_ERROR_NOT_SUPPORTED Not supported device
+ */
+int device_flash_set_brightness(int brightness);
+
+/**
+ * @brief Enumeration for custom LED flags.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ */
+typedef enum {
+ LED_CUSTOM_DUTY_ON = 1 << 0, /**< blink LED */
+ LED_CUSTOM_DEFAULT = (LED_CUSTOM_DUTY_ON), /**< Default flag */
+} led_custom_flags;
+
+/**
+ * @brief Plays the custom effect of the service LED that is located to the front of a device.
+ *
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/led
+ *
+ * @param[in] on Turn on time in milliseconds
+ * @param[in] off Turn off time in milliseconds
+ * @param[in] color The Color value \n
+ * The first byte means opaque and the other 3 bytes are RGB values.
+ * @param[in] flags The combination of enum #led_custom_flags
+ *
+ * @return @c 0 on success,
+ * otherwise a negative error value
+ *
+ * @retval #DEVICE_ERROR_NONE Successful
+ * @retval #DEVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #DEVICE_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #DEVICE_ERROR_OPERATION_FAILED Operation failed
+ * @retval #DEVICE_ERROR_NOT_SUPPORTED Not supported device
+ */
+int device_led_play_custom(int on, int off, unsigned int color, unsigned int flags);
+
+/**
+ * @brief Stops the custom effect of the service LED that is located to the front of a device.
+ *
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/led
+ *
+ * @return @c 0 on success,
+ * otherwise a negative error value
+ *
+ * @retval #DEVICE_ERROR_NONE Successful
+ * @retval #DEVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #DEVICE_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #DEVICE_ERROR_OPERATION_FAILED Operation failed
+ * @retval #DEVICE_ERROR_NOT_SUPPORTED Not supported device
+ */
+int device_led_stop_custom(void);
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // __TIZEN_SYSTEM_LED_H__
--- /dev/null
+/*
+ * Copyright (c) 2014 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 __TIZEN_SYSTEM_POWER_H__
+#define __TIZEN_SYSTEM_POWER_H__
+
+#include <stdbool.h>
+#include "device-error.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/**
+ * @addtogroup CAPI_SYSTEM_DEVICE_POWER_MODULE
+ * @{
+ */
+
+/**
+ * @brief Enumeration for lock type.
+ * @details Each enum ensures that the suitable device is on
+ * until all the lock requests have been released or after a timeout. \n
+ * CPU Brightness \n
+ * POWER_LOCK_CPU ON OFF \n
+ * POWER_LOCK_DISPLAY ON ON(normal) \n
+ * POWER_LOCK_DISPLAY_DIM ON ON(dim)
+ *
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ *
+ * @remarks An application can lock the specific type.
+ * @remarks These enums are mutually exclusive.
+ * @remarks You cannot combine with an enum below.
+ *
+ */
+typedef enum
+{
+ POWER_LOCK_CPU, /**< CPU lock */
+ POWER_LOCK_DISPLAY, /**< Display normal lock */
+ POWER_LOCK_DISPLAY_DIM, /**< Display dim lock */
+} power_lock_e;
+
+/**
+ * @brief Locks the given lock state for a specified time.
+ * @details After the given @a timeout_ms (in milliseconds), unlock the given lock state automatically.
+ *
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/display
+ *
+ * @remarks If the process dies, then every lock will be removed.
+ *
+ * @param[in] type The power type to request lock
+ * @param[in] timeout_ms The positive number in milliseconds or @c 0 for permanent lock \n
+ * So you must release the permanent lock of power state with #device_power_release_lock() if @a timeout_ms is zero.
+ *
+ * @return @c 0 on success,
+ * otherwise a negative error value
+ *
+ * @retval #DEVICE_ERROR_NONE Successful
+ * @retval #DEVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #DEVICE_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #DEVICE_ERROR_OPERATION_FAILED Operation failed
+ *
+ * @see device_power_release_lock()
+ */
+int device_power_request_lock(power_lock_e type, int timeout_ms);
+
+/**
+ * @brief Releases the given lock state locked before.
+ *
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/display
+ *
+ * @param[in] type The power type to release lock
+ *
+ * @return @c 0 on success,
+ * otherwise a negative error value
+ *
+ * @retval #DEVICE_ERROR_NONE Successful
+ * @retval #DEVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #DEVICE_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #DEVICE_ERROR_OPERATION_FAILED Operation failed
+ *
+ * @see device_power_request_lock()
+ */
+int device_power_release_lock(power_lock_e type);
+
+/**
+ * @brief Changes the current power state to the normal/dim state.
+ *
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/display
+ *
+ * @param[in] dim Set @c true to set the dim state,
+ * otherwise set @c false to not set the dim state
+ *
+ * @return @c 0 on success,
+ * otherwise a negative error value
+ *
+ * @retval #DEVICE_ERROR_NONE Successful
+ * @retval #DEVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #DEVICE_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #DEVICE_ERROR_OPERATION_FAILED Operation failed
+ *
+ * @post The device will be in #DISPLAY_STATE_NORMAL state.
+ */
+int device_power_wakeup(bool dim);
+
+/**
+ * @internal
+ * @brief Reboots the device.
+ * @details Will not return if the reboot is successful. \n
+ * It operates asynchronously.
+ *
+ * @since_tizen 2.3.1
+ * @privlevel platform
+ * @privilege %http://tizen.org/privilege/reboot
+ *
+ * @param[in] reason Pass to the platform and kernel to request special reboot reason, or null.
+ *
+ * @return @c 0 on success,
+ * otherwise a negative error value
+ *
+ * @retval #DEVICE_ERROR_NONE Successful
+ * @retval #DEVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #DEVICE_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #DEVICE_ERROR_OPERATION_FAILED Operation failed
+ */
+int device_power_reboot(const char *reason);
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // __TIZEN_SYSTEM_POWER_H__
--- /dev/null
+<manifest>
+<request>
+ <domain name="_"/>
+</request>
+</manifest>
Name: capi-system-device
Summary: A Device library in TIZEN C API
-Version: 0.1.0
-Release: 8
-Group: TO_BE/FILLED_IN
-License: TO BE FILLED IN
+Version: 0.1.0
+Release: 18
+Group: System/Libraries
+License: Apache-2.0
Source0: %{name}-%{version}.tar.gz
+Source1: capi-system-device.manifest
BuildRequires: cmake
-BuildRequires: pkgconfig(glib-2.0)
-BuildRequires: pkgconfig(devman)
+BuildRequires: pkgconfig(deviced)
BuildRequires: pkgconfig(capi-base-common)
+BuildRequires: pkgconfig(capi-system-info)
BuildRequires: pkgconfig(dlog)
BuildRequires: pkgconfig(vconf)
+BuildRequires: pkgconfig(dbus-1)
+BuildRequires: pkgconfig(dbus-glib-1)
Requires(post): /sbin/ldconfig
Requires(postun): /sbin/ldconfig
%build
+%if 0%{?tizen_build_binary_release_type_eng}
+export CFLAGS+=" -DTIZEN_ENGINEER_MODE"
+%endif
+cp %{SOURCE1} .
MAJORVER=`echo %{version} | awk 'BEGIN {FS="."}{print $1}'`
cmake . -DCMAKE_INSTALL_PREFIX=/usr -DFULLVER=%{version} -DMAJORVER=${MAJORVER}
rm -rf %{buildroot}
%make_install
+mkdir -p %{buildroot}/usr/share/license
+cp LICENSE %{buildroot}/usr/share/license/%{name}
+
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
%files
+%manifest capi-system-device.manifest
%{_libdir}/libcapi-system-device.so.*
+%{_datadir}/license/%{name}
%files devel
-%{_includedir}/system/device.h
+%{_includedir}/device/*.h
+%{_includedir}/system/*.h
%{_libdir}/pkgconfig/*.pc
%{_libdir}/libcapi-system-device.so
-
-
--- /dev/null
+/*
+ * Copyright (c) 2011 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.
+ */
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <vconf.h>
+
+#include "battery.h"
+#include "common.h"
+#include "dbus.h"
+
+#define METHOD_GET_PERCENT "GetPercent"
+
+int device_battery_get_percent(int *percent)
+{
+ int ret;
+
+ if (!percent)
+ return DEVICE_ERROR_INVALID_PARAMETER;
+
+ ret = dbus_method_sync(DEVICED_BUS_NAME,
+ DEVICED_PATH_BATTERY, DEVICED_INTERFACE_BATTERY,
+ METHOD_GET_PERCENT, NULL, NULL);
+ if (ret < 0)
+ return errno_to_device_error(ret);
+
+ *percent = ret;
+ return DEVICE_ERROR_NONE;
+}
+
+int device_battery_is_charging(bool *charging)
+{
+ int ret, val;
+
+ if (!charging)
+ return DEVICE_ERROR_INVALID_PARAMETER;
+
+ ret = vconf_get_int(VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW, &val);
+ if (ret < 0 || val < 0 || val > 1)
+ return DEVICE_ERROR_OPERATION_FAILED;
+
+ *charging = val;
+ return DEVICE_ERROR_NONE;
+}
+
+int device_battery_get_level_status(device_battery_level_e *status)
+{
+ int val, ret;
+
+ if (!status)
+ return DEVICE_ERROR_INVALID_PARAMETER;
+
+ ret = vconf_get_int(VCONFKEY_SYSMAN_BATTERY_LEVEL_STATUS, &val);
+ if (ret < 0)
+ return DEVICE_ERROR_OPERATION_FAILED;
+
+ if (val == VCONFKEY_SYSMAN_BAT_LEVEL_EMPTY)
+ *status = DEVICE_BATTERY_LEVEL_EMPTY;
+ else if (val == VCONFKEY_SYSMAN_BAT_LEVEL_CRITICAL)
+ *status = DEVICE_BATTERY_LEVEL_CRITICAL;
+ else if (val == VCONFKEY_SYSMAN_BAT_LEVEL_LOW)
+ *status = DEVICE_BATTERY_LEVEL_LOW;
+ else if (val == VCONFKEY_SYSMAN_BAT_LEVEL_HIGH)
+ *status = DEVICE_BATTERY_LEVEL_HIGH;
+ else if (val == VCONFKEY_SYSMAN_BAT_LEVEL_FULL)
+ *status = DEVICE_BATTERY_LEVEL_FULL;
+ else
+ return DEVICE_ERROR_OPERATION_FAILED;
+
+ return DEVICE_ERROR_NONE;
+}
--- /dev/null
+/*
+ * Copyright (c) 2011 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.
+ */
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <vconf.h>
+
+#include "callback.h"
+#include "battery.h"
+#include "display.h"
+#include "common.h"
+#include "dbus.h"
+#include "list.h"
+
+struct device_cb_info {
+ device_changed_cb cb;
+ void *data;
+};
+
+static dd_list *device_cb_list[DEVICE_CALLBACK_MAX];
+
+static void battery_capacity_cb(keynode_t *key, void *data)
+{
+ static device_callback_e type = DEVICE_CALLBACK_BATTERY_CAPACITY;
+ struct device_cb_info *cb_info;
+ dd_list *elem;
+ int val;
+
+ val = vconf_keynode_get_int(key);
+
+ /* invoke the each callback with value */
+ DD_LIST_FOREACH(device_cb_list[type], elem, cb_info)
+ cb_info->cb(type, (void*)val, cb_info->data);
+}
+
+static void battery_charging_cb(keynode_t *key, void *data)
+{
+ static device_callback_e type = DEVICE_CALLBACK_BATTERY_CHARGING;
+ struct device_cb_info *cb_info;
+ dd_list *elem;
+ int val;
+
+ val = vconf_keynode_get_int(key);
+
+ /* invoke the each callback with value */
+ DD_LIST_FOREACH(device_cb_list[type], elem, cb_info)
+ cb_info->cb(type, (void*)val, cb_info->data);
+}
+
+static void battery_level_cb(keynode_t *key, void *data)
+{
+ static device_callback_e type = DEVICE_CALLBACK_BATTERY_LEVEL;
+ struct device_cb_info *cb_info;
+ dd_list *elem;
+ int val, status;
+
+ val = vconf_keynode_get_int(key);
+
+ if (val == VCONFKEY_SYSMAN_BAT_LEVEL_EMPTY)
+ status = DEVICE_BATTERY_LEVEL_EMPTY;
+ else if (val == VCONFKEY_SYSMAN_BAT_LEVEL_CRITICAL)
+ status = DEVICE_BATTERY_LEVEL_CRITICAL;
+ else if (val == VCONFKEY_SYSMAN_BAT_LEVEL_LOW)
+ status = DEVICE_BATTERY_LEVEL_LOW;
+ else if (val == VCONFKEY_SYSMAN_BAT_LEVEL_HIGH)
+ status = DEVICE_BATTERY_LEVEL_HIGH;
+ else if (val == VCONFKEY_SYSMAN_BAT_LEVEL_FULL)
+ status = DEVICE_BATTERY_LEVEL_FULL;
+ else
+ status = -1;
+
+ /* invoke the each callback with value */
+ DD_LIST_FOREACH(device_cb_list[type], elem, cb_info)
+ cb_info->cb(type, (void*)status, cb_info->data);
+}
+
+static void display_changed_cb(keynode_t *key, void *data)
+{
+ static device_callback_e type = DEVICE_CALLBACK_DISPLAY_STATE;
+ struct device_cb_info *cb_info;
+ dd_list *elem;
+ display_state_e state;
+ int val;
+
+ val = vconf_keynode_get_int(key);
+
+ switch(val) {
+ case 1: state = DISPLAY_STATE_NORMAL;
+ break;
+ case 2: state = DISPLAY_STATE_SCREEN_DIM;
+ break;
+ case 3: state = DISPLAY_STATE_SCREEN_OFF;
+ break;
+ default: state = -1;
+ break;
+ }
+
+ /* invoke the each callback with value */
+ DD_LIST_FOREACH(device_cb_list[type], elem, cb_info)
+ cb_info->cb(type, (void*)state, cb_info->data);
+}
+
+static int register_request(device_callback_e type)
+{
+ switch (type) {
+ case DEVICE_CALLBACK_BATTERY_CAPACITY:
+ return vconf_notify_key_changed(VCONFKEY_SYSMAN_BATTERY_CAPACITY,
+ battery_capacity_cb, NULL);
+ case DEVICE_CALLBACK_BATTERY_LEVEL:
+ return vconf_notify_key_changed(VCONFKEY_SYSMAN_BATTERY_LEVEL_STATUS,
+ battery_level_cb, NULL);
+ case DEVICE_CALLBACK_BATTERY_CHARGING:
+ return vconf_notify_key_changed(VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW,
+ battery_charging_cb, NULL);
+ case DEVICE_CALLBACK_DISPLAY_STATE:
+ return vconf_notify_key_changed(VCONFKEY_PM_STATE,
+ display_changed_cb, NULL);
+ default:
+ break;
+ }
+
+ return -EINVAL;
+}
+
+static int release_request(device_callback_e type)
+{
+ switch (type) {
+ case DEVICE_CALLBACK_BATTERY_CAPACITY:
+ return vconf_ignore_key_changed(VCONFKEY_SYSMAN_BATTERY_CAPACITY,
+ battery_capacity_cb);
+ case DEVICE_CALLBACK_BATTERY_LEVEL:
+ return vconf_ignore_key_changed(VCONFKEY_SYSMAN_BATTERY_LEVEL_STATUS,
+ battery_level_cb);
+ case DEVICE_CALLBACK_BATTERY_CHARGING:
+ return vconf_ignore_key_changed(VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW,
+ battery_charging_cb);
+ case DEVICE_CALLBACK_DISPLAY_STATE:
+ return vconf_ignore_key_changed(VCONFKEY_PM_STATE,
+ display_changed_cb);
+ default:
+ break;
+ }
+
+ return -EINVAL;
+}
+
+int device_add_callback(device_callback_e type, device_changed_cb cb, void *data)
+{
+ struct device_cb_info *cb_info;
+ dd_list *elem;
+ int ret, n;
+
+ if (type < 0 || type >= DEVICE_CALLBACK_MAX)
+ return DEVICE_ERROR_INVALID_PARAMETER;
+
+ if (!cb)
+ return DEVICE_ERROR_INVALID_PARAMETER;
+
+ /* check if it is the first request */
+ n = DD_LIST_LENGTH(device_cb_list[type]);
+ if (n == 0) {
+ ret = register_request(type);
+ if (ret < 0)
+ return DEVICE_ERROR_OPERATION_FAILED;
+ }
+
+ /* check for the same request */
+ DD_LIST_FOREACH(device_cb_list[type], elem, cb_info) {
+ if (cb_info->cb == cb)
+ return DEVICE_ERROR_ALREADY_IN_PROGRESS;
+ }
+
+ /* add device changed callback to list (local) */
+ cb_info = malloc(sizeof(struct device_cb_info));
+ if (!cb_info)
+ return DEVICE_ERROR_OPERATION_FAILED;
+
+ cb_info->cb = cb;
+ cb_info->data = data;
+
+ DD_LIST_APPEND(device_cb_list[type], cb_info);
+
+ return DEVICE_ERROR_NONE;
+}
+
+int device_remove_callback(device_callback_e type, device_changed_cb cb)
+{
+ struct device_cb_info *cb_info;
+ dd_list *elem;
+ int ret, n;
+
+ if (type < 0 || type >= DEVICE_CALLBACK_MAX)
+ return DEVICE_ERROR_INVALID_PARAMETER;
+
+ if (!cb)
+ return DEVICE_ERROR_INVALID_PARAMETER;
+
+ /* search for the same element with callback */
+ DD_LIST_FOREACH(device_cb_list[type], elem, cb_info) {
+ if (cb_info->cb == cb)
+ break;
+ }
+
+ if (!cb_info)
+ return DEVICE_ERROR_INVALID_PARAMETER;
+
+ /* remove device callback from list (local) */
+ DD_LIST_REMOVE(device_cb_list[type], cb_info);
+ free(cb_info);
+
+ /* check if this callback is last element */
+ n = DD_LIST_LENGTH(device_cb_list[type]);
+ if (n == 0) {
+ ret = release_request(type);
+ if (ret < 0)
+ return DEVICE_ERROR_OPERATION_FAILED;
+ }
+
+ return DEVICE_ERROR_NONE;
+}
--- /dev/null
+/*
+ * Copyright (c) 2011 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 __COMMON_H__
+#define __COMMON_H__
+
+#ifdef FEATURE_DEVICE_DLOG
+ #define LOG_TAG "SYSTEM_DEVICE"
+ #include <dlog.h>
+ #define _D(fmt, args...) SLOGD(fmt, ##args)
+ #define _I(fmt, args...) SLOGI(fmt, ##args)
+ #define _E(fmt, args...) SLOGE(fmt, ##args)
+#else
+ #define _D(x, ...)
+ #define _I(x, ...)
+ #define _E(x, ...)
+#endif
+
+#ifndef __CONSTRUCTOR__
+#define __CONSTRUCTOR__ __attribute__ ((constructor))
+#endif
+
+#include "device-error.h"
+
+static inline int errno_to_device_error(int err)
+{
+ if (err == -ECOMM)
+ return DEVICE_ERROR_PERMISSION_DENIED;
+ else if (err == -ENODEV || err == -ENOENT)
+ return DEVICE_ERROR_NOT_SUPPORTED;
+ else if (err < 0)
+ return DEVICE_ERROR_OPERATION_FAILED;
+
+ return DEVICE_ERROR_NONE;
+}
+
+#endif /* __COMMON_H__ */
--- /dev/null
+/*
+ * Copyright (c) 2011 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.
+ */
+
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+#include "device.h"
+#include "common.h"
+
+#define PROC_STAT "/proc/stat"
+
+#define PROC_CPU_PRESENT "/sys/devices/system/cpu/present"
+#define PROC_SCALING_CUR_FREQ "/sys/devices/system/cpu/cpu%d/cpufreq/scaling_cur_freq"
+#define PROC_SCALING_MAX_FREQ "/sys/devices/system/cpu/cpu%d/cpufreq/scaling_max_freq"
+
+
+int device_cpu_get_count(int *cpu_cnt)
+{
+ FILE *fp;
+ int ret;
+ int st, ed;
+
+ if (cpu_cnt == NULL)
+ return DEVICE_ERROR_INVALID_PARAMETER;
+
+ fp = fopen(PROC_CPU_PRESENT, "r");
+ if (!fp)
+ return DEVICE_ERROR_OPERATION_FAILED;
+
+ ret = fscanf(fp, "%u-%u", &st, &ed);
+ fclose(fp);
+ if (ret != 2)
+ return DEVICE_ERROR_OPERATION_FAILED;
+
+ *cpu_cnt = ed+1;
+ return DEVICE_ERROR_NONE;
+}
+
+static int _get_systime(device_system_time_s *st)
+{
+ FILE *fp;
+ char buf[4096];
+ char *s;
+
+ assert(st);
+
+ fp = fopen(PROC_STAT, "r");
+ if (!fp)
+ return -1;
+
+ s = fgets(buf, sizeof(buf), fp);
+ fclose(fp);
+ if (!s)
+ return -1;
+
+ s = strchr(buf, ' ');
+ if (!s)
+ return -1;
+
+ s++;
+ st->user = strtol(s, &s, 10);
+ st->nice = strtol(s, &s, 10);
+ st->system = strtol(s, &s, 10);
+ st->idle = strtol(s, &s, 10);
+ st->iowait = strtol(s, &s, 10);
+ st->irq = strtol(s, &s, 10);
+ st->softirq = strtol(s, &s, 10);
+
+ return 0;
+}
+
+int device_cpu_get_system_time(device_system_time_s *time)
+{
+ int ret;
+ device_system_time_s st;
+
+ if (time == NULL)
+ return DEVICE_ERROR_INVALID_PARAMETER;
+
+ ret = _get_systime(&st);
+ if (ret < 0)
+ return DEVICE_ERROR_OPERATION_FAILED;
+
+ st.total = st.user+st.nice+st.system+st.idle+st.iowait+st.irq+st.softirq;
+ *time = st;
+ return DEVICE_ERROR_NONE;
+}
+
+static int _get_uint(const char *path, unsigned int *val)
+{
+ FILE *fp;
+ unsigned int num;
+ int ret;
+
+ assert(path);
+ assert(val);
+
+ fp = fopen(path, "r");
+ if (!fp)
+ return -1;
+
+ ret = fscanf(fp, "%u", &num);
+ fclose(fp);
+ if (ret != 1)
+ return -1;
+
+ *val = num;
+ return 0;
+}
+
+int device_cpu_get_current_freq(int cpu, unsigned int *cur_freq)
+{
+ char path[FILENAME_MAX];
+ int ret;
+ int count;
+ unsigned int cur;
+
+ if (cur_freq == NULL)
+ return DEVICE_ERROR_INVALID_PARAMETER;
+
+ ret = device_cpu_get_count(&count);
+ if (ret != DEVICE_ERROR_NONE || cpu < 0 || cpu >= count)
+ return DEVICE_ERROR_INVALID_PARAMETER;
+
+ snprintf(path, sizeof(path), PROC_SCALING_CUR_FREQ, cpu);
+ ret = _get_uint(path, &cur);
+ if (ret < 0)
+ cur = 0;
+
+ *cur_freq = cur;
+ return DEVICE_ERROR_NONE;
+}
+
+int device_cpu_get_max_freq(int cpu, unsigned int *max_freq)
+{
+ char path[FILENAME_MAX];
+ int ret;
+ int count;
+ unsigned int max;
+
+ if (max_freq == NULL)
+ return DEVICE_ERROR_INVALID_PARAMETER;
+
+ ret = device_cpu_get_count(&count);
+ if (ret != DEVICE_ERROR_NONE || cpu < 0 || cpu >= count)
+ return DEVICE_ERROR_INVALID_PARAMETER;
+
+ snprintf(path, sizeof(path), PROC_SCALING_MAX_FREQ, cpu);
+ ret = _get_uint(path, &max);
+ if (ret < 0)
+ max = 0;
+
+ *max_freq = max;
+ return DEVICE_ERROR_NONE;
+}
--- /dev/null
+/*
+ * system-dbus
+ *
+ * Copyright (c) 2012 - 2013 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <errno.h>
+#include <dbus/dbus-glib-lowlevel.h>
+
+#include "common.h"
+#include "dbus.h"
+
+#define DBUS_REPLY_TIMEOUT (-1)
+
+struct pending_call_data {
+ dbus_pending_cb func;
+ void *data;
+};
+
+static int append_variant(DBusMessageIter *iter, const char *sig, char *param[])
+{
+ char *ch;
+ int i;
+ int int_type;
+ uint64_t int64_type;
+
+ if (!sig || !param)
+ return 0;
+
+ for (ch = (char*)sig, i = 0; *ch != '\0'; ++i, ++ch) {
+ switch (*ch) {
+ case 'i':
+ int_type = atoi(param[i]);
+ dbus_message_iter_append_basic(iter, DBUS_TYPE_INT32, &int_type);
+ break;
+ case 'u':
+ int_type = strtoul(param[i], NULL, 10);
+ dbus_message_iter_append_basic(iter, DBUS_TYPE_UINT32, &int_type);
+ break;
+ case 't':
+ int64_type = atoll(param[i]);
+ dbus_message_iter_append_basic(iter, DBUS_TYPE_UINT64, &int64_type);
+ break;
+ case 's':
+ dbus_message_iter_append_basic(iter, DBUS_TYPE_STRING, ¶m[i]);
+ break;
+ default:
+ return -EINVAL;
+ }
+ }
+
+ return 0;
+}
+
+int dbus_method_sync(const char *dest, const char *path,
+ const char *interface, const char *method,
+ const char *sig, char *param[])
+{
+ DBusConnection *conn;
+ DBusMessage *msg;
+ DBusMessageIter iter;
+ DBusMessage *reply;
+ DBusError err;
+ int ret, result;
+
+ conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL);
+ if (!conn) {
+ _E("dbus_bus_get error");
+ return -EPERM;
+ }
+
+ msg = dbus_message_new_method_call(dest, path, interface, method);
+ if (!msg) {
+ _E("dbus_message_new_method_call(%s:%s-%s)",
+ path, interface, method);
+ return -EBADMSG;
+ }
+
+ dbus_message_iter_init_append(msg, &iter);
+ ret = append_variant(&iter, sig, param);
+ if (ret < 0) {
+ _E("append_variant error(%d) %s %s:%s-%s",
+ ret, dest, path, interface, method);
+ dbus_message_unref(msg);
+ return ret;
+ }
+
+ dbus_error_init(&err);
+
+ reply = dbus_connection_send_with_reply_and_block(conn, msg, DBUS_REPLY_TIMEOUT, &err);
+ dbus_message_unref(msg);
+ if (!reply) {
+ _E("dbus_connection_send error(%s:%s) %s %s:%s-%s",
+ err.name, err.message, dest, path, interface, method);
+ dbus_error_free(&err);
+ return -ECOMM;
+ }
+
+ ret = dbus_message_get_args(reply, &err, DBUS_TYPE_INT32, &result, DBUS_TYPE_INVALID);
+ dbus_message_unref(reply);
+ if (!ret) {
+ _E("no message : [%s:%s] %s %s:%s-%s",
+ err.name, err.message, dest, path, interface, method);
+ dbus_error_free(&err);
+ return -ENOMSG;
+ }
+
+ return result;
+}
+
+static void cb_pending(DBusPendingCall *pending, void *user_data)
+{
+ DBusMessage *msg;
+ DBusError err;
+ struct pending_call_data *data = user_data;
+ int ret;
+
+ ret = dbus_pending_call_get_completed(pending);
+ if (!ret) {
+ _I("dbus_pending_call_get_completed() fail");
+ dbus_pending_call_unref(pending);
+ return;
+ }
+
+ dbus_error_init(&err);
+ msg = dbus_pending_call_steal_reply(pending);
+ if (!msg) {
+ _E("no message : [%s:%s]", err.name, err.message);
+
+ if (data->func) {
+ dbus_set_error(&err, "org.tizen.system.deviced.NoReply",
+ "There was no reply to this method call");
+ data->func(data->data, NULL, &err);
+ dbus_error_free(&err);
+ }
+ return;
+ }
+
+ ret = dbus_set_error_from_message(&err, msg);
+ if (ret) {
+ _E("error msg : [%s:%s]", err.name, err.message);
+
+ if (data->func)
+ data->func(data->data, NULL, &err);
+ dbus_error_free(&err);
+ } else {
+ if (data->func)
+ data->func(data->data, msg, &err);
+ }
+
+ dbus_message_unref(msg);
+ dbus_pending_call_unref(pending);
+}
+
+int dbus_method_async_with_reply(const char *dest, const char *path,
+ const char *interface, const char *method,
+ const char *sig, char *param[], dbus_pending_cb cb, int timeout, void *data)
+{
+ DBusConnection *conn;
+ DBusMessage *msg;
+ DBusMessageIter iter;
+ DBusPendingCall *pending = NULL;
+ struct pending_call_data *pdata;
+ int ret;
+
+ conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL);
+ if (!conn) {
+ _E("dbus_bus_get error");
+ return -EPERM;
+ }
+
+ /* this function should be invoked to receive dbus messages
+ * does nothing if it's already been done */
+ dbus_connection_setup_with_g_main(conn, NULL);
+
+ msg = dbus_message_new_method_call(dest, path, interface, method);
+ if (!msg) {
+ _E("dbus_message_new_method_call(%s:%s-%s)",
+ path, interface, method);
+ return -EBADMSG;
+ }
+
+ dbus_message_iter_init_append(msg, &iter);
+ ret = append_variant(&iter, sig, param);
+ if (ret < 0) {
+ _E("append_variant error(%d)%s %s:%s-%s",
+ ret, dest, path, interface, method);
+ dbus_message_unref(msg);
+ return ret;
+ }
+
+ ret = dbus_connection_send_with_reply(conn, msg, &pending, timeout);
+ if (!ret) {
+ dbus_message_unref(msg);
+ _E("dbus_connection_send error(%s %s:%s-%s)",
+ dest, path, interface, method);
+ return -ECOMM;
+ }
+
+ dbus_message_unref(msg);
+
+ if (cb && pending) {
+ pdata = malloc(sizeof(struct pending_call_data));
+ if (!pdata)
+ return -ENOMEM;
+
+ pdata->func = cb;
+ pdata->data = data;
+
+ ret = dbus_pending_call_set_notify(pending, cb_pending, pdata, free);
+ if (!ret) {
+ free(pdata);
+ dbus_pending_call_cancel(pending);
+ return -ECOMM;
+ }
+ }
+
+ return 0;
+}
--- /dev/null
+/*
+ * system-dbus
+ *
+ * Copyright (c) 2012 - 2013 Samsung Electronics Co., Ltd.
+ *
+ * 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 __DBUS_H__
+#define __DBUS_H__
+
+#include <dbus/dbus.h>
+
+#define DEVICED_BUS_NAME "org.tizen.system.deviced"
+#define DEVICED_OBJECT_PATH "/Org/Tizen/System/DeviceD"
+#define DEVICED_INTERFACE_NAME DEVICED_BUS_NAME
+
+/* Display service: start/stop display(pm), get/set brightness operations about display */
+#define DEVICED_PATH_DISPLAY DEVICED_OBJECT_PATH"/Display"
+#define DEVICED_INTERFACE_DISPLAY DEVICED_INTERFACE_NAME".display"
+
+/* Battery service */
+#define DEVICED_PATH_BATTERY DEVICED_OBJECT_PATH"/Battery"
+#define DEVICED_INTERFACE_BATTERY DEVICED_INTERFACE_NAME".Battery"
+
+/* Haptic service: operatioins about haptic */
+#define DEVICED_PATH_HAPTIC DEVICED_OBJECT_PATH"/Haptic"
+#define DEVICED_INTERFACE_HAPTIC DEVICED_INTERFACE_NAME".haptic"
+
+/* Led service: play/stop led operations about led */
+#define DEVICED_PATH_LED DEVICED_OBJECT_PATH"/Led"
+#define DEVICED_INTERFACE_LED DEVICED_INTERFACE_NAME".Led"
+
+/* Power service: request to reboot */
+#define DEVICED_PATH_POWER DEVICED_OBJECT_PATH"/Power"
+#define DEVICED_INTERFACE_POWER DEVICED_INTERFACE_NAME".power"
+
+int dbus_method_sync(const char *dest, const char *path,
+ const char *interface, const char *method,
+ const char *sig, char *param[]);
+
+typedef void (*dbus_pending_cb)(void *data, DBusMessage *msg, DBusError *err);
+
+int dbus_method_async_with_reply(const char *dest, const char *path,
+ const char *interface, const char *method,
+ const char *sig, char *param[], dbus_pending_cb cb, int timeout, void *data);
+
+#endif
* 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.
+ * limitations under the License.
*/
-
-#define LOG_TAG "TIZEN_SYSTEM_DEVICE"
-
-#include <string.h>
#include <stdio.h>
-#include <devman.h>
-#include <device.h>
+#include <string.h>
#include <errno.h>
-#include <dlog.h>
+#include <dd-display.h>
+#include <dd-battery.h>
#include <vconf.h>
-#define _MSG_DEVICE_ERROR_INVALID_PARAMETER "Invalid parameter"
-#define _MSG_DEVICE_ERROR_OPERATION_FAILED "Operation failed"
-#define _MSG_DEVICE_ERROR_NOT_SUPPORTED "Not supported in this device"
-
-#define RETURN_ERR_MSG(err_code, msg) \
- do { \
- LOGE("[%s] "_MSG_##err_code"(0x%08x) : %s", __FUNCTION__, err_code, msg); \
- return err_code; \
- }while(0)
-
-#define RETURN_ERR(err_code) \
- do { \
- LOGE("[%s] "_MSG_##err_code"(0x%08x)", __FUNCTION__, err_code); \
- return err_code; \
- }while(0)
+#include "device.h"
+#include "common.h"
-static int _display[] = {
- DEV_DISPLAY_0,
- DEV_DISPLAY_1,
-};
+#define CHECK_ERR(val) \
+ do { \
+ if (val < 0) { \
+ if (errno == ENODEV) \
+ return DEVICE_ERROR_NOT_SUPPORTED; \
+ return DEVICE_ERROR_OPERATION_FAILED; \
+ } \
+ } while(0)
int device_get_display_numbers(int* device_number)
{
- if(device_number == NULL)
- RETURN_ERR(DEVICE_ERROR_INVALID_PARAMETER);
+ if(device_number == NULL)
+ return DEVICE_ERROR_INVALID_PARAMETER;
- *device_number = device_get_display_count();
- if(*device_number < 0)
- RETURN_ERR(DEVICE_ERROR_OPERATION_FAILED);
+ *device_number = display_get_count();
+ CHECK_ERR(*device_number);
- return DEVICE_ERROR_NONE;
-}
-
-int device_battery_get_percent(int* percent)
-{
- if (percent == NULL)
- RETURN_ERR(DEVICE_ERROR_INVALID_PARAMETER);
-
- int pct = device_get_battery_pct();
- if (pct < 0) {
- RETURN_ERR(DEVICE_ERROR_OPERATION_FAILED);
- } else {
- *percent = pct;
- }
return DEVICE_ERROR_NONE;
}
-int device_battery_get_detail(int* percent)
+int device_get_brightness(int disp_idx, int* value)
{
- if (percent == NULL)
- RETURN_ERR(DEVICE_ERROR_INVALID_PARAMETER);
+ int val, max_id, ret;
- int pct = device_get_battery_pct_raw();
- if (pct == -ENODEV)
- RETURN_ERR(DEVICE_ERROR_NOT_SUPPORTED);
+ if(value == NULL)
+ return DEVICE_ERROR_INVALID_PARAMETER;
- if (pct < 0)
- RETURN_ERR(DEVICE_ERROR_OPERATION_FAILED);
+ ret = device_get_display_numbers(&max_id);
+ if (ret != DEVICE_ERROR_NONE)
+ return ret;
- *percent = pct;
- return DEVICE_ERROR_NONE;
-}
+ if(disp_idx < 0 || disp_idx >= max_id)
+ return DEVICE_ERROR_INVALID_PARAMETER;
-int device_battery_is_full(bool* full)
-{
- if (full == NULL)
- RETURN_ERR(DEVICE_ERROR_INVALID_PARAMETER);
+ val = display_get_brightness();
+ CHECK_ERR(val);
- int f = device_is_battery_full();
- if (f < 0) {
- RETURN_ERR(DEVICE_ERROR_OPERATION_FAILED);
- } else {
- *full = (f == 1) ? true : false;
- }
+ *value = val;
return DEVICE_ERROR_NONE;
}
-int device_get_brightness(int disp_idx, int* value)
+int device_set_brightness(int disp_idx, int new_value)
{
- int val, disp, max_id;
+ int max_value, val, max_id, ret;
- if(value == NULL) RETURN_ERR(DEVICE_ERROR_INVALID_PARAMETER);
+ if(new_value < 0)
+ return DEVICE_ERROR_INVALID_PARAMETER;
- if(device_get_display_numbers(&max_id) < 0)
- RETURN_ERR(DEVICE_ERROR_OPERATION_FAILED);
+ ret = device_get_display_numbers(&max_id);
+ if (ret != DEVICE_ERROR_NONE)
+ return ret;
- if(disp_idx < 0 || disp_idx >= max_id)
- RETURN_ERR(DEVICE_ERROR_INVALID_PARAMETER);
+ if(disp_idx < 0 || disp_idx >= max_id)
+ return DEVICE_ERROR_INVALID_PARAMETER;
- disp = _display[disp_idx];
+ ret = device_get_max_brightness(disp_idx, &max_value);
+ if (ret != DEVICE_ERROR_NONE)
+ return ret;
- if(value == NULL)
- RETURN_ERR(DEVICE_ERROR_INVALID_PARAMETER);
+ if(new_value > max_value)
+ return DEVICE_ERROR_INVALID_PARAMETER;
- val = device_get_display_brt(disp);
-
- if(val < 0) {
- RETURN_ERR(DEVICE_ERROR_OPERATION_FAILED);
- }
- else
- *value = val;
+ val = display_set_brightness(new_value);
+ CHECK_ERR(val);
return DEVICE_ERROR_NONE;
}
-int device_set_brightness(int disp_idx, int new_value)
+int device_get_max_brightness(int disp_idx, int* max_value)
{
- int max_value, val;
- int disp, max_id;
-
- if(device_get_display_numbers(&max_id) < 0)
- RETURN_ERR(DEVICE_ERROR_OPERATION_FAILED);
-
- if(disp_idx < 0 || disp_idx >= max_id)
- RETURN_ERR(DEVICE_ERROR_INVALID_PARAMETER);
+ int val, max_id, ret;
- disp = _display[disp_idx];
+ if(max_value == NULL)
+ return DEVICE_ERROR_INVALID_PARAMETER;
- if(new_value < 0)
- RETURN_ERR(DEVICE_ERROR_INVALID_PARAMETER);
+ ret = device_get_display_numbers(&max_id);
+ _E("max id : %d", max_id);
+ if (ret != DEVICE_ERROR_NONE)
+ return ret;
- device_get_max_brightness(disp, &max_value);
+ if(disp_idx < 0 || disp_idx >= max_id)
+ return DEVICE_ERROR_INVALID_PARAMETER;
- if(new_value > max_value)
- RETURN_ERR(DEVICE_ERROR_INVALID_PARAMETER);
+ val = display_get_max_brightness();
+ CHECK_ERR(val);
- val = device_set_display_brt(disp, new_value);
- if(val < 0) {
- RETURN_ERR(DEVICE_ERROR_OPERATION_FAILED);
- }
+ *max_value = val;
return DEVICE_ERROR_NONE;
}
-int device_get_max_brightness(int disp_idx, int* max_value)
+int device_set_brightness_from_settings(int disp_idx)
{
- int val, disp, max_id;
-
- if(device_get_display_numbers(&max_id) < 0)
- RETURN_ERR(DEVICE_ERROR_OPERATION_FAILED);
-
- if(disp_idx < 0 || disp_idx >= max_id)
- RETURN_ERR(DEVICE_ERROR_INVALID_PARAMETER);
-
- disp = _display[disp_idx];
-
- if(max_value == NULL)
- RETURN_ERR(DEVICE_ERROR_INVALID_PARAMETER);
-
- val = device_get_max_brt(disp);
-
- if(val < 0) {
- RETURN_ERR(DEVICE_ERROR_OPERATION_FAILED);
- }
- else
- *max_value = val;
+ int max_id, val, ret;
+
+ ret = device_get_display_numbers(&max_id);
+ if (ret != DEVICE_ERROR_NONE)
+ return ret;
+
+ if(disp_idx < 0 || disp_idx >= max_id)
+ return DEVICE_ERROR_INVALID_PARAMETER;
+
+ val = display_release_brightness();
+ CHECK_ERR(val);
return DEVICE_ERROR_NONE;
}
-int device_set_brightness_from_settings(int disp_idx)
+int device_set_brightness_to_settings(int disp_idx, int new_value)
{
- int max_id, disp, val;
+ int max_value, val, max_id, ret;
+
+ if(new_value < 0)
+ return DEVICE_ERROR_INVALID_PARAMETER;
- if(device_get_display_numbers(&max_id) < 0)
- RETURN_ERR(DEVICE_ERROR_OPERATION_FAILED);
+ ret = device_get_display_numbers(&max_id);
+ if (ret != DEVICE_ERROR_NONE)
+ return ret;
if(disp_idx < 0 || disp_idx >= max_id)
- RETURN_ERR(DEVICE_ERROR_INVALID_PARAMETER);
+ return DEVICE_ERROR_INVALID_PARAMETER;
- disp = _display[disp_idx];
+ ret = device_get_max_brightness(disp_idx, &max_value);
+ if (ret != DEVICE_ERROR_NONE)
+ return ret;
- val = device_release_brt_ctrl(disp);
- if(val < 0) {
- RETURN_ERR(DEVICE_ERROR_OPERATION_FAILED);
- }
+ if(new_value > max_value)
+ return DEVICE_ERROR_INVALID_PARAMETER;
+
+ val = display_set_brightness_with_setting(new_value);
+ CHECK_ERR(val);
return DEVICE_ERROR_NONE;
}
-int device_battery_is_charging(bool *charging)
+int device_battery_is_full(bool* full)
{
- // VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW
- int value, err;
-
- if(charging == NULL){
- RETURN_ERR(DEVICE_ERROR_INVALID_PARAMETER);
- }
-
- err = vconf_get_int(VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW, &value);
-
- if(err <0){
- RETURN_ERR(DEVICE_ERROR_OPERATION_FAILED);
- }
- if(value == 1){
- *charging = true;
- }else if(value == 0){
- *charging = false;
- }else{
- RETURN_ERR(DEVICE_ERROR_OPERATION_FAILED);
- }
- return DEVICE_ERROR_NONE;
+ if (full == NULL)
+ return DEVICE_ERROR_INVALID_PARAMETER;
+
+ int f = battery_is_full();
+ CHECK_ERR(f);
+
+ *full = (f == 1) ? true : false;
+ return DEVICE_ERROR_NONE;
}
static device_battery_cb changed_callback = NULL;
static void battery_changed_inside_cb(keynode_t* key, void* user_data)
{
- char* keyname = vconf_keynode_get_name(key);
-
- if(keyname != NULL && changed_callback != NULL && strcmp(keyname, VCONFKEY_SYSMAN_BATTERY_CAPACITY) == 0){
- int percent = 0;
- if(vconf_get_int(VCONFKEY_SYSMAN_BATTERY_CAPACITY, &percent) == 0){
- changed_callback(percent, changed_callback_user_data);
- }
- }
+ char* keyname = vconf_keynode_get_name(key);
+
+ if (keyname != NULL && changed_callback != NULL && strcmp(keyname, VCONFKEY_SYSMAN_BATTERY_CAPACITY) == 0) {
+ int percent = 0;
+ if (vconf_get_int(VCONFKEY_SYSMAN_BATTERY_CAPACITY, &percent) == 0) {
+ changed_callback(percent, changed_callback_user_data);
+ }
+ }
}
int device_battery_set_cb(device_battery_cb callback, void* user_data)
{
- // VCONFKEY_SYSMAN_BATTERY_CAPACITY
- int err;
- if(callback == NULL)
- RETURN_ERR(DEVICE_ERROR_INVALID_PARAMETER);
+ // VCONFKEY_SYSMAN_BATTERY_CAPACITY
+ int err;
+ if (callback == NULL)
+ return DEVICE_ERROR_INVALID_PARAMETER;
- changed_callback = callback;
- changed_callback_user_data = user_data;
+ changed_callback = callback;
+ changed_callback_user_data = user_data;
- err = vconf_notify_key_changed(VCONFKEY_SYSMAN_BATTERY_CAPACITY, battery_changed_inside_cb, NULL);
- if(err < 0){
- RETURN_ERR(DEVICE_ERROR_INVALID_PARAMETER);
- }
+ err = vconf_notify_key_changed(VCONFKEY_SYSMAN_BATTERY_CAPACITY, battery_changed_inside_cb, NULL);
+ if (err < 0)
+ return DEVICE_ERROR_INVALID_PARAMETER;
- return DEVICE_ERROR_NONE;
+ return DEVICE_ERROR_NONE;
}
+
int device_battery_unset_cb(void)
{
- int err = vconf_ignore_key_changed(VCONFKEY_SYSMAN_BATTERY_CAPACITY, battery_changed_inside_cb);
- if(err < 0){
- RETURN_ERR(DEVICE_ERROR_OPERATION_FAILED);
- }
- changed_callback = NULL;
- changed_callback_user_data = NULL;
-
- return DEVICE_ERROR_NONE;
+ int err = vconf_ignore_key_changed(VCONFKEY_SYSMAN_BATTERY_CAPACITY, battery_changed_inside_cb);
+ if (err < 0)
+ return DEVICE_ERROR_OPERATION_FAILED;
+
+ changed_callback = NULL;
+ changed_callback_user_data = NULL;
+
+ return DEVICE_ERROR_NONE;
}
int device_battery_get_warning_status(device_battery_warn_e *status)
{
- if (status == NULL) RETURN_ERR(DEVICE_ERROR_INVALID_PARAMETER);
+ if (status == NULL)
+ return DEVICE_ERROR_INVALID_PARAMETER;
int value, err;
err = vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &value);
+ if (err < 0)
+ return DEVICE_ERROR_OPERATION_FAILED;
- if(err < 0){
- RETURN_ERR(DEVICE_ERROR_OPERATION_FAILED);
- }
- if(value == VCONFKEY_SYSMAN_BAT_POWER_OFF){
+ if (value == VCONFKEY_SYSMAN_BAT_POWER_OFF) {
*status = DEVICE_BATTERY_WARN_EMPTY;
- }else if(value == VCONFKEY_SYSMAN_BAT_CRITICAL_LOW){
+ } else if (value == VCONFKEY_SYSMAN_BAT_CRITICAL_LOW) {
*status = DEVICE_BATTERY_WARN_CRITICAL;
- }else if(value == VCONFKEY_SYSMAN_BAT_WARNING_LOW){
+ } else if (value == VCONFKEY_SYSMAN_BAT_WARNING_LOW) {
*status = DEVICE_BATTERY_WARN_LOW;
- }else if(value == VCONFKEY_SYSMAN_BAT_NORMAL){
+ } else if (value == VCONFKEY_SYSMAN_BAT_NORMAL) {
*status = DEVICE_BATTERY_WARN_NORMAL;
- }else if(value == VCONFKEY_SYSMAN_BAT_FULL){
+ } else if (value == VCONFKEY_SYSMAN_BAT_FULL) {
*status = DEVICE_BATTERY_WARN_FULL;
- }else{
- RETURN_ERR(DEVICE_ERROR_OPERATION_FAILED);
+ } else {
+ return DEVICE_ERROR_OPERATION_FAILED;
}
+
return DEVICE_ERROR_NONE;
}
{
char* keyname = vconf_keynode_get_name(key);
- if(keyname != NULL && warn_changed_callback != NULL && strcmp(keyname, VCONFKEY_SYSMAN_BATTERY_STATUS_LOW) == 0){
+ if (keyname != NULL && warn_changed_callback != NULL && strcmp(keyname, VCONFKEY_SYSMAN_BATTERY_STATUS_LOW) == 0) {
int bat_state = 0;
- if(vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &bat_state) == 0){
+ if (vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &bat_state) == 0) {
warn_changed_callback(bat_state-1, warn_changed_callback_user_data);
}
}
{
// VCONFKEY_SYSMAN_BATTERY_STATUS_LOW
int err;
- if(callback == NULL)
- RETURN_ERR(DEVICE_ERROR_INVALID_PARAMETER);
+
+ if (callback == NULL)
+ return DEVICE_ERROR_INVALID_PARAMETER;
warn_changed_callback = callback;
warn_changed_callback_user_data = user_data;
err = vconf_notify_key_changed(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, battery_warn_changed_inside_cb, NULL);
- if(err < 0){
- RETURN_ERR(DEVICE_ERROR_INVALID_PARAMETER);
- }
+ if (err < 0)
+ return DEVICE_ERROR_INVALID_PARAMETER;
return DEVICE_ERROR_NONE;
}
int device_battery_warning_unset_cb(void)
{
int err = vconf_ignore_key_changed(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, battery_warn_changed_inside_cb);
- if(err < 0){
- RETURN_ERR(DEVICE_ERROR_OPERATION_FAILED);
- }
+ if (err < 0)
+ return DEVICE_ERROR_OPERATION_FAILED;
+
warn_changed_callback = NULL;
warn_changed_callback_user_data = NULL;
return DEVICE_ERROR_NONE;
}
-
-int device_flash_get_brightness(int *brightness)
-{
- int value;
-
- if (brightness == NULL)
- RETURN_ERR(DEVICE_ERROR_INVALID_PARAMETER);
-
- value = device_get_led_brt();
-
- if (value < 0)
- RETURN_ERR(DEVICE_ERROR_OPERATION_FAILED);
-
- *brightness = value;
-
- return DEVICE_ERROR_NONE;
-}
-
-int device_flash_set_brightness(int brightness)
-{
- int max_value, value;
-
- device_flash_get_max_brightness(&max_value);
-
- if (brightness < 0 || brightness > max_value)
- RETURN_ERR(DEVICE_ERROR_INVALID_PARAMETER);
-
- value = device_set_led_brt(brightness);
-
- if (value < 0)
- RETURN_ERR(DEVICE_ERROR_OPERATION_FAILED);
-
- return DEVICE_ERROR_NONE;
-}
-
-int device_flash_get_max_brightness(int *max_brightness)
-{
- int value;
-
- if (max_brightness == NULL)
- RETURN_ERR(DEVICE_ERROR_INVALID_PARAMETER);
-
- value = device_get_max_led();
-
- if (value < 0)
- RETURN_ERR(DEVICE_ERROR_OPERATION_FAILED);
-
- *max_brightness = value;
-
- return DEVICE_ERROR_NONE;
-}
--- /dev/null
+/*
+ * Copyright (c) 2011 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.
+ */
+
+
+#include <stdio.h>
+#include <errno.h>
+#include <vconf.h>
+
+#include "display.h"
+#include "common.h"
+#include "dbus.h"
+
+#define METHOD_GET_DISPLAY_COUNT "GetDisplayCount"
+#define METHOD_GET_MAX_BRIGHTNESS "GetMaxBrightness"
+#define METHOD_GET_BRIGHTNESS "GetBrightness"
+#define METHOD_SET_BRIGHTNESS "SetBrightness"
+#define METHOD_CHANGE_STATE "changestate"
+
+#define STR_LCD_OFF "lcdoff"
+#define STR_LCD_DIM "lcddim"
+#define STR_LCD_ON "lcdon"
+
+static int display_cnt = -1;
+struct display {
+ int max;
+} *display_arr;
+
+static int alloc_display(void)
+{
+ display_arr = malloc(sizeof(struct display) * display_cnt);
+ if (!display_arr)
+ return -ENOMEM;
+ memset(display_arr, -1, sizeof(struct display));
+ return 0;
+}
+
+int device_display_get_numbers(int *device_number)
+{
+ int ret;
+
+ if (!device_number)
+ return DEVICE_ERROR_INVALID_PARAMETER;
+
+ /* if it is a first request */
+ if (display_cnt < 0) {
+ ret = dbus_method_sync(DEVICED_BUS_NAME,
+ DEVICED_PATH_DISPLAY, DEVICED_INTERFACE_DISPLAY,
+ METHOD_GET_DISPLAY_COUNT, NULL, NULL);
+ if (ret < 0)
+ return errno_to_device_error(ret);
+ display_cnt = ret;
+ alloc_display();
+ }
+
+ *device_number = display_cnt;
+ _I("device_number : %d", *device_number);
+ return DEVICE_ERROR_NONE;
+}
+
+int device_display_get_max_brightness(int display_index, int *max_brightness)
+{
+ int ret;
+
+ if (!max_brightness)
+ return DEVICE_ERROR_INVALID_PARAMETER;
+
+ if (display_cnt < 0)
+ device_display_get_numbers(&display_cnt);
+
+ if (display_index < 0 || display_index >= display_cnt)
+ return DEVICE_ERROR_INVALID_PARAMETER;
+
+ if (!display_arr && alloc_display() < 0)
+ return DEVICE_ERROR_OPERATION_FAILED;
+
+ if (display_arr[display_index].max < 0) {
+ ret = dbus_method_sync(DEVICED_BUS_NAME,
+ DEVICED_PATH_DISPLAY, DEVICED_INTERFACE_DISPLAY,
+ METHOD_GET_MAX_BRIGHTNESS, NULL, NULL);
+ if (ret < 0)
+ return errno_to_device_error(ret);
+ display_arr[display_index].max = ret;
+ }
+
+ *max_brightness = display_arr[display_index].max;
+ return DEVICE_ERROR_NONE;
+}
+
+int device_display_get_brightness(int display_index, int *brightness)
+{
+ int ret;
+
+ if (!brightness)
+ return DEVICE_ERROR_INVALID_PARAMETER;
+
+ if (display_cnt < 0)
+ device_display_get_numbers(&display_cnt);
+
+ if (display_index < 0 || display_index >= display_cnt)
+ return DEVICE_ERROR_INVALID_PARAMETER;
+
+ ret = dbus_method_sync(DEVICED_BUS_NAME,
+ DEVICED_PATH_DISPLAY, DEVICED_INTERFACE_DISPLAY,
+ METHOD_GET_BRIGHTNESS, NULL, NULL);
+ if (ret < 0)
+ return errno_to_device_error(ret);
+
+ *brightness = ret;
+ return DEVICE_ERROR_NONE;
+}
+
+int device_display_set_brightness(int display_index, int brightness)
+{
+ char *arr[1];
+ char str_val[32];
+ int ret, max;
+
+ if (display_cnt < 0)
+ device_display_get_numbers(&display_cnt);
+
+ if (display_index < 0 || display_index >= display_cnt)
+ return DEVICE_ERROR_INVALID_PARAMETER;
+
+ if (display_arr[display_index].max < 0)
+ device_display_get_max_brightness(display_index, &max);
+
+ if (brightness < 0 || brightness > display_arr[display_index].max)
+ return DEVICE_ERROR_INVALID_PARAMETER;
+
+ snprintf(str_val, sizeof(str_val), "%d", brightness);
+ arr[0] = str_val;
+
+ ret = dbus_method_sync(DEVICED_BUS_NAME,
+ DEVICED_PATH_DISPLAY, DEVICED_INTERFACE_DISPLAY,
+ METHOD_SET_BRIGHTNESS, "i", arr);
+ if (ret < 0)
+ return errno_to_device_error(ret);
+
+ return DEVICE_ERROR_NONE;
+}
+
+int device_display_get_state(display_state_e *state)
+{
+ int ret, val;
+
+ if (!state)
+ return DEVICE_ERROR_INVALID_PARAMETER;
+
+ ret = vconf_get_int(VCONFKEY_PM_STATE, &val);
+ if (ret < 0)
+ return DEVICE_ERROR_OPERATION_FAILED;
+
+ if (val == VCONFKEY_PM_STATE_NORMAL)
+ *state = DISPLAY_STATE_NORMAL;
+ else if (val == VCONFKEY_PM_STATE_LCDDIM)
+ *state = DISPLAY_STATE_SCREEN_DIM;
+ else if (val == VCONFKEY_PM_STATE_LCDOFF)
+ *state = DISPLAY_STATE_SCREEN_OFF;
+ else
+ return DEVICE_ERROR_OPERATION_FAILED;
+
+ return DEVICE_ERROR_NONE;
+}
+
+static char *get_state_str(display_state_e state)
+{
+ switch (state) {
+ case DISPLAY_STATE_NORMAL:
+ return STR_LCD_ON;
+ case DISPLAY_STATE_SCREEN_DIM:
+ return STR_LCD_DIM;
+ case DISPLAY_STATE_SCREEN_OFF:
+ return STR_LCD_OFF;
+ default:
+ break;
+ }
+ return NULL;
+}
+
+int device_display_change_state(display_state_e state)
+{
+ char *str, *arr[1];
+ int ret;
+
+ if (state < DISPLAY_STATE_NORMAL || state > DISPLAY_STATE_SCREEN_OFF)
+ return DEVICE_ERROR_INVALID_PARAMETER;
+
+ arr[0] = "";
+
+ ret = dbus_method_sync(DEVICED_BUS_NAME,
+ DEVICED_PATH_DISPLAY, DEVICED_INTERFACE_DISPLAY,
+ METHOD_CHANGE_STATE, "s", arr);
+ if (ret == -ECOMM || ret == -EACCES || ret == -EPERM)
+ return DEVICE_ERROR_PERMISSION_DENIED;
+
+ str = get_state_str(state);
+ if (!str)
+ return DEVICE_ERROR_INVALID_PARAMETER;
+
+ arr[0] = str;
+
+ ret = dbus_method_async_with_reply(DEVICED_BUS_NAME,
+ DEVICED_PATH_DISPLAY, DEVICED_INTERFACE_DISPLAY,
+ METHOD_CHANGE_STATE, "s", arr, NULL, -1, NULL);
+ if (ret < 0)
+ return errno_to_device_error(ret);
+
+ return DEVICE_ERROR_NONE;
+}
--- /dev/null
+/*
+ * deviced
+ *
+ * Copyright (c) 2012 - 2013 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include <stdio.h>
+#include <errno.h>
+
+#include "haptic.h"
+#include "common.h"
+#include "dbus.h"
+
+#define METHOD_GET_COUNT "GetCount"
+#define METHOD_OPEN_DEVICE "OpenDevice"
+#define METHOD_CLOSE_DEVICE "CloseDevice"
+#define METHOD_STOP_DEVICE "StopDevice"
+#define METHOD_VIBRATE_MONOTONE "VibrateMonotone"
+
+enum feedback_e
+{
+ HAPTIC_FEEDBACK_MIN = 0,
+ HAPTIC_FEEDBACK_MAX = 100,
+};
+
+enum priority_e
+{
+ HAPTIC_PRIORITY_MIN = 0,
+ HAPTIC_PRIORITY_MIDDLE,
+ HAPTIC_PRIORITY_HIGH,
+};
+
+int device_haptic_get_count(int *device_number)
+{
+ int ret;
+
+ if (!device_number)
+ return DEVICE_ERROR_INVALID_PARAMETER;
+
+ /* request to deviced to get haptic count */
+ ret = dbus_method_sync(DEVICED_BUS_NAME,
+ DEVICED_PATH_HAPTIC, DEVICED_INTERFACE_HAPTIC,
+ METHOD_GET_COUNT, NULL, NULL);
+ if (ret < 0)
+ return errno_to_device_error(ret);
+
+ *device_number = ret;
+ return DEVICE_ERROR_NONE;
+}
+
+int device_haptic_open(int device_index, haptic_device_h *device_handle)
+{
+ char str_index[32];
+ char *arr[1];
+ int ret, max;
+
+ ret = device_haptic_get_count(&max);
+ if (ret < 0)
+ return ret;
+
+ if (device_index < 0 || device_index >= max)
+ return DEVICE_ERROR_INVALID_PARAMETER;
+
+ if (!device_handle)
+ return DEVICE_ERROR_INVALID_PARAMETER;
+
+ snprintf(str_index, sizeof(str_index), "%d", device_index);
+ arr[0] = str_index;
+
+ /* request to deviced to open haptic device */
+ ret = dbus_method_sync(DEVICED_BUS_NAME,
+ DEVICED_PATH_HAPTIC, DEVICED_INTERFACE_HAPTIC,
+ METHOD_OPEN_DEVICE, "i", arr);
+ if (ret < 0)
+ return errno_to_device_error(ret);
+
+ *device_handle = (haptic_device_h)ret;
+ return DEVICE_ERROR_NONE;
+}
+
+int device_haptic_close(haptic_device_h device_handle)
+{
+ char str_handle[32];
+ char *arr[1];
+ int ret;
+
+ if (!device_handle)
+ return DEVICE_ERROR_INVALID_PARAMETER;
+
+ snprintf(str_handle, sizeof(str_handle), "%u", (unsigned int)device_handle);
+ arr[0] = str_handle;
+
+ /* request to deviced to open haptic device */
+ ret = dbus_method_sync(DEVICED_BUS_NAME,
+ DEVICED_PATH_HAPTIC, DEVICED_INTERFACE_HAPTIC,
+ METHOD_CLOSE_DEVICE, "u", arr);
+ if (ret < 0)
+ return errno_to_device_error(ret);
+
+ return DEVICE_ERROR_NONE;
+}
+
+int device_haptic_vibrate(haptic_device_h device_handle, int duration, int feedback, haptic_effect_h *effect_handle)
+{
+ char str_handle[32];
+ char str_duration[32];
+ char str_feedback[32];
+ char str_priority[32];
+ char *arr[4];
+ int ret, priority;
+
+ if (!device_handle)
+ return DEVICE_ERROR_INVALID_PARAMETER;
+
+ if (duration < 0)
+ return DEVICE_ERROR_INVALID_PARAMETER;
+
+ if (feedback < HAPTIC_FEEDBACK_MIN || feedback > HAPTIC_FEEDBACK_MAX)
+ return DEVICE_ERROR_INVALID_PARAMETER;
+
+ priority = HAPTIC_PRIORITY_MIN;
+
+ snprintf(str_handle, sizeof(str_handle), "%u", (unsigned int)device_handle);
+ arr[0] = str_handle;
+ snprintf(str_duration, sizeof(str_duration), "%d", duration);
+ arr[1] = str_duration;
+ snprintf(str_feedback, sizeof(str_feedback), "%d", feedback);
+ arr[2] = str_feedback;
+ snprintf(str_priority, sizeof(str_priority), "%d", priority);
+ arr[3] = str_priority;
+
+ /* request to deviced to vibrate haptic device */
+ ret = dbus_method_sync(DEVICED_BUS_NAME,
+ DEVICED_PATH_HAPTIC, DEVICED_INTERFACE_HAPTIC,
+ METHOD_VIBRATE_MONOTONE, "uiii", arr);
+ if (ret < 0)
+ return errno_to_device_error(ret);
+
+ if (effect_handle)
+ *effect_handle = (haptic_effect_h)ret;
+
+ return DEVICE_ERROR_NONE;
+}
+
+int device_haptic_stop(haptic_device_h device_handle, haptic_effect_h effect_handle)
+{
+ char str_handle[32];
+ char *arr[1];
+ int ret;
+
+ if (!device_handle)
+ return DEVICE_ERROR_INVALID_PARAMETER;
+
+ /* TODO : support to stop haptic effect */
+ snprintf(str_handle, sizeof(str_handle), "%u", (unsigned int)device_handle);
+ arr[0] = str_handle;
+
+ /* request to deviced to open haptic device */
+ ret = dbus_method_sync(DEVICED_BUS_NAME,
+ DEVICED_PATH_HAPTIC, DEVICED_INTERFACE_HAPTIC,
+ METHOD_STOP_DEVICE, "u", arr);
+ if (ret < 0)
+ return errno_to_device_error(ret);
+
+ return DEVICE_ERROR_NONE;
+}
--- /dev/null
+/*
+ * Copyright (c) 2011 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.
+ */
+
+
+#include <stdio.h>
+#include <stdbool.h>
+#include <errno.h>
+#include <system_info.h>
+
+#include "led.h"
+#include "common.h"
+#include "dbus.h"
+
+#define METHOD_GET_MAX_BRIGHTNESS "GetMaxBrightness"
+#define METHOD_GET_BRIGHTNESS "GetBrightness"
+#define METHOD_SET_BRIGHTNESS "SetBrightness"
+#define METHOD_PLAY_CUSTOM "playcustom"
+#define METHOD_STOP_CUSTOM "stopcustom"
+
+#define FRONT_LED_FEATURE "tizen.org/feature/led"
+#define CAMERA_LED_FEATURE "tizen.org/feature/camera.back.flash"
+
+static bool support_front_led;
+static bool support_camera_led;
+
+static void __attribute__((constructor)) init(void)
+{
+ int ret;
+ bool val;
+
+ ret = system_info_get_platform_bool(FRONT_LED_FEATURE, &val);
+ if (ret == SYSTEM_INFO_ERROR_NONE && val)
+ support_front_led = true;
+
+ ret = system_info_get_platform_bool(CAMERA_LED_FEATURE, &val);
+ if (ret == SYSTEM_INFO_ERROR_NONE && val)
+ support_camera_led = true;
+}
+
+int device_flash_get_max_brightness(int *max_brightness)
+{
+ int ret;
+
+ if (!support_camera_led)
+ return DEVICE_ERROR_NOT_SUPPORTED;
+
+ if (!max_brightness)
+ return DEVICE_ERROR_INVALID_PARAMETER;
+
+ ret = dbus_method_sync(DEVICED_BUS_NAME,
+ DEVICED_PATH_LED, DEVICED_INTERFACE_LED,
+ METHOD_GET_MAX_BRIGHTNESS, NULL, NULL);
+ if (ret < 0)
+ return errno_to_device_error(ret);
+
+ *max_brightness = ret;
+ return DEVICE_ERROR_NONE;
+}
+
+int device_flash_get_brightness(int *brightness)
+{
+ int ret;
+
+ if (!support_camera_led)
+ return DEVICE_ERROR_NOT_SUPPORTED;
+
+ if (!brightness)
+ return DEVICE_ERROR_INVALID_PARAMETER;
+
+ ret = dbus_method_sync(DEVICED_BUS_NAME,
+ DEVICED_PATH_LED, DEVICED_INTERFACE_LED,
+ METHOD_GET_BRIGHTNESS, NULL, NULL);
+ if (ret < 0)
+ return errno_to_device_error(ret);
+
+ *brightness = ret;
+ return DEVICE_ERROR_NONE;
+}
+
+int device_flash_set_brightness(int brightness)
+{
+ char *arr[2];
+ char buf_val[32];
+ char buf_noti[32];
+ int max, ret;
+
+ if (!support_camera_led)
+ return DEVICE_ERROR_NOT_SUPPORTED;
+
+ ret = device_flash_get_max_brightness(&max);
+ if (ret < 0)
+ return ret;
+
+ if (brightness < 0 || brightness > max)
+ return DEVICE_ERROR_INVALID_PARAMETER;
+
+ snprintf(buf_val, sizeof(buf_val), "%d", brightness);
+ arr[0] = buf_val;
+ snprintf(buf_noti, sizeof(buf_noti), "%d", 0);
+ arr[1] = buf_noti;
+
+ ret = dbus_method_sync(DEVICED_BUS_NAME,
+ DEVICED_PATH_LED, DEVICED_INTERFACE_LED,
+ METHOD_SET_BRIGHTNESS, "ii", arr);
+ if (ret < 0)
+ return errno_to_device_error(ret);
+
+ return DEVICE_ERROR_NONE;
+}
+
+int device_led_play_custom(int on, int off, unsigned int color, unsigned int flags)
+{
+ char *arr[4];
+ char str_on[32], str_off[32];
+ char str_color[32], str_flags[32];
+ int ret;
+
+ if (!support_front_led)
+ return DEVICE_ERROR_NOT_SUPPORTED;
+
+ if (on < 0 || off < 0)
+ return DEVICE_ERROR_INVALID_PARAMETER;
+
+ snprintf(str_on, sizeof(str_on), "%d", on);
+ arr[0] = str_on;
+ snprintf(str_off, sizeof(str_off), "%d", off);
+ arr[1] = str_off;
+ snprintf(str_color, sizeof(str_color), "%lu", (long unsigned int)color);
+ arr[2] = str_color;
+ snprintf(str_flags, sizeof(str_flags), "%lu", (long unsigned int)flags);
+ arr[3] = str_flags;
+
+ ret = dbus_method_sync(DEVICED_BUS_NAME,
+ DEVICED_PATH_LED, DEVICED_INTERFACE_LED,
+ METHOD_PLAY_CUSTOM, "iiuu", arr);
+ if (ret < 0)
+ return errno_to_device_error(ret);
+
+ return DEVICE_ERROR_NONE;
+}
+
+int device_led_stop_custom(void)
+{
+ int ret;
+
+ if (!support_front_led)
+ return DEVICE_ERROR_NOT_SUPPORTED;
+
+ ret = dbus_method_sync(DEVICED_BUS_NAME,
+ DEVICED_PATH_LED, DEVICED_INTERFACE_LED,
+ METHOD_STOP_CUSTOM, NULL, NULL);
+ if (ret < 0)
+ return errno_to_device_error(ret);
+
+ return DEVICE_ERROR_NONE;
+}
--- /dev/null
+/*
+ * deviced
+ *
+ * Copyright (c) 2012 - 2013 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 __LIST_H__
+#define __LIST_H__
+
+#include <stdio.h>
+
+#define EINA_LIST_APPEND(a, b) \
+ a = eina_list_append(a, b)
+
+#define EINA_LIST_REMOVE(a, b) \
+ a = eina_list_remove(a, b)
+
+#define EINA_LIST_REMOVE_LIST(a, b) \
+ a = eina_list_remove_list(a, b)
+
+#define EINA_LIST_FREE_LIST(a) \
+ a = eina_list_free(a)
+
+#define EINA_LIST_PROMOTE_LIST(a, b) \
+ a = eina_list_promote_list(a, b)
+
+#ifdef EINA_LIST
+#include <Ecore.h>
+typedef Eina_List dd_list;
+#define DD_LIST_PREPEND(a, b) \
+ a = eina_list_prepend(a, b)
+#define DD_LIST_APPEND(a, b) \
+ a = eina_list_append(a, b)
+#define DD_LIST_REMOVE(a, b) \
+ a = eina_list_remove(a, b)
+#define DD_LIST_LENGTH(a) \
+ eina_list_count(a)
+#define DD_LIST_NTH(a, b) \
+ eina_list_nth(a, b)
+#define DD_LIST_FREE_LIST(a) \
+ a = eina_list_free(a)
+#define DD_LIST_FOREACH(head, elem, node) \
+ EINA_LIST_FOREACH(head, elem, node)
+#define DD_LIST_FOREACH_SAFE(head, elem, elem_next, node) \
+ EINA_LIST_FOREACH_SAFE(head, elem, elem_next, node)
+
+#else
+#include <glib.h>
+typedef GList dd_list;
+#define DD_LIST_PREPEND(a, b) \
+ a = g_list_prepend(a, (gpointer)b)
+#define DD_LIST_APPEND(a, b) \
+ a = g_list_append(a, (gpointer)b)
+#define DD_LIST_REMOVE(a, b) \
+ a = g_list_remove(a, (gpointer)b)
+#define DD_LIST_LENGTH(a) \
+ g_list_length(a)
+#define DD_LIST_NTH(a, b) \
+ g_list_nth_data(a, b)
+#define DD_LIST_FREE_LIST(a) \
+ g_list_free(a)
+#define DD_LIST_FOREACH(head, elem, node) \
+ for (elem = head, node = NULL; elem && ((node = elem->data) != NULL); elem = elem->next, node = NULL)
+#define DD_LIST_FOREACH_SAFE(head, elem, elem_next, node) \
+ for (elem = head, elem_next = g_list_next(elem), node = NULL; \
+ elem && ((node = elem->data) != NULL); \
+ elem = elem_next, elem_next = g_list_next(elem), node = NULL)
+
+#endif
+
+#endif
--- /dev/null
+/*
+ * Copyright (c) 2011 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.
+ */
+
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+#include "device.h"
+#include "common.h"
+
+#define PROC_MEMORY "/proc/meminfo"
+
+enum {
+ _MI_TOTAL,
+ _MI_FREE,
+ _MI_BUF,
+ _MI_CACHED,
+ _MI_SWAP,
+ _MI_SHMEM,
+ _MI_MAX,
+};
+
+struct meminfo {
+ unsigned long l[_MI_MAX];
+};
+
+static const char *_mi_str[] = {
+ [_MI_TOTAL] = "MemTotal",
+ [_MI_FREE] = "MemFree",
+ [_MI_BUF] = "Buffers",
+ [_MI_CACHED] = "Cached",
+ [_MI_SWAP] = "SwapCached",
+ [_MI_SHMEM] = "Shmem",
+};
+
+static inline int _get_idx(const char *name)
+{
+ int i;
+
+ for (i = 0; i < sizeof(_mi_str)/sizeof(_mi_str[0]); ++i) {
+ if (name && _mi_str[i] && !strcmp(name, _mi_str[i]))
+ return i;
+ }
+
+ return -1;
+}
+
+static int _get_meminfo(struct meminfo *mi)
+{
+ FILE *fp;
+ char buf[4096];
+ char *s, *name, *num;
+ int idx;
+
+ assert(mi);
+
+ fp = fopen(PROC_MEMORY, "r");
+ if (!fp)
+ return -1;
+
+ memset(mi, 0, sizeof(*mi));
+
+ while (!feof(fp)) {
+ s = fgets(buf, sizeof(buf), fp);
+ if (!s)
+ break;
+
+ s = strchr(buf, ':');
+ if (!s)
+ continue;
+
+ *s = '\0';
+ name = buf;
+
+ s++;
+ while (*s == ' ')
+ s++;
+ num = s;
+
+ idx = _get_idx(name);
+ if (idx < 0)
+ continue;
+
+ mi->l[idx] = strtol(num, NULL, 10);
+ }
+
+ fclose(fp);
+ return 0;
+}
+
+int device_memory_get_total(unsigned int *total_mem)
+{
+ struct meminfo mi;
+ int ret;
+
+ if (total_mem == NULL)
+ return DEVICE_ERROR_INVALID_PARAMETER;
+
+ ret = _get_meminfo(&mi);
+ if (ret < 0)
+ return DEVICE_ERROR_OPERATION_FAILED;
+
+ *total_mem = mi.l[_MI_TOTAL];
+ return DEVICE_ERROR_NONE;
+}
+
+int device_memory_get_available(unsigned int *avail_mem)
+{
+ struct meminfo mi;
+ int ret;
+
+ if (avail_mem == NULL)
+ return DEVICE_ERROR_INVALID_PARAMETER;
+
+ ret = _get_meminfo(&mi);
+ if (ret < 0)
+ return DEVICE_ERROR_OPERATION_FAILED;
+
+ *avail_mem = mi.l[_MI_FREE] + mi.l[_MI_BUF] + mi.l[_MI_CACHED] + mi.l[_MI_SWAP] - mi.l[_MI_SHMEM];
+ return DEVICE_ERROR_NONE;
+}
--- /dev/null
+/*
+ * Copyright (c) 2011 - 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.
+ */
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdbool.h>
+#include <errno.h>
+
+#include "power.h"
+#include "display.h"
+#include "common.h"
+#include "dbus.h"
+
+/**
+ * Parameters for device_power_request_lock()
+ */
+#define STAY_CUR_STATE 0x1
+#define GOTO_STATE_NOW 0x2
+#define HOLD_KEY_BLOCK 0x4
+#define STANDBY_MODE 0x8
+
+/**
+ * Parameters for device_power_request_unlock()
+ */
+#define PM_SLEEP_MARGIN 0x0 /**< keep guard time for unlock */
+#define PM_RESET_TIMER 0x1 /**< reset timer for unlock */
+#define PM_KEEP_TIMER 0x2 /**< keep timer for unlock */
+
+#define METHOD_LOCK_STATE "lockstate"
+#define METHOD_UNLOCK_STATE "unlockstate"
+#define METHOD_CHANGE_STATE "changestate"
+#define METHOD_REBOOT "Reboot"
+
+#define STR_STAYCURSTATE "staycurstate"
+#define STR_GOTOSTATENOW "gotostatenow"
+
+#define STR_HOLDKEYBLOCK "holdkeyblock"
+#define STR_STANDBYMODE "standbymode"
+#define STR_NULL "NULL"
+
+#define STR_SLEEP_MARGIN "sleepmargin"
+#define STR_RESET_TIMER "resettimer"
+#define STR_KEEP_TIMER "keeptimer"
+
+#define STR_LCD_OFF "lcdoff"
+#define STR_LCD_DIM "lcddim"
+#define STR_LCD_ON "lcdon"
+
+static char *get_state_str(display_state_e state)
+{
+ switch (state) {
+ case DISPLAY_STATE_NORMAL:
+ return STR_LCD_ON;
+ case DISPLAY_STATE_SCREEN_DIM:
+ return STR_LCD_DIM;
+ case DISPLAY_STATE_SCREEN_OFF:
+ return STR_LCD_OFF;
+ default:
+ break;
+ }
+ return NULL;
+}
+
+static void lock_cb(void *data, DBusMessage *msg, DBusError *unused)
+{
+ DBusError err;
+ int ret, val;
+
+ if (!msg)
+ return;
+
+ dbus_error_init(&err);
+ ret = dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &val, DBUS_TYPE_INVALID);
+ if (!ret) {
+ _E("no message [%s:%s]", err.name, err.message);
+ dbus_error_free(&err);
+ return;
+ }
+
+ _D("%s-%s : %d", DEVICED_INTERFACE_DISPLAY, METHOD_LOCK_STATE, val);
+}
+
+static int lock_state(display_state_e state, unsigned int flag, int timeout_ms)
+{
+ char *arr[4];
+ char str_timeout[32];
+
+ arr[0] = get_state_str(state);
+ if (!arr[0])
+ return -EINVAL;
+
+ if (flag & GOTO_STATE_NOW)
+ arr[1] = STR_GOTOSTATENOW;
+ else
+ arr[1] = STR_STAYCURSTATE;
+
+ if (flag & HOLD_KEY_BLOCK)
+ arr[2] = STR_HOLDKEYBLOCK;
+ else if (flag & STANDBY_MODE)
+ arr[2] = STR_STANDBYMODE;
+ else
+ arr[2] = STR_NULL;
+
+ snprintf(str_timeout, sizeof(str_timeout), "%d", timeout_ms);
+ arr[3] = str_timeout;
+
+ return dbus_method_async_with_reply(DEVICED_BUS_NAME,
+ DEVICED_PATH_DISPLAY, DEVICED_INTERFACE_DISPLAY,
+ METHOD_LOCK_STATE, "sssi", arr, lock_cb, -1, NULL);
+}
+
+static void unlock_cb(void *data, DBusMessage *msg, DBusError *unused)
+{
+ DBusError err;
+ int ret, val;
+
+ if (!msg)
+ return;
+
+ dbus_error_init(&err);
+ ret = dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &val, DBUS_TYPE_INVALID);
+ if (!ret) {
+ _E("no message [%s:%s]", err.name, err.message);
+ dbus_error_free(&err);
+ return;
+ }
+
+ _D("%s-%s : %d", DEVICED_INTERFACE_DISPLAY, METHOD_UNLOCK_STATE, val);
+}
+
+static int unlock_state(display_state_e state, unsigned int flag)
+{
+ char *arr[2];
+
+ arr[0] = get_state_str(state);
+ if (!arr[0])
+ return -EINVAL;
+
+ if (flag == PM_SLEEP_MARGIN)
+ arr[1] = STR_SLEEP_MARGIN;
+ else if (flag == PM_RESET_TIMER)
+ arr[1] = STR_RESET_TIMER;
+ else if (flag == PM_KEEP_TIMER)
+ arr[1] = STR_KEEP_TIMER;
+ else
+ return -EINVAL;
+
+ return dbus_method_async_with_reply(DEVICED_BUS_NAME,
+ DEVICED_PATH_DISPLAY, DEVICED_INTERFACE_DISPLAY,
+ METHOD_UNLOCK_STATE, "ss", arr, unlock_cb, -1, NULL);
+}
+
+int device_power_request_lock(power_lock_e type, int timeout_ms)
+{
+ int ret;
+
+ if (timeout_ms < 0)
+ return DEVICE_ERROR_INVALID_PARAMETER;
+
+ if (type == POWER_LOCK_CPU)
+ ret = lock_state(DISPLAY_STATE_SCREEN_OFF, STAY_CUR_STATE, timeout_ms);
+ else if (type == POWER_LOCK_DISPLAY)
+ ret = lock_state(DISPLAY_STATE_NORMAL, STAY_CUR_STATE, timeout_ms);
+ else if (type == POWER_LOCK_DISPLAY_DIM)
+ ret = lock_state(DISPLAY_STATE_SCREEN_DIM, STAY_CUR_STATE, timeout_ms);
+ else
+ return DEVICE_ERROR_INVALID_PARAMETER;
+
+ if (ret == -ECOMM)
+ return DEVICE_ERROR_PERMISSION_DENIED;
+ else if (ret < 0)
+ return DEVICE_ERROR_OPERATION_FAILED;
+
+ return DEVICE_ERROR_NONE;
+}
+
+int device_power_release_lock(power_lock_e type)
+{
+ int ret;
+
+ if (type == POWER_LOCK_CPU)
+ ret = unlock_state(DISPLAY_STATE_SCREEN_OFF, PM_SLEEP_MARGIN);
+ else if (type == POWER_LOCK_DISPLAY)
+ ret = unlock_state(DISPLAY_STATE_NORMAL, PM_KEEP_TIMER);
+ else if (type == POWER_LOCK_DISPLAY_DIM)
+ ret = unlock_state(DISPLAY_STATE_SCREEN_DIM, PM_KEEP_TIMER);
+ else
+ return DEVICE_ERROR_INVALID_PARAMETER;
+
+ if (ret == -ECOMM)
+ return DEVICE_ERROR_PERMISSION_DENIED;
+ else if (ret < 0)
+ return DEVICE_ERROR_OPERATION_FAILED;
+
+ return DEVICE_ERROR_NONE;
+}
+
+int device_power_wakeup(bool dim)
+{
+ if (dim)
+ return device_display_change_state(DISPLAY_STATE_SCREEN_DIM);
+
+ return device_display_change_state(DISPLAY_STATE_NORMAL);
+}
+
+int device_power_reboot(const char *reason)
+{
+ char *arr[1];
+ int ret;
+
+ if (!reason)
+ return DEVICE_ERROR_INVALID_PARAMETER;
+
+ arr[0] = (char *)reason;
+ ret = dbus_method_sync(DEVICED_BUS_NAME,
+ DEVICED_PATH_POWER,
+ DEVICED_INTERFACE_POWER,
+ METHOD_REBOOT, "s", arr);
+ return errno_to_device_error(ret);
+}