blob: 2c95583d20367513463763ff8f1761af2c0fa1a3 [file] [log] [blame]
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -07001#include "include/dvr/dvr_api.h"
2
3#include <errno.h>
Corey Tabaka2251d822017-04-20 16:04:07 -07004#include <utils/Log.h>
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -07005
6// Headers from libdvr
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -07007#include <dvr/dvr_buffer.h>
Jiwen 'Steve' Cai2d82ceb2017-03-22 17:26:00 -07008#include <dvr/dvr_buffer_queue.h>
Corey Tabaka2251d822017-04-20 16:04:07 -07009#include <dvr/dvr_display_manager.h>
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -070010#include <dvr/dvr_surface.h>
Corey Tabaka2251d822017-04-20 16:04:07 -070011#include <dvr/dvr_vsync.h>
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -070012
13// Headers not yet moved into libdvr.
14// TODO(jwcai) Move these once their callers are moved into Google3.
Daniel Nicoara37cdc8d2017-03-27 16:56:05 -040015#include <dvr/dvr_hardware_composer_client.h>
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -070016#include <dvr/pose_client.h>
17#include <dvr/virtual_touchpad_client.h>
18
19extern "C" {
20
Steven Thomas3be0aa62017-05-08 15:45:30 -070021int dvrGetApi(void* api, size_t struct_size, int version) {
Corey Tabaka2251d822017-04-20 16:04:07 -070022 ALOGI("dvrGetApi: api=%p struct_size=%zu version=%d", api, struct_size,
23 version);
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -070024 if (version == 1) {
25 if (struct_size != sizeof(DvrApi_v1)) {
Corey Tabaka2251d822017-04-20 16:04:07 -070026 ALOGE("dvrGetApi: Size mismatch: expected %zu; actual %zu",
27 sizeof(DvrApi_v1), struct_size);
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -070028 return -EINVAL;
29 }
30 DvrApi_v1* dvr_api = static_cast<DvrApi_v1*>(api);
31
Corey Tabaka2251d822017-04-20 16:04:07 -070032// Defines an API entry for V1 (no version suffix).
33#define DVR_V1_API_ENTRY(name) dvr_api->name = dvr##name
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -070034
Corey Tabaka2251d822017-04-20 16:04:07 -070035#include "include/dvr/dvr_api_entries.h"
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -070036
Corey Tabaka2251d822017-04-20 16:04:07 -070037// Undefine macro definitions to play nice with Google3 style rules.
38#undef DVR_V1_API_ENTRY
Daniel Nicoara37cdc8d2017-03-27 16:56:05 -040039
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -070040 return 0;
41 }
Corey Tabaka2251d822017-04-20 16:04:07 -070042
43 ALOGE("dvrGetApi: Unknown API version=%d", version);
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -070044 return -EINVAL;
45}
46
47} // extern "C"