int MsgInterface::SendFax(char* phone)
{
Req_Fax t_req;
memset(&t_req,0,sizeof(Req_Fax));
strcpy(t_req.callerfaxphone,m_faxphone);
strcpy(t_req.calledfaxphone,phone);
t_req.faxMedia.data_redundancy = arg.data_redundancy;
t_req.faxMedia.numFEC = arg.numFEC;
t_req.faxMedia.numIFPs = arg.numIFPs;
t_req.faxMedia.t30_redundancy = arg.t30_redundancy;
t_req.faxMedia.t38FaxMaxDatagram = arg.t38FaxMaxDatagram;
t_req.faxMedia.t38FaxRateManagement = t38FaxRateManagement;
t_req.faxMedia.T38FaxUdpEC = t38FaxUdpEC;
t_req.faxMedia.t38FillBitRemoval = arg.t38FillBitRemoval;
GetLocalHost(t_req.faxMedia.ip);
t_packet.port = GetFaxPort();
t_req.faxMedia.port = t_packet.port;
Getfaxid(t_req.faxid);
int comID = REQ_CALL_FAX;
int seqID = m_tcpMsgProcess->getSeqID();
MsgInfo t_info;
memset(&t_info,0,sizeof(MsgInfo));
t_info.comID = comID;
t_info.len = sizeof(Req_Fax);
memcpy(t_info.data,&t_req,sizeof(Req_Fax));
GetClientNameID(LEFT_HANDLE,t_info.clientID);
SendMsg(seqID,t_info);
return 0;
}
int MsgInterface::SendMsg(int seqID,MsgInfo msginfo)
{
MsgPack msg_pack_t;
memset(&msg_pack_t,0,sizeof(msg_pack_t));
msg_pack_t.std_head.seqID = seqID;
msg_pack_t.std_head.comID = msginfo.comID;
msg_pack_t.std_head.bodyLen = msginfo.len;
strcpy(msg_pack_t.std_head.clientID,msginfo.clientID);
memcpy(msg_pack_t.data,msginfo.data,msginfo.len);
m_tcpMsgProcess->PutData(msg_pack_t);
}
接收方
int MsgRecvInterface::ReqCallFax(char* data, int len, int seqID,int comID)
{
Req_Fax* t_req = (Req_Fax*)data;
m_msgInterface->RecvFax(t_req->callerfaxphone,t_req->faxid);
return 0;
}
int MsgInterface::RecvFax(char* phone,char* faxid)
{
Req_Fax t_req;
memset(&t_req,0,sizeof(Req_Fax));
strcpy(t_req.callerfaxphone,t_packet.phone);
strcpy(t_req.calledfaxphone,t_packet.calledphone);
strcpy(t_req.faxid,t_packet.faxID);
strcpy(t_req.tagid,t_packet.tagID);
memcpy(&t_req.faxMedia,&t_packet.faxmedia,sizeof(FaxMedia));
strcpy(t_req.faxMedia.ip,ip);
t_req.faxMedia.port = GetFaxPort();
arg.isCaller = false;
t_packet.port = t_req.faxMedia.port;
int comID = RSQ_CALL_FAX;
int seqID = m_tcpMsgProcess->getSeqID();
MsgInfo t_info;
memset(&t_info,0,sizeof(MsgInfo));
t_info.comID = comID;
t_info.len = sizeof(Req_Fax);
memcpy(&t_info.data,&t_req,t_info.len);
GetClientNameID(LEFT_HANDLE,t_info.clientID);
SendMsg(seqID,t_info);
ret = t_packet.faxprol->StartFax(arg,NULL,recvfile);
}
传真发起方
int MsgRecvInterface::RsqCallFax(char* data, int len, int seqID,int comID)
{
char fileName[100];
memset(fileName,0,sizeof(fileName));
m_msgInterface->GetFilePathName(fileName);
ret = t_packet.faxprol->StartFax(arg,fileName,NULL);
}
int FaxControlProcess::FaxConSend()
{
struct udptl_io io;
fd_set rdList;
io.send = terminal_send;
udptl_register(t->t38_fe.t38->hudptl, &io, (void*)fd);
while(1){
ret = select(fd+1, &rdList, NULL, NULL, &selTv);
if(ret > 0 && FD_ISSET(fd, &rdList))
{
len = recv(fd, (char *)buf, sizeof(buf), 0);
udptl_recv_proc(t->t38_fe.t38->hudptl,buf, len);
}
terminal_send_timeout(t, tvdiff_us(now, last) * 8 / 1000);
}
udptl_unregister(t->t38_fe.t38->hudptl);
return 0;
}
传真接收方int FaxControlProcess::FaxConRecv()
{
struct udptl_io io;
fd_set rdList;
io.send = terminal_send;
udptl_register(t->t38_fe.t38->hudptl, &io, (void*)fd);
while(1){
ret = select(fd+1, &rdList, NULL, NULL, &selTv);
if(ret > 0 && FD_ISSET(fd, &rdList))
{
len = recv(fd, (char *)buf, sizeof(buf), 0);
udptl_recv_proc(t->t38_fe.t38->hudptl, buf, len);
}
terminal_send_timeout(t, tvdiff_us(now, last) * 8 / 1000);
}
udptl_unregister(t->t38_fe.t38->hudptl);
}