Merge lp:~thomas-voss/platform-api/introduce-hardware-subdirectory-and-package into lp:platform-api

Proposed by Thomas Voß
Status: Superseded
Proposed branch: lp:~thomas-voss/platform-api/introduce-hardware-subdirectory-and-package
Merge into: lp:platform-api
Diff against target: 3989 lines (+2692/-520) (has conflicts)
30 files modified
CMakeLists.txt (+40/-5)
android/hybris/Android.mk (+0/-7)
android/hybris/ubuntu_application_gps_for_hybris.cpp (+50/-50)
android/include/private/ui/config.h (+0/-24)
android/include/private/ui/session_enumerator.h (+0/-6)
data/CMakeLists.txt (+8/-0)
data/ubuntu-platform-api.pc.in (+9/-0)
debian/control (+2/-0)
debian/libplatform-api-headers.install (+1/-1)
debian/libplatform-api1-dev.install (+1/-0)
doc/CMakeLists.txt (+30/-0)
doc/Doxyfile.in (+1869/-0)
include/CMakeLists.txt (+1/-4)
include/config.h.in (+0/-24)
include/ubuntu/CMakeLists.txt (+2/-0)
include/ubuntu/application/CMakeLists.txt (+19/-0)
include/ubuntu/application/sensors/CMakeLists.txt (+14/-0)
include/ubuntu/application/sensors/event/CMakeLists.txt (+11/-0)
include/ubuntu/application/ui/CMakeLists.txt (+25/-0)
include/ubuntu/application/ui/config.h.in (+27/-0)
include/ubuntu/application/ui/input/CMakeLists.txt (+9/-0)
include/ubuntu/hardware/gps.h (+226/-174)
include/ubuntu/ui/CMakeLists.txt (+4/-0)
include/ubuntu/ui/ubuntu_ui_session_service.h (+1/-16)
src/android/CMakeLists.txt (+43/-20)
src/android/bridge.h (+182/-0)
src/android/tests/CMakeLists.txt (+1/-1)
src/android/tests/test_gps_api.cpp (+35/-32)
src/android/ubuntu_application_api.cpp (+4/-156)
src/android/ubuntu_platform_hardware_api.cpp (+78/-0)
Text conflict in src/android/ubuntu_application_api.cpp
To merge this branch: bzr merge lp:~thomas-voss/platform-api/introduce-hardware-subdirectory-and-package
Reviewer Review Type Date Requested Status
Ubuntu Phablet Team Pending
Review via email: mp+169456@code.launchpad.net

This proposal has been superseded by a proposal from 2013-06-14.

Commit message

 * Adjust message signatures.
 * Fix android implementation to account for new structure.
 * Refactored bridge and implementation macros into its own header file.
 * Split out hardware-specifics into its own implementation file.
 * Introduce a subdirectory for the hardware abstraction layer.
 * Adjust doxygen to optimize for C output.

Description of the change

 * Adjust message signatures.
 * Fix android implementation to account for new structure.
 * Refactored bridge and implementation macros into its own header file.
 * Split out hardware-specifics into its own implementation file.
 * Introduce a subdirectory for the hardware abstraction layer.
 * Adjust doxygen to optimize for C output.

To post a comment you must log in.
73. By Thomas Voß

[ Gerry Boland ]
* Add mir suport.
[ Robert Carr ]
* Add mir suport.
[ Ubuntu daily release ]
* Automatic snapshot from revision 69
[ Ricardo Mendoza ]
* Allow remote App Manager to take care of signalling processes.
[ Ubuntu daily release ]
* Automatic snapshot from revision 67

74. By Thomas Voß

Revert accidently changed option for building with hybris.

75. By Thomas Voß

 * Remove installation directive for obsolete ubuntu_application_gps.

76. By Thomas Voß

Make sure the hardware api is picked up by the debian package.

77. By Thomas Voß

Add missing copyright header.

78. By Thomas Voß

 * Adjust installation of so's.

79. By Thomas Voß

[ Didier Roche ]
* minor cosmetic cleanups as we detect the archs we can't build for in
  daily release now.
[ Ubuntu daily release ]
* Automatic snapshot from revision 77
[ Ricardo Mendoza ]
* GCC 4.8 introduces a change for ARM AAPCS calling conventions, this
  breaks ABI for us because the Android library is built with GCC 4.7.
  Revert to building platform-api with GCC 4.7 until we can update the
  Android build. .
[ Ubuntu daily release ]
* Automatic snapshot from revision 75
[ Robert Carr ]
* Add missing mir stub (ua_ui_session_properties_set_remote_pid).
[ Ubuntu daily release ]
* Automatic snapshot from revision 73
[ Ubuntu daily release ]
* debian/*symbols: auto-update new symbols to released version
[ Didier Roche ]
* Add a symbol files with unmangled C++ symbols to track ABI.
[ Dmitrijs Ledkovs ]
* Add a symbol files with unmangled C++ symbols to track ABI.
[ Ubuntu daily release ]
* Automatic snapshot from revision 71

80. By Thomas Voß

* Split out hal to ease integration of location service.
[ Ricardo Mendoza ]
* Stop the app manager from suspending the shell if there is no valid
  active main stage application running. (LP: #1196696)
[ Ubuntu daily release ]
* Automatic snapshot from revision 81
[ Ricardo Mendoza ]
* Add guards for NULL sensors.
[ Ubuntu daily release ]
* Automatic snapshot from revision 79

81. By Thomas Voß

 * Updated the symbols file.

82. By Thomas Voß

Adjust symbol versions to account for daily release.

83. By Thomas Voß

[ Thomas Voß ]
* * Adjust the cmake setup and get rid of -DUSE_GLES, instead rely on
  automatic detection if the header is available. * Adjust the cmake
  setup to bail out if EGL is not available. * Adjust the cmake setup
  to autogenerate doxygen API documentation.
* * Add a pkgconfig file for the platform API * Adjust installation of
  header files to account for version.
[ Ubuntu daily release ]
* Automatic snapshot from revision 84

84. By Thomas Voß

 * Demangled a C++ symbol.

85. By Thomas Voß

Split out hal to ease integration of location service.

86. By Thomas Voß

Add missing build dependency.

87. By Thomas Voß

 * Adjust changelog and note down deps that are broken.

88. By Thomas Voß

Fix indentation.

89. By Thomas Voß

Only include symlinks.

90. By Thomas Voß

Remove Breaks: again.

Unmerged revisions

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'CMakeLists.txt'
2--- CMakeLists.txt 2013-05-21 21:54:07 +0000
3+++ CMakeLists.txt 2013-06-14 14:53:26 +0000
4@@ -1,16 +1,51 @@
5 cmake_minimum_required(VERSION 2.6)
6
7-project(ubuntu_platform_api)
8-
9-set(BIN_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/bin)
10-set(LIB_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/lib/${CMAKE_LIBRARY_ARCHITECTURE})
11+project(ubuntu-platform-api)
12+
13+set(UBUNTU_PLATFORM_API_VERSION_MAJOR 0)
14+set(UBUNTU_PLATFORM_API_VERSION_MINOR 0)
15+set(UBUNTU_PLATFORM_API_VERSION_PATCH 1)
16+
17+set(BIN_INSTALL_DIR bin)
18+set(LIB_INSTALL_DIR lib/${CMAKE_LIBRARY_ARCHITECTURE})
19
20 set(INSTALL_TARGETS_DEFAULT_ARGS RUNTIME DESTINATION "${BIN_INSTALL_DIR}"
21 LIBRARY DESTINATION "${LIB_INSTALL_DIR}"
22 ARCHIVE DESTINATION "${LIB_INSTALL_DIR}")
23
24+#### Detect if we have got gles2, and fall back to plain gl if not ####
25+set(UBUNTU_PLATFORM_API_HAVE_GLES2 0)
26+
27+find_path(
28+ GLES2_INCLUDE_PATH
29+ gles2/gl2.h
30+)
31+
32+if (GLES2_INCLUDE_PATH)
33+ message(STATUS "GLES2 found in ${GLES2_INCLUDE_PATH}")
34+ set(UBUNTU_PLATFORM_API_HAVE_GLES2 1)
35+else (GLES2_INCLUDE_PATH)
36+ message(STATUS "GLES2 not found, falling back to plain GL")
37+endif (GLES2_INCLUDE_PATH)
38+#### Detect if we have got gles2, and fall back to plain gl if not ####
39+
40+#### Detect if we have EGL/egl.h, and bail out if not ####
41+find_path(
42+ EGL_INCLUDE_PATH
43+ EGL/egl.h
44+)
45+
46+if (NOT EGL_INCLUDE_PATH)
47+ message(ERROR EGL not found)
48+else (NOT EGL_INCLUDE_PATH)
49+ message(STATUS "EGL found in ${EGL_INCLUDE_PATH}")
50+endif (NOT EGL_INCLUDE_PATH)
51+#### Detect if we have EGL/egl.h, and bail out if not ####
52+
53 include_directories(include)
54 include_directories(android/include)
55
56+add_subdirectory(data/)
57+add_subdirectory(doc/)
58+add_subdirectory(include/)
59 add_subdirectory(src/)
60-add_subdirectory(include/)
61
62=== modified file 'android/hybris/Android.mk'
63--- android/hybris/Android.mk 2013-05-27 22:04:07 +0000
64+++ android/hybris/Android.mk 2013-06-14 14:53:26 +0000
65@@ -5,13 +5,6 @@
66
67 LOCAL_CFLAGS += -std=gnu++0x
68
69-CONFIG_H := $(UPAPI_PATH)/include/ubuntu/ui/config.h
70-$(CONFIG_H):
71- echo "Generating config.h"
72- sed $(UPAPI_PATH)/include/config.h.in -e 's/@USE_GLES@/1/g' > $@
73-
74-LOCAL_GENERATED_SOURCES := $(CONFIG_H)
75-
76 LOCAL_C_INCLUDES := \
77 $(UPAPI_PATH)/include \
78 $(UPAPI_PATH)/android/include
79
80=== modified file 'android/hybris/ubuntu_application_gps_for_hybris.cpp'
81--- android/hybris/ubuntu_application_gps_for_hybris.cpp 2013-02-05 07:46:29 +0000
82+++ android/hybris/ubuntu_application_gps_for_hybris.cpp 2013-06-14 14:53:26 +0000
83@@ -15,7 +15,7 @@
84 *
85 * Authored by: Daniel d'Andrada <daniel.dandrada@canonical.com>
86 */
87-#include <ubuntu/application/ubuntu_application_gps.h>
88+#include <ubuntu/hardware/gps.h>
89
90 #include <pthread.h>
91
92@@ -23,12 +23,12 @@
93 #include <hardware/gps.h>
94 #include <hardware_legacy/power.h>
95
96-#define WAKE_LOCK_NAME "UBUNTU_GPS"
97+#define WAKE_LOCK_NAME "U_HARDWARE_GPS"
98
99-struct UbuntuGps_
100+struct UHardwareGps_
101 {
102- UbuntuGps_(UbuntuGpsParams* params);
103- ~UbuntuGps_();
104+ UHardwareGps_(UHardwareGpsParams* params);
105+ ~UHardwareGps_();
106
107 bool init();
108
109@@ -48,28 +48,28 @@
110 const GpsDebugInterface* gps_debug_interface;
111 const AGpsRilInterface* agps_ril_interface;
112
113- UbuntuGpsLocationCallback location_cb;
114- UbuntuGpsStatusCallback status_cb;
115- UbuntuGpsSvStatusCallback sv_status_cb;
116- UbuntuGpsNmeaCallback nmea_cb;
117- UbuntuGpsSetCapabilities set_capabilities_cb;
118- UbuntuGpsRequestUtcTime request_utc_time_cb;
119-
120- UbuntuGpsXtraDownloadRequest xtra_download_request_cb;
121-
122- UbuntuAgpsStatusCallback agps_status_cb;
123-
124- UbuntuGpsNiNotifyCallback gps_ni_notify_cb;
125-
126- UbuntuAgpsRilRequestSetId request_setid_cb;
127- UbuntuAgpsRilRequestRefLoc request_refloc_cb;
128+ UHardwareGpsLocationCallback location_cb;
129+ UHardwareGpsStatusCallback status_cb;
130+ UHardwareGpsSvStatusCallback sv_status_cb;
131+ UHardwareGpsNmeaCallback nmea_cb;
132+ UHardwareGpsSetCapabilities set_capabilities_cb;
133+ UHardwareGpsRequestUtcTime request_utc_time_cb;
134+
135+ UHardwareGpsXtraDownloadRequest xtra_download_request_cb;
136+
137+ UHardwareGpsAGpsStatusCallback agps_status_cb;
138+
139+ UHardwareGpsNiNotifyCallback gps_ni_notify_cb;
140+
141+ UHardwareGpsAGpsRilRequestSetId request_setid_cb;
142+ UHardwareGpsAGpsRilRequestRefLoc request_refloc_cb;
143
144 void* context;
145 };
146
147 namespace
148 {
149-UbuntuGps hybris_gps_instance = NULL;
150+UHardwareGps hybris_gps_instance = NULL;
151 }
152
153 static void location_callback(GpsLocation* location)
154@@ -78,7 +78,7 @@
155 return;
156
157 hybris_gps_instance->location_cb(
158- reinterpret_cast<UbuntuGpsLocation*>(location),
159+ reinterpret_cast<UHardwareGpsLocation*>(location),
160 hybris_gps_instance->context);
161 }
162
163@@ -96,7 +96,7 @@
164 return;
165
166 hybris_gps_instance->sv_status_cb(
167- reinterpret_cast<UbuntuGpsSvStatus*>(sv_status),
168+ reinterpret_cast<UHardwareGpsSvStatus*>(sv_status),
169 hybris_gps_instance->context);
170 }
171
172@@ -202,7 +202,7 @@
173 */
174
175 hybris_gps_instance->agps_status_cb(
176- reinterpret_cast<UbuntuAgpsStatus*>(agps_status), hybris_gps_instance->context);
177+ reinterpret_cast<UHardwareGpsAGpsStatus*>(agps_status), hybris_gps_instance->context);
178 }
179
180 AGpsCallbacks agps_callbacks =
181@@ -215,7 +215,7 @@
182 {
183 if (hybris_gps_instance)
184 hybris_gps_instance->gps_ni_notify_cb(
185- reinterpret_cast<UbuntuGpsNiNotification*>(notification),
186+ reinterpret_cast<UHardwareGpsNiNotification*>(notification),
187 hybris_gps_instance->context);
188 }
189
190@@ -245,7 +245,7 @@
191 };
192
193
194-UbuntuGps_::UbuntuGps_(UbuntuGpsParams* params)
195+UHardwareGps_::UHardwareGps_(UHardwareGpsParams* params)
196 : gps_interface(NULL),
197 gps_xtra_interface(NULL),
198 agps_interface(NULL),
199@@ -294,13 +294,13 @@
200 }
201 }
202
203-UbuntuGps_::~UbuntuGps_()
204+UHardwareGps_::~UHardwareGps_()
205 {
206 if (gps_interface)
207 gps_interface->cleanup();
208 }
209
210-bool UbuntuGps_::init()
211+bool UHardwareGps_::init()
212 {
213 // fail if the main interface fails to initialize
214 if (!gps_interface || gps_interface->init(&gps_callbacks) != 0)
215@@ -320,7 +320,7 @@
216 return true;
217 }
218
219-bool UbuntuGps_::start()
220+bool UHardwareGps_::start()
221 {
222 if (gps_interface)
223 return (gps_interface->start() == 0);
224@@ -328,7 +328,7 @@
225 return false;
226 }
227
228-bool UbuntuGps_::stop()
229+bool UHardwareGps_::stop()
230 {
231 if (gps_interface)
232 return (gps_interface->stop() == 0);
233@@ -336,25 +336,25 @@
234 return false;
235 }
236
237-void UbuntuGps_::inject_time(int64_t time, int64_t time_reference, int uncertainty)
238+void UHardwareGps_::inject_time(int64_t time, int64_t time_reference, int uncertainty)
239 {
240 if (gps_interface)
241 gps_interface->inject_time(time, time_reference, uncertainty);
242 }
243
244-void UbuntuGps_::inject_location(double latitude, double longitude, float accuracy)
245+void UHardwareGps_::inject_location(double latitude, double longitude, float accuracy)
246 {
247 if (gps_interface)
248 gps_interface->inject_location(latitude, longitude, accuracy);
249 }
250
251-void UbuntuGps_::delete_aiding_data(uint16_t flags)
252+void UHardwareGps_::delete_aiding_data(uint16_t flags)
253 {
254 if (gps_interface)
255 gps_interface->delete_aiding_data(flags);
256 }
257
258-bool UbuntuGps_::set_position_mode(uint32_t mode, uint32_t recurrence, uint32_t min_interval,
259+bool UHardwareGps_::set_position_mode(uint32_t mode, uint32_t recurrence, uint32_t min_interval,
260 uint32_t preferred_accuracy, uint32_t preferred_time)
261 {
262 if (gps_interface)
263@@ -364,7 +364,7 @@
264 return false;
265 }
266
267-void UbuntuGps_::inject_xtra_data(char* data, int length)
268+void UHardwareGps_::inject_xtra_data(char* data, int length)
269 {
270 if (gps_xtra_interface)
271 gps_xtra_interface->inject_xtra_data(data, length);
272@@ -373,58 +373,58 @@
273 /////////////////////////////////////////////////////////////////////
274 // Implementation of the C API
275
276-UbuntuGps ubuntu_gps_new(UbuntuGpsParams* params)
277+UHardwareGps u_hardware_gps_new(UHardwareGpsParams* params)
278 {
279 if (hybris_gps_instance != NULL)
280 return NULL;
281
282- UbuntuGps ubuntu_gps = new UbuntuGps_(params);
283- hybris_gps_instance = ubuntu_gps;
284+ UHardwareGps u_hardware_gps = new UHardwareGps_(params);
285+ hybris_gps_instance = u_hardware_gps;
286
287- if (!ubuntu_gps->init())
288+ if (!u_hardware_gps->init())
289 {
290- delete ubuntu_gps;
291- ubuntu_gps = NULL;
292+ delete u_hardware_gps;
293+ u_hardware_gps = NULL;
294 }
295
296- return ubuntu_gps;
297+ return u_hardware_gps;
298 }
299
300-void ubuntu_gps_delete(UbuntuGps handle)
301+void u_hardware_gps_delete(UHardwareGps handle)
302 {
303 delete handle;
304 if (handle == hybris_gps_instance)
305 hybris_gps_instance = NULL;
306 }
307
308-bool ubuntu_gps_start(UbuntuGps self)
309+bool u_hardware_gps_start(UHardwareGps self)
310 {
311 return self->start();
312 }
313
314-bool ubuntu_gps_stop(UbuntuGps self)
315+bool u_hardware_gps_stop(UHardwareGps self)
316 {
317 return self->stop();
318 }
319
320-void ubuntu_gps_inject_time(UbuntuGps self, int64_t time, int64_t time_reference,
321+void u_hardware_gps_inject_time(UHardwareGps self, int64_t time, int64_t time_reference,
322 int uncertainty)
323 {
324 self->inject_time(time, time_reference, uncertainty);
325 }
326
327-void ubuntu_gps_inject_location(UbuntuGps self, double latitude, double longitude,
328+void u_hardware_gps_inject_location(UHardwareGps self, double latitude, double longitude,
329 float accuracy)
330 {
331 self->inject_location(latitude, longitude, accuracy);
332 }
333
334-void ubuntu_gps_delete_aiding_data(UbuntuGps self, uint16_t flags)
335+void u_hardware_gps_delete_aiding_data(UHardwareGps self, uint16_t flags)
336 {
337 self->delete_aiding_data(flags);
338 }
339
340-bool ubuntu_gps_set_position_mode(UbuntuGps self, uint32_t mode, uint32_t recurrence,
341+bool u_hardware_gps_set_position_mode(UHardwareGps self, uint32_t mode, uint32_t recurrence,
342 uint32_t min_interval, uint32_t preferred_accuracy,
343 uint32_t preferred_time)
344 {
345@@ -432,7 +432,7 @@
346 preferred_time);
347 }
348
349-void ubuntu_gps_inject_xtra_data(UbuntuGps self, char* data, int length)
350+void u_hardware_gps_inject_xtra_data(UHardwareGps self, char* data, int length)
351 {
352 self->inject_xtra_data(data, length);
353 }
354
355=== removed file 'android/include/private/ui/config.h'
356--- android/include/private/ui/config.h 2013-05-21 20:54:48 +0000
357+++ android/include/private/ui/config.h 1970-01-01 00:00:00 +0000
358@@ -1,24 +0,0 @@
359-/*
360- * Copyright © 2013 Canonical Ltd.
361- *
362- * This program is free software: you can redistribute it and/or modify
363- * it under the terms of the GNU Lesser General Public License version 3 as
364- * published by the Free Software Foundation.
365- *
366- * This program is distributed in the hope that it will be useful,
367- * but WITHOUT ANY WARRANTY; without even the implied warranty of
368- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
369- * GNU Lesser General Public License for more details.
370- *
371- * You should have received a copy of the GNU Lesser General Public License
372- * along with this program. If not, see <http://www.gnu.org/licenses/>.
373- *
374- * Authored by: Michael Terry <michael.terry@canonical.com>
375- */
376-
377-#ifndef UBUNTU_UI_CONFIG_H_
378-#define UBUNTU_UI_CONFIG_H_
379-
380-#define UBUNTU_USE_GLES 1
381-
382-#endif // UBUNTU_UI_CONFIG_H_
383
384=== modified file 'android/include/private/ui/session_enumerator.h'
385--- android/include/private/ui/session_enumerator.h 2013-06-07 01:08:41 +0000
386+++ android/include/private/ui/session_enumerator.h 2013-06-14 14:53:26 +0000
387@@ -20,15 +20,9 @@
388 #define UBUNTU_UI_SESSION_ENUMERATOR_H_
389
390 #include "private/platform/shared_ptr.h"
391-#include "private/ui/config.h"
392 #include "private/ui/well_known_applications.h"
393
394-#if UBUNTU_USE_GLES
395 #include <GLES2/gl2.h>
396-#else
397-#include <GL/gl.h>
398-#include <GL/glext.h>
399-#endif
400
401 namespace ubuntu
402 {
403
404=== added directory 'data'
405=== added file 'data/CMakeLists.txt'
406--- data/CMakeLists.txt 1970-01-01 00:00:00 +0000
407+++ data/CMakeLists.txt 2013-06-14 14:53:26 +0000
408@@ -0,0 +1,8 @@
409+configure_file(
410+ ubuntu-platform-api.pc.in ubuntu-platform-api.pc @ONLY
411+)
412+
413+install(
414+ FILES ${CMAKE_CURRENT_BINARY_DIR}/ubuntu-platform-api.pc
415+ DESTINATION lib/pkgconfig
416+)
417\ No newline at end of file
418
419=== added file 'data/ubuntu-platform-api.pc.in'
420--- data/ubuntu-platform-api.pc.in 1970-01-01 00:00:00 +0000
421+++ data/ubuntu-platform-api.pc.in 2013-06-14 14:53:26 +0000
422@@ -0,0 +1,9 @@
423+prefix=@CMAKE_INSTALL_PREFIX@
424+exec_prefix=${prefix}
425+libdir=${exec_prefix}/lib
426+includedir=${exec_prefix}/include
427+
428+Name: @CMAKE_PROJECT_NAME@
429+Description: Ubuntu's platform abstraction layer.
430+Version: @UBUNTU_PLATFORM_API_VERSION_MAJOR@.@UBUNTU_PLATFORM_API_VERSION_MINOR@.@UBUNTU_PLATFORM_API_VERSION_PATCH@
431+Cflags: -I${includedir}/ubuntu-@UBUNTU_PLATFORM_API_VERSION_MAJOR@
432
433=== modified file 'debian/control'
434--- debian/control 2013-06-04 18:57:12 +0000
435+++ debian/control 2013-06-14 14:53:26 +0000
436@@ -3,6 +3,8 @@
437 Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
438 Build-Depends: cmake,
439 debhelper (>= 9),
440+ doxygen,
441+ graphviz,
442 libgl1-mesa-dev[!armhf],
443 libgles2-mesa-dev[armhf],
444 libhybris-dev,
445
446=== modified file 'debian/libplatform-api-headers.install'
447--- debian/libplatform-api-headers.install 2013-03-20 12:49:06 +0000
448+++ debian/libplatform-api-headers.install 2013-06-14 14:53:26 +0000
449@@ -1,1 +1,1 @@
450-usr/include
451+usr/include/
452
453=== modified file 'debian/libplatform-api1-dev.install'
454--- debian/libplatform-api1-dev.install 2013-03-20 12:49:06 +0000
455+++ debian/libplatform-api1-dev.install 2013-06-14 14:53:26 +0000
456@@ -1,1 +1,2 @@
457 usr/lib/*/libubuntu_application_api.so
458+usr/lib/pkgconfig/ubuntu-platform-api.pc
459
460=== added file 'doc/CMakeLists.txt'
461--- doc/CMakeLists.txt 1970-01-01 00:00:00 +0000
462+++ doc/CMakeLists.txt 2013-06-14 14:53:26 +0000
463@@ -0,0 +1,30 @@
464+# Copyright © 2013 Canonical Ltd.
465+#
466+# This program is free software: you can redistribute it and/or modify
467+# it under the terms of the GNU General Public License version 3 as
468+# published by the Free Software Foundation.
469+#
470+# This program is distributed in the hope that it will be useful,
471+# but WITHOUT ANY WARRANTY; without even the implied warranty of
472+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
473+# GNU General Public License for more details.
474+#
475+# You should have received a copy of the GNU General Public License
476+# along with this program. If not, see <http://www.gnu.org/licenses/>.
477+#
478+# Authored by: Thomas Voss <thomas.voss@canonical.com>
479+
480+find_package(Doxygen)
481+
482+if(DOXYGEN_FOUND)
483+ configure_file(
484+ ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in
485+ ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
486+ add_custom_target(doc ALL
487+ ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
488+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
489+ COMMENT "Generating API documentation with Doxygen" VERBATIM)
490+ install(
491+ DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html
492+ DESTINATION share/ubuntu-platform-api/doc)
493+endif(DOXYGEN_FOUND)
494\ No newline at end of file
495
496=== added file 'doc/Doxyfile.in'
497--- doc/Doxyfile.in 1970-01-01 00:00:00 +0000
498+++ doc/Doxyfile.in 2013-06-14 14:53:26 +0000
499@@ -0,0 +1,1869 @@
500+# Doxyfile 1.8.3.1
501+
502+# This file describes the settings to be used by the documentation system
503+# doxygen (www.doxygen.org) for a project.
504+#
505+# All text after a hash (#) is considered a comment and will be ignored.
506+# The format is:
507+# TAG = value [value, ...]
508+# For lists items can also be appended using:
509+# TAG += value [value, ...]
510+# Values that contain spaces should be placed between quotes (" ").
511+
512+#---------------------------------------------------------------------------
513+# Project related configuration options
514+#---------------------------------------------------------------------------
515+
516+# This tag specifies the encoding used for all characters in the config file
517+# that follow. The default is UTF-8 which is also the encoding used for all
518+# text before the first occurrence of this tag. Doxygen uses libiconv (or the
519+# iconv built into libc) for the transcoding. See
520+# http://www.gnu.org/software/libiconv for the list of possible encodings.
521+
522+DOXYFILE_ENCODING = UTF-8
523+
524+# The PROJECT_NAME tag is a single word (or sequence of words) that should
525+# identify the project. Note that if you do not use Doxywizard you need
526+# to put quotes around the project name if it contains spaces.
527+
528+PROJECT_NAME = @CMAKE_PROJECT_NAME@
529+
530+# The PROJECT_NUMBER tag can be used to enter a project or revision number.
531+# This could be handy for archiving the generated documentation or
532+# if some version control system is used.
533+
534+PROJECT_NUMBER = @UBUNTU_PLATFORM_API_VERSION_MAJOR@.@UBUNTU_PLATFORM_API_VERSION_MINOR@.@UBUNTU_PLATFORM_API_VERSION_PATCH@
535+
536+# Using the PROJECT_BRIEF tag one can provide an optional one line description
537+# for a project that appears at the top of each page and should give viewer
538+# a quick idea about the purpose of the project. Keep the description short.
539+
540+PROJECT_BRIEF =
541+
542+# With the PROJECT_LOGO tag one can specify an logo or icon that is
543+# included in the documentation. The maximum height of the logo should not
544+# exceed 55 pixels and the maximum width should not exceed 200 pixels.
545+# Doxygen will copy the logo to the output directory.
546+
547+PROJECT_LOGO =
548+
549+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
550+# base path where the generated documentation will be put.
551+# If a relative path is entered, it will be relative to the location
552+# where doxygen was started. If left blank the current directory will be used.
553+
554+OUTPUT_DIRECTORY =
555+
556+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
557+# 4096 sub-directories (in 2 levels) under the output directory of each output
558+# format and will distribute the generated files over these directories.
559+# Enabling this option can be useful when feeding doxygen a huge amount of
560+# source files, where putting all generated files in the same directory would
561+# otherwise cause performance problems for the file system.
562+
563+CREATE_SUBDIRS = NO
564+
565+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
566+# documentation generated by doxygen is written. Doxygen will use this
567+# information to generate all constant output in the proper language.
568+# The default language is English, other supported languages are:
569+# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
570+# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,
571+# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English
572+# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian,
573+# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak,
574+# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
575+
576+OUTPUT_LANGUAGE = English
577+
578+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
579+# include brief member descriptions after the members that are listed in
580+# the file and class documentation (similar to JavaDoc).
581+# Set to NO to disable this.
582+
583+BRIEF_MEMBER_DESC = YES
584+
585+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
586+# the brief description of a member or function before the detailed description.
587+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
588+# brief descriptions will be completely suppressed.
589+
590+REPEAT_BRIEF = YES
591+
592+# This tag implements a quasi-intelligent brief description abbreviator
593+# that is used to form the text in various listings. Each string
594+# in this list, if found as the leading text of the brief description, will be
595+# stripped from the text and the result after processing the whole list, is
596+# used as the annotated text. Otherwise, the brief description is used as-is.
597+# If left blank, the following values are used ("$name" is automatically
598+# replaced with the name of the entity): "The $name class" "The $name widget"
599+# "The $name file" "is" "provides" "specifies" "contains"
600+# "represents" "a" "an" "the"
601+
602+ABBREVIATE_BRIEF =
603+
604+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
605+# Doxygen will generate a detailed section even if there is only a brief
606+# description.
607+
608+ALWAYS_DETAILED_SEC = NO
609+
610+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
611+# inherited members of a class in the documentation of that class as if those
612+# members were ordinary class members. Constructors, destructors and assignment
613+# operators of the base classes will not be shown.
614+
615+INLINE_INHERITED_MEMB = NO
616+
617+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
618+# path before files name in the file list and in the header files. If set
619+# to NO the shortest path that makes the file name unique will be used.
620+
621+FULL_PATH_NAMES = YES
622+
623+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
624+# can be used to strip a user-defined part of the path. Stripping is
625+# only done if one of the specified strings matches the left-hand part of
626+# the path. The tag can be used to show relative paths in the file list.
627+# If left blank the directory from which doxygen is run is used as the
628+# path to strip. Note that you specify absolute paths here, but also
629+# relative paths, which will be relative from the directory where doxygen is
630+# started.
631+
632+STRIP_FROM_PATH =
633+
634+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
635+# the path mentioned in the documentation of a class, which tells
636+# the reader which header file to include in order to use a class.
637+# If left blank only the name of the header file containing the class
638+# definition is used. Otherwise one should specify the include paths that
639+# are normally passed to the compiler using the -I flag.
640+
641+STRIP_FROM_INC_PATH =
642+
643+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
644+# (but less readable) file names. This can be useful if your file system
645+# doesn't support long names like on DOS, Mac, or CD-ROM.
646+
647+SHORT_NAMES = NO
648+
649+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
650+# will interpret the first line (until the first dot) of a JavaDoc-style
651+# comment as the brief description. If set to NO, the JavaDoc
652+# comments will behave just like regular Qt-style comments
653+# (thus requiring an explicit @brief command for a brief description.)
654+
655+JAVADOC_AUTOBRIEF = NO
656+
657+# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
658+# interpret the first line (until the first dot) of a Qt-style
659+# comment as the brief description. If set to NO, the comments
660+# will behave just like regular Qt-style comments (thus requiring
661+# an explicit \brief command for a brief description.)
662+
663+QT_AUTOBRIEF = NO
664+
665+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
666+# treat a multi-line C++ special comment block (i.e. a block of //! or ///
667+# comments) as a brief description. This used to be the default behaviour.
668+# The new default is to treat a multi-line C++ comment block as a detailed
669+# description. Set this tag to YES if you prefer the old behaviour instead.
670+
671+MULTILINE_CPP_IS_BRIEF = NO
672+
673+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
674+# member inherits the documentation from any documented member that it
675+# re-implements.
676+
677+INHERIT_DOCS = YES
678+
679+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
680+# a new page for each member. If set to NO, the documentation of a member will
681+# be part of the file/class/namespace that contains it.
682+
683+SEPARATE_MEMBER_PAGES = NO
684+
685+# The TAB_SIZE tag can be used to set the number of spaces in a tab.
686+# Doxygen uses this value to replace tabs by spaces in code fragments.
687+
688+TAB_SIZE = 4
689+
690+# This tag can be used to specify a number of aliases that acts
691+# as commands in the documentation. An alias has the form "name=value".
692+# For example adding "sideeffect=\par Side Effects:\n" will allow you to
693+# put the command \sideeffect (or @sideeffect) in the documentation, which
694+# will result in a user-defined paragraph with heading "Side Effects:".
695+# You can put \n's in the value part of an alias to insert newlines.
696+
697+ALIASES =
698+
699+# This tag can be used to specify a number of word-keyword mappings (TCL only).
700+# A mapping has the form "name=value". For example adding
701+# "class=itcl::class" will allow you to use the command class in the
702+# itcl::class meaning.
703+
704+TCL_SUBST =
705+
706+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
707+# sources only. Doxygen will then generate output that is more tailored for C.
708+# For instance, some of the names that are used will be different. The list
709+# of all members will be omitted, etc.
710+
711+OPTIMIZE_OUTPUT_FOR_C = YES
712+
713+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
714+# sources only. Doxygen will then generate output that is more tailored for
715+# Java. For instance, namespaces will be presented as packages, qualified
716+# scopes will look different, etc.
717+
718+OPTIMIZE_OUTPUT_JAVA = NO
719+
720+# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
721+# sources only. Doxygen will then generate output that is more tailored for
722+# Fortran.
723+
724+OPTIMIZE_FOR_FORTRAN = NO
725+
726+# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
727+# sources. Doxygen will then generate output that is tailored for
728+# VHDL.
729+
730+OPTIMIZE_OUTPUT_VHDL = NO
731+
732+# Doxygen selects the parser to use depending on the extension of the files it
733+# parses. With this tag you can assign which parser to use for a given
734+# extension. Doxygen has a built-in mapping, but you can override or extend it
735+# using this tag. The format is ext=language, where ext is a file extension,
736+# and language is one of the parsers supported by doxygen: IDL, Java,
737+# Javascript, CSharp, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL, C,
738+# C++. For instance to make doxygen treat .inc files as Fortran files (default
739+# is PHP), and .f files as C (default is Fortran), use: inc=Fortran f=C. Note
740+# that for custom extensions you also need to set FILE_PATTERNS otherwise the
741+# files are not read by doxygen.
742+
743+EXTENSION_MAPPING =
744+
745+# If MARKDOWN_SUPPORT is enabled (the default) then doxygen pre-processes all
746+# comments according to the Markdown format, which allows for more readable
747+# documentation. See http://daringfireball.net/projects/markdown/ for details.
748+# The output of markdown processing is further processed by doxygen, so you
749+# can mix doxygen, HTML, and XML commands with Markdown formatting.
750+# Disable only in case of backward compatibilities issues.
751+
752+MARKDOWN_SUPPORT = YES
753+
754+# When enabled doxygen tries to link words that correspond to documented classes,
755+# or namespaces to their corresponding documentation. Such a link can be
756+# prevented in individual cases by by putting a % sign in front of the word or
757+# globally by setting AUTOLINK_SUPPORT to NO.
758+
759+AUTOLINK_SUPPORT = YES
760+
761+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
762+# to include (a tag file for) the STL sources as input, then you should
763+# set this tag to YES in order to let doxygen match functions declarations and
764+# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
765+# func(std::string) {}). This also makes the inheritance and collaboration
766+# diagrams that involve STL classes more complete and accurate.
767+
768+BUILTIN_STL_SUPPORT = NO
769+
770+# If you use Microsoft's C++/CLI language, you should set this option to YES to
771+# enable parsing support.
772+
773+CPP_CLI_SUPPORT = NO
774+
775+# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
776+# Doxygen will parse them like normal C++ but will assume all classes use public
777+# instead of private inheritance when no explicit protection keyword is present.
778+
779+SIP_SUPPORT = NO
780+
781+# For Microsoft's IDL there are propget and propput attributes to indicate
782+# getter and setter methods for a property. Setting this option to YES (the
783+# default) will make doxygen replace the get and set methods by a property in
784+# the documentation. This will only work if the methods are indeed getting or
785+# setting a simple type. If this is not the case, or you want to show the
786+# methods anyway, you should set this option to NO.
787+
788+IDL_PROPERTY_SUPPORT = YES
789+
790+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
791+# tag is set to YES, then doxygen will reuse the documentation of the first
792+# member in the group (if any) for the other members of the group. By default
793+# all members of a group must be documented explicitly.
794+
795+DISTRIBUTE_GROUP_DOC = NO
796+
797+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
798+# the same type (for instance a group of public functions) to be put as a
799+# subgroup of that type (e.g. under the Public Functions section). Set it to
800+# NO to prevent subgrouping. Alternatively, this can be done per class using
801+# the \nosubgrouping command.
802+
803+SUBGROUPING = YES
804+
805+# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and
806+# unions are shown inside the group in which they are included (e.g. using
807+# @ingroup) instead of on a separate page (for HTML and Man pages) or
808+# section (for LaTeX and RTF).
809+
810+INLINE_GROUPED_CLASSES = NO
811+
812+# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and
813+# unions with only public data fields will be shown inline in the documentation
814+# of the scope in which they are defined (i.e. file, namespace, or group
815+# documentation), provided this scope is documented. If set to NO (the default),
816+# structs, classes, and unions are shown on a separate page (for HTML and Man
817+# pages) or section (for LaTeX and RTF).
818+
819+INLINE_SIMPLE_STRUCTS = NO
820+
821+# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
822+# is documented as struct, union, or enum with the name of the typedef. So
823+# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
824+# with name TypeT. When disabled the typedef will appear as a member of a file,
825+# namespace, or class. And the struct will be named TypeS. This can typically
826+# be useful for C code in case the coding convention dictates that all compound
827+# types are typedef'ed and only the typedef is referenced, never the tag name.
828+
829+TYPEDEF_HIDES_STRUCT = NO
830+
831+# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
832+# determine which symbols to keep in memory and which to flush to disk.
833+# When the cache is full, less often used symbols will be written to disk.
834+# For small to medium size projects (<1000 input files) the default value is
835+# probably good enough. For larger projects a too small cache size can cause
836+# doxygen to be busy swapping symbols to and from disk most of the time
837+# causing a significant performance penalty.
838+# If the system has enough physical memory increasing the cache will improve the
839+# performance by keeping more symbols in memory. Note that the value works on
840+# a logarithmic scale so increasing the size by one will roughly double the
841+# memory usage. The cache size is given by this formula:
842+# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
843+# corresponding to a cache size of 2^16 = 65536 symbols.
844+
845+SYMBOL_CACHE_SIZE = 0
846+
847+# Similar to the SYMBOL_CACHE_SIZE the size of the symbol lookup cache can be
848+# set using LOOKUP_CACHE_SIZE. This cache is used to resolve symbols given
849+# their name and scope. Since this can be an expensive process and often the
850+# same symbol appear multiple times in the code, doxygen keeps a cache of
851+# pre-resolved symbols. If the cache is too small doxygen will become slower.
852+# If the cache is too large, memory is wasted. The cache size is given by this
853+# formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range is 0..9, the default is 0,
854+# corresponding to a cache size of 2^16 = 65536 symbols.
855+
856+LOOKUP_CACHE_SIZE = 0
857+
858+#---------------------------------------------------------------------------
859+# Build related configuration options
860+#---------------------------------------------------------------------------
861+
862+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
863+# documentation are documented, even if no documentation was available.
864+# Private class members and static file members will be hidden unless
865+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
866+
867+EXTRACT_ALL = YES
868+
869+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
870+# will be included in the documentation.
871+
872+EXTRACT_PRIVATE = NO
873+
874+# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
875+# scope will be included in the documentation.
876+
877+EXTRACT_PACKAGE = NO
878+
879+# If the EXTRACT_STATIC tag is set to YES all static members of a file
880+# will be included in the documentation.
881+
882+EXTRACT_STATIC = NO
883+
884+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
885+# defined locally in source files will be included in the documentation.
886+# If set to NO only classes defined in header files are included.
887+
888+EXTRACT_LOCAL_CLASSES = YES
889+
890+# This flag is only useful for Objective-C code. When set to YES local
891+# methods, which are defined in the implementation section but not in
892+# the interface are included in the documentation.
893+# If set to NO (the default) only methods in the interface are included.
894+
895+EXTRACT_LOCAL_METHODS = NO
896+
897+# If this flag is set to YES, the members of anonymous namespaces will be
898+# extracted and appear in the documentation as a namespace called
899+# 'anonymous_namespace{file}', where file will be replaced with the base
900+# name of the file that contains the anonymous namespace. By default
901+# anonymous namespaces are hidden.
902+
903+EXTRACT_ANON_NSPACES = NO
904+
905+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
906+# undocumented members of documented classes, files or namespaces.
907+# If set to NO (the default) these members will be included in the
908+# various overviews, but no documentation section is generated.
909+# This option has no effect if EXTRACT_ALL is enabled.
910+
911+HIDE_UNDOC_MEMBERS = NO
912+
913+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
914+# undocumented classes that are normally visible in the class hierarchy.
915+# If set to NO (the default) these classes will be included in the various
916+# overviews. This option has no effect if EXTRACT_ALL is enabled.
917+
918+HIDE_UNDOC_CLASSES = NO
919+
920+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
921+# friend (class|struct|union) declarations.
922+# If set to NO (the default) these declarations will be included in the
923+# documentation.
924+
925+HIDE_FRIEND_COMPOUNDS = NO
926+
927+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
928+# documentation blocks found inside the body of a function.
929+# If set to NO (the default) these blocks will be appended to the
930+# function's detailed documentation block.
931+
932+HIDE_IN_BODY_DOCS = NO
933+
934+# The INTERNAL_DOCS tag determines if documentation
935+# that is typed after a \internal command is included. If the tag is set
936+# to NO (the default) then the documentation will be excluded.
937+# Set it to YES to include the internal documentation.
938+
939+INTERNAL_DOCS = NO
940+
941+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
942+# file names in lower-case letters. If set to YES upper-case letters are also
943+# allowed. This is useful if you have classes or files whose names only differ
944+# in case and if your file system supports case sensitive file names. Windows
945+# and Mac users are advised to set this option to NO.
946+
947+CASE_SENSE_NAMES = YES
948+
949+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
950+# will show members with their full class and namespace scopes in the
951+# documentation. If set to YES the scope will be hidden.
952+
953+HIDE_SCOPE_NAMES = NO
954+
955+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
956+# will put a list of the files that are included by a file in the documentation
957+# of that file.
958+
959+SHOW_INCLUDE_FILES = YES
960+
961+# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen
962+# will list include files with double quotes in the documentation
963+# rather than with sharp brackets.
964+
965+FORCE_LOCAL_INCLUDES = NO
966+
967+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
968+# is inserted in the documentation for inline members.
969+
970+INLINE_INFO = YES
971+
972+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
973+# will sort the (detailed) documentation of file and class members
974+# alphabetically by member name. If set to NO the members will appear in
975+# declaration order.
976+
977+SORT_MEMBER_DOCS = YES
978+
979+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
980+# brief documentation of file, namespace and class members alphabetically
981+# by member name. If set to NO (the default) the members will appear in
982+# declaration order.
983+
984+SORT_BRIEF_DOCS = NO
985+
986+# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen
987+# will sort the (brief and detailed) documentation of class members so that
988+# constructors and destructors are listed first. If set to NO (the default)
989+# the constructors will appear in the respective orders defined by
990+# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS.
991+# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO
992+# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.
993+
994+SORT_MEMBERS_CTORS_1ST = NO
995+
996+# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
997+# hierarchy of group names into alphabetical order. If set to NO (the default)
998+# the group names will appear in their defined order.
999+
1000+SORT_GROUP_NAMES = NO
1001+
1002+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
1003+# sorted by fully-qualified names, including namespaces. If set to
1004+# NO (the default), the class list will be sorted only by class name,
1005+# not including the namespace part.
1006+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
1007+# Note: This option applies only to the class list, not to the
1008+# alphabetical list.
1009+
1010+SORT_BY_SCOPE_NAME = NO
1011+
1012+# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to
1013+# do proper type resolution of all parameters of a function it will reject a
1014+# match between the prototype and the implementation of a member function even
1015+# if there is only one candidate or it is obvious which candidate to choose
1016+# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen
1017+# will still accept a match between prototype and implementation in such cases.
1018+
1019+STRICT_PROTO_MATCHING = NO
1020+
1021+# The GENERATE_TODOLIST tag can be used to enable (YES) or
1022+# disable (NO) the todo list. This list is created by putting \todo
1023+# commands in the documentation.
1024+
1025+GENERATE_TODOLIST = YES
1026+
1027+# The GENERATE_TESTLIST tag can be used to enable (YES) or
1028+# disable (NO) the test list. This list is created by putting \test
1029+# commands in the documentation.
1030+
1031+GENERATE_TESTLIST = YES
1032+
1033+# The GENERATE_BUGLIST tag can be used to enable (YES) or
1034+# disable (NO) the bug list. This list is created by putting \bug
1035+# commands in the documentation.
1036+
1037+GENERATE_BUGLIST = YES
1038+
1039+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
1040+# disable (NO) the deprecated list. This list is created by putting
1041+# \deprecated commands in the documentation.
1042+
1043+GENERATE_DEPRECATEDLIST= YES
1044+
1045+# The ENABLED_SECTIONS tag can be used to enable conditional
1046+# documentation sections, marked by \if section-label ... \endif
1047+# and \cond section-label ... \endcond blocks.
1048+
1049+ENABLED_SECTIONS =
1050+
1051+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
1052+# the initial value of a variable or macro consists of for it to appear in
1053+# the documentation. If the initializer consists of more lines than specified
1054+# here it will be hidden. Use a value of 0 to hide initializers completely.
1055+# The appearance of the initializer of individual variables and macros in the
1056+# documentation can be controlled using \showinitializer or \hideinitializer
1057+# command in the documentation regardless of this setting.
1058+
1059+MAX_INITIALIZER_LINES = 30
1060+
1061+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
1062+# at the bottom of the documentation of classes and structs. If set to YES the
1063+# list will mention the files that were used to generate the documentation.
1064+
1065+SHOW_USED_FILES = YES
1066+
1067+# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
1068+# This will remove the Files entry from the Quick Index and from the
1069+# Folder Tree View (if specified). The default is YES.
1070+
1071+SHOW_FILES = YES
1072+
1073+# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
1074+# Namespaces page.
1075+# This will remove the Namespaces entry from the Quick Index
1076+# and from the Folder Tree View (if specified). The default is YES.
1077+
1078+SHOW_NAMESPACES = YES
1079+
1080+# The FILE_VERSION_FILTER tag can be used to specify a program or script that
1081+# doxygen should invoke to get the current version for each file (typically from
1082+# the version control system). Doxygen will invoke the program by executing (via
1083+# popen()) the command <command> <input-file>, where <command> is the value of
1084+# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
1085+# provided by doxygen. Whatever the program writes to standard output
1086+# is used as the file version. See the manual for examples.
1087+
1088+FILE_VERSION_FILTER =
1089+
1090+# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
1091+# by doxygen. The layout file controls the global structure of the generated
1092+# output files in an output format independent way. To create the layout file
1093+# that represents doxygen's defaults, run doxygen with the -l option.
1094+# You can optionally specify a file name after the option, if omitted
1095+# DoxygenLayout.xml will be used as the name of the layout file.
1096+
1097+LAYOUT_FILE =
1098+
1099+# The CITE_BIB_FILES tag can be used to specify one or more bib files
1100+# containing the references data. This must be a list of .bib files. The
1101+# .bib extension is automatically appended if omitted. Using this command
1102+# requires the bibtex tool to be installed. See also
1103+# http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style
1104+# of the bibliography can be controlled using LATEX_BIB_STYLE. To use this
1105+# feature you need bibtex and perl available in the search path. Do not use
1106+# file names with spaces, bibtex cannot handle them.
1107+
1108+CITE_BIB_FILES =
1109+
1110+#---------------------------------------------------------------------------
1111+# configuration options related to warning and progress messages
1112+#---------------------------------------------------------------------------
1113+
1114+# The QUIET tag can be used to turn on/off the messages that are generated
1115+# by doxygen. Possible values are YES and NO. If left blank NO is used.
1116+
1117+QUIET = NO
1118+
1119+# The WARNINGS tag can be used to turn on/off the warning messages that are
1120+# generated by doxygen. Possible values are YES and NO. If left blank
1121+# NO is used.
1122+
1123+WARNINGS = YES
1124+
1125+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
1126+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
1127+# automatically be disabled.
1128+
1129+WARN_IF_UNDOCUMENTED = YES
1130+
1131+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
1132+# potential errors in the documentation, such as not documenting some
1133+# parameters in a documented function, or documenting parameters that
1134+# don't exist or using markup commands wrongly.
1135+
1136+WARN_IF_DOC_ERROR = YES
1137+
1138+# The WARN_NO_PARAMDOC option can be enabled to get warnings for
1139+# functions that are documented, but have no documentation for their parameters
1140+# or return value. If set to NO (the default) doxygen will only warn about
1141+# wrong or incomplete parameter documentation, but not about the absence of
1142+# documentation.
1143+
1144+WARN_NO_PARAMDOC = NO
1145+
1146+# The WARN_FORMAT tag determines the format of the warning messages that
1147+# doxygen can produce. The string should contain the $file, $line, and $text
1148+# tags, which will be replaced by the file and line number from which the
1149+# warning originated and the warning text. Optionally the format may contain
1150+# $version, which will be replaced by the version of the file (if it could
1151+# be obtained via FILE_VERSION_FILTER)
1152+
1153+WARN_FORMAT = "$file:$line: $text"
1154+
1155+# The WARN_LOGFILE tag can be used to specify a file to which warning
1156+# and error messages should be written. If left blank the output is written
1157+# to stderr.
1158+
1159+WARN_LOGFILE =
1160+
1161+#---------------------------------------------------------------------------
1162+# configuration options related to the input files
1163+#---------------------------------------------------------------------------
1164+
1165+# The INPUT tag can be used to specify the files and/or directories that contain
1166+# documented source files. You may enter file names like "myfile.cpp" or
1167+# directories like "/usr/src/myproject". Separate the files or directories
1168+# with spaces.
1169+
1170+INPUT = @CMAKE_CURRENT_SOURCE_DIR@/../include
1171+
1172+# This tag can be used to specify the character encoding of the source files
1173+# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
1174+# also the default input encoding. Doxygen uses libiconv (or the iconv built
1175+# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
1176+# the list of possible encodings.
1177+
1178+INPUT_ENCODING = UTF-8
1179+
1180+# If the value of the INPUT tag contains directories, you can use the
1181+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
1182+# and *.h) to filter out the source-files in the directories. If left
1183+# blank the following patterns are tested:
1184+# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh
1185+# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py
1186+# *.f90 *.f *.for *.vhd *.vhdl
1187+
1188+FILE_PATTERNS =
1189+
1190+# The RECURSIVE tag can be used to turn specify whether or not subdirectories
1191+# should be searched for input files as well. Possible values are YES and NO.
1192+# If left blank NO is used.
1193+
1194+RECURSIVE = YES
1195+
1196+# The EXCLUDE tag can be used to specify files and/or directories that should be
1197+# excluded from the INPUT source files. This way you can easily exclude a
1198+# subdirectory from a directory tree whose root is specified with the INPUT tag.
1199+# Note that relative paths are relative to the directory from which doxygen is
1200+# run.
1201+
1202+EXCLUDE =
1203+
1204+# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
1205+# directories that are symbolic links (a Unix file system feature) are excluded
1206+# from the input.
1207+
1208+EXCLUDE_SYMLINKS = NO
1209+
1210+# If the value of the INPUT tag contains directories, you can use the
1211+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
1212+# certain files from those directories. Note that the wildcards are matched
1213+# against the file with absolute path, so to exclude all test directories
1214+# for example use the pattern */test/*
1215+
1216+EXCLUDE_PATTERNS =
1217+
1218+# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
1219+# (namespaces, classes, functions, etc.) that should be excluded from the
1220+# output. The symbol name can be a fully qualified name, a word, or if the
1221+# wildcard * is used, a substring. Examples: ANamespace, AClass,
1222+# AClass::ANamespace, ANamespace::*Test
1223+
1224+EXCLUDE_SYMBOLS =
1225+
1226+# The EXAMPLE_PATH tag can be used to specify one or more files or
1227+# directories that contain example code fragments that are included (see
1228+# the \include command).
1229+
1230+EXAMPLE_PATH = @CMAKE_CURRENT_SOURCE_DIR@/../examples
1231+
1232+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
1233+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
1234+# and *.h) to filter out the source-files in the directories. If left
1235+# blank all files are included.
1236+
1237+EXAMPLE_PATTERNS =
1238+
1239+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
1240+# searched for input files to be used with the \include or \dontinclude
1241+# commands irrespective of the value of the RECURSIVE tag.
1242+# Possible values are YES and NO. If left blank NO is used.
1243+
1244+EXAMPLE_RECURSIVE = YES
1245+
1246+# The IMAGE_PATH tag can be used to specify one or more files or
1247+# directories that contain image that are included in the documentation (see
1248+# the \image command).
1249+
1250+IMAGE_PATH =
1251+
1252+# The INPUT_FILTER tag can be used to specify a program that doxygen should
1253+# invoke to filter for each input file. Doxygen will invoke the filter program
1254+# by executing (via popen()) the command <filter> <input-file>, where <filter>
1255+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
1256+# input file. Doxygen will then use the output that the filter program writes
1257+# to standard output.
1258+# If FILTER_PATTERNS is specified, this tag will be
1259+# ignored.
1260+
1261+INPUT_FILTER =
1262+
1263+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
1264+# basis.
1265+# Doxygen will compare the file name with each pattern and apply the
1266+# filter if there is a match.
1267+# The filters are a list of the form:
1268+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
1269+# info on how filters are used. If FILTER_PATTERNS is empty or if
1270+# non of the patterns match the file name, INPUT_FILTER is applied.
1271+
1272+FILTER_PATTERNS =
1273+
1274+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
1275+# INPUT_FILTER) will be used to filter the input files when producing source
1276+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
1277+
1278+FILTER_SOURCE_FILES = NO
1279+
1280+# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
1281+# pattern. A pattern will override the setting for FILTER_PATTERN (if any)
1282+# and it is also possible to disable source filtering for a specific pattern
1283+# using *.ext= (so without naming a filter). This option only has effect when
1284+# FILTER_SOURCE_FILES is enabled.
1285+
1286+FILTER_SOURCE_PATTERNS =
1287+
1288+# If the USE_MD_FILE_AS_MAINPAGE tag refers to the name of a markdown file that
1289+# is part of the input, its contents will be placed on the main page (index.html).
1290+# This can be useful if you have a project on for instance GitHub and want reuse
1291+# the introduction page also for the doxygen output.
1292+
1293+USE_MDFILE_AS_MAINPAGE =
1294+
1295+#---------------------------------------------------------------------------
1296+# configuration options related to source browsing
1297+#---------------------------------------------------------------------------
1298+
1299+# If the SOURCE_BROWSER tag is set to YES then a list of source files will
1300+# be generated. Documented entities will be cross-referenced with these sources.
1301+# Note: To get rid of all source code in the generated output, make sure also
1302+# VERBATIM_HEADERS is set to NO.
1303+
1304+SOURCE_BROWSER = YES
1305+
1306+# Setting the INLINE_SOURCES tag to YES will include the body
1307+# of functions and classes directly in the documentation.
1308+
1309+INLINE_SOURCES = YES
1310+
1311+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
1312+# doxygen to hide any special comment blocks from generated source code
1313+# fragments. Normal C, C++ and Fortran comments will always remain visible.
1314+
1315+STRIP_CODE_COMMENTS = YES
1316+
1317+# If the REFERENCED_BY_RELATION tag is set to YES
1318+# then for each documented function all documented
1319+# functions referencing it will be listed.
1320+
1321+REFERENCED_BY_RELATION = YES
1322+
1323+# If the REFERENCES_RELATION tag is set to YES
1324+# then for each documented function all documented entities
1325+# called/used by that function will be listed.
1326+
1327+REFERENCES_RELATION = YES
1328+
1329+# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
1330+# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
1331+# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
1332+# link to the source code.
1333+# Otherwise they will link to the documentation.
1334+
1335+REFERENCES_LINK_SOURCE = YES
1336+
1337+# If the USE_HTAGS tag is set to YES then the references to source code
1338+# will point to the HTML generated by the htags(1) tool instead of doxygen
1339+# built-in source browser. The htags tool is part of GNU's global source
1340+# tagging system (see http://www.gnu.org/software/global/global.html). You
1341+# will need version 4.8.6 or higher.
1342+
1343+USE_HTAGS = NO
1344+
1345+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
1346+# will generate a verbatim copy of the header file for each class for
1347+# which an include is specified. Set to NO to disable this.
1348+
1349+VERBATIM_HEADERS = YES
1350+
1351+#---------------------------------------------------------------------------
1352+# configuration options related to the alphabetical class index
1353+#---------------------------------------------------------------------------
1354+
1355+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
1356+# of all compounds will be generated. Enable this if the project
1357+# contains a lot of classes, structs, unions or interfaces.
1358+
1359+ALPHABETICAL_INDEX = YES
1360+
1361+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
1362+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
1363+# in which this list will be split (can be a number in the range [1..20])
1364+
1365+COLS_IN_ALPHA_INDEX = 5
1366+
1367+# In case all classes in a project start with a common prefix, all
1368+# classes will be put under the same header in the alphabetical index.
1369+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
1370+# should be ignored while generating the index headers.
1371+
1372+IGNORE_PREFIX =
1373+
1374+#---------------------------------------------------------------------------
1375+# configuration options related to the HTML output
1376+#---------------------------------------------------------------------------
1377+
1378+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
1379+# generate HTML output.
1380+
1381+GENERATE_HTML = YES
1382+
1383+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
1384+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
1385+# put in front of it. If left blank `html' will be used as the default path.
1386+
1387+HTML_OUTPUT = html
1388+
1389+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
1390+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
1391+# doxygen will generate files with .html extension.
1392+
1393+HTML_FILE_EXTENSION = .html
1394+
1395+# The HTML_HEADER tag can be used to specify a personal HTML header for
1396+# each generated HTML page. If it is left blank doxygen will generate a
1397+# standard header. Note that when using a custom header you are responsible
1398+# for the proper inclusion of any scripts and style sheets that doxygen
1399+# needs, which is dependent on the configuration options used.
1400+# It is advised to generate a default header using "doxygen -w html
1401+# header.html footer.html stylesheet.css YourConfigFile" and then modify
1402+# that header. Note that the header is subject to change so you typically
1403+# have to redo this when upgrading to a newer version of doxygen or when
1404+# changing the value of configuration settings such as GENERATE_TREEVIEW!
1405+
1406+HTML_HEADER =
1407+
1408+# The HTML_FOOTER tag can be used to specify a personal HTML footer for
1409+# each generated HTML page. If it is left blank doxygen will generate a
1410+# standard footer.
1411+
1412+HTML_FOOTER =
1413+
1414+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
1415+# style sheet that is used by each HTML page. It can be used to
1416+# fine-tune the look of the HTML output. If left blank doxygen will
1417+# generate a default style sheet. Note that it is recommended to use
1418+# HTML_EXTRA_STYLESHEET instead of this one, as it is more robust and this
1419+# tag will in the future become obsolete.
1420+
1421+HTML_STYLESHEET =
1422+
1423+# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional
1424+# user-defined cascading style sheet that is included after the standard
1425+# style sheets created by doxygen. Using this option one can overrule
1426+# certain style aspects. This is preferred over using HTML_STYLESHEET
1427+# since it does not replace the standard style sheet and is therefor more
1428+# robust against future updates. Doxygen will copy the style sheet file to
1429+# the output directory.
1430+
1431+HTML_EXTRA_STYLESHEET =
1432+
1433+# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
1434+# other source files which should be copied to the HTML output directory. Note
1435+# that these files will be copied to the base HTML output directory. Use the
1436+# $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
1437+# files. In the HTML_STYLESHEET file, use the file name only. Also note that
1438+# the files will be copied as-is; there are no commands or markers available.
1439+
1440+HTML_EXTRA_FILES =
1441+
1442+# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
1443+# Doxygen will adjust the colors in the style sheet and background images
1444+# according to this color. Hue is specified as an angle on a colorwheel,
1445+# see http://en.wikipedia.org/wiki/Hue for more information.
1446+# For instance the value 0 represents red, 60 is yellow, 120 is green,
1447+# 180 is cyan, 240 is blue, 300 purple, and 360 is red again.
1448+# The allowed range is 0 to 359.
1449+
1450+HTML_COLORSTYLE_HUE = 220
1451+
1452+# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of
1453+# the colors in the HTML output. For a value of 0 the output will use
1454+# grayscales only. A value of 255 will produce the most vivid colors.
1455+
1456+HTML_COLORSTYLE_SAT = 100
1457+
1458+# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to
1459+# the luminance component of the colors in the HTML output. Values below
1460+# 100 gradually make the output lighter, whereas values above 100 make
1461+# the output darker. The value divided by 100 is the actual gamma applied,
1462+# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2,
1463+# and 100 does not change the gamma.
1464+
1465+HTML_COLORSTYLE_GAMMA = 80
1466+
1467+# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
1468+# page will contain the date and time when the page was generated. Setting
1469+# this to NO can help when comparing the output of multiple runs.
1470+
1471+HTML_TIMESTAMP = YES
1472+
1473+# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
1474+# documentation will contain sections that can be hidden and shown after the
1475+# page has loaded.
1476+
1477+HTML_DYNAMIC_SECTIONS = NO
1478+
1479+# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of
1480+# entries shown in the various tree structured indices initially; the user
1481+# can expand and collapse entries dynamically later on. Doxygen will expand
1482+# the tree to such a level that at most the specified number of entries are
1483+# visible (unless a fully collapsed tree already exceeds this amount).
1484+# So setting the number of entries 1 will produce a full collapsed tree by
1485+# default. 0 is a special value representing an infinite number of entries
1486+# and will result in a full expanded tree by default.
1487+
1488+HTML_INDEX_NUM_ENTRIES = 100
1489+
1490+# If the GENERATE_DOCSET tag is set to YES, additional index files
1491+# will be generated that can be used as input for Apple's Xcode 3
1492+# integrated development environment, introduced with OSX 10.5 (Leopard).
1493+# To create a documentation set, doxygen will generate a Makefile in the
1494+# HTML output directory. Running make will produce the docset in that
1495+# directory and running "make install" will install the docset in
1496+# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
1497+# it at startup.
1498+# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
1499+# for more information.
1500+
1501+GENERATE_DOCSET = NO
1502+
1503+# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
1504+# feed. A documentation feed provides an umbrella under which multiple
1505+# documentation sets from a single provider (such as a company or product suite)
1506+# can be grouped.
1507+
1508+DOCSET_FEEDNAME = "Doxygen generated docs"
1509+
1510+# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
1511+# should uniquely identify the documentation set bundle. This should be a
1512+# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
1513+# will append .docset to the name.
1514+
1515+DOCSET_BUNDLE_ID = org.doxygen.Project
1516+
1517+# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely
1518+# identify the documentation publisher. This should be a reverse domain-name
1519+# style string, e.g. com.mycompany.MyDocSet.documentation.
1520+
1521+DOCSET_PUBLISHER_ID = org.doxygen.Publisher
1522+
1523+# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher.
1524+
1525+DOCSET_PUBLISHER_NAME = Publisher
1526+
1527+# If the GENERATE_HTMLHELP tag is set to YES, additional index files
1528+# will be generated that can be used as input for tools like the
1529+# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
1530+# of the generated HTML documentation.
1531+
1532+GENERATE_HTMLHELP = NO
1533+
1534+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
1535+# be used to specify the file name of the resulting .chm file. You
1536+# can add a path in front of the file if the result should not be
1537+# written to the html output directory.
1538+
1539+CHM_FILE =
1540+
1541+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
1542+# be used to specify the location (absolute path including file name) of
1543+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
1544+# the HTML help compiler on the generated index.hhp.
1545+
1546+HHC_LOCATION =
1547+
1548+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
1549+# controls if a separate .chi index file is generated (YES) or that
1550+# it should be included in the master .chm file (NO).
1551+
1552+GENERATE_CHI = NO
1553+
1554+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
1555+# is used to encode HtmlHelp index (hhk), content (hhc) and project file
1556+# content.
1557+
1558+CHM_INDEX_ENCODING =
1559+
1560+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
1561+# controls whether a binary table of contents is generated (YES) or a
1562+# normal table of contents (NO) in the .chm file.
1563+
1564+BINARY_TOC = NO
1565+
1566+# The TOC_EXPAND flag can be set to YES to add extra items for group members
1567+# to the contents of the HTML help documentation and to the tree view.
1568+
1569+TOC_EXPAND = NO
1570+
1571+# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
1572+# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated
1573+# that can be used as input for Qt's qhelpgenerator to generate a
1574+# Qt Compressed Help (.qch) of the generated HTML documentation.
1575+
1576+GENERATE_QHP = NO
1577+
1578+# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
1579+# be used to specify the file name of the resulting .qch file.
1580+# The path specified is relative to the HTML output folder.
1581+
1582+QCH_FILE =
1583+
1584+# The QHP_NAMESPACE tag specifies the namespace to use when generating
1585+# Qt Help Project output. For more information please see
1586+# http://doc.trolltech.com/qthelpproject.html#namespace
1587+
1588+QHP_NAMESPACE = org.doxygen.Project
1589+
1590+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
1591+# Qt Help Project output. For more information please see
1592+# http://doc.trolltech.com/qthelpproject.html#virtual-folders
1593+
1594+QHP_VIRTUAL_FOLDER = doc
1595+
1596+# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to
1597+# add. For more information please see
1598+# http://doc.trolltech.com/qthelpproject.html#custom-filters
1599+
1600+QHP_CUST_FILTER_NAME =
1601+
1602+# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the
1603+# custom filter to add. For more information please see
1604+# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">
1605+# Qt Help Project / Custom Filters</a>.
1606+
1607+QHP_CUST_FILTER_ATTRS =
1608+
1609+# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
1610+# project's
1611+# filter section matches.
1612+# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">
1613+# Qt Help Project / Filter Attributes</a>.
1614+
1615+QHP_SECT_FILTER_ATTRS =
1616+
1617+# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
1618+# be used to specify the location of Qt's qhelpgenerator.
1619+# If non-empty doxygen will try to run qhelpgenerator on the generated
1620+# .qhp file.
1621+
1622+QHG_LOCATION =
1623+
1624+# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files
1625+# will be generated, which together with the HTML files, form an Eclipse help
1626+# plugin. To install this plugin and make it available under the help contents
1627+# menu in Eclipse, the contents of the directory containing the HTML and XML
1628+# files needs to be copied into the plugins directory of eclipse. The name of
1629+# the directory within the plugins directory should be the same as
1630+# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before
1631+# the help appears.
1632+
1633+GENERATE_ECLIPSEHELP = NO
1634+
1635+# A unique identifier for the eclipse help plugin. When installing the plugin
1636+# the directory name containing the HTML and XML files should also have
1637+# this name.
1638+
1639+ECLIPSE_DOC_ID = org.doxygen.Project
1640+
1641+# The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs)
1642+# at top of each HTML page. The value NO (the default) enables the index and
1643+# the value YES disables it. Since the tabs have the same information as the
1644+# navigation tree you can set this option to NO if you already set
1645+# GENERATE_TREEVIEW to YES.
1646+
1647+DISABLE_INDEX = NO
1648+
1649+# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
1650+# structure should be generated to display hierarchical information.
1651+# If the tag value is set to YES, a side panel will be generated
1652+# containing a tree-like index structure (just like the one that
1653+# is generated for HTML Help). For this to work a browser that supports
1654+# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
1655+# Windows users are probably better off using the HTML help feature.
1656+# Since the tree basically has the same information as the tab index you
1657+# could consider to set DISABLE_INDEX to NO when enabling this option.
1658+
1659+GENERATE_TREEVIEW = NO
1660+
1661+# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values
1662+# (range [0,1..20]) that doxygen will group on one line in the generated HTML
1663+# documentation. Note that a value of 0 will completely suppress the enum
1664+# values from appearing in the overview section.
1665+
1666+ENUM_VALUES_PER_LINE = 1
1667+
1668+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
1669+# used to set the initial width (in pixels) of the frame in which the tree
1670+# is shown.
1671+
1672+TREEVIEW_WIDTH = 250
1673+
1674+# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open
1675+# links to external symbols imported via tag files in a separate window.
1676+
1677+EXT_LINKS_IN_WINDOW = NO
1678+
1679+# Use this tag to change the font size of Latex formulas included
1680+# as images in the HTML documentation. The default is 10. Note that
1681+# when you change the font size after a successful doxygen run you need
1682+# to manually remove any form_*.png images from the HTML output directory
1683+# to force them to be regenerated.
1684+
1685+FORMULA_FONTSIZE = 10
1686+
1687+# Use the FORMULA_TRANPARENT tag to determine whether or not the images
1688+# generated for formulas are transparent PNGs. Transparent PNGs are
1689+# not supported properly for IE 6.0, but are supported on all modern browsers.
1690+# Note that when changing this option you need to delete any form_*.png files
1691+# in the HTML output before the changes have effect.
1692+
1693+FORMULA_TRANSPARENT = YES
1694+
1695+# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax
1696+# (see http://www.mathjax.org) which uses client side Javascript for the
1697+# rendering instead of using prerendered bitmaps. Use this if you do not
1698+# have LaTeX installed or if you want to formulas look prettier in the HTML
1699+# output. When enabled you may also need to install MathJax separately and
1700+# configure the path to it using the MATHJAX_RELPATH option.
1701+
1702+USE_MATHJAX = NO
1703+
1704+# When MathJax is enabled you can set the default output format to be used for
1705+# thA MathJax output. Supported types are HTML-CSS, NativeMML (i.e. MathML) and
1706+# SVG. The default value is HTML-CSS, which is slower, but has the best
1707+# compatibility.
1708+
1709+MATHJAX_FORMAT = HTML-CSS
1710+
1711+# When MathJax is enabled you need to specify the location relative to the
1712+# HTML output directory using the MATHJAX_RELPATH option. The destination
1713+# directory should contain the MathJax.js script. For instance, if the mathjax
1714+# directory is located at the same level as the HTML output directory, then
1715+# MATHJAX_RELPATH should be ../mathjax. The default value points to
1716+# the MathJax Content Delivery Network so you can quickly see the result without
1717+# installing MathJax.
1718+# However, it is strongly recommended to install a local
1719+# copy of MathJax from http://www.mathjax.org before deployment.
1720+
1721+MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
1722+
1723+# The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension
1724+# names that should be enabled during MathJax rendering.
1725+
1726+MATHJAX_EXTENSIONS =
1727+
1728+# When the SEARCHENGINE tag is enabled doxygen will generate a search box
1729+# for the HTML output. The underlying search engine uses javascript
1730+# and DHTML and should work on any modern browser. Note that when using
1731+# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets
1732+# (GENERATE_DOCSET) there is already a search function so this one should
1733+# typically be disabled. For large projects the javascript based search engine
1734+# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution.
1735+
1736+SEARCHENGINE = YES
1737+
1738+# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
1739+# implemented using a web server instead of a web client using Javascript.
1740+# There are two flavours of web server based search depending on the
1741+# EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for
1742+# searching and an index file used by the script. When EXTERNAL_SEARCH is
1743+# enabled the indexing and searching needs to be provided by external tools.
1744+# See the manual for details.
1745+
1746+SERVER_BASED_SEARCH = NO
1747+
1748+# When EXTERNAL_SEARCH is enabled doxygen will no longer generate the PHP
1749+# script for searching. Instead the search results are written to an XML file
1750+# which needs to be processed by an external indexer. Doxygen will invoke an
1751+# external search engine pointed to by the SEARCHENGINE_URL option to obtain
1752+# the search results. Doxygen ships with an example indexer (doxyindexer) and
1753+# search engine (doxysearch.cgi) which are based on the open source search engine
1754+# library Xapian. See the manual for configuration details.
1755+
1756+EXTERNAL_SEARCH = NO
1757+
1758+# The SEARCHENGINE_URL should point to a search engine hosted by a web server
1759+# which will returned the search results when EXTERNAL_SEARCH is enabled.
1760+# Doxygen ships with an example search engine (doxysearch) which is based on
1761+# the open source search engine library Xapian. See the manual for configuration
1762+# details.
1763+
1764+SEARCHENGINE_URL =
1765+
1766+# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
1767+# search data is written to a file for indexing by an external tool. With the
1768+# SEARCHDATA_FILE tag the name of this file can be specified.
1769+
1770+SEARCHDATA_FILE = searchdata.xml
1771+
1772+# When SERVER_BASED_SEARCH AND EXTERNAL_SEARCH are both enabled the
1773+# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
1774+# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
1775+# projects and redirect the results back to the right project.
1776+
1777+EXTERNAL_SEARCH_ID =
1778+
1779+# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
1780+# projects other than the one defined by this configuration file, but that are
1781+# all added to the same external search index. Each project needs to have a
1782+# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id
1783+# of to a relative location where the documentation can be found.
1784+# The format is: EXTRA_SEARCH_MAPPINGS = id1=loc1 id2=loc2 ...
1785+
1786+EXTRA_SEARCH_MAPPINGS =
1787+
1788+#---------------------------------------------------------------------------
1789+# configuration options related to the LaTeX output
1790+#---------------------------------------------------------------------------
1791+
1792+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
1793+# generate Latex output.
1794+
1795+GENERATE_LATEX = NO
1796+
1797+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
1798+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
1799+# put in front of it. If left blank `latex' will be used as the default path.
1800+
1801+LATEX_OUTPUT = latex
1802+
1803+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
1804+# invoked. If left blank `latex' will be used as the default command name.
1805+# Note that when enabling USE_PDFLATEX this option is only used for
1806+# generating bitmaps for formulas in the HTML output, but not in the
1807+# Makefile that is written to the output directory.
1808+
1809+LATEX_CMD_NAME = latex
1810+
1811+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
1812+# generate index for LaTeX. If left blank `makeindex' will be used as the
1813+# default command name.
1814+
1815+MAKEINDEX_CMD_NAME = makeindex
1816+
1817+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
1818+# LaTeX documents. This may be useful for small projects and may help to
1819+# save some trees in general.
1820+
1821+COMPACT_LATEX = NO
1822+
1823+# The PAPER_TYPE tag can be used to set the paper type that is used
1824+# by the printer. Possible values are: a4, letter, legal and
1825+# executive. If left blank a4wide will be used.
1826+
1827+PAPER_TYPE = a4
1828+
1829+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
1830+# packages that should be included in the LaTeX output.
1831+
1832+EXTRA_PACKAGES =
1833+
1834+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
1835+# the generated latex document. The header should contain everything until
1836+# the first chapter. If it is left blank doxygen will generate a
1837+# standard header. Notice: only use this tag if you know what you are doing!
1838+
1839+LATEX_HEADER =
1840+
1841+# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for
1842+# the generated latex document. The footer should contain everything after
1843+# the last chapter. If it is left blank doxygen will generate a
1844+# standard footer. Notice: only use this tag if you know what you are doing!
1845+
1846+LATEX_FOOTER =
1847+
1848+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
1849+# is prepared for conversion to pdf (using ps2pdf). The pdf file will
1850+# contain links (just like the HTML output) instead of page references
1851+# This makes the output suitable for online browsing using a pdf viewer.
1852+
1853+PDF_HYPERLINKS = YES
1854+
1855+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
1856+# plain latex in the generated Makefile. Set this option to YES to get a
1857+# higher quality PDF documentation.
1858+
1859+USE_PDFLATEX = YES
1860+
1861+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
1862+# command to the generated LaTeX files. This will instruct LaTeX to keep
1863+# running if errors occur, instead of asking the user for help.
1864+# This option is also used when generating formulas in HTML.
1865+
1866+LATEX_BATCHMODE = NO
1867+
1868+# If LATEX_HIDE_INDICES is set to YES then doxygen will not
1869+# include the index chapters (such as File Index, Compound Index, etc.)
1870+# in the output.
1871+
1872+LATEX_HIDE_INDICES = NO
1873+
1874+# If LATEX_SOURCE_CODE is set to YES then doxygen will include
1875+# source code with syntax highlighting in the LaTeX output.
1876+# Note that which sources are shown also depends on other settings
1877+# such as SOURCE_BROWSER.
1878+
1879+LATEX_SOURCE_CODE = NO
1880+
1881+# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
1882+# bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See
1883+# http://en.wikipedia.org/wiki/BibTeX for more info.
1884+
1885+LATEX_BIB_STYLE = plain
1886+
1887+#---------------------------------------------------------------------------
1888+# configuration options related to the RTF output
1889+#---------------------------------------------------------------------------
1890+
1891+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
1892+# The RTF output is optimized for Word 97 and may not look very pretty with
1893+# other RTF readers or editors.
1894+
1895+GENERATE_RTF = NO
1896+
1897+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
1898+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
1899+# put in front of it. If left blank `rtf' will be used as the default path.
1900+
1901+RTF_OUTPUT = rtf
1902+
1903+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
1904+# RTF documents. This may be useful for small projects and may help to
1905+# save some trees in general.
1906+
1907+COMPACT_RTF = NO
1908+
1909+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
1910+# will contain hyperlink fields. The RTF file will
1911+# contain links (just like the HTML output) instead of page references.
1912+# This makes the output suitable for online browsing using WORD or other
1913+# programs which support those fields.
1914+# Note: wordpad (write) and others do not support links.
1915+
1916+RTF_HYPERLINKS = NO
1917+
1918+# Load style sheet definitions from file. Syntax is similar to doxygen's
1919+# config file, i.e. a series of assignments. You only have to provide
1920+# replacements, missing definitions are set to their default value.
1921+
1922+RTF_STYLESHEET_FILE =
1923+
1924+# Set optional variables used in the generation of an rtf document.
1925+# Syntax is similar to doxygen's config file.
1926+
1927+RTF_EXTENSIONS_FILE =
1928+
1929+#---------------------------------------------------------------------------
1930+# configuration options related to the man page output
1931+#---------------------------------------------------------------------------
1932+
1933+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
1934+# generate man pages
1935+
1936+GENERATE_MAN = NO
1937+
1938+# The MAN_OUTPUT tag is used to specify where the man pages will be put.
1939+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
1940+# put in front of it. If left blank `man' will be used as the default path.
1941+
1942+MAN_OUTPUT = man
1943+
1944+# The MAN_EXTENSION tag determines the extension that is added to
1945+# the generated man pages (default is the subroutine's section .3)
1946+
1947+MAN_EXTENSION = .3
1948+
1949+# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
1950+# then it will generate one additional man file for each entity
1951+# documented in the real man page(s). These additional files
1952+# only source the real man page, but without them the man command
1953+# would be unable to find the correct page. The default is NO.
1954+
1955+MAN_LINKS = NO
1956+
1957+#---------------------------------------------------------------------------
1958+# configuration options related to the XML output
1959+#---------------------------------------------------------------------------
1960+
1961+# If the GENERATE_XML tag is set to YES Doxygen will
1962+# generate an XML file that captures the structure of
1963+# the code including all documentation.
1964+
1965+GENERATE_XML = NO
1966+
1967+# The XML_OUTPUT tag is used to specify where the XML pages will be put.
1968+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
1969+# put in front of it. If left blank `xml' will be used as the default path.
1970+
1971+XML_OUTPUT = xml
1972+
1973+# The XML_SCHEMA tag can be used to specify an XML schema,
1974+# which can be used by a validating XML parser to check the
1975+# syntax of the XML files.
1976+
1977+XML_SCHEMA =
1978+
1979+# The XML_DTD tag can be used to specify an XML DTD,
1980+# which can be used by a validating XML parser to check the
1981+# syntax of the XML files.
1982+
1983+XML_DTD =
1984+
1985+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
1986+# dump the program listings (including syntax highlighting
1987+# and cross-referencing information) to the XML output. Note that
1988+# enabling this will significantly increase the size of the XML output.
1989+
1990+XML_PROGRAMLISTING = YES
1991+
1992+#---------------------------------------------------------------------------
1993+# configuration options for the AutoGen Definitions output
1994+#---------------------------------------------------------------------------
1995+
1996+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
1997+# generate an AutoGen Definitions (see autogen.sf.net) file
1998+# that captures the structure of the code including all
1999+# documentation. Note that this feature is still experimental
2000+# and incomplete at the moment.
2001+
2002+GENERATE_AUTOGEN_DEF = NO
2003+
2004+#---------------------------------------------------------------------------
2005+# configuration options related to the Perl module output
2006+#---------------------------------------------------------------------------
2007+
2008+# If the GENERATE_PERLMOD tag is set to YES Doxygen will
2009+# generate a Perl module file that captures the structure of
2010+# the code including all documentation. Note that this
2011+# feature is still experimental and incomplete at the
2012+# moment.
2013+
2014+GENERATE_PERLMOD = NO
2015+
2016+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
2017+# the necessary Makefile rules, Perl scripts and LaTeX code to be able
2018+# to generate PDF and DVI output from the Perl module output.
2019+
2020+PERLMOD_LATEX = NO
2021+
2022+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
2023+# nicely formatted so it can be parsed by a human reader.
2024+# This is useful
2025+# if you want to understand what is going on.
2026+# On the other hand, if this
2027+# tag is set to NO the size of the Perl module output will be much smaller
2028+# and Perl will parse it just the same.
2029+
2030+PERLMOD_PRETTY = YES
2031+
2032+# The names of the make variables in the generated doxyrules.make file
2033+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
2034+# This is useful so different doxyrules.make files included by the same
2035+# Makefile don't overwrite each other's variables.
2036+
2037+PERLMOD_MAKEVAR_PREFIX =
2038+
2039+#---------------------------------------------------------------------------
2040+# Configuration options related to the preprocessor
2041+#---------------------------------------------------------------------------
2042+
2043+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
2044+# evaluate all C-preprocessor directives found in the sources and include
2045+# files.
2046+
2047+ENABLE_PREPROCESSING = YES
2048+
2049+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
2050+# names in the source code. If set to NO (the default) only conditional
2051+# compilation will be performed. Macro expansion can be done in a controlled
2052+# way by setting EXPAND_ONLY_PREDEF to YES.
2053+
2054+MACRO_EXPANSION = NO
2055+
2056+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
2057+# then the macro expansion is limited to the macros specified with the
2058+# PREDEFINED and EXPAND_AS_DEFINED tags.
2059+
2060+EXPAND_ONLY_PREDEF = NO
2061+
2062+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
2063+# pointed to by INCLUDE_PATH will be searched when a #include is found.
2064+
2065+SEARCH_INCLUDES = YES
2066+
2067+# The INCLUDE_PATH tag can be used to specify one or more directories that
2068+# contain include files that are not input files but should be processed by
2069+# the preprocessor.
2070+
2071+INCLUDE_PATH =
2072+
2073+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
2074+# patterns (like *.h and *.hpp) to filter out the header-files in the
2075+# directories. If left blank, the patterns specified with FILE_PATTERNS will
2076+# be used.
2077+
2078+INCLUDE_FILE_PATTERNS =
2079+
2080+# The PREDEFINED tag can be used to specify one or more macro names that
2081+# are defined before the preprocessor is started (similar to the -D option of
2082+# gcc). The argument of the tag is a list of macros of the form: name
2083+# or name=definition (no spaces). If the definition and the = are
2084+# omitted =1 is assumed. To prevent a macro definition from being
2085+# undefined via #undef or recursively expanded use the := operator
2086+# instead of the = operator.
2087+
2088+PREDEFINED =
2089+
2090+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
2091+# this tag can be used to specify a list of macro names that should be expanded.
2092+# The macro definition that is found in the sources will be used.
2093+# Use the PREDEFINED tag if you want to use a different macro definition that
2094+# overrules the definition found in the source code.
2095+
2096+EXPAND_AS_DEFINED =
2097+
2098+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
2099+# doxygen's preprocessor will remove all references to function-like macros
2100+# that are alone on a line, have an all uppercase name, and do not end with a
2101+# semicolon, because these will confuse the parser if not removed.
2102+
2103+SKIP_FUNCTION_MACROS = YES
2104+
2105+#---------------------------------------------------------------------------
2106+# Configuration::additions related to external references
2107+#---------------------------------------------------------------------------
2108+
2109+# The TAGFILES option can be used to specify one or more tagfiles. For each
2110+# tag file the location of the external documentation should be added. The
2111+# format of a tag file without this location is as follows:
2112+#
2113+# TAGFILES = file1 file2 ...
2114+# Adding location for the tag files is done as follows:
2115+#
2116+# TAGFILES = file1=loc1 "file2 = loc2" ...
2117+# where "loc1" and "loc2" can be relative or absolute paths
2118+# or URLs. Note that each tag file must have a unique name (where the name does
2119+# NOT include the path). If a tag file is not located in the directory in which
2120+# doxygen is run, you must also specify the path to the tagfile here.
2121+
2122+TAGFILES =
2123+
2124+# When a file name is specified after GENERATE_TAGFILE, doxygen will create
2125+# a tag file that is based on the input files it reads.
2126+
2127+GENERATE_TAGFILE =
2128+
2129+# If the ALLEXTERNALS tag is set to YES all external classes will be listed
2130+# in the class index. If set to NO only the inherited external classes
2131+# will be listed.
2132+
2133+ALLEXTERNALS = NO
2134+
2135+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
2136+# in the modules index. If set to NO, only the current project's groups will
2137+# be listed.
2138+
2139+EXTERNAL_GROUPS = YES
2140+
2141+# The PERL_PATH should be the absolute path and name of the perl script
2142+# interpreter (i.e. the result of `which perl').
2143+
2144+PERL_PATH = /usr/bin/perl
2145+
2146+#---------------------------------------------------------------------------
2147+# Configuration options related to the dot tool
2148+#---------------------------------------------------------------------------
2149+
2150+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
2151+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
2152+# or super classes. Setting the tag to NO turns the diagrams off. Note that
2153+# this option also works with HAVE_DOT disabled, but it is recommended to
2154+# install and use dot, since it yields more powerful graphs.
2155+
2156+CLASS_DIAGRAMS = YES
2157+
2158+# You can define message sequence charts within doxygen comments using the \msc
2159+# command. Doxygen will then run the mscgen tool (see
2160+# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
2161+# documentation. The MSCGEN_PATH tag allows you to specify the directory where
2162+# the mscgen tool resides. If left empty the tool is assumed to be found in the
2163+# default search path.
2164+
2165+MSCGEN_PATH =
2166+
2167+# If set to YES, the inheritance and collaboration graphs will hide
2168+# inheritance and usage relations if the target is undocumented
2169+# or is not a class.
2170+
2171+HIDE_UNDOC_RELATIONS = NO
2172+
2173+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
2174+# available from the path. This tool is part of Graphviz, a graph visualization
2175+# toolkit from AT&T and Lucent Bell Labs. The other options in this section
2176+# have no effect if this option is set to NO (the default)
2177+
2178+HAVE_DOT = YES
2179+
2180+# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is
2181+# allowed to run in parallel. When set to 0 (the default) doxygen will
2182+# base this on the number of processors available in the system. You can set it
2183+# explicitly to a value larger than 0 to get control over the balance
2184+# between CPU load and processing speed.
2185+
2186+DOT_NUM_THREADS = 0
2187+
2188+# By default doxygen will use the Helvetica font for all dot files that
2189+# doxygen generates. When you want a differently looking font you can specify
2190+# the font name using DOT_FONTNAME. You need to make sure dot is able to find
2191+# the font, which can be done by putting it in a standard location or by setting
2192+# the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the
2193+# directory containing the font.
2194+
2195+DOT_FONTNAME = Helvetica
2196+
2197+# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
2198+# The default size is 10pt.
2199+
2200+DOT_FONTSIZE = 10
2201+
2202+# By default doxygen will tell dot to use the Helvetica font.
2203+# If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to
2204+# set the path where dot can find it.
2205+
2206+DOT_FONTPATH =
2207+
2208+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
2209+# will generate a graph for each documented class showing the direct and
2210+# indirect inheritance relations. Setting this tag to YES will force the
2211+# CLASS_DIAGRAMS tag to NO.
2212+
2213+CLASS_GRAPH = YES
2214+
2215+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
2216+# will generate a graph for each documented class showing the direct and
2217+# indirect implementation dependencies (inheritance, containment, and
2218+# class references variables) of the class with other documented classes.
2219+
2220+COLLABORATION_GRAPH = YES
2221+
2222+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
2223+# will generate a graph for groups, showing the direct groups dependencies
2224+
2225+GROUP_GRAPHS = YES
2226+
2227+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
2228+# collaboration diagrams in a style similar to the OMG's Unified Modeling
2229+# Language.
2230+
2231+UML_LOOK = YES
2232+
2233+# If the UML_LOOK tag is enabled, the fields and methods are shown inside
2234+# the class node. If there are many fields or methods and many nodes the
2235+# graph may become too big to be useful. The UML_LIMIT_NUM_FIELDS
2236+# threshold limits the number of items for each type to make the size more
2237+# managable. Set this to 0 for no limit. Note that the threshold may be
2238+# exceeded by 50% before the limit is enforced.
2239+
2240+UML_LIMIT_NUM_FIELDS = 10
2241+
2242+# If set to YES, the inheritance and collaboration graphs will show the
2243+# relations between templates and their instances.
2244+
2245+TEMPLATE_RELATIONS = NO
2246+
2247+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
2248+# tags are set to YES then doxygen will generate a graph for each documented
2249+# file showing the direct and indirect include dependencies of the file with
2250+# other documented files.
2251+
2252+INCLUDE_GRAPH = YES
2253+
2254+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
2255+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
2256+# documented header file showing the documented files that directly or
2257+# indirectly include this file.
2258+
2259+INCLUDED_BY_GRAPH = YES
2260+
2261+# If the CALL_GRAPH and HAVE_DOT options are set to YES then
2262+# doxygen will generate a call dependency graph for every global function
2263+# or class method. Note that enabling this option will significantly increase
2264+# the time of a run. So in most cases it will be better to enable call graphs
2265+# for selected functions only using the \callgraph command.
2266+
2267+CALL_GRAPH = YES
2268+
2269+# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
2270+# doxygen will generate a caller dependency graph for every global function
2271+# or class method. Note that enabling this option will significantly increase
2272+# the time of a run. So in most cases it will be better to enable caller
2273+# graphs for selected functions only using the \callergraph command.
2274+
2275+CALLER_GRAPH = NO
2276+
2277+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
2278+# will generate a graphical hierarchy of all classes instead of a textual one.
2279+
2280+GRAPHICAL_HIERARCHY = YES
2281+
2282+# If the DIRECTORY_GRAPH and HAVE_DOT tags are set to YES
2283+# then doxygen will show the dependencies a directory has on other directories
2284+# in a graphical way. The dependency relations are determined by the #include
2285+# relations between the files in the directories.
2286+
2287+DIRECTORY_GRAPH = YES
2288+
2289+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
2290+# generated by dot. Possible values are svg, png, jpg, or gif.
2291+# If left blank png will be used. If you choose svg you need to set
2292+# HTML_FILE_EXTENSION to xhtml in order to make the SVG files
2293+# visible in IE 9+ (other browsers do not have this requirement).
2294+
2295+DOT_IMAGE_FORMAT = png
2296+
2297+# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
2298+# enable generation of interactive SVG images that allow zooming and panning.
2299+# Note that this requires a modern browser other than Internet Explorer.
2300+# Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you
2301+# need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files
2302+# visible. Older versions of IE do not have SVG support.
2303+
2304+INTERACTIVE_SVG = YES
2305+
2306+# The tag DOT_PATH can be used to specify the path where the dot tool can be
2307+# found. If left blank, it is assumed the dot tool can be found in the path.
2308+
2309+DOT_PATH =
2310+
2311+# The DOTFILE_DIRS tag can be used to specify one or more directories that
2312+# contain dot files that are included in the documentation (see the
2313+# \dotfile command).
2314+
2315+DOTFILE_DIRS =
2316+
2317+# The MSCFILE_DIRS tag can be used to specify one or more directories that
2318+# contain msc files that are included in the documentation (see the
2319+# \mscfile command).
2320+
2321+MSCFILE_DIRS =
2322+
2323+# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
2324+# nodes that will be shown in the graph. If the number of nodes in a graph
2325+# becomes larger than this value, doxygen will truncate the graph, which is
2326+# visualized by representing a node as a red box. Note that doxygen if the
2327+# number of direct children of the root node in a graph is already larger than
2328+# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
2329+# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
2330+
2331+DOT_GRAPH_MAX_NODES = 50
2332+
2333+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
2334+# graphs generated by dot. A depth value of 3 means that only nodes reachable
2335+# from the root by following a path via at most 3 edges will be shown. Nodes
2336+# that lay further from the root node will be omitted. Note that setting this
2337+# option to 1 or 2 may greatly reduce the computation time needed for large
2338+# code bases. Also note that the size of a graph can be further restricted by
2339+# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
2340+
2341+MAX_DOT_GRAPH_DEPTH = 0
2342+
2343+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
2344+# background. This is disabled by default, because dot on Windows does not
2345+# seem to support this out of the box. Warning: Depending on the platform used,
2346+# enabling this option may lead to badly anti-aliased labels on the edges of
2347+# a graph (i.e. they become hard to read).
2348+
2349+DOT_TRANSPARENT = YES
2350+
2351+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
2352+# files in one run (i.e. multiple -o and -T options on the command line). This
2353+# makes dot run faster, but since only newer versions of dot (>1.8.10)
2354+# support this, this feature is disabled by default.
2355+
2356+DOT_MULTI_TARGETS = YES
2357+
2358+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
2359+# generate a legend page explaining the meaning of the various boxes and
2360+# arrows in the dot generated graphs.
2361+
2362+GENERATE_LEGEND = YES
2363+
2364+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
2365+# remove the intermediate dot files that are used to generate
2366+# the various graphs.
2367+
2368+DOT_CLEANUP = YES
2369
2370=== modified file 'include/CMakeLists.txt'
2371--- include/CMakeLists.txt 2013-04-10 14:42:09 +0000
2372+++ include/CMakeLists.txt 2013-06-14 14:53:26 +0000
2373@@ -1,4 +1,1 @@
2374-configure_file(config.h.in ${CMAKE_CURRENT_BINARY_DIR}/ubuntu/ui/config.h)
2375-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/ubuntu/ui/config.h DESTINATION include/ubuntu/ui)
2376-
2377-install(DIRECTORY ubuntu DESTINATION include)
2378+add_subdirectory(ubuntu)
2379
2380=== removed file 'include/config.h.in'
2381--- include/config.h.in 2013-04-10 15:31:33 +0000
2382+++ include/config.h.in 1970-01-01 00:00:00 +0000
2383@@ -1,24 +0,0 @@
2384-/*
2385- * Copyright © 2013 Canonical Ltd.
2386- *
2387- * This program is free software: you can redistribute it and/or modify
2388- * it under the terms of the GNU Lesser General Public License version 3 as
2389- * published by the Free Software Foundation.
2390- *
2391- * This program is distributed in the hope that it will be useful,
2392- * but WITHOUT ANY WARRANTY; without even the implied warranty of
2393- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2394- * GNU Lesser General Public License for more details.
2395- *
2396- * You should have received a copy of the GNU Lesser General Public License
2397- * along with this program. If not, see <http://www.gnu.org/licenses/>.
2398- *
2399- * Authored by: Michael Terry <michael.terry@canonical.com>
2400- */
2401-
2402-#ifndef UBUNTU_UI_CONFIG_H_
2403-#define UBUNTU_UI_CONFIG_H_
2404-
2405-#define UBUNTU_USE_GLES @USE_GLES@
2406-
2407-#endif // UBUNTU_UI_CONFIG_H_
2408
2409=== added file 'include/ubuntu/CMakeLists.txt'
2410--- include/ubuntu/CMakeLists.txt 1970-01-01 00:00:00 +0000
2411+++ include/ubuntu/CMakeLists.txt 2013-06-14 14:53:26 +0000
2412@@ -0,0 +1,2 @@
2413+add_subdirectory(application)
2414+add_subdirectory(ui)
2415\ No newline at end of file
2416
2417=== added file 'include/ubuntu/application/CMakeLists.txt'
2418--- include/ubuntu/application/CMakeLists.txt 1970-01-01 00:00:00 +0000
2419+++ include/ubuntu/application/CMakeLists.txt 2013-06-14 14:53:26 +0000
2420@@ -0,0 +1,19 @@
2421+set(
2422+ UBUNTU_APPLICATION_HEADERS
2423+ archive.h
2424+ description.h
2425+ id.h
2426+ instance.h
2427+ lifecycle_delegate.h
2428+ operation_mode.h
2429+ options.h
2430+ ubuntu_application_gps.h
2431+)
2432+
2433+install(
2434+ FILES ${UBUNTU_APPLICATION_HEADERS}
2435+ DESTINATION include/ubuntu-${UBUNTU_PLATFORM_API_VERSION_MAJOR}/application
2436+)
2437+
2438+add_subdirectory(sensors)
2439+add_subdirectory(ui)
2440\ No newline at end of file
2441
2442=== added file 'include/ubuntu/application/sensors/CMakeLists.txt'
2443--- include/ubuntu/application/sensors/CMakeLists.txt 1970-01-01 00:00:00 +0000
2444+++ include/ubuntu/application/sensors/CMakeLists.txt 2013-06-14 14:53:26 +0000
2445@@ -0,0 +1,14 @@
2446+set(
2447+ UBUNTU_APPLICATION_SENSORS_HEADERS
2448+ accelerometer.h
2449+ light.h
2450+ proximity.h
2451+ ubuntu_application_sensors.h
2452+)
2453+
2454+install(
2455+ FILES ${UBUNTU_APPLICATION_SENSORS_HEADERS}
2456+ DESTINATION include/ubuntu-${UBUNTU_PLATFORM_API_VERSION_MAJOR}/application/sensors
2457+)
2458+
2459+add_subdirectory(event)
2460\ No newline at end of file
2461
2462=== added file 'include/ubuntu/application/sensors/event/CMakeLists.txt'
2463--- include/ubuntu/application/sensors/event/CMakeLists.txt 1970-01-01 00:00:00 +0000
2464+++ include/ubuntu/application/sensors/event/CMakeLists.txt 2013-06-14 14:53:26 +0000
2465@@ -0,0 +1,11 @@
2466+set(
2467+ UBUNTU_APPLICATION_SENSORS_EVENT_HEADERS
2468+ accelerometer.h
2469+ light.h
2470+ proximity.h
2471+)
2472+
2473+install(
2474+ FILES ${UBUNTU_APPLICATION_SENSORS_EVENT_HEADERS}
2475+ DESTINATION include/ubuntu-${UBUNTU_PLATFORM_API_VERSION_MAJOR}/application/sensors/event
2476+)
2477\ No newline at end of file
2478
2479=== added file 'include/ubuntu/application/ui/CMakeLists.txt'
2480--- include/ubuntu/application/ui/CMakeLists.txt 1970-01-01 00:00:00 +0000
2481+++ include/ubuntu/application/ui/CMakeLists.txt 2013-06-14 14:53:26 +0000
2482@@ -0,0 +1,25 @@
2483+configure_file(
2484+ config.h.in
2485+ ${CMAKE_CURRENT_BINARY_DIR}/config.h @ONLY)
2486+
2487+set(
2488+ UBUNTU_APPLICATION_UI_HEADERS
2489+ ${CMAKE_CURRENT_BINARY_DIR}/config.h
2490+ clipboard.h
2491+ display.h
2492+ form_factor.h
2493+ options.h
2494+ session.h
2495+ stage.h
2496+ window.h
2497+ window_parent.h
2498+ window_properties.h
2499+ window_type.h
2500+)
2501+
2502+install(
2503+ FILES ${UBUNTU_APPLICATION_UI_HEADERS}
2504+ DESTINATION include/ubuntu-${UBUNTU_PLATFORM_API_VERSION_MAJOR}/application/ui
2505+)
2506+
2507+add_subdirectory(input)
2508\ No newline at end of file
2509
2510=== added file 'include/ubuntu/application/ui/config.h.in'
2511--- include/ubuntu/application/ui/config.h.in 1970-01-01 00:00:00 +0000
2512+++ include/ubuntu/application/ui/config.h.in 2013-06-14 14:53:26 +0000
2513@@ -0,0 +1,27 @@
2514+/*
2515+ * Copyright © 2013 Canonical Ltd.
2516+ *
2517+ * This program is free software: you can redistribute it and/or modify
2518+ * it under the terms of the GNU Lesser General Public License version 3 as
2519+ * published by the Free Software Foundation.
2520+ *
2521+ * This program is distributed in the hope that it will be useful,
2522+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
2523+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2524+ * GNU Lesser General Public License for more details.
2525+ *
2526+ * You should have received a copy of the GNU Lesser General Public License
2527+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
2528+ *
2529+ * Authored by: Thomas Voß <thomas.voss@canonical.com>
2530+ */
2531+
2532+#ifndef UBUNTU_APPLICATION_UI_CONFIG_H_
2533+#define UBUNTU_APPLICATION_UI_CONFIG_H_
2534+#ifndef __ANDROID__
2535+#define UBUNTU_PLATFORM_API_HAVE_GLES2 @UBUNTU_PLATFORM_API_HAVE_GLES2@
2536+#else
2537+#define UBUNTU_PLATFORM_API_HAVE_GLES2 1
2538+#endif // __ANDROID__
2539+
2540+#endif // UBUNTU_APPLICATION_UI_CONFIG_H_
2541
2542=== added file 'include/ubuntu/application/ui/input/CMakeLists.txt'
2543--- include/ubuntu/application/ui/input/CMakeLists.txt 1970-01-01 00:00:00 +0000
2544+++ include/ubuntu/application/ui/input/CMakeLists.txt 2013-06-14 14:53:26 +0000
2545@@ -0,0 +1,9 @@
2546+set(
2547+ UBUNTU_APPLICATION_UI_INPUT_HEADERS
2548+ event.h
2549+)
2550+
2551+install(
2552+ FILES ${UBUNTU_APPLICATION_UI_INPUT_HEADERS}
2553+ DESTINATION include/ubuntu-${UBUNTU_PLATFORM_API_VERSION_MAJOR}/application/ui/input
2554+)
2555\ No newline at end of file
2556
2557=== added directory 'include/ubuntu/hardware'
2558=== renamed file 'include/ubuntu/application/ubuntu_application_gps.h' => 'include/ubuntu/hardware/gps.h'
2559--- include/ubuntu/application/ubuntu_application_gps.h 2013-05-27 21:49:05 +0000
2560+++ include/ubuntu/hardware/gps.h 2013-06-14 14:53:26 +0000
2561@@ -14,9 +14,10 @@
2562 * along with this program. If not, see <http://www.gnu.org/licenses/>.
2563 *
2564 * Authored by: Daniel d'Andrada <daniel.dandrada@canonical.com>
2565+ * Authored by: Thomas Voß <thomas.voss@canonical.com>
2566 */
2567-#ifndef UBUNTU_APPLICATION_GPS_H_
2568-#define UBUNTU_APPLICATION_GPS_H_
2569+#ifndef UBUNTU_HARDWARE_GPS_H_
2570+#define UBUNTU_HARDWARE_GPS_H_
2571
2572 #include <stdint.h>
2573 #include <stddef.h>
2574@@ -25,149 +26,170 @@
2575 extern "C" {
2576 #endif
2577
2578-/** \defgroup gps_access Functions and types for accessing location services. */
2579+/** \defgroup gps_access Functions and types for accessing GPS H/W. */
2580+
2581+/**
2582+ * Maximum number of SVs for u_hardware_gps_sv_status_callback().
2583+ * \ingroup gps_access
2584+ */
2585+#define U_HARDWARE_GPS_MAX_SVS 32
2586
2587 /**
2588- * Maximum number of SVs for gps_sv_status_callback().
2589+ * The status of the GPS hardware.
2590 * \ingroup gps_access
2591 */
2592-#define UBUNTU_GPS_MAX_SVS 32
2593-
2594 enum
2595 {
2596 /** GPS status unknown. */
2597- UBUNTU_GPS_STATUS_NONE = 0,
2598+ U_HARDWARE_GPS_STATUS_NONE = 0,
2599 /** GPS has begun navigating. */
2600- UBUNTU_GPS_STATUS_SESSION_BEGIN = 1,
2601+ U_HARDWARE_GPS_STATUS_SESSION_BEGIN = 1,
2602 /** GPS has stopped navigating. */
2603- UBUNTU_GPS_STATUS_SESSION_END = 2,
2604+ U_HARDWARE_GPS_STATUS_SESSION_END = 2,
2605 /** GPS has powered on but is not navigating. */
2606- UBUNTU_GPS_STATUS_ENGINE_ON = 3,
2607+ U_HARDWARE_GPS_STATUS_ENGINE_ON = 3,
2608 /** GPS is powered off. */
2609- UBUNTU_GPS_STATUS_ENGINE_OFF = 4
2610+ U_HARDWARE_GPS_STATUS_ENGINE_OFF = 4
2611 };
2612
2613-/**
2614+/**
2615 * Flags for the gps_set_capabilities callback.
2616 * \ingroup gps_access
2617- * GPS HAL schedules fixes for UBUNTU_GPS_POSITION_RECURRENCE_PERIODIC mode.
2618+ * GPS HAL schedules fixes for U_HARDWARE_GPS_POSITION_RECURRENCE_PERIODIC mode.
2619 * If this is not set, then the framework will use 1000ms for min_interval
2620 * and will start and call start() and stop() to schedule the GPS.
2621 */
2622-#define UBUNTU_GPS_CAPABILITY_SCHEDULING 0x0000001
2623+#define U_HARDWARE_GPS_CAPABILITY_SCHEDULING 0x0000001
2624 /** GPS supports MS-Based AGPS mode */
2625-#define UBUNTU_GPS_CAPABILITY_MSB 0x0000002
2626+#define U_HARDWARE_GPS_CAPABILITY_MSB 0x0000002
2627 /** GPS supports MS-Assisted AGPS mode */
2628-#define UBUNTU_GPS_CAPABILITY_MSA 0x0000004
2629+#define U_HARDWARE_GPS_CAPABILITY_MSA 0x0000004
2630 /** GPS supports single-shot fixes */
2631-#define UBUNTU_GPS_CAPABILITY_SINGLE_SHOT 0x0000008
2632+#define U_HARDWARE_GPS_CAPABILITY_SINGLE_SHOT 0x0000008
2633 /** GPS supports on demand time injection */
2634-#define UBUNTU_GPS_CAPABILITY_ON_DEMAND_TIME 0x0000010
2635+#define U_HARDWARE_GPS_CAPABILITY_ON_DEMAND_TIME 0x0000010
2636
2637 /**
2638- * UbuntuGpsNiNotifyFlags constants
2639+ * UHardwareGpsNiNotifyFlags constants
2640 * \ingroup gps_access
2641 */
2642-typedef uint32_t UbuntuGpsNiNotifyFlags;
2643+typedef uint32_t UHardwareGpsNiNotifyFlags;
2644 /** NI requires notification */
2645-#define UBUNTU_GPS_NI_NEED_NOTIFY 0x0001
2646+#define U_HARDWARE_GPS_NI_NEED_NOTIFY 0x0001
2647 /** NI requires verification */
2648-#define UBUNTU_GPS_NI_NEED_VERIFY 0x0002
2649+#define U_HARDWARE_GPS_NI_NEED_VERIFY 0x0002
2650 /** NI requires privacy override, no notification/minimal trace */
2651-#define UBUNTU_GPS_NI_PRIVACY_OVERRIDE 0x0004
2652+#define U_HARDWARE_GPS_NI_PRIVACY_OVERRIDE 0x0004
2653
2654 /**
2655 * GPS NI responses, used to define the response in
2656 * NI structures
2657 * \ingroup gps_access
2658 */
2659-typedef int UbuntuGpsUserResponseType;
2660+typedef int UHardwareGpsUserResponseType;
2661+
2662 enum
2663 {
2664- UBUNTU_UBUNTU_GPS_NI_RESPONSE_ACCEPT = 1,
2665- UBUNTU_UBUNTU_GPS_NI_RESPONSE_DENY = 2,
2666- UBUNTU_UBUNTU_GPS_NI_RESPONSE_NORESP = 3
2667+ U_HARDWARE_GPS_NI_RESPONSE_ACCEPT = 1,
2668+ U_HARDWARE_GPS_NI_RESPONSE_DENY = 2,
2669+ U_HARDWARE_GPS_NI_RESPONSE_NORESP = 3
2670 };
2671
2672 enum
2673 {
2674- UBUNTU_GPS_NI_TYPE_VOICE = 1,
2675- UBUNTU_GPS_NI_TYPE_UMTS_SUPL = 2,
2676- UBUNTU_GPS_NI_TYPE_UMTS_CTRL_PLANE = 3
2677+ U_HARDWARE_GPS_NI_TYPE_VOICE = 1,
2678+ U_HARDWARE_GPS_NI_TYPE_UMTS_SUPL = 2,
2679+ U_HARDWARE_GPS_NI_TYPE_UMTS_CTRL_PLANE = 3
2680 };
2681
2682 /**
2683 * String length constants
2684 * \ingroup gps_access
2685 */
2686-#define UBUNTU_GPS_NI_SHORT_STRING_MAXLEN 256
2687-#define UBUNTU_GPS_NI_LONG_STRING_MAXLEN 2048
2688+#define U_HARDWARE_GPS_NI_SHORT_STRING_MAXLEN 256
2689+#define U_HARDWARE_GPS_NI_LONG_STRING_MAXLEN 2048
2690
2691 /**
2692 * NI data encoding scheme
2693 * \ingroup gps_access
2694 */
2695-typedef int UbuntuGpsNiEncodingType;
2696-enum
2697-{
2698- UBUNTU_GPS_ENC_NONE = 0,
2699- UBUNTU_GPS_ENC_SUPL_GSM_DEFAULT = 1,
2700- UBUNTU_GPS_ENC_SUPL_UTF8 = 2,
2701- UBUNTU_GPS_ENC_SUPL_UCS2 = 3,
2702- UBUNTU_GPS_ENC_UNKNOWN = -1
2703-};
2704-
2705-enum
2706-{
2707- UBUNTU_AGPS_TYPE_SUPL = 1,
2708- UBUNTU_AGPS_TYPE_C2K = 2
2709-};
2710-
2711-
2712+typedef int UHardwareGpsNiEncodingType;
2713+
2714+/**
2715+ * Known encoding types for Ni responses
2716+ * \ingroup gps_access
2717+ */
2718+enum
2719+{
2720+ U_HARDWARE_GPS_ENC_NONE = 0,
2721+ U_HARDWARE_GPS_ENC_SUPL_GSM_DEFAULT = 1,
2722+ U_HARDWARE_GPS_ENC_SUPL_UTF8 = 2,
2723+ U_HARDWARE_GPS_ENC_SUPL_UCS2 = 3,
2724+ U_HARDWARE_GPS_ENC_UNKNOWN = -1
2725+};
2726+
2727+/**
2728+ * Known AGPS types
2729+ * \ingroup gps_access
2730+ */
2731+enum
2732+{
2733+ U_HARDWARE_GPS_AGPS_TYPE_SUPL = 1,
2734+ U_HARDWARE_GPS_AGPS_TYPE_C2K = 2
2735+};
2736+
2737+/**
2738+ * Known positioning modes
2739+ * \ingroup gps_access
2740+ */
2741 enum
2742 {
2743 /** Mode for running GPS standalone (no assistance). */
2744- UBUNTU_GPS_POSITION_MODE_STANDALONE = 0,
2745+ U_HARDWARE_GPS_POSITION_MODE_STANDALONE = 0,
2746 /** AGPS MS-Based mode. */
2747- UBUNTU_GPS_POSITION_MODE_MS_BASED = 1,
2748+ U_HARDWARE_GPS_POSITION_MODE_MS_BASED = 1,
2749 /** AGPS MS-Assisted mode. */
2750- UBUNTU_GPS_POSITION_MODE_MS_ASSISTED = 2
2751+ U_HARDWARE_GPS_POSITION_MODE_MS_ASSISTED = 2
2752 };
2753
2754+/**
2755+ * Known positioning modes
2756+ * \ingroup gps_access
2757+ */
2758 enum
2759 {
2760 /** Receive GPS fixes on a recurring basis at a specified period. */
2761- UBUNTU_GPS_POSITION_RECURRENCE_PERIODIC = 0,
2762+ U_HARDWARE_GPS_POSITION_RECURRENCE_PERIODIC = 0,
2763 /** Request a single shot GPS fix. */
2764- UBUNTU_GPS_POSITION_RECURRENCE_SINGLE = 1
2765+ U_HARDWARE_GPS_POSITION_RECURRENCE_SINGLE = 1
2766 };
2767
2768 enum
2769 {
2770 /** GPS requests data connection for AGPS. */
2771- UBUNTU_GPS_REQUEST_AGPS_DATA_CONN = 1,
2772+ U_HARDWARE_GPS_REQUEST_AGPS_DATA_CONN = 1,
2773 /** GPS releases the AGPS data connection. */
2774- UBUNTU_GPS_RELEASE_AGPS_DATA_CONN = 2,
2775+ U_HARDWARE_GPS_RELEASE_AGPS_DATA_CONN = 2,
2776 /** AGPS data connection initiated */
2777- UBUNTU_GPS_AGPS_DATA_CONNECTED = 3,
2778+ U_HARDWARE_GPS_AGPS_DATA_CONNECTED = 3,
2779 /** AGPS data connection completed */
2780- UBUNTU_GPS_AGPS_DATA_CONN_DONE = 4,
2781+ U_HARDWARE_GPS_AGPS_DATA_CONN_DONE = 4,
2782 /** AGPS data connection failed */
2783- UBUNTU_GPS_AGPS_DATA_CONN_FAILED = 5
2784+ U_HARDWARE_GPS_AGPS_DATA_CONN_FAILED = 5
2785 };
2786
2787-/** UbuntuGpsLocation has valid latitude and longitude. */
2788-#define UBUNTU_GPS_LOCATION_HAS_LAT_LONG 0x0001
2789-/** UbuntuGpsLocation has valid altitude. */
2790-#define UBUNTU_GPS_LOCATION_HAS_ALTITUDE 0x0002
2791-/** UbuntuGpsLocation has valid speed. */
2792-#define UBUNTU_GPS_LOCATION_HAS_SPEED 0x0004
2793-/** UbuntuGpsLocation has valid bearing. */
2794-#define UBUNTU_GPS_LOCATION_HAS_BEARING 0x0008
2795-/** UbuntuGpsLocation has valid accuracy. */
2796-#define UBUNTU_GPS_LOCATION_HAS_ACCURACY 0x0010
2797+/** UHardwareGpsLocation has valid latitude and longitude. */
2798+#define U_HARDWARE_GPS_LOCATION_HAS_LAT_LONG 0x0001
2799+/** UHardwareGpsLocation has valid altitude. */
2800+#define U_HARDWARE_GPS_LOCATION_HAS_ALTITUDE 0x0002
2801+/** UHardwareGpsLocation has valid speed. */
2802+#define U_HARDWARE_GPS_LOCATION_HAS_SPEED 0x0004
2803+/** UHardwareGpsLocation has valid bearing. */
2804+#define U_HARDWARE_GPS_LOCATION_HAS_BEARING 0x0008
2805+/** UHardwareGpsLocation has valid accuracy. */
2806+#define U_HARDWARE_GPS_LOCATION_HAS_ACCURACY 0x0010
2807
2808-typedef struct UbuntuGps_* UbuntuGps;
2809+typedef struct UHardwareGps_* UHardwareGps;
2810
2811 /**
2812 * Models a location as reported by the GPS HAL.
2813@@ -175,234 +197,264 @@
2814 */
2815 typedef struct
2816 {
2817- /** set to sizeof(UbuntuGpsLocation) */
2818- size_t size;
2819- /** Contains UBUNTU_GPS_LOCATION_* flags bits. */
2820- uint16_t flags;
2821+ /** set to sizeof(UHardwareGpsLocation) */
2822+ size_t size;
2823+ /** Contains U_HARDWARE_GPS_LOCATION_* flags bits. */
2824+ uint16_t flags;
2825 /** Represents latitude in degrees. */
2826- double latitude;
2827+ double latitude;
2828 /** Represents longitude in degrees. */
2829- double longitude;
2830+ double longitude;
2831 /** Represents altitude in meters above the WGS 84 reference
2832 * ellipsoid. */
2833- double altitude;
2834+ double altitude;
2835 /** Represents speed in meters per second. */
2836- float speed;
2837+ float speed;
2838 /** Represents heading in degrees. */
2839- float bearing;
2840+ float bearing;
2841 /** Represents expected accuracy in meters. */
2842- float accuracy;
2843+ float accuracy;
2844 /** Timestamp for the location fix, in milliseconds since January 1, 1970 */
2845- int64_t timestamp;
2846-} UbuntuGpsLocation;
2847+ int64_t timestamp;
2848+} UHardwareGpsLocation;
2849
2850-/**
2851- * Represents space vehicle (satellite) information.
2852+/**
2853+ * Represents space vehicle (satellite) information.
2854 * \ingroup gps_access
2855 */
2856 typedef struct {
2857- /** set to sizeof(UbuntuGpsSvInfo) */
2858- size_t size;
2859+ /** set to sizeof(UHardwareGpsSvInfo) */
2860+ size_t size;
2861 /** Pseudo-random number for the SV. */
2862- int prn;
2863+ int prn;
2864 /** Signal to noise ratio. */
2865- float snr;
2866+ float snr;
2867 /** Elevation of SV in degrees. */
2868- float elevation;
2869+ float elevation;
2870 /** Azimuth of SV in degrees. */
2871- float azimuth;
2872-} UbuntuGpsSvInfo;
2873+ float azimuth;
2874+} UHardwareGpsSvInfo;
2875
2876-/**
2877- * Represents SV (Space Vehicle) status.
2878+/**
2879+ * Represents SV (Space Vehicle) status.
2880 * \ingroup gps_access
2881 */
2882 typedef struct {
2883 /** set to sizeof(GpsSvStatus) */
2884- size_t size;
2885+ size_t size;
2886
2887 /** Number of SVs currently visible. */
2888- int num_svs;
2889+ int num_svs;
2890
2891 /** Contains an array of SV information. */
2892- UbuntuGpsSvInfo sv_list[UBUNTU_GPS_MAX_SVS];
2893+ UHardwareGpsSvInfo sv_list[U_HARDWARE_GPS_MAX_SVS];
2894
2895 /** Represents a bit mask indicating which SVs
2896 * have ephemeris data.
2897 */
2898- uint32_t ephemeris_mask;
2899+ uint32_t ephemeris_mask;
2900
2901 /** Represents a bit mask indicating which SVs
2902 * have almanac data.
2903 */
2904- uint32_t almanac_mask;
2905+ uint32_t almanac_mask;
2906
2907 /**
2908 * Represents a bit mask indicating which SVs
2909 * were used for computing the most recent position fix.
2910 */
2911- uint32_t used_in_fix_mask;
2912-} UbuntuGpsSvStatus;
2913+ uint32_t used_in_fix_mask;
2914+} UHardwareGpsSvStatus;
2915
2916-/**
2917- * Represents the status of AGPS.
2918+/**
2919+ * Represents the status of AGPS.
2920 * \ingroup gps_access
2921 */
2922 typedef struct {
2923- /** set to sizeof(UbuntuAgpsStatus) */
2924+ /** set to sizeof(UHardwareGpsAGpsStatus) */
2925 size_t size;
2926
2927 uint16_t type;
2928 uint16_t status;
2929 uint32_t ipaddr;
2930-} UbuntuAgpsStatus;
2931+} UHardwareGpsAGpsStatus;
2932
2933-/**
2934- * Represents an NI request
2935+/**
2936+ * Represents an NI request
2937 * \ingroup gps_access
2938 */
2939 typedef struct {
2940- /** set to sizeof(UbuntuGpsNiNotification) */
2941- size_t size;
2942+ /** set to sizeof(UHardwareGpsNiNotification) */
2943+ size_t size;
2944
2945 /**
2946 * An ID generated by HAL to associate NI notifications and UI
2947 * responses
2948 */
2949- int notification_id;
2950+ int notification_id;
2951
2952 /**
2953 * An NI type used to distinguish different categories of NI
2954- * events, such as UBUNTU_GPS_NI_TYPE_VOICE, UBUNTU_GPS_NI_TYPE_UMTS_SUPL, ...
2955+ * events, such as U_HARDWARE_GPS_NI_TYPE_VOICE, U_HARDWARE_GPS_NI_TYPE_UMTS_SUPL, ...
2956 */
2957- uint32_t ni_type;
2958+ uint32_t ni_type;
2959
2960 /**
2961- * Notification/verification options, combinations of UbuntuGpsNiNotifyFlags constants
2962+ * Notification/verification options, combinations of UHardwareGpsNiNotifyFlags constants
2963 */
2964- UbuntuGpsNiNotifyFlags notify_flags;
2965+ UHardwareGpsNiNotifyFlags notify_flags;
2966
2967 /**
2968 * Timeout period to wait for user response.
2969 * Set to 0 for no time out limit.
2970 */
2971- int timeout;
2972+ int timeout;
2973
2974 /**
2975 * Default response when time out.
2976 */
2977- UbuntuGpsUserResponseType default_response;
2978+ UHardwareGpsUserResponseType default_response;
2979
2980 /**
2981 * Requestor ID
2982 */
2983- char requestor_id[UBUNTU_GPS_NI_SHORT_STRING_MAXLEN];
2984+ char requestor_id[U_HARDWARE_GPS_NI_SHORT_STRING_MAXLEN];
2985
2986 /**
2987 * Notification message. It can also be used to store client_id in some cases
2988 */
2989- char text[UBUNTU_GPS_NI_LONG_STRING_MAXLEN];
2990-
2991- /**
2992- * Client name decoding scheme
2993- */
2994- UbuntuGpsNiEncodingType requestor_id_encoding;
2995-
2996- /**
2997- * Client name decoding scheme
2998- */
2999- UbuntuGpsNiEncodingType text_encoding;
3000+ char text[U_HARDWARE_GPS_NI_LONG_STRING_MAXLEN];
3001+
3002+ /**
3003+ * Client name decoding scheme
3004+ */
3005+ UHardwareGpsNiEncodingType requestor_id_encoding;
3006+
3007+ /**
3008+ * Client name decoding scheme
3009+ */
3010+ UHardwareGpsNiEncodingType text_encoding;
3011
3012 /**
3013 * A pointer to extra data. Format:
3014 * key_1 = value_1
3015 * key_2 = value_2
3016 */
3017- char extras[UBUNTU_GPS_NI_LONG_STRING_MAXLEN];
3018-
3019-} UbuntuGpsNiNotification;
3020-
3021-typedef void (* UbuntuGpsLocationCallback)(UbuntuGpsLocation* location, void* context);
3022-typedef void (* UbuntuGpsStatusCallback)(uint16_t status, void* context);
3023-typedef void (* UbuntuGpsSvStatusCallback)(UbuntuGpsSvStatus* sv_info, void* context);
3024-typedef void (* UbuntuGpsNmeaCallback)(int64_t timestamp, const char* nmea, int length, void* context);
3025-typedef void (* UbuntuGpsSetCapabilities)(uint32_t capabilities, void* context);
3026-typedef void (* UbuntuGpsRequestUtcTime)(void* context);
3027+ char extras[U_HARDWARE_GPS_NI_LONG_STRING_MAXLEN];
3028+
3029+} UHardwareGpsNiNotification;
3030+
3031+typedef void (*UHardwareGpsLocationCallback)(UHardwareGpsLocation *location, void *context);
3032+typedef void (*UHardwareGpsStatusCallback)(uint16_t status, void *context);
3033+typedef void (*UHardwareGpsSvStatusCallback)(UHardwareGpsSvStatus *sv_info, void *context);
3034+typedef void (*UHardwareGpsNmeaCallback)(int64_t timestamp, const char *nmea, int length, void *context);
3035+typedef void (*UHardwareGpsSetCapabilities)(uint32_t capabilities, void *context);
3036+typedef void (*UHardwareGpsRequestUtcTime)(void *context);
3037
3038 /** Callback to request the client to download XTRA data.
3039 * The client should download XTRA data and inject it by calling inject_xtra_data().
3040 */
3041-typedef void (* UbuntuGpsXtraDownloadRequest)(void* context);
3042+typedef void (*UHardwareGpsXtraDownloadRequest)(void *context);
3043
3044 /** Callback with AGPS status information.
3045 */
3046-typedef void (* UbuntuAgpsStatusCallback)(UbuntuAgpsStatus* status, void* context);
3047+typedef void (*UHardwareGpsAGpsStatusCallback)(UHardwareGpsAGpsStatus *status, void *context);
3048
3049 /** Callback with NI notification.
3050 */
3051-typedef void (*UbuntuGpsNiNotifyCallback)(UbuntuGpsNiNotification *notification, void* context);
3052+typedef void (*UHardwareGpsNiNotifyCallback)(UHardwareGpsNiNotification *notification, void *context);
3053
3054 /*
3055 Callback for AGPS RIL (Radio Interface Library) set id
3056 */
3057-typedef void (*UbuntuAgpsRilRequestSetId)(uint32_t flags, void* context);
3058-typedef void (*UbuntuAgpsRilRequestRefLoc)(uint32_t flags, void* context);
3059+typedef void (*UHardwareGpsAGpsRilRequestSetId)(uint32_t flags, void *context);
3060+typedef void (*UHardwareGpsAGpsRilRequestRefLoc)(uint32_t flags, void *context);
3061
3062 typedef struct
3063 {
3064
3065- UbuntuGpsLocationCallback location_cb;
3066- UbuntuGpsStatusCallback status_cb;
3067- UbuntuGpsSvStatusCallback sv_status_cb;
3068- UbuntuGpsNmeaCallback nmea_cb;
3069- UbuntuGpsSetCapabilities set_capabilities_cb;
3070- UbuntuGpsRequestUtcTime request_utc_time_cb;
3071-
3072- UbuntuGpsXtraDownloadRequest xtra_download_request_cb;
3073-
3074- UbuntuAgpsStatusCallback agps_status_cb;
3075-
3076- UbuntuGpsNiNotifyCallback gps_ni_notify_cb;
3077-
3078- UbuntuAgpsRilRequestSetId request_setid_cb;
3079- UbuntuAgpsRilRequestRefLoc request_refloc_cb;
3080+ UHardwareGpsLocationCallback location_cb;
3081+ UHardwareGpsStatusCallback status_cb;
3082+ UHardwareGpsSvStatusCallback sv_status_cb;
3083+ UHardwareGpsNmeaCallback nmea_cb;
3084+ UHardwareGpsSetCapabilities set_capabilities_cb;
3085+ UHardwareGpsRequestUtcTime request_utc_time_cb;
3086+
3087+ UHardwareGpsXtraDownloadRequest xtra_download_request_cb;
3088+
3089+ UHardwareGpsAGpsStatusCallback agps_status_cb;
3090+
3091+ UHardwareGpsNiNotifyCallback gps_ni_notify_cb;
3092+
3093+ UHardwareGpsAGpsRilRequestSetId request_setid_cb;
3094+ UHardwareGpsAGpsRilRequestRefLoc request_refloc_cb;
3095
3096 void* context;
3097-} UbuntuGpsParams;
3098+} UHardwareGpsParams;
3099
3100 /*
3101 You must create only one instance per process/application.
3102 */
3103-UbuntuGps ubuntu_gps_new(UbuntuGpsParams* params);
3104-void ubuntu_gps_delete(UbuntuGps handle);
3105-
3106-bool ubuntu_gps_start(UbuntuGps self);
3107-bool ubuntu_gps_stop(UbuntuGps self);
3108+UHardwareGps
3109+u_hardware_gps_new(UHardwareGpsParams *params);
3110+
3111+void
3112+u_hardware_gps_delete(UHardwareGps handle);
3113+
3114+bool
3115+u_hardware_gps_start(UHardwareGps self);
3116+
3117+bool
3118+u_hardware_gps_stop(UHardwareGps self);
3119
3120 /*
3121 \param time NTP time, in milliseconds since Jan 1st 1970.
3122 \param time_reference time from the internal clock at the moment that NTP time was taken.
3123 \param uncertainty possible deviation in the time supplied (uncertainty) in milliseconds.
3124 */
3125-void ubuntu_gps_inject_time(UbuntuGps self, int64_t time, int64_t time_reference, int uncertainty);
3126-
3127-void ubuntu_gps_inject_location(UbuntuGps self, double latitude, double longitude, float accuracy);
3128-void ubuntu_gps_delete_aiding_data(UbuntuGps self, uint16_t flags);
3129+void
3130+u_hardware_gps_inject_time(
3131+ UHardwareGps self,
3132+ int64_t time,
3133+ int64_t time_reference,
3134+ int uncertainty);
3135+
3136+void
3137+u_hardware_gps_inject_location(
3138+ UHardwareGps self,
3139+ double latitude,
3140+ double longitude,
3141+ float accuracy);
3142+
3143+void
3144+u_hardware_gps_delete_aiding_data(
3145+ UHardwareGps self,
3146+ uint16_t flags);
3147
3148 /*
3149- \param mode One of the UBUNTU_GPS_POSITION_MODE_* values
3150- \param recurrence One of the UBUNTU_GPS_POSITION_RECURRENCE_* values
3151+ \param mode One of the U_HARDWARE_GPS_POSITION_MODE_* values
3152+ \param recurrence One of the U_HARDWARE_GPS_POSITION_RECURRENCE_* values
3153 \param min_interval represents the time between fixes in milliseconds.
3154 \param preferred_accuracy The requested fix accuracy in meters. Can be zero.
3155 \param preferred_time The requested time to first fix in milliseconds. Can be zero.
3156 */
3157-bool ubuntu_gps_set_position_mode(UbuntuGps self, uint32_t mode, uint32_t recurrence,
3158- uint32_t min_interval, uint32_t preferred_accuracy,
3159- uint32_t preferred_time);
3160-void ubuntu_gps_inject_xtra_data(UbuntuGps self, char* data, int length);
3161+bool
3162+u_hardware_gps_set_position_mode(
3163+ UHardwareGps self,
3164+ uint32_t mode,
3165+ uint32_t recurrence,
3166+ uint32_t min_interval,
3167+ uint32_t preferred_accuracy,
3168+ uint32_t preferred_time);
3169+
3170+void
3171+u_hardware_gps_inject_xtra_data(
3172+ UHardwareGps self,
3173+ char* data,
3174+ int length);
3175
3176 #ifdef __cplusplus
3177 }
3178 #endif
3179
3180-#endif // UBUNTU_APPLICATION_GPS_H_
3181+#endif // UBUNTU_HARDWARE_GPS_H_
3182
3183=== added file 'include/ubuntu/ui/CMakeLists.txt'
3184--- include/ubuntu/ui/CMakeLists.txt 1970-01-01 00:00:00 +0000
3185+++ include/ubuntu/ui/CMakeLists.txt 2013-06-14 14:53:26 +0000
3186@@ -0,0 +1,4 @@
3187+install(
3188+ FILES ubuntu_ui_session_service.h
3189+ DESTINATION include/ubuntu-${UBUNTU_PLATFORM_API_VERSION_MAJOR}/ui
3190+)
3191\ No newline at end of file
3192
3193=== modified file 'include/ubuntu/ui/ubuntu_ui_session_service.h'
3194--- include/ubuntu/ui/ubuntu_ui_session_service.h 2013-06-07 01:08:41 +0000
3195+++ include/ubuntu/ui/ubuntu_ui_session_service.h 2013-06-14 14:53:26 +0000
3196@@ -19,14 +19,7 @@
3197 #ifndef UBUNTU_UI_SESSION_SERVICE_C_API_H_
3198 #define UBUNTU_UI_SESSION_SERVICE_C_API_H_
3199
3200-#include "ubuntu/ui/config.h"
3201-
3202-#if UBUNTU_USE_GLES
3203-#include <GLES2/gl2.h>
3204-#else
3205-#include <GL/gl.h>
3206-#include <GL/glext.h>
3207-#endif
3208+#include <stdint.h>
3209
3210 #ifdef __cplusplus
3211 extern "C" {
3212@@ -106,14 +99,6 @@
3213 ubuntu_ui_session_install_session_lifecycle_observer(
3214 ubuntu_ui_session_lifecycle_observer* observer);
3215
3216- int /* boolean */
3217- ubuntu_ui_session_preview_provider_update_session_preview_texture_with_id(
3218- ubuntu_ui_session_preview_provider pp,
3219- int id,
3220- GLuint texture,
3221- unsigned int* width,
3222- unsigned int* height);
3223-
3224 void
3225 ubuntu_ui_session_unfocus_running_sessions();
3226
3227
3228=== modified file 'src/android/CMakeLists.txt'
3229--- src/android/CMakeLists.txt 2013-04-10 14:42:09 +0000
3230+++ src/android/CMakeLists.txt 2013-06-14 14:53:26 +0000
3231@@ -1,28 +1,51 @@
3232-set(SOURCES ubuntu_application_api.cpp)
3233-
3234 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --std=c++0x")
3235
3236 add_library(
3237- ubuntu_application_api SHARED
3238- ${SOURCES}
3239+ ubuntu_application_api SHARED
3240+ ubuntu_application_api.cpp
3241+)
3242+
3243+add_library(
3244+ ubuntu_platform_hardware_api SHARED
3245+ ubuntu_platform_hardware_api.cpp
3246 )
3247
3248 include_directories(
3249- ${CMAKE_BINARY_DIR}/include
3250-)
3251-
3252-target_link_libraries(
3253- ubuntu_application_api
3254- hybris_ics
3255-)
3256-
3257-set_target_properties(
3258- ubuntu_application_api
3259- PROPERTIES
3260- VERSION 1.0
3261- SOVERSION 1
3262-)
3263-
3264-install(TARGETS ubuntu_application_api ${INSTALL_TARGETS_DEFAULT_ARGS})
3265+ ${CMAKE_BINARY_DIR}/include
3266+)
3267+
3268+target_link_libraries(
3269+ ubuntu_application_api
3270+ hybris_ics
3271+)
3272+
3273+target_link_libraries(
3274+ ubuntu_platform_hardware_api
3275+ hybris_ics
3276+)
3277+
3278+set_target_properties(
3279+ ubuntu_application_api
3280+ PROPERTIES
3281+ VERSION ${UBUNTU_PLATFORM_API_VERSION_MAJOR}.${UBUNTU_PLATFORM_API_VERSION_MINOR}.${UBUNTU_PLATFORM_API_VERSION_PATCH}
3282+ SOVERSION ${UBUNTU_PLATFORM_API_VERSION_MAJOR}
3283+)
3284+
3285+set_target_properties(
3286+ ubuntu_platform_hardware_api
3287+ PROPERTIES
3288+ VERSION ${UBUNTU_PLATFORM_API_VERSION_MAJOR}.${UBUNTU_PLATFORM_API_VERSION_MINOR}.${UBUNTU_PLATFORM_API_VERSION_PATCH}
3289+ SOVERSION ${UBUNTU_PLATFORM_API_VERSION_MAJOR}
3290+)
3291+
3292+install(
3293+ TARGETS ubuntu_application_api
3294+ ${INSTALL_TARGETS_DEFAULT_ARGS}
3295+)
3296+
3297+install(
3298+ TARGETS ubuntu_platform_hardware_api
3299+ ${INSTALL_TARGETS_DEFAULT_ARGS}
3300+)
3301
3302 add_subdirectory(tests/)
3303
3304=== added file 'src/android/bridge.h'
3305--- src/android/bridge.h 1970-01-01 00:00:00 +0000
3306+++ src/android/bridge.h 2013-06-14 14:53:26 +0000
3307@@ -0,0 +1,182 @@
3308+#ifndef BRIDGE_H_
3309+#define BRIDGE_H_
3310+
3311+#include <assert.h>
3312+#include <dlfcn.h>
3313+#include <stddef.h>
3314+
3315+#ifdef __cplusplus
3316+extern "C" {
3317+#endif
3318+
3319+extern void *android_dlopen(const char *filename, int flag);
3320+extern void *android_dlsym(void *handle, const char *symbol);
3321+
3322+#ifdef __cplusplus
3323+}
3324+#endif
3325+
3326+namespace internal
3327+{
3328+
3329+struct ToApplication
3330+{
3331+ static const char* path()
3332+ {
3333+ return "/system/lib/libubuntu_application_api.so";
3334+ }
3335+};
3336+
3337+struct ToHardware
3338+{
3339+ static const char* path()
3340+ {
3341+ return "/system/lib/libubuntu_platform_hardware_api.so";
3342+ }
3343+};
3344+
3345+template<typename Scope = ToApplication>
3346+class Bridge
3347+{
3348+ public:
3349+ static Bridge<Scope>& instance()
3350+ {
3351+ static Bridge<Scope> bridge;
3352+ return bridge;
3353+ }
3354+
3355+ void* resolve_symbol(const char* symbol) const
3356+ {
3357+ return android_dlsym(lib_handle, symbol);
3358+ }
3359+
3360+ protected:
3361+ Bridge() : lib_handle(android_dlopen(Scope::path(), RTLD_LAZY))
3362+ {
3363+ assert(lib_handle && "Error loading ubuntu_application_api");
3364+ }
3365+
3366+ ~Bridge()
3367+ {
3368+ // TODO android_dlclose(libcamera_handle);
3369+ }
3370+
3371+ void* lib_handle;
3372+};
3373+
3374+}
3375+
3376+#ifdef __cplusplus
3377+extern "C" {
3378+#endif
3379+
3380+/**********************************************************/
3381+/*********** Implementation starts here *******************/
3382+/**********************************************************/
3383+
3384+#define DLSYM(fptr, sym) if (*(fptr) == NULL) { *((void**)fptr) = (void *) internal::Bridge<>::instance().resolve_symbol(sym); }
3385+
3386+#define IMPLEMENT_FUNCTION0(return_type, symbol) \
3387+ return_type symbol() \
3388+ { \
3389+ static return_type (*f)() = NULL; \
3390+ DLSYM(&f, #symbol); \
3391+ return f();}
3392+
3393+#define IMPLEMENT_VOID_FUNCTION0(symbol) \
3394+ void symbol() \
3395+ { \
3396+ static void (*f)() = NULL; \
3397+ DLSYM(&f, #symbol); \
3398+ f();}
3399+
3400+#define IMPLEMENT_FUNCTION1(return_type, symbol, arg1) \
3401+ return_type symbol(arg1 _1) \
3402+ { \
3403+ static return_type (*f)(arg1) = NULL; \
3404+ DLSYM(&f, #symbol); \
3405+ return f(_1); }
3406+
3407+#define IMPLEMENT_SF_FUNCTION1(return_type, symbol, arg1) \
3408+ return_type symbol(arg1 _1) \
3409+ { \
3410+ static return_type (*f)(arg1) __attribute__((pcs("aapcs"))) = NULL; \
3411+ DLSYM(&f, #symbol); \
3412+ return f(_1); }
3413+
3414+
3415+#define IMPLEMENT_VOID_FUNCTION1(symbol, arg1) \
3416+ void symbol(arg1 _1) \
3417+ { \
3418+ static void (*f)(arg1) = NULL; \
3419+ DLSYM(&f, #symbol); \
3420+ f(_1); }
3421+
3422+#define IMPLEMENT_FUNCTION2(return_type, symbol, arg1, arg2) \
3423+ return_type symbol(arg1 _1, arg2 _2) \
3424+ { \
3425+ static return_type (*f)(arg1, arg2) = NULL; \
3426+ DLSYM(&f, #symbol); \
3427+ return f(_1, _2); }
3428+
3429+#define IMPLEMENT_VOID_FUNCTION2(symbol, arg1, arg2) \
3430+ void symbol(arg1 _1, arg2 _2) \
3431+ { \
3432+ static void (*f)(arg1, arg2) = NULL; \
3433+ DLSYM(&f, #symbol); \
3434+ f(_1, _2); }
3435+
3436+#define IMPLEMENT_FUNCTION3(return_type, symbol, arg1, arg2, arg3) \
3437+ return_type symbol(arg1 _1, arg2 _2, arg3 _3) \
3438+ { \
3439+ static return_type (*f)(arg1, arg2, arg3) = NULL; \
3440+ DLSYM(&f, #symbol); \
3441+ return f(_1, _2, _3); }
3442+
3443+#define IMPLEMENT_VOID_FUNCTION3(symbol, arg1, arg2, arg3) \
3444+ void symbol(arg1 _1, arg2 _2, arg3 _3) \
3445+ { \
3446+ static void (*f)(arg1, arg2, arg3) = NULL; \
3447+ DLSYM(&f, #symbol); \
3448+ f(_1, _2, _3); }
3449+
3450+#define IMPLEMENT_VOID_FUNCTION4(symbol, arg1, arg2, arg3, arg4) \
3451+ void symbol(arg1 _1, arg2 _2, arg3 _3, arg4 _4) \
3452+ { \
3453+ static void (*f)(arg1, arg2, arg3, arg4) = NULL; \
3454+ DLSYM(&f, #symbol); \
3455+ f(_1, _2, _3, _4); }
3456+
3457+#define IMPLEMENT_FUNCTION4(return_type, symbol, arg1, arg2, arg3, arg4) \
3458+ return_type symbol(arg1 _1, arg2 _2, arg3 _3, arg4 _4) \
3459+ { \
3460+ static return_type (*f)(arg1, arg2, arg3, arg4) = NULL; \
3461+ DLSYM(&f, #symbol); \
3462+ return f(_1, _2, _3, _4); }
3463+
3464+#define IMPLEMENT_FUNCTION6(return_type, symbol, arg1, arg2, arg3, arg4, arg5, arg6) \
3465+ return_type symbol(arg1 _1, arg2 _2, arg3 _3, arg4 _4, arg5 _5, arg6 _6) \
3466+ { \
3467+ static return_type (*f)(arg1, arg2, arg3, arg4, arg5, arg6) = NULL; \
3468+ DLSYM(&f, #symbol); \
3469+ return f(_1, _2, _3, _4, _5, _6); }
3470+
3471+#define IMPLEMENT_VOID_FUNCTION7(symbol, arg1, arg2, arg3, arg4, arg5, arg6, arg7) \
3472+ void symbol(arg1 _1, arg2 _2, arg3 _3, arg4 _4, arg5 _5, arg6 _6, arg7 _7) \
3473+ { \
3474+ static void (*f)(arg1, arg2, arg3, arg4, arg5, arg6, arg7) = NULL; \
3475+ DLSYM(&f, #symbol); \
3476+ f(_1, _2, _3, _4, _5, _6, _7); }
3477+
3478+#define IMPLEMENT_VOID_FUNCTION8(symbol, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) \
3479+ void symbol(arg1 _1, arg2 _2, arg3 _3, arg4 _4, arg5 _5, arg6 _6, arg7 _7, arg8 _8) \
3480+ { \
3481+ static void (*f)(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) = NULL; \
3482+ DLSYM(&f, #symbol); \
3483+ f(_1, _2, _3, _4, _5, _6, _7, _8); }
3484+
3485+#ifdef __cplusplus
3486+}
3487+#endif
3488+
3489+#endif // BRIDGE_H_
3490
3491=== modified file 'src/android/tests/CMakeLists.txt'
3492--- src/android/tests/CMakeLists.txt 2013-02-05 06:58:40 +0000
3493+++ src/android/tests/CMakeLists.txt 2013-06-14 14:53:26 +0000
3494@@ -4,7 +4,7 @@
3495 target_link_libraries(test_android_ubuntu_app_api ubuntu_application_api EGL GLESv2)
3496
3497 add_executable(test_android_gps_api test_gps_api.cpp)
3498-target_link_libraries(test_android_gps_api ubuntu_application_api)
3499+target_link_libraries(test_android_gps_api ubuntu_platform_hardware_api)
3500
3501 add_executable(test_android_ubuntu_app_api_multiple_surfaces test_multiple_surfaces_event_delivery.cpp)
3502 target_link_libraries(test_android_ubuntu_app_api_multiple_surfaces ubuntu_application_api EGL GLESv2)
3503
3504=== modified file 'src/android/tests/test_gps_api.cpp'
3505--- src/android/tests/test_gps_api.cpp 2013-02-05 08:01:14 +0000
3506+++ src/android/tests/test_gps_api.cpp 2013-06-14 14:53:26 +0000
3507@@ -15,7 +15,7 @@
3508 *
3509 * Authored by: Daniel d'Andrada <daniel.dandrada@canonical.com>
3510 */
3511-#include <ubuntu/application/ubuntu_application_gps.h>
3512+#include <ubuntu/hardware/gps.h>
3513
3514 #include <ctime>
3515 #include <signal.h>
3516@@ -23,6 +23,8 @@
3517 #include <string.h>
3518 #include <unistd.h>
3519
3520+namespace ubuntu
3521+{
3522 class GPSTest
3523 {
3524 public:
3525@@ -32,10 +34,10 @@
3526 bool stop();
3527 void inject_time();
3528
3529- UbuntuGps ubuntu_gps;
3530+ UHardwareGps u_hardware_gps;
3531 };
3532
3533-void gps_location_cb(UbuntuGpsLocation* location, void* context)
3534+void gps_location_cb(UHardwareGpsLocation* location, void* context)
3535 {
3536 printf("gps_location_cb() called.\n");
3537 }
3538@@ -44,26 +46,26 @@
3539 {
3540 switch(status)
3541 {
3542- case UBUNTU_GPS_STATUS_NONE:
3543+ case U_HARDWARE_GPS_STATUS_NONE:
3544 printf("status: None\n");
3545 break;
3546- case UBUNTU_GPS_STATUS_SESSION_BEGIN:
3547+ case U_HARDWARE_GPS_STATUS_SESSION_BEGIN:
3548 printf("status: Session Begin\n");
3549 break;
3550- case UBUNTU_GPS_STATUS_SESSION_END:
3551+ case U_HARDWARE_GPS_STATUS_SESSION_END:
3552 printf("status: Session End\n");
3553 break;
3554- case UBUNTU_GPS_STATUS_ENGINE_ON:
3555+ case U_HARDWARE_GPS_STATUS_ENGINE_ON:
3556 printf("status: Engine On\n");
3557 break;
3558- case UBUNTU_GPS_STATUS_ENGINE_OFF:
3559+ case U_HARDWARE_GPS_STATUS_ENGINE_OFF:
3560 printf("status: Engine Off\n");
3561 default:
3562 break;
3563 };
3564 }
3565
3566-void gps_sb_status_cb(UbuntuGpsSvStatus* sv_info, void* context)
3567+void gps_sb_status_cb(UHardwareGpsSvStatus* sv_info, void* context)
3568 {
3569 printf("gps_sb_status_cb() called, listing %d space vehicles\n", sv_info->num_svs);
3570 }
3571@@ -80,15 +82,15 @@
3572 {
3573 printf("gps_set_cabapilities_cb() -");
3574
3575- if (capabilities & UBUNTU_GPS_CAPABILITY_SCHEDULING)
3576+ if (capabilities & U_HARDWARE_GPS_CAPABILITY_SCHEDULING)
3577 printf(" scheduling");
3578- if (capabilities & UBUNTU_GPS_CAPABILITY_MSB)
3579+ if (capabilities & U_HARDWARE_GPS_CAPABILITY_MSB)
3580 printf(" MSB");
3581- if (capabilities & UBUNTU_GPS_CAPABILITY_MSA)
3582+ if (capabilities & U_HARDWARE_GPS_CAPABILITY_MSA)
3583 printf(" MSA");
3584- if (capabilities & UBUNTU_GPS_CAPABILITY_SINGLE_SHOT)
3585+ if (capabilities & U_HARDWARE_GPS_CAPABILITY_SINGLE_SHOT)
3586 printf(" 'single shot'");
3587- if (capabilities & UBUNTU_GPS_CAPABILITY_ON_DEMAND_TIME)
3588+ if (capabilities & U_HARDWARE_GPS_CAPABILITY_ON_DEMAND_TIME)
3589 printf(" 'on demand time'");
3590
3591 printf("\n");
3592@@ -105,31 +107,31 @@
3593 printf("gps_xtra_download_request_cb() called.\n");
3594 }
3595
3596-void agps_status_cb(UbuntuAgpsStatus* status, void* context)
3597+void agps_status_cb(UHardwareGpsAGpsStatus* status, void* context)
3598 {
3599 printf("agps status -");
3600
3601- if (status->type == UBUNTU_AGPS_TYPE_SUPL)
3602+ if (status->type == U_HARDWARE_GPS_AGPS_TYPE_SUPL)
3603 printf(" SUPL");
3604 else
3605 printf(" C2K");
3606
3607 switch (status->status)
3608 {
3609- case UBUNTU_GPS_REQUEST_AGPS_DATA_CONN:
3610+ case U_HARDWARE_GPS_REQUEST_AGPS_DATA_CONN:
3611 printf(", request AGPS data connection");
3612 break;
3613- case UBUNTU_GPS_RELEASE_AGPS_DATA_CONN:
3614+ case U_HARDWARE_GPS_RELEASE_AGPS_DATA_CONN:
3615 printf(", release AGPS data connection");
3616 break;
3617- case UBUNTU_GPS_AGPS_DATA_CONNECTED:
3618+ case U_HARDWARE_GPS_AGPS_DATA_CONNECTED:
3619 printf(", request AGPS data connected");
3620 break;
3621- case UBUNTU_GPS_AGPS_DATA_CONN_DONE:
3622+ case U_HARDWARE_GPS_AGPS_DATA_CONN_DONE:
3623 printf(", AGPS data connection done");
3624 break;
3625 default:
3626- case UBUNTU_GPS_AGPS_DATA_CONN_FAILED:
3627+ case U_HARDWARE_GPS_AGPS_DATA_CONN_FAILED:
3628 printf(", AGPS data connection failed");
3629 break;
3630 }
3631@@ -137,7 +139,7 @@
3632 printf(" ipaddr=%u\n", status->ipaddr);
3633 }
3634
3635-void gps_notify_cb(UbuntuGpsNiNotification *notification, void* context)
3636+void gps_notify_cb(UHardwareGpsNiNotification *notification, void* context)
3637 {
3638 printf("gps_notify_cb() called.\n");
3639 }
3640@@ -153,14 +155,14 @@
3641 }
3642
3643 GPSTest::GPSTest()
3644- : ubuntu_gps(NULL)
3645+ : u_hardware_gps(NULL)
3646 {
3647 }
3648
3649 GPSTest::~GPSTest()
3650 {
3651- if (ubuntu_gps)
3652- ubuntu_gps_delete(ubuntu_gps);
3653+ if (u_hardware_gps)
3654+ u_hardware_gps_delete(u_hardware_gps);
3655 }
3656
3657 void GPSTest::inject_time()
3658@@ -168,7 +170,7 @@
3659 // A real implementation would inject time from some NTP server.
3660 time_t t = time(0);
3661 int64_t time_millis = (int64_t)t * (int64_t)1000;
3662- ubuntu_gps_inject_time(ubuntu_gps,
3663+ u_hardware_gps_inject_time(u_hardware_gps,
3664 time_millis /*NTP time would go here*/,
3665 time_millis /*internal time when that NTP time was taken*/,
3666 10 /* possible deviation, in milliseconds*/);
3667@@ -176,7 +178,7 @@
3668
3669 bool GPSTest::init_and_start()
3670 {
3671- UbuntuGpsParams gps_params;
3672+ UHardwareGpsParams gps_params;
3673
3674 gps_params.location_cb = gps_location_cb;
3675 gps_params.status_cb = gps_status_cb;
3676@@ -191,14 +193,14 @@
3677 gps_params.request_refloc_cb = agps_ril_request_refloc_cb;
3678 gps_params.context = this;
3679
3680- UbuntuGps ubuntu_gps = ubuntu_gps_new(&gps_params);
3681- if (!ubuntu_gps)
3682+ UHardwareGps u_hardware_gps = u_hardware_gps_new(&gps_params);
3683+ if (!u_hardware_gps)
3684 {
3685 printf("GPS creation failed!\n");
3686 return false;
3687 }
3688
3689- bool ok = ubuntu_gps_start(ubuntu_gps);
3690+ bool ok = u_hardware_gps_start(u_hardware_gps);
3691 if (!ok)
3692 {
3693 printf("GPS start up failed!\n");
3694@@ -210,12 +212,13 @@
3695
3696 bool GPSTest::stop()
3697 {
3698- bool ok = ubuntu_gps_stop(ubuntu_gps);
3699+ bool ok = u_hardware_gps_stop(u_hardware_gps);
3700 if (!ok)
3701 printf("failed when stopping GPS!\n");
3702
3703 return ok;
3704 }
3705+}
3706
3707 void wait_for_sigint()
3708 {
3709@@ -232,7 +235,7 @@
3710 int main(int argc, char** argv)
3711 {
3712 int return_value = 0;
3713- GPSTest test;
3714+ ubuntu::GPSTest test;
3715
3716 if (!test.init_and_start())
3717 return 1;
3718
3719=== modified file 'src/android/ubuntu_application_api.cpp'
3720--- src/android/ubuntu_application_api.cpp 2013-06-07 01:08:41 +0000
3721+++ src/android/ubuntu_application_api.cpp 2013-06-14 14:53:26 +0000
3722@@ -19,7 +19,6 @@
3723
3724 #include <private/application/ui/ubuntu_application_ui.h>
3725
3726-#include <ubuntu/application/ubuntu_application_gps.h>
3727 #include <ubuntu/ui/ubuntu_ui_session_service.h>
3728
3729 // C APIs
3730@@ -33,161 +32,7 @@
3731 #include <ubuntu/application/sensors/proximity.h>
3732 #include <ubuntu/application/sensors/light.h>
3733
3734-#include <assert.h>
3735-#include <dlfcn.h>
3736-#include <stddef.h>
3737-
3738-#ifdef __cplusplus
3739-extern "C" {
3740-#endif
3741-
3742-extern void *android_dlopen(const char *filename, int flag);
3743-extern void *android_dlsym(void *handle, const char *symbol);
3744-
3745-#ifdef __cplusplus
3746-}
3747-#endif
3748-
3749-namespace
3750-{
3751-
3752-struct Bridge
3753-{
3754- static const char* path_to_library()
3755- {
3756- return "/system/lib/libubuntu_application_api.so";
3757- }
3758-
3759- static Bridge& instance() { static Bridge bridge; return bridge; }
3760-
3761- Bridge() : lib_handle(android_dlopen(path_to_library(), RTLD_LAZY))
3762- {
3763- assert(lib_handle && "Error loading ubuntu_application_api");
3764- }
3765-
3766- ~Bridge()
3767- {
3768- // TODO android_dlclose(libcamera_handle);
3769- }
3770-
3771- void* resolve_symbol(const char* symbol) const
3772- {
3773- return android_dlsym(lib_handle, symbol);
3774- }
3775-
3776- void* lib_handle;
3777-};
3778-
3779-}
3780-
3781-#ifdef __cplusplus
3782-extern "C" {
3783-#endif
3784-
3785-/**********************************************************/
3786-/*********** Implementation starts here *******************/
3787-/**********************************************************/
3788-
3789-#define DLSYM(fptr, sym) if (*(fptr) == NULL) { *((void**)fptr) = (void *) Bridge::instance().resolve_symbol(sym); }
3790-
3791-#define IMPLEMENT_FUNCTION0(return_type, symbol) \
3792- return_type symbol() \
3793- { \
3794- static return_type (*f)() = NULL; \
3795- DLSYM(&f, #symbol); \
3796- return f();}
3797-
3798-#define IMPLEMENT_VOID_FUNCTION0(symbol) \
3799- void symbol() \
3800- { \
3801- static void (*f)() = NULL; \
3802- DLSYM(&f, #symbol); \
3803- f();}
3804-
3805-#define IMPLEMENT_FUNCTION1(return_type, symbol, arg1) \
3806- return_type symbol(arg1 _1) \
3807- { \
3808- static return_type (*f)(arg1) = NULL; \
3809- DLSYM(&f, #symbol); \
3810- return f(_1); }
3811-
3812-#define IMPLEMENT_SF_FUNCTION1(return_type, symbol, arg1) \
3813- return_type symbol(arg1 _1) \
3814- { \
3815- static return_type (*f)(arg1) __attribute__((pcs("aapcs"))) = NULL; \
3816- DLSYM(&f, #symbol); \
3817- return f(_1); }
3818-
3819-
3820-#define IMPLEMENT_VOID_FUNCTION1(symbol, arg1) \
3821- void symbol(arg1 _1) \
3822- { \
3823- static void (*f)(arg1) = NULL; \
3824- DLSYM(&f, #symbol); \
3825- f(_1); }
3826-
3827-#define IMPLEMENT_FUNCTION2(return_type, symbol, arg1, arg2) \
3828- return_type symbol(arg1 _1, arg2 _2) \
3829- { \
3830- static return_type (*f)(arg1, arg2) = NULL; \
3831- DLSYM(&f, #symbol); \
3832- return f(_1, _2); }
3833-
3834-#define IMPLEMENT_VOID_FUNCTION2(symbol, arg1, arg2) \
3835- void symbol(arg1 _1, arg2 _2) \
3836- { \
3837- static void (*f)(arg1, arg2) = NULL; \
3838- DLSYM(&f, #symbol); \
3839- f(_1, _2); }
3840-
3841-#define IMPLEMENT_FUNCTION3(return_type, symbol, arg1, arg2, arg3) \
3842- return_type symbol(arg1 _1, arg2 _2, arg3 _3) \
3843- { \
3844- static return_type (*f)(arg1, arg2, arg3) = NULL; \
3845- DLSYM(&f, #symbol); \
3846- return f(_1, _2, _3); }
3847-
3848-#define IMPLEMENT_VOID_FUNCTION3(symbol, arg1, arg2, arg3) \
3849- void symbol(arg1 _1, arg2 _2, arg3 _3) \
3850- { \
3851- static void (*f)(arg1, arg2, arg3) = NULL; \
3852- DLSYM(&f, #symbol); \
3853- f(_1, _2, _3); }
3854-
3855-#define IMPLEMENT_VOID_FUNCTION4(symbol, arg1, arg2, arg3, arg4) \
3856- void symbol(arg1 _1, arg2 _2, arg3 _3, arg4 _4) \
3857- { \
3858- static void (*f)(arg1, arg2, arg3, arg4) = NULL; \
3859- DLSYM(&f, #symbol); \
3860- f(_1, _2, _3, _4); }
3861-
3862-#define IMPLEMENT_FUNCTION4(return_type, symbol, arg1, arg2, arg3, arg4) \
3863- return_type symbol(arg1 _1, arg2 _2, arg3 _3, arg4 _4) \
3864- { \
3865- static return_type (*f)(arg1, arg2, arg3, arg4) = NULL; \
3866- DLSYM(&f, #symbol); \
3867- return f(_1, _2, _3, _4); }
3868-
3869-#define IMPLEMENT_FUNCTION6(return_type, symbol, arg1, arg2, arg3, arg4, arg5, arg6) \
3870- return_type symbol(arg1 _1, arg2 _2, arg3 _3, arg4 _4, arg5 _5, arg6 _6) \
3871- { \
3872- static return_type (*f)(arg1, arg2, arg3, arg4, arg5, arg6) = NULL; \
3873- DLSYM(&f, #symbol); \
3874- return f(_1, _2, _3, _4, _5, _6); }
3875-
3876-#define IMPLEMENT_VOID_FUNCTION7(symbol, arg1, arg2, arg3, arg4, arg5, arg6, arg7) \
3877- void symbol(arg1 _1, arg2 _2, arg3 _3, arg4 _4, arg5 _5, arg6 _6, arg7 _7) \
3878- { \
3879- static void (*f)(arg1, arg2, arg3, arg4, arg5, arg6, arg7) = NULL; \
3880- DLSYM(&f, #symbol); \
3881- f(_1, _2, _3, _4, _5, _6, _7); }
3882-
3883-#define IMPLEMENT_VOID_FUNCTION8(symbol, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) \
3884- void symbol(arg1 _1, arg2 _2, arg3 _3, arg4 _4, arg5 _5, arg6 _6, arg7 _7, arg8 _8) \
3885- { \
3886- static void (*f)(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) = NULL; \
3887- DLSYM(&f, #symbol); \
3888- f(_1, _2, _3, _4, _5, _6, _7, _8); }
3889+#include "bridge.h"
3890
3891 // Session helpers
3892 IMPLEMENT_FUNCTION0(UAUiSessionProperties*, ua_ui_session_properties_new);
3893@@ -322,6 +167,7 @@
3894 IMPLEMENT_VOID_FUNCTION0(ubuntu_ui_report_osk_invisible);
3895 IMPLEMENT_VOID_FUNCTION0(ubuntu_ui_report_notification_visible);
3896 IMPLEMENT_VOID_FUNCTION0(ubuntu_ui_report_notification_invisible);
3897+<<<<<<< TREE
3898 IMPLEMENT_VOID_FUNCTION1(ubuntu_ui_install_task_controller, ubuntu_ui_task_controller*);
3899
3900 // GPS
3901@@ -339,3 +185,5 @@
3902 #ifdef __cplusplus
3903 }
3904 #endif
3905+=======
3906+>>>>>>> MERGE-SOURCE
3907
3908=== added file 'src/android/ubuntu_platform_hardware_api.cpp'
3909--- src/android/ubuntu_platform_hardware_api.cpp 1970-01-01 00:00:00 +0000
3910+++ src/android/ubuntu_platform_hardware_api.cpp 2013-06-14 14:53:26 +0000
3911@@ -0,0 +1,78 @@
3912+/*
3913+ * Copyright (C) 2012 Canonical Ltd
3914+ *
3915+ * This program is free software: you can redistribute it and/or modify
3916+ * it under the terms of the GNU Lesser General Public License version 3 as
3917+ * published by the Free Software Foundation.
3918+ *
3919+ * This program is distributed in the hope that it will be useful,
3920+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
3921+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3922+ * GNU Lesser General Public License for more details.
3923+ *
3924+ * You should have received a copy of the GNU Lesser General Public License
3925+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
3926+ *
3927+ * Authored by: Thomas Voss <thomas.voss@canonical.com>
3928+ * Ricardo Mendoza <ricardo.mendoza@canonical.com>
3929+ */
3930+
3931+// C APIs
3932+#include <ubuntu/hardware/gps.h>
3933+
3934+#include "bridge.h"
3935+
3936+// Hardware - GPS
3937+IMPLEMENT_FUNCTION1(
3938+UHardwareGps,
3939+u_hardware_gps_new,
3940+UHardwareGpsParams*);
3941+
3942+IMPLEMENT_VOID_FUNCTION1(
3943+u_hardware_gps_delete,
3944+UHardwareGps);
3945+
3946+IMPLEMENT_FUNCTION1(
3947+bool,
3948+u_hardware_gps_start,
3949+UHardwareGps);
3950+
3951+IMPLEMENT_FUNCTION1(
3952+bool,
3953+u_hardware_gps_stop,
3954+UHardwareGps);
3955+
3956+IMPLEMENT_VOID_FUNCTION4(
3957+u_hardware_gps_inject_time,
3958+UHardwareGps,
3959+int64_t,
3960+int64_t,
3961+int);
3962+
3963+IMPLEMENT_VOID_FUNCTION4(
3964+u_hardware_gps_inject_location,
3965+UHardwareGps,
3966+double,
3967+double,
3968+float);
3969+
3970+IMPLEMENT_VOID_FUNCTION2(
3971+u_hardware_gps_delete_aiding_data,
3972+UHardwareGps,
3973+uint16_t);
3974+
3975+IMPLEMENT_FUNCTION6(
3976+bool,
3977+u_hardware_gps_set_position_mode,
3978+UHardwareGps,
3979+uint32_t,
3980+uint32_t,
3981+uint32_t,
3982+uint32_t,
3983+uint32_t);
3984+
3985+IMPLEMENT_VOID_FUNCTION3(
3986+u_hardware_gps_inject_xtra_data,
3987+UHardwareGps,
3988+char*,
3989+int);

Subscribers

People subscribed via source and target branches