blob: b04b897ea5a2340ac7fa3c83c5fda49c98372584 [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>
8#include <dvr/dvr_surface.h>
9#include <dvr/vsync_client_api.h>
10
11// Headers not yet moved into libdvr.
12// TODO(jwcai) Move these once their callers are moved into Google3.
13#include <dvr/pose_client.h>
14#include <dvr/virtual_touchpad_client.h>
15
16extern "C" {
17
18DVR_EXPORT int dvrGetApi(void* api, size_t struct_size, int version) {
19 if (version == 1) {
20 if (struct_size != sizeof(DvrApi_v1)) {
21 return -EINVAL;
22 }
23 DvrApi_v1* dvr_api = static_cast<DvrApi_v1*>(api);
24
25 // display_manager_client.h
26 dvr_api->display_manager_client_create_ = dvrDisplayManagerClientCreate;
27 dvr_api->display_manager_client_destroy_ = dvrDisplayManagerClientDestroy;
28 dvr_api->display_manager_client_get_surface_list_ =
29 dvrDisplayManagerClientGetSurfaceList;
30 dvr_api->display_manager_client_surface_list_destroy_ =
31 dvrDisplayManagerClientSurfaceListDestroy;
32 dvr_api->display_manager_setup_pose_buffer_ =
33 dvrDisplayManagerSetupPoseBuffer;
34 dvr_api->display_manager_client_surface_list_get_size_ =
35 dvrDisplayManagerClientSurfaceListGetSize;
36 dvr_api->display_manager_client_surface_list_get_surface_id_ =
37 dvrDisplayManagerClientSurfaceListGetSurfaceId;
38 dvr_api->display_manager_client_get_surface_buffer_list_ =
39 dvrDisplayManagerClientGetSurfaceBuffers;
40 dvr_api->display_manager_client_surface_buffer_list_destroy_ =
41 dvrDisplayManagerClientSurfaceBuffersDestroy;
42 dvr_api->display_manager_client_surface_buffer_list_get_size_ =
43 dvrDisplayManagerClientSurfaceBuffersGetSize;
44 dvr_api->display_manager_client_surface_buffer_list_get_fd_ =
45 dvrDisplayManagerClientSurfaceBuffersGetFd;
46
47 // dvr_buffer.h
48 dvr_api->write_buffer_destroy_ = dvrWriteBufferDestroy;
49 dvr_api->write_buffer_get_blob_fds_ = dvrWriteBufferGetBlobFds;
50 dvr_api->write_buffer_get_AHardwareBuffer_ =
51 dvrWriteBufferGetAHardwareBuffer;
52 dvr_api->write_buffer_post_ = dvrWriteBufferPost;
53 dvr_api->write_buffer_gain_ = dvrWriteBufferGain;
54 dvr_api->write_buffer_gain_async_ = dvrWriteBufferGainAsync;
55
56 dvr_api->read_buffer_get_blob_fds_ = dvrReadBufferGetBlobFds;
57 dvr_api->read_buffer_get_AHardwareBuffer_ = dvrReadBufferGetAHardwareBuffer;
58 dvr_api->read_buffer_acquire_ = dvrReadBufferAcquire;
59 dvr_api->read_buffer_release_ = dvrReadBufferRelease;
60 dvr_api->read_buffer_release_async_ = dvrReadBufferReleaseAsync;
61
62 // dvr_surface.h
63 dvr_api->get_pose_buffer_ = dvrGetPoseBuffer;
64
65 // vsync_client_api.h
66 dvr_api->vsync_client_create_ = dvr_vsync_client_create;
67 dvr_api->vsync_client_destroy_ = dvr_vsync_client_destroy;
68 dvr_api->vsync_client_get_sched_info_ = dvr_vsync_client_get_sched_info;
69
70 // pose_client.h
71 dvr_api->pose_client_create_ = dvrPoseCreate;
72 dvr_api->pose_client_destroy_ = dvrPoseDestroy;
73 dvr_api->pose_get_ = dvrPoseGet;
74 dvr_api->pose_get_vsync_count_ = dvrPoseGetVsyncCount;
75 dvr_api->pose_get_controller_ = dvrPoseGetController;
76
77 // virtual_touchpad_client.h
78 dvr_api->virtual_touchpad_create_ = dvrVirtualTouchpadCreate;
79 dvr_api->virtual_touchpad_destroy_ = dvrVirtualTouchpadDestroy;
80 dvr_api->virtual_touchpad_attach_ = dvrVirtualTouchpadAttach;
81 dvr_api->virtual_touchpad_detach_ = dvrVirtualTouchpadDetach;
82 dvr_api->virtual_touchpad_touch_ = dvrVirtualTouchpadTouch;
83 dvr_api->virtual_touchpad_button_state_ = dvrVirtualTouchpadButtonState;
84
85 return 0;
86 }
87 return -EINVAL;
88}
89
90} // extern "C"