sysfs接口描述
8 sysfs 接口描述
以下两个函数在下面接口的demo 中会使用到。
const int MAX_LENGTH = 128;
const int MAX_DATA = 128;
static ssize_t read_data(const char *sysfs_path, char *data)
{
ssize_t err = 0;
FILE *fp = NULL;
fp = fopen(sysfs_path, "r");
if (fp) {
err = fread(data, sizeof(char), MAX_DATA ,fp);
fclose(fp);
}
return err;
}
static ssize_t write_data(const char *sysfs_path, const char *data, size_t len)
{
ssize_t err = 0;
int fd = -1;
fd = open(sysfs_path, O_WRONLY);
if (fp) {
errno = 0;
err = write(fd, data, len);
if (err < 0) {
err = -errno;
}
close(fd);
} else {
ALOGE("%s: Failed to open file: %s error: %s", __FUNCTION__, sysfs_path,
strerror(errno));
err = -errno;
}
return err;
}
8.1 enhance
8.1.1 enhance_mode
• 系统节点
• 参数
参数 | 说明 |
---|---|
disp display channel | 比如0: disp0, 1:disp1 |
enhance_mode | 0:standard, 1: enhance, 2: soft, 3: enahnce + demo |
• 返回值
no。
• 描述
该接口用于设置色彩增强的模式。
• 示例
//设置disp0 的色彩增强的模式为增强模式
echo 0 > /sys/class/disp/disp/attr/disp;
echo 1 > /sys/class/disp/disp/attr/enhance_mode;
//设置disp1 的色彩增强的模式为柔和模式
echo 1 > /sys/class/disp/disp/attr/disp;
echo 2 > /sys/class/disp/disp/attr/enhance_mode;
//设置disp0 的色彩增强的模式为增加模式,并且开启演示模式
echo 0 > /sys/class/disp/disp/attr/disp;
echo 3 > /sys/class/disp/disp/attr/enhance_mode;
c/c++ 代码:
char sysfs_path[MAX_LENGTH];
char sysfs_data[MAX_DATA];
unisgned int disp = 0
unsigned int enhance_mode = 1;
snprintf(sysfs_path,sizeof(sysfs_full_path),"sys/class/disp/disp/attr/disp");
snprintf(sysfs_data, sizeof(sysfs_data),"%d",disp);
write_data(sysfs_path, sys_data, strlen(sysfs_data));
snprintf(sysfs_path,sizeof(sysfs_full_path),
"/sys/class/disp/disp/attr/enhance_mode");
snprintf(sysfs_data, sizeof(sysfs_data), "%d",enhance_mode);
write_data(sysfs_path, sys_data, strlen(sysfs_data));
8.1.2 enhance_bright/contrast/saturation/edge/detail/denoise
• 系统节点
/sys/class/disp/disp/attr/disp
/sys/class/disp/disp/attr/enhance_bright /* 亮度*/
/sys/class/disp/disp/attr/enhance_contrast /* 对比度*/
/sys/class/disp/disp/attr/enhance_saturation /* 饱和*/
/sys/class/disp/disp/attr/enhance_edge /* 边缘锐度*/
/sys/class/disp/disp/attr/enhance_detail /* 细节增强*/
/sys/class/disp/disp/attr/enhance_denoise /* 降噪*/
• 参数
• 返回值 no。
• 描述
该接口用于设置图像的亮度/对比度/饱和度/边缘锐度/细节增强/降噪的调节幅度。
• 示例
//设置disp0 的图像亮度为80
echo 0 > /sys/class/disp/disp/attr/disp;
echo 80 > /sys/class/disp/disp/attr/enhance_bright;
//设置disp1 的饱和度为50
echo 1 > /sys/class/disp/disp/attr/disp;
echo 50 > /sys/class/disp/disp/attr/enhance_saturation;
c/c++ 代码:
char sysfs_path[MAX_LENGTH];
char sysfs_data[MAX_DATA];
unisgned int disp = 0
unsigned int enhance_bright = 80;
snprintf(sysfs_path,sizeof(sysfs_full_path),"sys/class/disp/disp/attr/disp");
snprintf(sysfs_data, sizeof(sysfs_data),"%d",disp);
write_data(sysfs_path, sys_data, strlen(sysfs_data));
snprintf(sysfs_path,sizeof(sysfs_full_path),
"/sys/class/disp/disp/attr/enhance_bright");
snprintf(sysfs_data, sizeof(sysfs_data), "%d",enhance_bright);
write_data(sysfs_path, sys_data, strlen(sysfs_data));
8.2 hdmi edid
8.2.1 edid
• 系统节点
• 参数
no。
• 返回值
Edid data(1024 bytes)。
• 描述
该接口用于读取EDID 的裸数据。
• 示例
c/c++ 代码:
#define EDID_MAX_LENGTH 1024
char sysfs_path[MAX_LENGTH];
char sysfs_data[EDID_MAX_LENGTH];
ssize_t edid_length;
snprintf(sysfs_path,sizeof(sysfs_full_path),"/sys/class/hdmi/hdmi/attr/edid");
edid_length = read_data(sysfs_path, sys_data);
8.2.2 hpd
• 系统节点
• 参数
no。
• 返回值
Hdmi hotplut state, 0: unplug; 1: plug in。
• 描述
• 示例
c/c++代码:
char sysfs_path[MAX_LENGTH];
char sysfs_data[MAX_DATA];
int hpd;
snprintf(sysfs_path,sizeof(sysfs_full_path),"/sys/class/hdmi/hdmi/attr/edid");
read_data(sysfs_path, sys_data);
hpd = atoi(sys_data);
If (hpd)
printf("hdmi plug in\n");
else
printf("hdmi unplug \n");
8.2.3 hdcp_enable
• 系统节点
• 参数
enable: 0: disable hdmi hdcp function;1:enable hdmi hdcp function。
• 返回值
No returns。
• 描述
该接口用于使能、关闭hdmi hdcp 功能。
• 示例
// 开启hdmi hdcp功能
echo 1 > /sys/class/hdmi/hdmi/attr/hdcp_enable
// 关闭hdmi hdcp功能
echo 0 > /sys/class/hdmi/hdmi/attr/hdcp_enable
c/c++ 代码: