添加广播方式升级
This commit is contained in:
@@ -25,30 +25,35 @@ HandlePc *handlePcFind(int cmd)
|
||||
|
||||
void ProtPc::init()
|
||||
{
|
||||
if_ = interFaceFind("tcp");
|
||||
if_ = interFaceFind("uart_host");
|
||||
codec_ = codecFind("codec_ym");
|
||||
if(if_==nullptr||codec_==nullptr){
|
||||
return;
|
||||
}
|
||||
|
||||
if_->set_irq([=](myarray recv)
|
||||
{
|
||||
recv_data+=recv;
|
||||
if(codec_->packCheck(recv_data)==true){
|
||||
int cmd,src,dst;
|
||||
myarray data=codec_->decode(src,dst,cmd,recv_data);
|
||||
if(handle_!=nullptr){
|
||||
if(handle_->busy==0){
|
||||
disconnect(handle_,&HandlePc::send_data_signal,this,&ProtPc::send_data_slot);
|
||||
delete handle_;
|
||||
}else{
|
||||
qWarning("prot_pc is busy.");
|
||||
return;
|
||||
}
|
||||
int pack_len=0;
|
||||
while(pack_len=codec_->packCheck(recv_data),pack_len>0){
|
||||
int cmd,src,dst;
|
||||
qDebug("host recv:%s",recv_data.toHex(' ').data());
|
||||
myarray data=codec_->decode(src,dst,cmd,recv_data);
|
||||
recv_data.remove(0,pack_len);
|
||||
if(handle_!=nullptr){
|
||||
if(handle_->busy==0){
|
||||
disconnect(handle_,&HandlePc::send_data_signal,this,&ProtPc::send_data_slot);
|
||||
delete handle_;
|
||||
}else{
|
||||
qWarning("prot_pc is busy.");
|
||||
return;
|
||||
}
|
||||
handle_=handlePcFind(cmd);
|
||||
if(handle_!=nullptr){
|
||||
connect(handle_,&HandlePc::send_data_signal,this,&ProtPc::send_data_slot);
|
||||
handle_->dolater(cmd,data);
|
||||
}
|
||||
recv_data.clear();
|
||||
}
|
||||
handle_=handlePcFind(cmd);
|
||||
if(handle_!=nullptr){
|
||||
connect(handle_,&HandlePc::send_data_signal,this,&ProtPc::send_data_slot);
|
||||
handle_->dolater(cmd,data);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
Reference in New Issue
Block a user