167 lines
9.2 KiB
C++
167 lines
9.2 KiB
C++
#include "baseparameter_util.h"
|
|
#include "baseparameter_api.h"
|
|
|
|
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG , "BaseParameterUtilV2", __VA_ARGS__)
|
|
|
|
baseparameter_api* mBaseParmApi;
|
|
int mConnectorType;
|
|
int mConnectorId;
|
|
|
|
BaseParameterUtilV2::BaseParameterUtilV2() {
|
|
mBaseParmApi = new baseparameter_api();
|
|
mConnectorType = 0;
|
|
mConnectorId = 0;
|
|
}
|
|
|
|
BaseParameterUtilV2::~BaseParameterUtilV2() {
|
|
if (mBaseParmApi)
|
|
delete mBaseParmApi;
|
|
}
|
|
|
|
void BaseParameterUtilV2::print()
|
|
{
|
|
LOGD("BaseParameterUtilV2 print %d ", sizeof(disp_info) - sizeof(u32));
|
|
if (mBaseParmApi == nullptr){
|
|
LOGD("mBaseParmApi is null");
|
|
return;
|
|
}
|
|
struct baseparameter_info base_paramer;
|
|
struct baseparameter_info back_paramer;
|
|
mBaseParmApi->get_baseparameter_info(BASE_PARAMETER, &base_paramer);
|
|
mBaseParmApi->get_baseparameter_info(BACKUP_PARAMETER, &back_paramer);
|
|
printf("========== base parameter ==========\n");
|
|
for(int i = 0; i < 8; i++){
|
|
LOGD("index %d type %d id %d\n", i, base_paramer.disp_header[i].connector_type, base_paramer.disp_header[i].connector_id);
|
|
if(base_paramer.disp_header[i].connector_type != 0){
|
|
printf("-connector type: %d connector id: %d offset: %d\n", base_paramer.disp_header[i].connector_type, base_paramer.disp_header[i].connector_id, base_paramer.disp_header[i].offset);
|
|
printf("\tresolution: %dx%d@%c%d-%d-%d-%d-%d-%d-%d-%x clk=%d\n",
|
|
base_paramer.disp_info[i].screen_info[0].resolution.hdisplay, base_paramer.disp_info[i].screen_info[0].resolution.vdisplay, (base_paramer.disp_info[i].screen_info[0].resolution.flags & DRM_MODE_FLAG_INTERLACE) > 0 ? 'c' : 'p',
|
|
base_paramer.disp_info[i].screen_info[0].resolution.vrefresh, base_paramer.disp_info[i].screen_info[0].resolution.hsync_start, base_paramer.disp_info[i].screen_info[0].resolution.hsync_end, base_paramer.disp_info[i].screen_info[0].resolution.htotal,
|
|
base_paramer.disp_info[i].screen_info[0].resolution.vsync_start, base_paramer.disp_info[i].screen_info[0].resolution.vsync_end, base_paramer.disp_info[i].screen_info[0].resolution.vtotal, base_paramer.disp_info[i].screen_info[0].resolution.flags, base_paramer.disp_info[i].screen_info[0].resolution.clock);
|
|
printf("\tcorlor: format %d depth %d \n", base_paramer.disp_info[i].screen_info[0].format, base_paramer.disp_info[i].screen_info[0].depthc);
|
|
printf("\tfeature: 0x%x \n", base_paramer.disp_info[i].screen_info[0].feature);
|
|
printf("\tfbinfo: %dx%d@%d\n", base_paramer.disp_info[i].framebuffer_info.framebuffer_width, base_paramer.disp_info[i].framebuffer_info.framebuffer_height, base_paramer.disp_info[i].framebuffer_info.fps);
|
|
printf("\tbcsh: %d %d %d %d\n", base_paramer.disp_info[i].bcsh_info.brightness, base_paramer.disp_info[i].bcsh_info.contrast, base_paramer.disp_info[i].bcsh_info.saturation, base_paramer.disp_info[i].bcsh_info.hue);
|
|
printf("\toverscan: %d %d %d %d \n", base_paramer.disp_info[i].overscan_info.leftscale, base_paramer.disp_info[i].overscan_info.topscale, base_paramer.disp_info[i].overscan_info.rightscale, base_paramer.disp_info[i].overscan_info.bottomscale);
|
|
printf("\tgamma size:%d\n", base_paramer.disp_info[i].gamma_lut_data.size);
|
|
printf("\t3dlut size:%d\n", base_paramer.disp_info[i].cubic_lut_data.size);
|
|
}
|
|
}
|
|
printf("\n========= backup parameter ==========\n");
|
|
for(int i = 0; i < 8; i++){
|
|
LOGD("index %d type %d id %d\n", i, back_paramer.disp_header[i].connector_type, back_paramer.disp_header[i].connector_id);
|
|
if(back_paramer.disp_header[i].connector_type != 0){
|
|
printf("-connector type: %d connector id: %d offset: %d\n", back_paramer.disp_header[i].connector_type, back_paramer.disp_header[i].connector_id, back_paramer.disp_header[i].offset);
|
|
printf("\tresolution: %dx%d@%c%d-%d-%d-%d-%d-%d-%d-%x clk=%d\n",
|
|
back_paramer.disp_info[i].screen_info[0].resolution.hdisplay, back_paramer.disp_info[i].screen_info[0].resolution.vdisplay, (back_paramer.disp_info[i].screen_info[0].resolution.flags & DRM_MODE_FLAG_INTERLACE) > 0 ? 'c' : 'p',
|
|
back_paramer.disp_info[i].screen_info[0].resolution.vrefresh, back_paramer.disp_info[i].screen_info[0].resolution.hsync_start, back_paramer.disp_info[i].screen_info[0].resolution.hsync_end, back_paramer.disp_info[i].screen_info[0].resolution.htotal,
|
|
back_paramer.disp_info[i].screen_info[0].resolution.vsync_start, back_paramer.disp_info[i].screen_info[0].resolution.vsync_end, back_paramer.disp_info[i].screen_info[0].resolution.vtotal, back_paramer.disp_info[i].screen_info[0].resolution.flags, back_paramer.disp_info[i].screen_info[0].resolution.clock);
|
|
printf("\tcorlor: format %d depth %d \n", back_paramer.disp_info[i].screen_info[0].format, back_paramer.disp_info[i].screen_info[0].depthc);
|
|
printf("\tfeature: 0x%x \n", back_paramer.disp_info[i].screen_info[0].feature);
|
|
printf("\tfbinfo: %dx%d@%d\n", back_paramer.disp_info[i].framebuffer_info.framebuffer_width, back_paramer.disp_info[i].framebuffer_info.framebuffer_height, back_paramer.disp_info[i].framebuffer_info.fps);
|
|
printf("\tbcsh: %d %d %d %d\n", back_paramer.disp_info[i].bcsh_info.brightness, back_paramer.disp_info[i].bcsh_info.contrast, back_paramer.disp_info[i].bcsh_info.saturation, back_paramer.disp_info[i].bcsh_info.hue);
|
|
printf("\toverscan: %d %d %d %d \n", back_paramer.disp_info[i].overscan_info.leftscale, back_paramer.disp_info[i].overscan_info.topscale, back_paramer.disp_info[i].overscan_info.rightscale, back_paramer.disp_info[i].overscan_info.bottomscale);
|
|
printf("\tgamma size:%d\n", back_paramer.disp_info[i].gamma_lut_data.size);
|
|
printf("\t3dlut size:%d\n", back_paramer.disp_info[i].cubic_lut_data.size);
|
|
}
|
|
}
|
|
printf("====================================\n");
|
|
}
|
|
|
|
bool BaseParameterUtilV2::validate(){
|
|
if (mBaseParmApi == nullptr){
|
|
LOGD("mBaseParmApi is null");
|
|
return false;
|
|
}
|
|
return mBaseParmApi->validate();
|
|
}
|
|
|
|
int BaseParameterUtilV2::dump_baseparameter(const char *file_path){
|
|
if (mBaseParmApi == nullptr){
|
|
LOGD("mBaseParmApi is null");
|
|
return -ENOENT;
|
|
}
|
|
return mBaseParmApi->dump_baseparameter(file_path);
|
|
}
|
|
|
|
void BaseParameterUtilV2::setDisplayId(int dpy){
|
|
return;
|
|
}
|
|
|
|
void BaseParameterUtilV2::setConnectorTypeAndId(int connectorType, int connectorId){
|
|
mConnectorType = connectorType;
|
|
mConnectorId = connectorId;
|
|
}
|
|
|
|
int BaseParameterUtilV2::setBcsh(int b, int c, int s, int h) {
|
|
int ret = 0;
|
|
ret = mBaseParmApi->set_brightness(mConnectorType, mConnectorId, b);
|
|
if(ret != 0){
|
|
LOGD("set_brightness ret %d ", ret);
|
|
return ret;
|
|
}
|
|
ret = mBaseParmApi->set_contrast(mConnectorType, mConnectorId, c);
|
|
if(ret != 0){
|
|
LOGD("set_contrast ret %d ", ret);
|
|
return ret;
|
|
}
|
|
ret = mBaseParmApi->set_saturation(mConnectorType, mConnectorId, s);
|
|
if(ret != 0){
|
|
LOGD("set_saturation ret %d ", ret);
|
|
return ret;
|
|
}
|
|
ret = mBaseParmApi->set_hue(mConnectorType, mConnectorId, h);
|
|
if(ret != 0){
|
|
LOGD("set_hue ret %d ", ret);
|
|
return ret;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
int BaseParameterUtilV2::setOverscan(int left, int top, int right, int bottom) {
|
|
struct overscan_info overscan;
|
|
overscan.maxvalue = 100;
|
|
overscan.leftscale = left;
|
|
overscan.rightscale = right;
|
|
overscan.topscale = top;
|
|
overscan.bottomscale = bottom;
|
|
return mBaseParmApi->set_overscan_info(mConnectorType, mConnectorId, &overscan);
|
|
}
|
|
|
|
int BaseParameterUtilV2::setFramebufferInfo(int width, int height, int fps){
|
|
struct framebuffer_info fb_info;
|
|
fb_info.framebuffer_width = width;
|
|
fb_info.framebuffer_height = height;
|
|
fb_info.fps = fps;
|
|
return mBaseParmApi->set_framebuffer_info(mConnectorType, mConnectorId, &fb_info);
|
|
}
|
|
|
|
int BaseParameterUtilV2::setColor(int format, int depth, int feature){
|
|
struct screen_info screen;
|
|
mBaseParmApi->get_screen_info(mConnectorType, mConnectorId, 0 , &screen);
|
|
screen.format = (output_format)format;
|
|
screen.depthc = (output_depth)depth;
|
|
screen.feature = feature;
|
|
return mBaseParmApi->set_screen_info(mConnectorType, mConnectorId, 0 , &screen);
|
|
}
|
|
|
|
int BaseParameterUtilV2::setResolution(int hdisplay, int vdisplay, int vrefresh, int hsync_start, int hsync_end, int htotal, int vsync_start, int vsync_end, int vtotal,int vscan, int flags, int clock, int feature){
|
|
struct screen_info screen;
|
|
mBaseParmApi->get_screen_info(mConnectorType, mConnectorId, 0 , &screen);
|
|
screen.resolution.hdisplay = hdisplay;
|
|
screen.resolution.vdisplay = vdisplay;
|
|
screen.resolution.vrefresh = vrefresh;
|
|
screen.resolution.hsync_start = hsync_start;
|
|
screen.resolution.hsync_end = hsync_end;
|
|
screen.resolution.htotal = htotal;
|
|
screen.resolution.vsync_start = vsync_start;
|
|
screen.resolution.vsync_end = vsync_end;
|
|
screen.resolution.vtotal = vtotal;
|
|
screen.resolution.vscan = vscan;
|
|
screen.resolution.clock = clock;
|
|
screen.resolution.flags = flags;
|
|
screen.feature = feature;
|
|
return mBaseParmApi->set_screen_info(mConnectorType, mConnectorId, 0 , &screen);
|
|
}
|
|
|