仓库迁移
This commit is contained in:
124
source/task/tran_for_checker.c
Normal file
124
source/task/tran_for_checker.c
Normal file
@@ -0,0 +1,124 @@
|
||||
#include "tran_for_checker.h"
|
||||
#include "debug.h"
|
||||
#include "mymisc.h"
|
||||
#include "mystdlib.h"
|
||||
#include "board.h"
|
||||
#include "dev_flash.h"
|
||||
#include "tcp.h"
|
||||
#include "prot_uc.h"
|
||||
#include "handle_for_checker.h"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
typedef struct{
|
||||
ucport_def u;
|
||||
uint16_t addrs;
|
||||
void (*doexert)(ucport_def *u);
|
||||
uint8_t ack_num;
|
||||
uint8_t ack_size;
|
||||
uint8_t ack[0];
|
||||
}check_def;
|
||||
|
||||
|
||||
|
||||
// 检测完成
|
||||
static void check_end(ucport_def *u,port_mcu *src,void *data,int ack,char *err_str)
|
||||
{
|
||||
check_def *w=(check_def *)u;
|
||||
uint8_t addr=port_get_addr(src);
|
||||
if(addr<=0||addr>10){
|
||||
DBG_WARN("addr err:%d",addr);
|
||||
return;
|
||||
}
|
||||
int return_size=(check_scheme()->range_num*2+8);
|
||||
uint8_t *ack_d=&w->ack[(addr-1)*return_size];
|
||||
if(return_size!=arr_length(data)){
|
||||
DBG_WARN("data err:%d",addr);
|
||||
return;
|
||||
}
|
||||
memcpy(ack_d,arr_data(data),return_size);
|
||||
// TODO: 还有4字节数据
|
||||
w->ack_num++;
|
||||
if(w->ack_num>=20)
|
||||
{
|
||||
array_def *a=arr_creat();
|
||||
arr_append(a,0);
|
||||
arr_appends(a,w->ack,w->ack_size);
|
||||
emit tran_send_signal(w->u.p,0x31,arr_temp(a));
|
||||
tran_set_busy(w->u.p,0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void check_del(ucport_def *u)
|
||||
{
|
||||
free(u);
|
||||
}
|
||||
|
||||
|
||||
static ucport_def *check(tran_def *t, uint8_t cmd,array_def *data)
|
||||
{
|
||||
if(arr_length(data)<7){
|
||||
DBG_WARN("cmd format err.");
|
||||
return 0;
|
||||
}
|
||||
int return_size=(check_scheme()->range_num*2+8);
|
||||
check_def *u=calloc(1,sizeof(check_def)+return_size*10);
|
||||
u->ack_size=return_size*10;
|
||||
u->u.p=t;
|
||||
u->u.del=check_del;
|
||||
u->u.doend=check_end;
|
||||
tran_set_busy(t,1);
|
||||
for(int i=0;i<20;i++)
|
||||
{
|
||||
if(u->addrs&(1<<i)){
|
||||
port_mcu *mcu=tran_get_portm(u->u.p,i);
|
||||
// 这里打开检测
|
||||
if(mcu){
|
||||
port_start(mcu,check_creat(check_scheme()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
array_def *a=arr_creat();
|
||||
arr_append(a,0);
|
||||
emit tran_reply_signal(u->u.p,arr_temp(a));
|
||||
|
||||
return (ucport_def *)u;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
static ucport_def *bootinfo(tran_def *t,uint8_t cmd,array_def *data)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
transmit_export(ym_checker,0x30,check)
|
||||
transmit_export(ym_checker,0x34,bootinfo)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user