Paparazzi UAS  v7.0_unstable
Paparazzi is a free software Unmanned Aircraft System.
udp_socket.c File Reference

Easily create and use UDP sockets. More...

#include "udp_socket.h"
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <sys/ioctl.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
+ Include dependency graph for udp_socket.c:

Go to the source code of this file.

Macros

#define TRACE(type, fmt, args...)
 
#define TRACE_ERROR   1
 

Functions

int udp_socket_create (struct UdpSocket *sock, char *host, int port_out, int port_in, bool broadcast)
 Create UDP socket and bind it. More...
 
int udp_socket_send (struct UdpSocket *sock, uint8_t *buffer, uint32_t len)
 Send a packet from buffer, blocking. More...
 
int udp_socket_send_dontwait (struct UdpSocket *sock, uint8_t *buffer, uint32_t len)
 Send a packet from buffer, non-blocking. More...
 
int udp_socket_recv_dontwait (struct UdpSocket *sock, uint8_t *buffer, uint32_t len)
 Receive a UDP packet, dont wait. More...
 
int udp_socket_recv (struct UdpSocket *sock, uint8_t *buffer, uint32_t len)
 Receive one UDP packet, blocking. More...
 
int udp_socket_subscribe_multicast (struct UdpSocket *sock, const char *multicast_addr)
 
int udp_socket_set_recvbuf (struct UdpSocket *sock, int buf_size)
 
int udp_socket_set_sendbuf (struct UdpSocket *sock, int buf_size)
 

Detailed Description

Easily create and use UDP sockets.

Definition in file udp_socket.c.

Macro Definition Documentation

◆ TRACE

#define TRACE (   type,
  fmt,
  args... 
)

Definition at line 37 of file udp_socket.c.

◆ TRACE_ERROR

#define TRACE_ERROR   1

Definition at line 38 of file udp_socket.c.

Function Documentation

◆ udp_socket_create()

int udp_socket_create ( struct UdpSocket sock,
char *  host,
int  port_out,
int  port_in,
bool  broadcast 
)

Create UDP socket and bind it.

Create UDP network (in/out sockets).

Parameters
[out]sockpointer to already allocated UdpSocket struct
[in]hostip address or hostname (hostname not possible if static linking)
[in]port_outoutput port
[in]port_ininput port (set to < 0 to disable)
[in]broadcastif TRUE enable broadcasting
Returns
-1 on error, otherwise 0

Definition at line 49 of file udp_socket.c.

References UdpSocket::addr_in, UdpSocket::addr_out, and UdpSocket::sockfd.

Referenced by udp_arch_periph_init(), and viewvideo_init().

+ Here is the caller graph for this function:

◆ udp_socket_recv()

int udp_socket_recv ( struct UdpSocket sock,
uint8_t buffer,
uint32_t  len 
)

Receive one UDP packet, blocking.

Receive one UDP packet.

Parameters
[in]sockpointer to UdpSocket struct
[out]bufferbuffer to write received packet to
[in]lenbuffer length in bytes (maximum bytes to read)
Returns
number of bytes received (-1 on error)

Definition at line 185 of file udp_socket.c.

References UdpSocket::addr_in, and UdpSocket::sockfd.

◆ udp_socket_recv_dontwait()

int udp_socket_recv_dontwait ( struct UdpSocket sock,
uint8_t buffer,
uint32_t  len 
)

Receive a UDP packet, dont wait.

Sets the MSG_DONTWAIT flag, returns 0 if no data is available.

Parameters
[in]sockpointer to UdpSocket struct
[out]bufferbuffer to write received packet to
[in]lenbuffer length in bytes
Returns
number of bytes received (-1 on error)

Definition at line 160 of file udp_socket.c.

References UdpSocket::addr_in, UdpSocket::sockfd, TRACE, and TRACE_ERROR.

◆ udp_socket_send()

int udp_socket_send ( struct UdpSocket sock,
uint8_t buffer,
uint32_t  len 
)

Send a packet from buffer, blocking.

Parameters
[in]sockpointer to UdpSocket struct
[in]bufferbuffer to send
[in]lenbuffer length in bytes
Returns
number of bytes sent (-1 on error)

Definition at line 120 of file udp_socket.c.

References UdpSocket::addr_out, UdpSocket::sockfd, TRACE, and TRACE_ERROR.

◆ udp_socket_send_dontwait()

int udp_socket_send_dontwait ( struct UdpSocket sock,
uint8_t buffer,
uint32_t  len 
)

Send a packet from buffer, non-blocking.

Parameters
[in]sockpointer to UdpSocket struct
[in]bufferbuffer to send
[in]lenbuffer length in bytes
Returns
number of bytes sent (-1 on error)

Definition at line 141 of file udp_socket.c.

References UdpSocket::addr_out, and UdpSocket::sockfd.

Referenced by rtp_packet_send().

+ Here is the caller graph for this function:

◆ udp_socket_set_recvbuf()

int udp_socket_set_recvbuf ( struct UdpSocket sock,
int  buf_size 
)

Definition at line 205 of file udp_socket.c.

References UdpSocket::sockfd.

◆ udp_socket_set_sendbuf()

int udp_socket_set_sendbuf ( struct UdpSocket sock,
int  buf_size 
)

Definition at line 220 of file udp_socket.c.

References UdpSocket::sockfd.

◆ udp_socket_subscribe_multicast()

int udp_socket_subscribe_multicast ( struct UdpSocket sock,
const char *  multicast_addr 
)

Definition at line 194 of file udp_socket.c.

References UdpSocket::sockfd.