添加赋码设备注码命令,实现ew检测时注码
This commit is contained in:
128
source/task/tran_for_coder.c
Normal file
128
source/task/tran_for_coder.c
Normal file
@@ -0,0 +1,128 @@
|
||||
#include "tran_for_coder.h"
|
||||
#include "debug.h"
|
||||
#include "mymisc.h"
|
||||
#include "mystdlib.h"
|
||||
#include "board.h"
|
||||
#include "dev_flash.h"
|
||||
#include "prot_uc.h"
|
||||
#include "coder_lib.h"
|
||||
#include "PSDGenerate.h"
|
||||
#include "mystring.h"
|
||||
#include "coder_judge.h"
|
||||
#include "JQ_UIDGenerate.h"
|
||||
#include "transmit.h"
|
||||
#include "elec_judge.h"
|
||||
#include "elec_task_slot.h"
|
||||
#include "elec_det.h"
|
||||
|
||||
|
||||
|
||||
typedef struct{
|
||||
ucport_def u;
|
||||
char uid_code[20];
|
||||
uint8_t save_code[12];
|
||||
uint8_t psw[10];
|
||||
char psw_ascii[10];
|
||||
}slave_def;
|
||||
|
||||
|
||||
|
||||
|
||||
static slave_def *slave_creat(void)
|
||||
{
|
||||
slave_def *u=calloc(1,sizeof(slave_def));
|
||||
return u;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void slave_del(ucport_def *u)
|
||||
{
|
||||
slave_def *s=(slave_def *)u;
|
||||
free(u);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 赋码仪 注码使用xt算法
|
||||
static int code_dolater(ucport_def *u,uint8_t cmd,array_def *data,char *err_str)
|
||||
{
|
||||
slave_def *s=(slave_def *)u;
|
||||
uint8_t *d=arr_data(data);
|
||||
if(d[0]!=1){
|
||||
// 只支持1个通道
|
||||
return 1;
|
||||
}
|
||||
if(check_shell_code((const char *)&d[6])==0){
|
||||
// 管壳码无效
|
||||
return 2;
|
||||
}
|
||||
if(coder_shell_to_uid((const char *)&d[1],(const char *)&d[6],s->uid_code)!=0){
|
||||
// uid校验失败
|
||||
return 3;
|
||||
}
|
||||
{
|
||||
array_def *r=arr_creat();
|
||||
arr_append(r,1);
|
||||
arr_append(r,0);
|
||||
emit tran_reply_signal(u->p,arr_temp(r));
|
||||
}
|
||||
|
||||
coder_uid_to_save(s->uid_code,s->save_code);
|
||||
GetPasswordByUidCode((const uint8_t *)s->uid_code,s->psw);
|
||||
sprintf(s->psw_ascii,"%02X%02X%02X%02X",
|
||||
s->psw[0],s->psw[1],s->psw[2],s->psw[3]);
|
||||
array_def *uid_psw=arr_creat();
|
||||
arr_append(uid_psw,8);
|
||||
arr_append(uid_psw,4);
|
||||
arr_append(uid_psw,1);
|
||||
arr_appends(uid_psw,s->save_code,8);
|
||||
arr_appends(uid_psw,s->psw,4);
|
||||
array_def *r=elec_check_with_scheme(uid_psw);
|
||||
arr_delete(uid_psw);
|
||||
if(r){
|
||||
array_def *ret=arr_creat();
|
||||
arr_append(ret,1);
|
||||
arr_append(ret,1);
|
||||
arr_append(ret,arr_get(r,0));
|
||||
arr_appends(ret,&d[6],13);
|
||||
arr_appends(ret,s->uid_code,16);
|
||||
arr_appends(ret,s->psw_ascii,8);
|
||||
emit tran_send_signal(u->p,0x82,arr_temp(ret));
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
static ucport_def *code(tran_def *t, uint8_t cmd,array_def *data)
|
||||
{
|
||||
int ret=0;
|
||||
slave_def *u=slave_creat();
|
||||
u->u.p=t;
|
||||
u->u.del=slave_del;
|
||||
u->u.dolater=code_dolater;
|
||||
u->u.dolater(&u->u,cmd,data,"ok");
|
||||
return (ucport_def *)u;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
transmit_export(ym_checker,0x02,code)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user