|
Name |
|
Date |
Size |
#Lines |
LOC |
| .. | | - | - |
| asio/ | | 22-Nov-2023 | - | 176 | 127 |
| bindings/ | | 22-Nov-2023 | - | 1,550 | 924 |
| cmake/ | | 22-Nov-2023 | - | 57 | 50 |
| cpack/ | | 22-Nov-2023 | - | 58 | 50 |
| ctest/ | | 22-Nov-2023 | - | 117 | 102 |
| doc/ | | 22-Nov-2023 | - | 3,919 | 3,003 |
| parameter/ | | 22-Nov-2023 | - | 26,624 | 12,814 |
| remote-process/ | | 22-Nov-2023 | - | 193 | 113 |
| remote-processor/ | | 22-Nov-2023 | - | 1,658 | 754 |
| schemas/ | | 22-Nov-2023 | - | 904 | 756 |
| skeleton-subsystem/ | | 22-Nov-2023 | - | 561 | 267 |
| support/windows/ | | 22-Nov-2023 | - | 76 | 73 |
| test/ | | 22-Nov-2023 | - | 21,604 | 16,064 |
| tools/ | | 22-Nov-2023 | - | 6,563 | 4,111 |
| utility/ | | 22-Nov-2023 | - | 1,545 | 658 |
| xmlserializer/ | | 22-Nov-2023 | - | 1,717 | 706 |
| .clang-format | D | 22-Nov-2023 | 3.2 KiB | 95 | 76 |
| .gitattributes | D | 22-Nov-2023 | 76 | 4 | 3 |
| .gitignore | D | 22-Nov-2023 | 43 | 7 | 6 |
| .travis.yml | D | 22-Nov-2023 | 4 KiB | 115 | 89 |
| .version | D | 22-Nov-2023 | 12 | 2 | 1 |
| CMakeLists.txt | D | 22-Nov-2023 | 5.3 KiB | 129 | 105 |
| COPYING.txt | D | 22-Nov-2023 | 1.6 KiB | 31 | 24 |
| README.md | D | 22-Nov-2023 | 6.7 KiB | 166 | 117 |
| SetVersion.cmake | D | 22-Nov-2023 | 3.4 KiB | 79 | 72 |
| appveyor.yml | D | 22-Nov-2023 | 4.7 KiB | 98 | 56 |
README.md
1# parameter-framework
2
3[![Build Status](https://travis-ci.org/01org/parameter-framework.svg?branch=master)](https://travis-ci.org/01org/parameter-framework)
4[![Windows Build Status](https://ci.appveyor.com/api/projects/status/ga24jp8tet0qimbu/branch/master)](https://ci.appveyor.com/project/parameter-framework/parameter-framework)
5[![Coverage Status](https://codecov.io/github/01org/parameter-framework/coverage.svg?branch=master)](https://codecov.io/github/01org/parameter-framework?branch=master)
6
7## Introduction
8
9The parameter-framework is a plugin-based and rule-based framework for handling
10parameters. This means that you can:
11
121. Describe your system's structure and its parameters (in XML) - aka. **What**;
132. Write (in C++) or reuse a backend (aka. plugin) for accessing the parameters
14that you just described - aka. **How**;
153. Define (in XML or in a domain-specific-language) conditions/rules upon which
16a given parameter must take a given value - aka. **When**.
17
18![What, How, When](https://01org.github.io/parameter-framework/hosting/what-how-when.png)
19
20### Usage examples
21
22#### Alsa controls on embedded platforms
23
24The parameter-framework can be used to set the value of alsa controls
25(switches, volumes, etc.) on smartphones/tablets based on parameter-framework
26rules (in this example, they transcribe use-cases). For accessing parameters
27(i.e. alsa controls), you may use the
28[alsa plugin](https://github.com/01org/parameter-framework-plugins-alsa).
29
30#### Parameters in files
31
32The [filesystem plugin](https://github.com/01org/parameter-framework-plugins-filesystem)
33can be used to write parameters in files. This is particularly useful for
34files in `/sys` managing GPIOs.
35
36### More details
37
38The parameter-framework's core comes in the form of a shared library. Its
39client has to provide:
40
41- configuration files describing the structure of the system to be managed by
42 the parameter-framework and what plugins it must use to read/write into each
43 subsystem;
44- a list of criteria (representing the state of the client) and their possible
45 values;
46- configuration files describing the value that each part of the system (aka
47 parameter) must take - this is done by writing rules based on the criteria
48 described above.
49
50At runtime, the most usual communication between the client and the
51parameter-framework are:
52
531. The update of *criteria* (that are used in the rules introduced above) and
542. Update all relevant parameters according to the new criteria values. The
55 parameter-framework uses the appropriate backend for writing the values in
56 each underlying subsystem.
57
58The parameter-framework comes with several tools, including a command-line
59interface: `remote-process`.
60
61## Going further
62
63See [the wiki on github](https://github.com/01org/parameter-framework/wiki).
64
65## Compiling
66
67**You may take a look at `.travis.yml` and `appveyor.yml` for examples on how we
68build the Parameter Framework in the CI.** It will probably help if you have
69troubles building the Parameter Framework even after reading the following
70sections:
71
72### Dependencies
73
74In order to compile you'll need, at the very least:
75
76- CMake (v3.2.2 or later) (v3.3.0 or later on Windows);
77- A C/C++ compiler supporting C++11;
78- libxml2 headers and libraries (Provided by the `libxml2-dev` on debian-based
79distributions);
80
81If you want to use the remote command interface (`NETWORKING=ON` by default),
82you'll also need:
83
84- Standalone ASIO (1.10.6 or later) (Provided by `libasio-dev` on debian-based
85distributions) ASIO is C++ header-only ASynchronous-IO library.
86
87If you want to compile the *Python bindings* (`PYTHON_BINDINGS=ON` by default),
88you'll also need:
89
90- SWIG 2.0 (A binding generator);
91- Python2.7 development environment (Provided by `python2.7-dev` on debian-based
92distributions)
93
94If you want to *compile and run the tests* (`BUILD_TESTING=ON` by default),
95you'll also need:
96
97- Catch (Provided by `catch` on debian-based distributions). Catch is a
98single-header test framework - as such you may also download it directly
99[here](https://raw.githubusercontent.com/philsquared/Catch/master/single_include/catch.hpp);
100- Python2.7 (Provided by `python2.7` on debian-based distribution - it is
101preinstalled on most distributions).
102
103If you want to *build the code documentation* (`DOXYGEN=OFF` by default), you'll
104need `doxygen` and `graphviz`. This doc is already available to you - see the
105wiki.
106
107**To list all available configuration options, try** `cmake -L` (you may also
108filter-out lines starting with `CMAKE_`).
109
110### How-To
111
112If you are already familiar with CMake, you know what to do.
113
114Run `cmake .` then `make`. You may then install libraries, headers and
115binaries with `make install`. By default, they are installed under
116`/usr/local` on unix OSes; if you want to install them under a custom
117directory, you may do so by passing it to the `cmake .` command; e.g.
118
119 # Always use absolute paths in CMake "-D" options: you don't know where
120 # relative paths will be evaluated from.
121 cmake -DCMAKE_INSTALL_PREFIX=/path/to/custom/install .
122
123If you want to provide your own dependencies (e.g. your own version of
124libxml2), you should pass the base paths as the `CMAKE_PREFIX_PATH` variable,
125e.g.:
126
127 cmake -DCMAKE_PREFIX_PATH='/path/to/dependency1/;/path/to/dependency2/'
128
129For more information on how to use `CMAKE_PREFIX_PATH`, see CMake's
130documentation.
131
132Also, CMake can build a project out-of-tree, which is the recommended method:
133
134 mkdir /path/to/build/directory
135 cd /path/to/build/directory
136 cmake /path/to/sources/of/parameter-framework
137 make
138
139After a build you may want to run the parameter-framework tests with
140`make test` or `ctest`.
141
142### Compiling on Windows
143
144The only supported compiler on Windows in Visual Studio 14 2015. The 2013
145version does not support some C++11 features. When running CMake's
146configuration step (the first call to CMake) you must specify the build system
147you want to use, i.e. `-G Visual Studio 14 2015 Win64`. Again, you may refer to
148`appveyor.yml`.
149
150If you don't already have libxml2 headers/libraries and don't want to build them
151by yourself, we have a precompiled version for x86-64. *These are provided for
152reference and as a convenience for development purpose only; when making a
153final product, you should recompile the latest libxml2 release yourself.*
154
155Compiled with Visual Studio 12 2013:
156- [in debug configuration](https://01.org/sites/default/files/libxml2-x86_64-debug-3eaedba1b64180668fdab7ad2eba549586017bf3.zip)
157- [in release configuration](https://01.org/sites/default/files/libxml2-x86_64-3eaedba1b64180668fdab7ad2eba549586017bf3.zip)
158
159We have mirrored ASIO 1.10.6 [here](https://01.org/sites/default/files/asio-1.10.6.tar.gz).
160
161Once you have downloaded and uncompressed these two dependencies, add the
162following two entries to `CMAKE_PREFIX_PATH`:
163
164 /path/to/libxml2-x86_64/
165 /path/to/asio-1.10.6/
166