blob: 4dd49dab46e4642e05a9202e939a435d9eea3920 [file] [log] [blame]
#include "include/dvr/dvr_api.h"
#include <errno.h>
// Headers from libdvr
#include <dvr/display_manager_client.h>
#include <dvr/dvr_buffer.h>
#include <dvr/dvr_buffer_queue.h>
#include <dvr/dvr_surface.h>
#include <dvr/vsync_client_api.h>
// Headers not yet moved into libdvr.
// TODO(jwcai) Move these once their callers are moved into Google3.
#include <dvr/pose_client.h>
#include <dvr/virtual_touchpad_client.h>
extern "C" {
DVR_EXPORT int dvrGetApi(void* api, size_t struct_size, int version) {
if (version == 1) {
if (struct_size != sizeof(DvrApi_v1)) {
return -EINVAL;
}
DvrApi_v1* dvr_api = static_cast<DvrApi_v1*>(api);
// display_manager_client.h
dvr_api->display_manager_client_create_ = dvrDisplayManagerClientCreate;
dvr_api->display_manager_client_destroy_ = dvrDisplayManagerClientDestroy;
dvr_api->display_manager_client_get_surface_list_ =
dvrDisplayManagerClientGetSurfaceList;
dvr_api->display_manager_client_surface_list_destroy_ =
dvrDisplayManagerClientSurfaceListDestroy;
dvr_api->display_manager_setup_pose_buffer_ =
dvrDisplayManagerSetupPoseBuffer;
dvr_api->display_manager_client_surface_list_get_size_ =
dvrDisplayManagerClientSurfaceListGetSize;
dvr_api->display_manager_client_surface_list_get_surface_id_ =
dvrDisplayManagerClientSurfaceListGetSurfaceId;
dvr_api->display_manager_client_get_surface_buffer_list_ =
dvrDisplayManagerClientGetSurfaceBuffers;
dvr_api->display_manager_client_surface_buffer_list_destroy_ =
dvrDisplayManagerClientSurfaceBuffersDestroy;
dvr_api->display_manager_client_surface_buffer_list_get_size_ =
dvrDisplayManagerClientSurfaceBuffersGetSize;
dvr_api->display_manager_client_surface_buffer_list_get_fd_ =
dvrDisplayManagerClientSurfaceBuffersGetFd;
// dvr_buffer.h
dvr_api->write_buffer_destroy_ = dvrWriteBufferDestroy;
dvr_api->write_buffer_get_blob_fds_ = dvrWriteBufferGetBlobFds;
dvr_api->write_buffer_get_AHardwareBuffer_ =
dvrWriteBufferGetAHardwareBuffer;
dvr_api->write_buffer_post_ = dvrWriteBufferPost;
dvr_api->write_buffer_gain_ = dvrWriteBufferGain;
dvr_api->write_buffer_gain_async_ = dvrWriteBufferGainAsync;
dvr_api->read_buffer_destroy_ = dvrReadBufferDestroy;
dvr_api->read_buffer_get_blob_fds_ = dvrReadBufferGetBlobFds;
dvr_api->read_buffer_get_AHardwareBuffer_ = dvrReadBufferGetAHardwareBuffer;
dvr_api->read_buffer_acquire_ = dvrReadBufferAcquire;
dvr_api->read_buffer_release_ = dvrReadBufferRelease;
dvr_api->read_buffer_release_async_ = dvrReadBufferReleaseAsync;
// dvr_buffer_queue.h
dvr_api->write_buffer_queue_destroy_ = dvrWriteBufferQueueDestroy;
dvr_api->write_buffer_queue_get_capacity_ = dvrWriteBufferQueueGetCapacity;
dvr_api->write_buffer_queue_get_external_surface_ =
dvrWriteBufferQueueGetExternalSurface;
dvr_api->write_buffer_queue_create_read_queue_ =
dvrWriteBufferQueueCreateReadQueue;
dvr_api->write_buffer_queue_dequeue_ = dvrWriteBufferQueueDequeue;
dvr_api->read_buffer_queue_destroy_ = dvrReadBufferQueueDestroy;
dvr_api->read_buffer_queue_get_capacity_ = dvrReadBufferQueueGetCapacity;
dvr_api->read_buffer_queue_create_read_queue_ =
dvrReadBufferQueueCreateReadQueue;
dvr_api->read_buffer_queue_dequeue = dvrReadBufferQueueDequeue;
// dvr_surface.h
dvr_api->get_pose_buffer_ = dvrGetPoseBuffer;
// vsync_client_api.h
dvr_api->vsync_client_create_ = dvr_vsync_client_create;
dvr_api->vsync_client_destroy_ = dvr_vsync_client_destroy;
dvr_api->vsync_client_get_sched_info_ = dvr_vsync_client_get_sched_info;
// pose_client.h
dvr_api->pose_client_create_ = dvrPoseCreate;
dvr_api->pose_client_destroy_ = dvrPoseDestroy;
dvr_api->pose_get_ = dvrPoseGet;
dvr_api->pose_get_vsync_count_ = dvrPoseGetVsyncCount;
dvr_api->pose_get_controller_ = dvrPoseGetController;
// virtual_touchpad_client.h
dvr_api->virtual_touchpad_create_ = dvrVirtualTouchpadCreate;
dvr_api->virtual_touchpad_destroy_ = dvrVirtualTouchpadDestroy;
dvr_api->virtual_touchpad_attach_ = dvrVirtualTouchpadAttach;
dvr_api->virtual_touchpad_detach_ = dvrVirtualTouchpadDetach;
dvr_api->virtual_touchpad_touch_ = dvrVirtualTouchpadTouch;
dvr_api->virtual_touchpad_button_state_ = dvrVirtualTouchpadButtonState;
return 0;
}
return -EINVAL;
}
} // extern "C"