38 #ifndef __UDPDATAPROTOCOL_H__
39 #define __UDPDATAPROTOCOL_H__
43 #include <QHostAddress>
77 int bind_port,
int peer_port,
78 unsigned int udp_redundancy_factor = 1);
98 virtual int receivePacket(QUdpSocket& UdpSocket,
char* buf,
const size_t n);
108 virtual int sendPacket(QUdpSocket& UdpSocket,
const QHostAddress& PeerAddress,
109 const char* buf,
const size_t n);
117 QHostAddress& peerHostAddress,
164 bool waitForReady(QUdpSocket& UdpSocket,
int timeout_msec);
169 int8_t* full_redundant_packet,
170 int full_redundant_packet_size,
171 int full_packet_size,
179 QHostAddress& PeerAddress,
180 int8_t* full_redundant_packet,
181 int full_redundant_packet_size,
182 int full_packet_size);
197 #endif // __UDPDATAPROTOCOL_H__
virtual int sendPacket(QUdpSocket &UdpSocket, const QHostAddress &PeerAddress, const char *buf, const size_t n)
Sends a packet.
Definition: UdpDataProtocol.cpp:200
virtual void getPeerAddressFromFirstPacket(QUdpSocket &UdpSocket, QHostAddress &peerHostAddress, uint16_t &port)
Obtains the peer address from the first UDP packet received. This address is used by the SERVER mode ...
Definition: UdpDataProtocol.cpp:209
int8_t * mFullPacket
Buffer to store Full Packet (audio+header)
Definition: UdpDataProtocol.h:191
void setPeerAddress(const char *peerHostOrIP)
Set the Peer address to connect to.
Definition: UdpDataProtocol.cpp:85
UDP implementation of DataProtocol class.
Definition: UdpDataProtocol.h:63
QHostAddress mPeerAddress
The Peer Address.
Definition: UdpDataProtocol.h:188
unsigned int mUdpRedundancyFactor
Factor of redundancy.
Definition: UdpDataProtocol.h:193
const runModeT mRunMode
Run mode, either SENDER or RECEIVER.
Definition: UdpDataProtocol.h:186
virtual void run()
Implements the Thread Loop. To start the thread, call start() ( DO NOT CALL run() ) ...
Definition: UdpDataProtocol.cpp:222
void setPeerPort(int port)
Sets the peer port number.
Definition: UdpDataProtocol.h:127
UdpDataProtocol(JackTrip *jacktrip, const runModeT runmode, int bind_port, int peer_port, unsigned int udp_redundancy_factor=1)
The class constructor.
Definition: UdpDataProtocol.cpp:59
qint8 int8_t
Typedef for unsigned long long int. This type is guaranteed to be 64-bit.
Definition: jacktrip_types.h:74
static QMutex sUdpMutex
Mutex to make thread safe the binding process.
Definition: UdpDataProtocol.h:194
void receivePacketRedundancy(QUdpSocket &UdpSocket, int8_t *full_redundant_packet, int full_redundant_packet_size, int full_packet_size, uint16_t ¤t_seq_num, uint16_t &last_seq_num, uint16_t &newer_seq_num)
Redundancy algorythm at the receiving end.
Definition: UdpDataProtocol.cpp:389
void bindSocket(QUdpSocket &UdpSocket)
Binds the UDP socket to the available address and specified port.
Definition: UdpDataProtocol.cpp:106
Base class that defines the transmission protocol.
Definition: DataProtocol.h:83
virtual ~UdpDataProtocol()
The class destructor.
Definition: UdpDataProtocol.cpp:76
virtual int receivePacket(QUdpSocket &UdpSocket, char *buf, const size_t n)
Receives a packet. It blocks until a packet is received.
Definition: UdpDataProtocol.cpp:190
bool waitForReady(QUdpSocket &UdpSocket, int timeout_msec)
This function blocks until data is available for reading in the QUdpSocket. The function will timeout...
Definition: UdpDataProtocol.cpp:351
runModeT
Enum to define class modes, SENDER or RECEIVER.
Definition: DataProtocol.h:96
void setBindPort(int port)
Sets the bind port number.
Definition: UdpDataProtocol.h:122
void sendPacketRedundancy(QUdpSocket &UdpSocket, QHostAddress &PeerAddress, int8_t *full_redundant_packet, int full_redundant_packet_size, int full_packet_size)
Redundancy algorythm at the sender end.
Definition: UdpDataProtocol.cpp:436
Main class to creates a SERVER (to listen) or a CLIENT (to connect to a listening server) to send aud...
Definition: JackTrip.h:59
int mPeerPort
Peer Port number.
Definition: UdpDataProtocol.h:185
void signalWatingTooLong(int wait_msec)
Signals when waiting every 10 milliseconds, with the total wait on wait_msec.
Definition: moc_UdpDataProtocol.cpp:99
int mBindPort
Local Port number to Bind.
Definition: UdpDataProtocol.h:184
int8_t * mAudioPacket
Buffer to store Audio Packets.
Definition: UdpDataProtocol.h:190
quint16 uint16_t
Typedef for unsigned short. This type is guaranteed to be 16-bit.
Definition: jacktrip_types.h:67
void printUdpWaitedTooLong(int wait_msec)
Definition: UdpDataProtocol.cpp:379