testcase_info结构体用来存储有关测试用例的信息。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <sys/time.h>//时间相关头文件
#include "extra-functions.h"
#include "common.h"
#include "rt_test.h"
#include "test_case.h"
#include "language.h"
#define LOG_TAG "[rt_test]: "//log打印信息
#define LOG(x...) printf(LOG_TAG x)//log打印信息
#define SCAN_RESULT_LENGTH 10//数组长度
#define SCAN_RESULT_FILE "/sys/class/body_det/body_det_switch"//需要打开的文件路径
void *rt_test(void *argv)//测试函数
{
struct testcase_info *tc_info = (struct testcase_info *)argv;
int y,rt_det;
int count=0;
FILE *fp;//定义一个FILE类型的指针变量
char results[SCAN_RESULT_LENGTH];//定义一个长度为SCAN_RESULT_LENGTH的results数组
/* remind ddr test */
if (tc_info->y <= 0)
tc_info->y = get_cur_print_y();
y = tc_info->y;
LOG("start rt test.\n");
ui_print_xy_rgba(0, y, 255, 255, 0, 255, "%s:\n", PCBA_RT);//打印测试项
while(count==0){//count检测是否退出循环
usleep(500000);//延时500ms
fp = fopen(SCAN_RESULT_FILE, "r");//以只读的形式打开SCAN_RESULT_FILE文件
if (fp == NULL) {//检测fopen返回值,如果没有此文件则退出
LOG("can not open %s.\n", SCAN_RESULT_FILE);
ui_print_xy_rgba(0, y, 255, 0, 0, 255, "%s:[%s]\n", PCBA_RT,PCBA_FAILED);
tc_info->result = -1;
return argv;
}
memset(results, 0, SCAN_RESULT_LENGTH);//给results开空间
fgets(results, sizeof(results), fp);//获取fp文件里面的内容,返回值为字符串
rt_det = strtol(results, NULL, 10);//字符串results转整型函数,返回值为整型
LOG("start rt test1111--%s--%d\n",results,rt_det);//打印results,rt_det信息
if(rt_det == 1){//当节点内容=1时的处理
LOG("start rt test2222--\n");
ui_print_xy_rgba(0, y, 0, 255, 0, 255, "%s:[%s]\n", PCBA_RT,PCBA_SECCESS);//打印[通过]测试
tc_info->result = 0;
count++;//count变量+1,以用来退出循环
}else if(rt_det == 0){//当节点内容=0时的处理
LOG("start rt test3333--\n");
count=0;//count变量赋值0,以用来继续循环检测
}
fclose(fp);//关闭已打开的文件fp,释放资源
}
return NULL;
}
标签:rt,info,det,results,pcba,RESULT,test,include,RK
From: https://blog.csdn.net/weixin_42014521/article/details/140854954