添加参数设置和自检命令
This commit is contained in:
@@ -16,6 +16,15 @@
|
||||
|
||||
|
||||
|
||||
// 从机地址偏移
|
||||
static inline int slave_addr_off(void)
|
||||
{
|
||||
if(sys_param()->slave_addr_start)
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
typedef struct{
|
||||
@@ -44,18 +53,35 @@ static void write_uid_end(ucport_def *u,port_mcu *src,void *data,int ack,char *e
|
||||
DBG_WARN("addr err:%d",addr);
|
||||
return;
|
||||
}
|
||||
uint8_t *d=&w->ack[(addr-1)*39];
|
||||
addr-=1;
|
||||
|
||||
uint8_t *d=&w->ack[(addr)*39];
|
||||
w->ack_num++;
|
||||
d[0]=addr-1;
|
||||
d[0]=addr+slave_addr_off();
|
||||
d[1]=ack;
|
||||
memcpy(&d[2],w->item[addr-1].shell_code,13);
|
||||
memcpy(&d[2+13],w->item[addr-1].uid_code,16);
|
||||
memcpy(&d[2+13+16],w->item[addr-1].password,8);
|
||||
memcpy(&d[2],w->item[addr].shell_code,13);
|
||||
memcpy(&d[2+13],w->item[addr].uid_code,16);
|
||||
memcpy(&d[2+13+16],w->item[addr].password,8);
|
||||
if(w->ack_num>=10)
|
||||
{
|
||||
array_def *a=arr_creat();
|
||||
arr_append(a,w->addrs_num);
|
||||
arr_appends(a,w->ack,390);
|
||||
// arr_appends(a,w->ack,390);
|
||||
for(int i=0;i<10;i++)
|
||||
{
|
||||
uint8_t *d=&w->ack[i*39];
|
||||
if(sys_param()->coder_ret_mode)
|
||||
{
|
||||
// 完整模式
|
||||
arr_appends(a,d,39);
|
||||
}
|
||||
else{
|
||||
// 精简模式
|
||||
arr_appends(a,d,2);
|
||||
d+=2+13+16;
|
||||
arr_appends(a,d,8);
|
||||
}
|
||||
}
|
||||
emit tran_send_signal(w->u.p,0x82,arr_temp(a));
|
||||
tran_set_busy(w->u.p,0);
|
||||
}
|
||||
@@ -72,7 +98,7 @@ static void write_uid_return_ok(void *p)
|
||||
arr_append(a,u->addrs_num);
|
||||
for(int i=0;i<10;i++)
|
||||
{
|
||||
arr_append(a,i);
|
||||
arr_append(a,i+slave_addr_off());
|
||||
arr_append(a,0);
|
||||
arr_append_num(a,37,'0');
|
||||
}
|
||||
@@ -125,7 +151,7 @@ static ucport_def *write_uid(tran_def *t, uint8_t cmd,array_def *data)
|
||||
// 默认失败
|
||||
for(int i=0;i<10;i++)
|
||||
{
|
||||
u->ack[i*39+0]=i;
|
||||
u->ack[i*39+0]=i+slave_addr_off();
|
||||
u->ack[i*39+1]=1;
|
||||
}
|
||||
tran_set_busy(t,1);
|
||||
@@ -165,19 +191,15 @@ static void write_uid2_end(ucport_def *u,port_mcu *src,void *data,int ack,char *
|
||||
DBG_WARN("addr err:%d",addr);
|
||||
return;
|
||||
}
|
||||
uint8_t *d=&w->ack[(addr-1)*39];
|
||||
addr-=1;
|
||||
|
||||
uint8_t *d=&w->ack[(addr)*39];
|
||||
w->ack_num++;
|
||||
d[0]=addr-1;
|
||||
d[0]=addr+slave_addr_off();
|
||||
d[1]=ack;
|
||||
if(ack==0)
|
||||
{
|
||||
memcpy(&d[2],w->item[addr-1].shell_code,13);
|
||||
memcpy(&d[2+13],w->item[addr-1].uid_code,16);
|
||||
memcpy(&d[2+13+16],w->item[addr-1].password,8);
|
||||
}else{
|
||||
// 失败的数据全部填充'0'
|
||||
memset(&d[2],'0',37);
|
||||
}
|
||||
memcpy(&d[2],w->item[addr].shell_code,13);
|
||||
memcpy(&d[2+13],w->item[addr].uid_code,16);
|
||||
memcpy(&d[2+13+16],w->item[addr].password,8);
|
||||
if(w->ack_num>=10)
|
||||
{
|
||||
array_def *a=arr_creat();
|
||||
@@ -233,8 +255,10 @@ static void check_end(ucport_def *u,port_mcu *src,void *data,int ack,char *err_s
|
||||
DBG_WARN("addr err:%d",addr);
|
||||
return;
|
||||
}
|
||||
uint8_t *ack_d=&w->ack[(addr-1)*6];
|
||||
ack_d[0]=addr-1;
|
||||
addr-=1;
|
||||
|
||||
uint8_t *ack_d=&w->ack[(addr)*6];
|
||||
ack_d[0]=addr+slave_addr_off();
|
||||
ack_d[1]=ack;
|
||||
// TODO: 还有4字节数据
|
||||
|
||||
@@ -260,7 +284,7 @@ static void check_return_ok(void *p)
|
||||
arr_append(a,u->type);
|
||||
// 固定返回6*10个字节,如果不检测某通道,则该通道填充占位符
|
||||
for(int i=0;i<10;i++){
|
||||
arr_append(a,i);
|
||||
arr_append(a,i+slave_addr_off());
|
||||
arr_append(a,0);// 成功
|
||||
arr_append_num(a,4,0);
|
||||
}
|
||||
@@ -291,7 +315,7 @@ static ucport_def *check(tran_def *t, uint8_t cmd,array_def *data)
|
||||
// 默认失败
|
||||
for(int i=0;i<10;i++)
|
||||
{
|
||||
u->ack[i*6+0]=i;
|
||||
u->ack[i*6+0]=i+slave_addr_off();
|
||||
u->ack[i*6+1]=1;
|
||||
}
|
||||
tran_set_busy(t,1);
|
||||
|
Reference in New Issue
Block a user