1bcb03d005a4ccca20a0723f087e90e8b503b4848Hendrik Wagenaar#include "include/dvr/dvr_configuration_data.h"
2bcb03d005a4ccca20a0723f087e90e8b503b4848Hendrik Wagenaar
3bcb03d005a4ccca20a0723f087e90e8b503b4848Hendrik Wagenaar#include <private/dvr/display_client.h>
4bcb03d005a4ccca20a0723f087e90e8b503b4848Hendrik Wagenaar
5bcb03d005a4ccca20a0723f087e90e8b503b4848Hendrik Wagenaarusing android::dvr::display::ConfigFileType;
6bcb03d005a4ccca20a0723f087e90e8b503b4848Hendrik Wagenaarusing android::dvr::display::DisplayClient;
7bcb03d005a4ccca20a0723f087e90e8b503b4848Hendrik Wagenaar
8bcb03d005a4ccca20a0723f087e90e8b503b4848Hendrik Wagenaarextern "C" {
9bcb03d005a4ccca20a0723f087e90e8b503b4848Hendrik Wagenaar
10bcb03d005a4ccca20a0723f087e90e8b503b4848Hendrik Wagenaarint dvrConfigurationDataGet(int config_type, uint8_t** data,
11bcb03d005a4ccca20a0723f087e90e8b503b4848Hendrik Wagenaar                            size_t* data_size) {
12bcb03d005a4ccca20a0723f087e90e8b503b4848Hendrik Wagenaar  if (!data || !data_size) {
13bcb03d005a4ccca20a0723f087e90e8b503b4848Hendrik Wagenaar    return -EINVAL;
14bcb03d005a4ccca20a0723f087e90e8b503b4848Hendrik Wagenaar  }
15bcb03d005a4ccca20a0723f087e90e8b503b4848Hendrik Wagenaar
16bcb03d005a4ccca20a0723f087e90e8b503b4848Hendrik Wagenaar  auto client = DisplayClient::Create();
17bcb03d005a4ccca20a0723f087e90e8b503b4848Hendrik Wagenaar  if (!client) {
18bcb03d005a4ccca20a0723f087e90e8b503b4848Hendrik Wagenaar    ALOGE("dvrGetGlobalBuffer: Failed to create display client!");
19bcb03d005a4ccca20a0723f087e90e8b503b4848Hendrik Wagenaar    return -ECOMM;
20bcb03d005a4ccca20a0723f087e90e8b503b4848Hendrik Wagenaar  }
21bcb03d005a4ccca20a0723f087e90e8b503b4848Hendrik Wagenaar
22bcb03d005a4ccca20a0723f087e90e8b503b4848Hendrik Wagenaar  ConfigFileType config_file_type = static_cast<ConfigFileType>(config_type);
23bcb03d005a4ccca20a0723f087e90e8b503b4848Hendrik Wagenaar  auto config_data_status =
24bcb03d005a4ccca20a0723f087e90e8b503b4848Hendrik Wagenaar      client->GetConfigurationData(config_file_type);
25bcb03d005a4ccca20a0723f087e90e8b503b4848Hendrik Wagenaar
26bcb03d005a4ccca20a0723f087e90e8b503b4848Hendrik Wagenaar  if (!config_data_status) {
27bcb03d005a4ccca20a0723f087e90e8b503b4848Hendrik Wagenaar    return -config_data_status.error();
28bcb03d005a4ccca20a0723f087e90e8b503b4848Hendrik Wagenaar  }
29bcb03d005a4ccca20a0723f087e90e8b503b4848Hendrik Wagenaar
30bcb03d005a4ccca20a0723f087e90e8b503b4848Hendrik Wagenaar  *data_size = config_data_status.get().size();
31bcb03d005a4ccca20a0723f087e90e8b503b4848Hendrik Wagenaar  *data = new uint8_t[*data_size];
32bcb03d005a4ccca20a0723f087e90e8b503b4848Hendrik Wagenaar  std::copy_n(config_data_status.get().begin(), *data_size, *data);
33bcb03d005a4ccca20a0723f087e90e8b503b4848Hendrik Wagenaar  return 0;
34bcb03d005a4ccca20a0723f087e90e8b503b4848Hendrik Wagenaar}
35bcb03d005a4ccca20a0723f087e90e8b503b4848Hendrik Wagenaar
36bcb03d005a4ccca20a0723f087e90e8b503b4848Hendrik Wagenaarvoid dvrConfigurationDataDestroy(uint8_t* data) {
37bcb03d005a4ccca20a0723f087e90e8b503b4848Hendrik Wagenaar  delete[] data;
38bcb03d005a4ccca20a0723f087e90e8b503b4848Hendrik Wagenaar}
39bcb03d005a4ccca20a0723f087e90e8b503b4848Hendrik Wagenaar
40bcb03d005a4ccca20a0723f087e90e8b503b4848Hendrik Wagenaar}  // extern "C"
41