添加写三码验三码任务,实现0x20任务,完成任务插槽机制

添加文件 tran_for_broadcast.c
This commit is contained in:
ranchuan
2023-12-18 18:17:21 +08:00
parent 8f28200ffe
commit 58c902a94f
13 changed files with 525 additions and 28 deletions

View File

@@ -119,6 +119,26 @@ static int calc_skip_num(int index)
/*rc{
设置UID和密码到小板内存三码绑定函数使用此数据
输入参数[0]=uid长度[1]=pwd长度[uid][pwd]
}*/
void CheckerExt_SetUID(void)
{
uint8_t pwd_len=0,uid_len=0;
uint8_t *uid_psw=(uint8_t *)checker_runcfg.params;
uint8_t ret=0;
uid_len = uid_psw[0];
pwd_len = uid_psw[1];
if(uid_len==0||pwd_len==0){
ret=1;
}
checker_runcfg.uid_len=uid_len;
checker_runcfg.pwd_len=pwd_len;
memcpy(checker_runcfg.writeuid,uid_psw+2,uid_len);
memcpy(checker_runcfg.writepwd,uid_psw+2+uid_len,pwd_len);
Checker_MaskResult(ret,checker_runcfg.task_info.runindex);
}
/*rc{
@@ -132,9 +152,11 @@ void CheckerExt_Slot(void)
{
int index;
uint16_t ret=0;
uint16_t exe_ret=0;
int self_index=checker_runcfg.task_info.runindex;
task_def *t=0;
void *task_slot=0;
CheckerTask fun=0;
if(checker_runcfg.param_count<1){
ret=1;
goto end;
@@ -149,12 +171,37 @@ void CheckerExt_Slot(void)
goto end;
}
while(t=task_slot_next(task_slot,(uint8_t)index),t){
// t->
memset(&checker_runcfg.task_info,0,sizeof(CheckerTask_Info_st));
memset(checker_runcfg.params,0,20);
checker_runcfg.param_count = 0;//参数个数
checker_runcfg.rtv_count = 0;//返回值个数
checker_runcfg.excue_rtv = 0;
checker_runcfg.task_info.retry_time = 0;
checker_runcfg.task_info.runindex=self_index;
checker_runcfg.param_count = t->par_count;
checker_runcfg.rtv_count = t->ret_count;
memcpy(checker_runcfg.params,t->params,checker_runcfg.param_count*2);
fun=elec_get_task_fun(t->task_id);
checker_runcfg.excue_rtv=1;
if(fun){
fun();
checker_runcfg.rtv_index-=checker_runcfg.rtv_count;
}
exe_ret|=checker_runcfg.excue_rtv;
memcpy(t->rets,&checker_runcfg.Test_Rtv[checker_runcfg.rtv_index],checker_runcfg.rtv_count*2);
memset(&checker_runcfg.Test_Rtv[checker_runcfg.rtv_index],0,checker_runcfg.rtv_count*2);
if(checker_runcfg.excue_rtv){
task_slot_add_err(task_slot,t->errcode);
}
}
if(elec_task_env_restore()){
ret=5;
ret=3;
goto end;
}
if(exe_ret){
ret=4;
}
end:
Checker_MaskResult(ret,self_index);
}