blob: 4dd49dab46e4642e05a9202e939a435d9eea3920 [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
27 dvr_api->display_manager_client_create_ = dvrDisplayManagerClientCreate;
28 dvr_api->display_manager_client_destroy_ = dvrDisplayManagerClientDestroy;
29 dvr_api->display_manager_client_get_surface_list_ =
30 dvrDisplayManagerClientGetSurfaceList;
31 dvr_api->display_manager_client_surface_list_destroy_ =
32 dvrDisplayManagerClientSurfaceListDestroy;
33 dvr_api->display_manager_setup_pose_buffer_ =
34 dvrDisplayManagerSetupPoseBuffer;
35 dvr_api->display_manager_client_surface_list_get_size_ =
36 dvrDisplayManagerClientSurfaceListGetSize;
37 dvr_api->display_manager_client_surface_list_get_surface_id_ =
38 dvrDisplayManagerClientSurfaceListGetSurfaceId;
39 dvr_api->display_manager_client_get_surface_buffer_list_ =
40 dvrDisplayManagerClientGetSurfaceBuffers;
41 dvr_api->display_manager_client_surface_buffer_list_destroy_ =
42 dvrDisplayManagerClientSurfaceBuffersDestroy;
43 dvr_api->display_manager_client_surface_buffer_list_get_size_ =
44 dvrDisplayManagerClientSurfaceBuffersGetSize;
45 dvr_api->display_manager_client_surface_buffer_list_get_fd_ =
46 dvrDisplayManagerClientSurfaceBuffersGetFd;
47
48 // dvr_buffer.h
49 dvr_api->write_buffer_destroy_ = dvrWriteBufferDestroy;
50 dvr_api->write_buffer_get_blob_fds_ = dvrWriteBufferGetBlobFds;
51 dvr_api->write_buffer_get_AHardwareBuffer_ =
52 dvrWriteBufferGetAHardwareBuffer;
53 dvr_api->write_buffer_post_ = dvrWriteBufferPost;
54 dvr_api->write_buffer_gain_ = dvrWriteBufferGain;
55 dvr_api->write_buffer_gain_async_ = dvrWriteBufferGainAsync;
56
Jiwen 'Steve' Cai2d82ceb2017-03-22 17:26:00 -070057 dvr_api->read_buffer_destroy_ = dvrReadBufferDestroy;
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -070058 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;
63
Jiwen 'Steve' Cai2d82ceb2017-03-22 17:26:00 -070064 // dvr_buffer_queue.h
65 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_ =
68 dvrWriteBufferQueueGetExternalSurface;
69 dvr_api->write_buffer_queue_create_read_queue_ =
70 dvrWriteBufferQueueCreateReadQueue;
71 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_ =
75 dvrReadBufferQueueCreateReadQueue;
76 dvr_api->read_buffer_queue_dequeue = dvrReadBufferQueueDequeue;
77
Jiwen 'Steve' Caibdcee792017-03-22 16:59:53 -070078 // dvr_surface.h
79 dvr_api->get_pose_buffer_ = dvrGetPoseBuffer;
80
81 // vsync_client_api.h
82 dvr_api->vsync_client_create_ = dvr_vsync_client_create;
83 dvr_api->vsync_client_destroy_ = dvr_vsync_client_destroy;
84 dvr_api->vsync_client_get_sched_info_ = dvr_vsync_client_get_sched_info;
85
86 // pose_client.h
87 dvr_api->pose_client_create_ = dvrPoseCreate;
88 dvr_api->pose_client_destroy_ = dvrPoseDestroy;
89 dvr_api->pose_get_ = dvrPoseGet;
90 dvr_api->pose_get_vsync_count_ = dvrPoseGetVsyncCount;
91 dvr_api->pose_get_controller_ = dvrPoseGetController;
92
93 // virtual_touchpad_client.h
94 dvr_api->virtual_touchpad_create_ = dvrVirtualTouchpadCreate;
95 dvr_api->virtual_touchpad_destroy_ = dvrVirtualTouchpadDestroy;
96 dvr_api->virtual_touchpad_attach_ = dvrVirtualTouchpadAttach;
97 dvr_api->virtual_touchpad_detach_ = dvrVirtualTouchpadDetach;
98 dvr_api->virtual_touchpad_touch_ = dvrVirtualTouchpadTouch;
99 dvr_api->virtual_touchpad_button_state_ = dvrVirtualTouchpadButtonState;
100
101 return 0;
102 }
103 return -EINVAL;
104}
105
106} // extern "C"