完成judge功能,管壳码全0校验
This commit is contained in:
@@ -53,6 +53,36 @@ typedef struct{
|
||||
|
||||
|
||||
|
||||
// 上报注码结果
|
||||
static void write_uid_upmit(write_uid_def *w)
|
||||
{
|
||||
array_def *a=arr_creat();
|
||||
arr_append(a,w->addrs_num);
|
||||
// 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);
|
||||
g_self.step=0;
|
||||
// 把命令字改为0x82用于接收主机应答
|
||||
w->u.cmd=0x82;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 注码完成
|
||||
static void write_uid_end(ucport_def *u,port_mcu *src,void *data,int ack,char *err_str)
|
||||
{
|
||||
@@ -73,29 +103,7 @@ static void write_uid_end(ucport_def *u,port_mcu *src,void *data,int ack,char *e
|
||||
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);
|
||||
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);
|
||||
g_self.step=0;
|
||||
// 把命令字改为0x82用于接收主机应答
|
||||
w->u.cmd=0x82;
|
||||
write_uid_upmit(w);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -149,9 +157,11 @@ static ucport_def *write_uid(tran_def *t, uint8_t cmd,array_def *data)
|
||||
u->addrs_num=arr_get(data,0);
|
||||
memcpy(u->year,arr_data(data)+1,4);
|
||||
DBG_LOG("coder, year=%s",u->year);
|
||||
|
||||
// 数据固定140字节,如果不检测某通道,则该通道填充占位符
|
||||
uint8_t *d_off=arr_data(data)+4+1;
|
||||
uint8_t *d_;
|
||||
tran_set_busy(t,1);
|
||||
for(int i=0;i<10;i++)
|
||||
{
|
||||
memcpy(u->item[i].shell_code,d_off+i*14+1,13);
|
||||
@@ -170,27 +180,30 @@ static ucport_def *write_uid(tran_def *t, uint8_t cmd,array_def *data)
|
||||
// 生成密码字符串
|
||||
sprintf(u->item[i].password,"%02X%02X%02X%02X",u->item[i].uid_pw_hex[8],
|
||||
u->item[i].uid_pw_hex[9],u->item[i].uid_pw_hex[10],u->item[i].uid_pw_hex[11]);
|
||||
}
|
||||
// 默认失败
|
||||
for(int i=0;i<10;i++)
|
||||
{
|
||||
// 默认失败
|
||||
u->ack[i*39+0]=i+slave_addr_off();
|
||||
u->ack[i*39+1]=1;
|
||||
}
|
||||
|
||||
|
||||
tran_set_busy(t,1);
|
||||
for(int i=0;i<10;i++)
|
||||
{
|
||||
if(1){
|
||||
port_mcu *mcu=tran_get_portm(u->u.p,i);
|
||||
// 这里打开赋码操作
|
||||
if(mcu){
|
||||
port_start(mcu,code_creat(8,4,u->item[i].uid_pw_hex));
|
||||
if(check_shell_code(u->item[i].shell_code)){
|
||||
port_start(mcu,code_creat(8,4,u->item[i].uid_pw_hex));
|
||||
}else{
|
||||
// 管壳码无效,不注码,此时默认已ack
|
||||
u->ack_num++;
|
||||
if(u->ack_num>=10)
|
||||
{
|
||||
write_uid_upmit(u);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
array_def *a=arr_creat();
|
||||
arr_append(a,u->addrs_num);
|
||||
if(g_self.step==1){
|
||||
|
Reference in New Issue
Block a user