移植与电子模块通信相关代码
This commit is contained in:
@@ -20,49 +20,15 @@
|
||||
|
||||
|
||||
|
||||
#define PORT_NUM 2
|
||||
|
||||
|
||||
typedef struct _tran_def{
|
||||
ucport_def *u;
|
||||
port_mcu *port[PORT_NUM];
|
||||
uint32_t slave_online;// 对应位为1则从机在线
|
||||
int is_busy;
|
||||
}tran_def;
|
||||
|
||||
|
||||
|
||||
// 打印从机状态
|
||||
static void tran_print_slave_stat(void *t)
|
||||
{
|
||||
list_def *l=list_creat_int();
|
||||
uint32_t a=tran_get_slave_online(t);
|
||||
for(int i=0;i<PORT_NUM;i++)
|
||||
{
|
||||
if(a&(1<<i)){
|
||||
list_append_int(l,i+1);
|
||||
}
|
||||
}
|
||||
DBG_LOG("slave online stat:%s",str_temp(list_string(l)));
|
||||
//DBG_LOG("slave online stat:%08x",a);
|
||||
list_delete(l);
|
||||
}
|
||||
|
||||
|
||||
// 扫描从机
|
||||
static void tran_scan_slave(void *t)
|
||||
{
|
||||
for(int i=0;i<PORT_NUM;i++)
|
||||
{
|
||||
// 只给在线设备升级方案
|
||||
port_mcu *mcu=tran_get_portm(t,i);
|
||||
if(mcu&&(tran_get_slave_online(t)&(1<<i))){
|
||||
// f9用于获取运行状态,失败则设备不在线
|
||||
port_start(mcu,usercmd_creat(0xf9,arr_temp(arr_creat())));
|
||||
}
|
||||
}
|
||||
later_execute(tran_print_slave_stat,t,5500);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -71,27 +37,18 @@ static int tran_init(void)
|
||||
{
|
||||
sig_thread t=thread_creat(10);
|
||||
tran_def *tran= tran_creat(t);
|
||||
tran->slave_online=0xfffff;
|
||||
app_variable("tran",tran,0);
|
||||
later_execute(tran_scan_slave,tran,500);
|
||||
return 0;
|
||||
}
|
||||
app_init_export(tran_init);
|
||||
|
||||
|
||||
void tran_end_slot(tran_def *obj,port_mcu *src,void *data,int ack,char *err_str);
|
||||
void tran_end_slot(tran_def *obj,void *src,void *data,int ack,char *err_str);
|
||||
|
||||
tran_def *tran_creat(sig_thread t)
|
||||
{
|
||||
tran_def *tr=calloc(1,sizeof(tran_def));
|
||||
param_check(tr);
|
||||
port_init();
|
||||
for(int i=0;i<PORT_NUM;i++)
|
||||
{
|
||||
tr->port[i]=port_creat(i+1,t);
|
||||
// 连接操作结束信号
|
||||
connect(tr->port[i],port_end_signal,0,tr,tran_end_slot);
|
||||
}
|
||||
return tr;
|
||||
}
|
||||
|
||||
@@ -133,33 +90,16 @@ void tran_recv_slot(tran_def *t,const char *codec_name,uint8_t cmd,array_def *da
|
||||
}
|
||||
}
|
||||
|
||||
void tran_set_slave_online(tran_def *t,uint8_t addr,int stat)
|
||||
{
|
||||
param_check(t);
|
||||
uint32_t a=0;
|
||||
a=1<<(addr-1);
|
||||
if(stat)
|
||||
t->slave_online|=a;
|
||||
else{
|
||||
t->slave_online&=(~a);
|
||||
//DBG_LOG("a=%08x",a);
|
||||
}
|
||||
}
|
||||
uint32_t tran_get_slave_online(tran_def *t)
|
||||
{
|
||||
param_check(t);
|
||||
return t->slave_online;
|
||||
}
|
||||
|
||||
void tran_end_slot(tran_def *obj,port_mcu *src,void *data,int ack,char *err_str)
|
||||
|
||||
|
||||
void tran_end_slot(tran_def *obj,void *src,void *data,int ack,char *err_str)
|
||||
{
|
||||
//DBG_LOG("tran end slot");
|
||||
param_check(obj);
|
||||
if(strcmp(err_str,"timeout")==0)
|
||||
{
|
||||
tran_set_slave_online(obj,port_get_addr(src),0);
|
||||
}else{
|
||||
tran_set_slave_online(obj,port_get_addr(src),1);
|
||||
}
|
||||
if((obj->u)&&obj->u->doend)
|
||||
obj->u->doend(obj->u,src,data,ack,err_str);
|
||||
@@ -175,13 +115,7 @@ int tran_get_busy(tran_def *t)
|
||||
}
|
||||
|
||||
|
||||
// 获取指定通道
|
||||
port_mcu *tran_get_portm(tran_def *t,int index)
|
||||
{
|
||||
if(index<0||index>=PORT_NUM)
|
||||
return 0;
|
||||
return t->port[index];
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -374,13 +308,6 @@ static void when_scheme_done(ucport_def *u)
|
||||
DBG_LOG("memused:%d",mem_perused());
|
||||
rt_thread_mdelay(100);
|
||||
DBG_LOG("memused:%d",mem_perused());
|
||||
for(int i=0;i<PORT_NUM;i++)
|
||||
{
|
||||
// 只给在线设备升级方案
|
||||
port_mcu *mcu=tran_get_portm(tran,i);
|
||||
if(mcu&&(tran_get_slave_online(tran)&(1<<i)))
|
||||
port_start(mcu,updata_scheme_creat(check_scheme()->slave_data,2048));
|
||||
}
|
||||
}
|
||||
static ucport_def *tran_scheme(tran_def *t, uint8_t cmd,array_def *data)
|
||||
{
|
||||
|
Reference in New Issue
Block a user