添加错误代码
This commit is contained in:
@@ -10,7 +10,7 @@
|
||||
#include "compiler_info.h"
|
||||
#include "dev_backup.h"
|
||||
#include "moter.h"
|
||||
|
||||
#include "key.h"
|
||||
|
||||
|
||||
|
||||
@@ -25,24 +25,43 @@ typedef struct{
|
||||
}check_def;
|
||||
|
||||
|
||||
|
||||
// 计算方案有多少个范围参数
|
||||
static int calc_range_num(void)
|
||||
{
|
||||
const scheme_def *s=check_scheme();
|
||||
const scheme_task_def *t;
|
||||
int index=0;
|
||||
for(int i=0;i<s->task_num;i++)
|
||||
{
|
||||
t=&s->task[i];
|
||||
index+=t->item_num;
|
||||
}
|
||||
return index;
|
||||
}
|
||||
|
||||
// 判断检测数据是否超限,返回填充的字节个数
|
||||
static int in_range(const uint8_t *src_data,uint8_t *range)
|
||||
{
|
||||
const scheme_def *s=check_scheme();
|
||||
const scheme_task_def *t;
|
||||
int temp;
|
||||
for(int i=0;i<s->range_num;i++)
|
||||
int index=0;
|
||||
for(int i=0;i<s->task_num;i++)
|
||||
{
|
||||
temp=src_data[i*2]|(src_data[i*2+1]<<8);
|
||||
if(temp>=s->range[i].min&&temp<=s->range[i].max){
|
||||
range[i/8]&=~(1<<(i%8));
|
||||
}else{
|
||||
range[i/8]|=(1<<(i%8));
|
||||
t=&s->task[i];
|
||||
for(int j=0;j<t->item_num;j++)
|
||||
{
|
||||
temp=src_data[index*2]|(src_data[index*2+1]<<8);
|
||||
if(temp>=t->range[j].min&&temp<=t->range[j].max){
|
||||
range[index/8]&=~(1<<(index%8));
|
||||
}else{
|
||||
range[index/8]|=(1<<(index%8));
|
||||
}
|
||||
index++;
|
||||
}
|
||||
}
|
||||
DBG_LOG("range_num=%d, ",s->range_num);
|
||||
return (s->range_num+7)/8;
|
||||
DBG_LOG("range_num=%d, ",index);
|
||||
return (index+7)/8;
|
||||
}
|
||||
|
||||
|
||||
@@ -68,7 +87,7 @@ static void check_end(ucport_def *u,port_mcu *src,void *data,int ack,char *err_s
|
||||
// 返回参数校验,跳过8字节的流程执行位
|
||||
ack_d+=in_range(arr_data(data)+8+8,ack_d);
|
||||
// 复制返回参数,跳过8字节的流程执行位
|
||||
memcpy(ack_d,arr_data(data)+8+8,check_scheme()->range_num*2);
|
||||
memcpy(ack_d,arr_data(data)+8+8,calc_range_num()*2);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -131,7 +150,7 @@ static void check_when_moter_down(void *t)
|
||||
|
||||
static ucport_def *check(tran_def *t, uint8_t cmd,array_def *data)
|
||||
{
|
||||
int return_size=(check_scheme()->range_num*2+8+(check_scheme()->range_num+7)/8);
|
||||
int return_size=(calc_range_num()*2+8+(calc_range_num()+7)/8);
|
||||
check_def *u=calloc(1,sizeof(check_def)+return_size*20);
|
||||
u->ret_skip=return_size;
|
||||
u->ack_size=return_size*20;
|
||||
@@ -140,10 +159,15 @@ static ucport_def *check(tran_def *t, uint8_t cmd,array_def *data)
|
||||
u->u.dolater=check_dolater;
|
||||
u->u.doend=check_end;
|
||||
DBG_LOG("check: skip=%d",u->ret_skip);
|
||||
tran_set_busy(t,1);
|
||||
moter_down(check_when_moter_down,u);
|
||||
array_def *a=arr_creat();
|
||||
arr_append(a,0);
|
||||
if(key_pressed())
|
||||
{
|
||||
tran_set_busy(t,1);
|
||||
moter_down(check_when_moter_down,u);
|
||||
arr_append(a,TRAN_ERR_NONE);
|
||||
}else{
|
||||
arr_append(a,TRAN_ERR_STEP);
|
||||
}
|
||||
emit tran_reply_signal(u->u.p,arr_temp(a));
|
||||
|
||||
return (ucport_def *)u;
|
||||
|
Reference in New Issue
Block a user