|
|
|
@@ -2,6 +2,8 @@
|
|
|
|
|
#include "bytearray.h"
|
|
|
|
|
#include "mystdlib.h"
|
|
|
|
|
#include "debug.h"
|
|
|
|
|
#include "stdlib.h"
|
|
|
|
|
#include "dev_flash.h"
|
|
|
|
|
|
|
|
|
|
#include "elec_det.h"
|
|
|
|
|
#include "base/delay.h"
|
|
|
|
@@ -27,6 +29,7 @@
|
|
|
|
|
typedef struct{
|
|
|
|
|
CheckerTask_Info_st* task_info_array[PLAN_MAX_TASK];//方案参数结构体指针
|
|
|
|
|
int scheme_inited;
|
|
|
|
|
array_def *data;
|
|
|
|
|
}self_def;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -38,13 +41,23 @@ static self_def g_self;
|
|
|
|
|
// 初始化
|
|
|
|
|
int elec_init(void)
|
|
|
|
|
{
|
|
|
|
|
self_def *s=&g_self;
|
|
|
|
|
void Ye_BoardInit(void);
|
|
|
|
|
void Ye_BoardCheck(void);
|
|
|
|
|
int elec_parper_power(void);
|
|
|
|
|
Ye_BoardInit();
|
|
|
|
|
elec_bootinfo();
|
|
|
|
|
DBG_LOG("local addr:%d.",elec_local_addr());
|
|
|
|
|
return elec_scheme_init();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 初始化方案
|
|
|
|
|
int elec_scheme_init(void)
|
|
|
|
|
{
|
|
|
|
|
self_def *s=&g_self;
|
|
|
|
|
int ret=0;
|
|
|
|
|
int elec_check_scheme(void);
|
|
|
|
|
void elec_load_scheme(void);
|
|
|
|
|
Ye_BoardInit();
|
|
|
|
|
Ye_BoardCheck();
|
|
|
|
|
int elec_parper_power(void);
|
|
|
|
|
if(elec_check_scheme()!=0){
|
|
|
|
|
// 方案校验失败
|
|
|
|
|
DBG_WARN("scheme check failed.");
|
|
|
|
@@ -53,10 +66,36 @@ int elec_init(void)
|
|
|
|
|
}
|
|
|
|
|
s->scheme_inited=1;
|
|
|
|
|
elec_load_scheme();
|
|
|
|
|
return 0;
|
|
|
|
|
ret=elec_parper_power();
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 调压
|
|
|
|
|
static int elec_parper_power(void)
|
|
|
|
|
{
|
|
|
|
|
self_def *s=&g_self;
|
|
|
|
|
CheckerTask_Info_st *task_par=0;
|
|
|
|
|
int ret=0;
|
|
|
|
|
task_par= s->task_info_array[0];
|
|
|
|
|
if(task_par->taskid!=0){
|
|
|
|
|
// 第一个任务不是调压任务,失败
|
|
|
|
|
DBG_WARN("parper power failed,first taskid is not 0.");
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
// 装载参数
|
|
|
|
|
checker_runcfg.power_prapare_exe=0;
|
|
|
|
|
rt_memcpy(&checker_runcfg.task_info,task_par,sizeof(CheckerTask_Info_st));
|
|
|
|
|
checker_runcfg.param_count = checker_runcfg.task_info.param_rtv_count & 0x0F;
|
|
|
|
|
checker_runcfg.rtv_count = (checker_runcfg.task_info.param_rtv_count >> 4) & 0x0F;
|
|
|
|
|
rt_memcpy(checker_runcfg.params,checker_runcfg.task_info.params,checker_runcfg.param_count*2);
|
|
|
|
|
Checker_PowerPrapare();
|
|
|
|
|
ret=checker_runcfg.excue_rtv;
|
|
|
|
|
if(ret){
|
|
|
|
|
DBG_WARN("parper power failed,ret=%d.",ret);
|
|
|
|
|
}
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -64,8 +103,9 @@ int elec_init(void)
|
|
|
|
|
uint8_t elec_local_addr(void)
|
|
|
|
|
{
|
|
|
|
|
static uint8_t addr=0;
|
|
|
|
|
if(addr==0)
|
|
|
|
|
if(addr==0){
|
|
|
|
|
addr=Gpio_GetDeivceAddr();
|
|
|
|
|
}
|
|
|
|
|
return addr;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -84,11 +124,34 @@ void elec_led2_power(int power)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 获取自检参数
|
|
|
|
|
array_def *elec_bootinfo(void)
|
|
|
|
|
{
|
|
|
|
|
void Ye_BoardCheck(void);
|
|
|
|
|
Ye_BoardCheck();
|
|
|
|
|
board_st.hard_v=sys_param()->hard_version;
|
|
|
|
|
board_st.resistor_diff=sys_param()->resistor_diff;
|
|
|
|
|
board_st.hard_v=15;
|
|
|
|
|
array_def *r=arr_creat();
|
|
|
|
|
arr_append(r,0);
|
|
|
|
|
arr_appends(r,&board_st,sizeof(BoartCheck_st));
|
|
|
|
|
return arr_temp(r);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 获取检测结果
|
|
|
|
|
array_def *elec_check_result(void)
|
|
|
|
|
{
|
|
|
|
|
array_def *r=arr_creat();
|
|
|
|
|
arr_append(r,3);
|
|
|
|
|
self_def *s=&g_self;
|
|
|
|
|
array_def *r=0;
|
|
|
|
|
if(s->data){
|
|
|
|
|
r=arr_duplicate(s->data);
|
|
|
|
|
}else{
|
|
|
|
|
r=arr_creat();
|
|
|
|
|
arr_append(r,2);
|
|
|
|
|
}
|
|
|
|
|
return arr_temp(r);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -96,8 +159,14 @@ array_def *elec_check_result(void)
|
|
|
|
|
// 写硬件版本号
|
|
|
|
|
array_def *elec_write_hardversion(int version)
|
|
|
|
|
{
|
|
|
|
|
array_def *r=arr_creat();
|
|
|
|
|
sys_param_def *spar=0;
|
|
|
|
|
spar=calloc(1,sizeof(sys_param_def));
|
|
|
|
|
memcpy(spar,sys_param(),sizeof(sys_param_def));
|
|
|
|
|
spar->hard_version=version;
|
|
|
|
|
flash_save_param(spar);
|
|
|
|
|
free(spar);
|
|
|
|
|
board_st.hard_v=version;
|
|
|
|
|
array_def *r=arr_creat();
|
|
|
|
|
arr_append(r,0);
|
|
|
|
|
return arr_temp(r);
|
|
|
|
|
}
|
|
|
|
@@ -107,8 +176,14 @@ array_def *elec_write_hardversion(int version)
|
|
|
|
|
// 写电阻校准值
|
|
|
|
|
array_def *elec_write_resistor_cbv(int cbv)
|
|
|
|
|
{
|
|
|
|
|
array_def *r=arr_creat();
|
|
|
|
|
sys_param_def *spar=0;
|
|
|
|
|
spar=calloc(1,sizeof(sys_param_def));
|
|
|
|
|
memcpy(spar,sys_param(),sizeof(sys_param_def));
|
|
|
|
|
spar->resistor_diff=cbv;
|
|
|
|
|
flash_save_param(spar);
|
|
|
|
|
free(spar);
|
|
|
|
|
board_st.resistor_diff=cbv;
|
|
|
|
|
array_def *r=arr_creat();
|
|
|
|
|
arr_append(r,0);
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
@@ -283,6 +358,8 @@ array_def *elec_check_with_scheme(array_def *uid_psw)
|
|
|
|
|
arr_appends(r,checker_runcfg.Task_Result,8);
|
|
|
|
|
arr_appends(r,checker_runcfg.Task_Excute,8);
|
|
|
|
|
arr_appends(r,checker_runcfg.Test_Rtv,checker_runcfg.rtv_index*2);
|
|
|
|
|
CHECK_DO(s->data,arr_delete);
|
|
|
|
|
s->data=arr_duplicate(r);
|
|
|
|
|
return arr_temp(r);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|