blob: f464411fce416d1f6387f56b6599185baa3c9b36 [file] [log] [blame]
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -07001#include "include/dvr/dvr_api.h"
2
3#include <errno.h>
4
5// Headers from libdvr
6#include <dvr/display_manager_client.h>
7#include <dvr/dvr_buffer.h>
Jiwen 'Steve' Cai2d82ceb2017-03-22 17:26:00 -07008#include <dvr/dvr_buffer_queue.h>
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -07009#include <dvr/dvr_surface.h>
10#include <dvr/vsync_client_api.h>
11
12// Headers not yet moved into libdvr.
13// TODO(jwcai) Move these once their callers are moved into Google3.
14#include <dvr/pose_client.h>
15#include <dvr/virtual_touchpad_client.h>
16
17extern "C" {
18
19DVR_EXPORT int dvrGetApi(void* api, size_t struct_size, int version) {
20 if (version == 1) {
21 if (struct_size != sizeof(DvrApi_v1)) {
22 return -EINVAL;
23 }
24 DvrApi_v1* dvr_api = static_cast<DvrApi_v1*>(api);
25
26 // display_manager_client.h
Hendrik Wagenaar9255e3e2017-03-30 11:53:32 -070027 dvr_api->display_manager_client_create = dvrDisplayManagerClientCreate;
28 dvr_api->display_manager_client_destroy = dvrDisplayManagerClientDestroy;
29 dvr_api->display_manager_client_get_surface_list =
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -070030 dvrDisplayManagerClientGetSurfaceList;
Hendrik Wagenaar9255e3e2017-03-30 11:53:32 -070031 dvr_api->display_manager_client_surface_list_destroy =
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -070032 dvrDisplayManagerClientSurfaceListDestroy;
Hendrik Wagenaar9255e3e2017-03-30 11:53:32 -070033 dvr_api->display_manager_setup_pose_buffer =
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -070034 dvrDisplayManagerSetupPoseBuffer;
Hendrik Wagenaar9255e3e2017-03-30 11:53:32 -070035 dvr_api->display_manager_client_surface_list_get_size =
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -070036 dvrDisplayManagerClientSurfaceListGetSize;
Hendrik Wagenaar9255e3e2017-03-30 11:53:32 -070037 dvr_api->display_manager_client_surface_list_get_surface_id =
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -070038 dvrDisplayManagerClientSurfaceListGetSurfaceId;
Hendrik Wagenaar9255e3e2017-03-30 11:53:32 -070039 dvr_api->display_manager_client_get_surface_buffer_list =
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -070040 dvrDisplayManagerClientGetSurfaceBuffers;
Hendrik Wagenaar9255e3e2017-03-30 11:53:32 -070041 dvr_api->display_manager_client_surface_buffer_list_destroy =
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -070042 dvrDisplayManagerClientSurfaceBuffersDestroy;
Hendrik Wagenaar9255e3e2017-03-30 11:53:32 -070043 dvr_api->display_manager_client_surface_buffer_list_get_size =
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -070044 dvrDisplayManagerClientSurfaceBuffersGetSize;
Hendrik Wagenaar9255e3e2017-03-30 11:53:32 -070045 dvr_api->display_manager_client_surface_buffer_list_get_fd =
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -070046 dvrDisplayManagerClientSurfaceBuffersGetFd;
47
48 // dvr_buffer.h
Hendrik Wagenaar9255e3e2017-03-30 11:53:32 -070049 dvr_api->write_buffer_destroy = dvrWriteBufferDestroy;
50 dvr_api->write_buffer_get_blob_fds = dvrWriteBufferGetBlobFds;
51 dvr_api->write_buffer_get_ahardwarebuffer =
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -070052 dvrWriteBufferGetAHardwareBuffer;
Hendrik Wagenaar9255e3e2017-03-30 11:53:32 -070053 dvr_api->write_buffer_post = dvrWriteBufferPost;
54 dvr_api->write_buffer_gain = dvrWriteBufferGain;
55 dvr_api->write_buffer_gain_async = dvrWriteBufferGainAsync;
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -070056
Hendrik Wagenaar9255e3e2017-03-30 11:53:32 -070057 dvr_api->read_buffer_destroy = dvrReadBufferDestroy;
58 dvr_api->read_buffer_get_blob_fds = dvrReadBufferGetBlobFds;
59 dvr_api->read_buffer_get_ahardwarebuffer = dvrReadBufferGetAHardwareBuffer;
60 dvr_api->read_buffer_acquire = dvrReadBufferAcquire;
61 dvr_api->read_buffer_release = dvrReadBufferRelease;
62 dvr_api->read_buffer_release_async = dvrReadBufferReleaseAsync;
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -070063
Jiwen 'Steve' Cai2d82ceb2017-03-22 17:26:00 -070064 // dvr_buffer_queue.h
Hendrik Wagenaar9255e3e2017-03-30 11:53:32 -070065 dvr_api->write_buffer_queue_destroy = dvrWriteBufferQueueDestroy;
66 dvr_api->write_buffer_queue_get_capacity = dvrWriteBufferQueueGetCapacity;
67 dvr_api->write_buffer_queue_get_external_surface =
Jiwen 'Steve' Cai2d82ceb2017-03-22 17:26:00 -070068 dvrWriteBufferQueueGetExternalSurface;
Hendrik Wagenaar9255e3e2017-03-30 11:53:32 -070069 dvr_api->write_buffer_queue_create_read_queue =
Jiwen 'Steve' Cai2d82ceb2017-03-22 17:26:00 -070070 dvrWriteBufferQueueCreateReadQueue;
Hendrik Wagenaar9255e3e2017-03-30 11:53:32 -070071 dvr_api->write_buffer_queue_dequeue = dvrWriteBufferQueueDequeue;
72 dvr_api->read_buffer_queue_destroy = dvrReadBufferQueueDestroy;
73 dvr_api->read_buffer_queue_get_capacity = dvrReadBufferQueueGetCapacity;
74 dvr_api->read_buffer_queue_create_read_queue =
Jiwen 'Steve' Cai2d82ceb2017-03-22 17:26:00 -070075 dvrReadBufferQueueCreateReadQueue;
76 dvr_api->read_buffer_queue_dequeue = dvrReadBufferQueueDequeue;
77
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -070078 // dvr_surface.h
Hendrik Wagenaar9255e3e2017-03-30 11:53:32 -070079 dvr_api->get_pose_buffer = dvrGetPoseBuffer;
80 dvr_api->surface_create = dvrSurfaceCreate;
81 dvr_api->surface_get_write_buffer_queue = dvrSurfaceGetWriteBufferQueue;
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -070082
83 // vsync_client_api.h
Hendrik Wagenaar9255e3e2017-03-30 11:53:32 -070084 dvr_api->vsync_client_create = dvr_vsync_client_create;
85 dvr_api->vsync_client_destroy = dvr_vsync_client_destroy;
86 dvr_api->vsync_client_get_sched_info = dvr_vsync_client_get_sched_info;
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -070087
88 // pose_client.h
Hendrik Wagenaar9255e3e2017-03-30 11:53:32 -070089 dvr_api->pose_client_create = dvrPoseCreate;
90 dvr_api->pose_client_destroy = dvrPoseDestroy;
91 dvr_api->pose_get = dvrPoseGet;
92 dvr_api->pose_get_vsync_count = dvrPoseGetVsyncCount;
93 dvr_api->pose_get_controller = dvrPoseGetController;
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -070094
95 // virtual_touchpad_client.h
Hendrik Wagenaar9255e3e2017-03-30 11:53:32 -070096 dvr_api->virtual_touchpad_create = dvrVirtualTouchpadCreate;
97 dvr_api->virtual_touchpad_destroy = dvrVirtualTouchpadDestroy;
98 dvr_api->virtual_touchpad_attach = dvrVirtualTouchpadAttach;
99 dvr_api->virtual_touchpad_detach = dvrVirtualTouchpadDetach;
100 dvr_api->virtual_touchpad_touch = dvrVirtualTouchpadTouch;
101 dvr_api->virtual_touchpad_button_state = dvrVirtualTouchpadButtonState;
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -0700102
103 return 0;
104 }
105 return -EINVAL;
106}
107
108} // extern "C"