F´ Flight Software - C/C++ Documentation
devel
A framework for building embedded system applications to NASA flight quality standards.
|
Helper for setting up Udp using Berkeley sockets as a client. More...
#include <Drv/Ip/UdpSocket.hpp>
Public Member Functions | |
UdpSocket () | |
Constructor for client socket udp implementation. More... | |
virtual | ~UdpSocket () |
to cleanup state created at instantiation More... | |
SocketIpStatus | configureSend (const char *hostname, const U16 port, const U32 send_timeout_seconds, const U32 send_timeout_microseconds) |
configure the udp socket for outgoing transmissions More... | |
SocketIpStatus | configureRecv (const char *hostname, const U16 port) |
configure the udp socket for incoming transmissions More... | |
U16 | getRecvPort () |
get the port being received on More... | |
Public Member Functions inherited from Drv::IpSocket | |
IpSocket () | |
virtual | ~IpSocket () |
SocketIpStatus | configure (const char *hostname, const U16 port, const U32 send_timeout_seconds, const U32 send_timeout_microseconds) |
configure the ip socket with host and transmission timeouts More... | |
SocketIpStatus | open (SocketDescriptor &socketDescriptor) |
open the IP socket for communications More... | |
SocketIpStatus | send (const SocketDescriptor &socketDescriptor, const U8 *const data, const U32 size) |
send data out the IP socket from the given buffer More... | |
SocketIpStatus | recv (const SocketDescriptor &fd, U8 *const data, U32 &size) |
receive data from the IP socket from the given buffer More... | |
void | close (const SocketDescriptor &socketDescriptor) |
closes the socket More... | |
void | shutdown (const SocketDescriptor &socketDescriptor) |
shutdown the socket More... | |
Protected Member Functions | |
SocketIpStatus | bind (const PlatformIntType fd) |
bind the UDP to a port such that it can receive packets at the previously configured port More... | |
SocketIpStatus | openProtocol (SocketDescriptor &socketDescriptor) override |
udp specific implementation for opening a socket. More... | |
I32 | sendProtocol (const SocketDescriptor &socketDescriptor, const U8 *const data, const U32 size) override |
Protocol specific implementation of send. Called directly with retry from send. More... | |
I32 | recvProtocol (const SocketDescriptor &socketDescriptor, U8 *const data, const U32 size) override |
Protocol specific implementation of recv. Called directly with error handling from recv. More... | |
Protected Member Functions inherited from Drv::IpSocket | |
virtual bool | isValidPort (U16 port) |
Check if the given port is valid for the socket. More... | |
SocketIpStatus | setupTimeouts (PlatformIntType socketFd) |
setup the socket timeout properties of the opened outgoing socket More... | |
Additional Inherited Members | |
Static Protected Member Functions inherited from Drv::IpSocket | |
static SocketIpStatus | addressToIp4 (const char *address, void *ip4) |
converts a given address in dot form x.x.x.x to an ip address. ONLY works for IPv4. More... | |
Protected Attributes inherited from Drv::IpSocket | |
U32 | m_timeoutSeconds |
U32 | m_timeoutMicroseconds |
U16 | m_port |
IP address port used. More... | |
char | m_hostname [SOCKET_MAX_HOSTNAME_SIZE] |
Hostname to supply. More... | |
Helper for setting up Udp using Berkeley sockets as a client.
Certain IP headers have conflicting definitions with the m_data member of various types in fprime. UdpSocket separates the ip setup from the incoming Fw::Buffer in the primary component class preventing this collision.
Definition at line 29 of file UdpSocket.hpp.
Drv::UdpSocket::UdpSocket | ( | ) |
Constructor for client socket udp implementation.
Definition at line 53 of file UdpSocket.cpp.
|
virtual |
to cleanup state created at instantiation
Definition at line 57 of file UdpSocket.cpp.
|
protected |
bind the UDP to a port such that it can receive packets at the previously configured port
socketDescriptor | socket descriptor used in bind |
Definition at line 83 of file UdpSocket.cpp.
SocketIpStatus Drv::UdpSocket::configureRecv | ( | const char * | hostname, |
const U16 | port | ||
) |
configure the udp socket for incoming transmissions
Configures the UDP handler to use the given hostname and port for incoming transmissions. Outgoing hostname and port are configured using the configureSend
function call for UDP as it requires separate host/port pairs for outgoing and incoming transmissions. Hostname DNS translation is left up to the caller and thus hostname must be an IP address in dot-notation of the form "x.x.x.x". It is possible to configure the UDP port as a single-direction receive port only.
hostname | socket uses for incoming transmissions. Must be of form x.x.x.x |
port | port socket uses for incoming transmissions. |
Definition at line 69 of file UdpSocket.cpp.
SocketIpStatus Drv::UdpSocket::configureSend | ( | const char * | hostname, |
const U16 | port, | ||
const U32 | send_timeout_seconds, | ||
const U32 | send_timeout_microseconds | ||
) |
configure the udp socket for outgoing transmissions
Configures the UDP handler to use the given hostname and port for outgoing transmissions. Incoming hostname and port are configured using the configureRecv
function call for UDP as it requires separate host/port pairs for outgoing and incoming transmissions. Hostname DNS translation is left up to the caller and thus hostname must be an IP address in dot-notation of the form "x.x.x.x". Port cannot be set to 0 as dynamic port assignment is not supported on remote ports. It is possible to configure the UDP port as a single-direction send port only.
Note: delegates to IpSocket::configure
hostname | socket uses for outgoing transmissions. Must be of form x.x.x.x |
port | port socket uses for outgoing transmissions. Must NOT be 0. |
send_timeout_seconds | send timeout seconds portion |
send_timeout_microseconds | send timeout microseconds portion. Must be less than 1000000 |
Definition at line 62 of file UdpSocket.cpp.
U16 Drv::UdpSocket::getRecvPort | ( | ) |
get the port being received on
Most useful when receive was configured to use port "0", this will return the port used for receiving data after a port has been determined. Will return 0 if the connection has not been setup.
Definition at line 77 of file UdpSocket.cpp.
|
overrideprotectedvirtual |
udp specific implementation for opening a socket.
socketDescriptor | (output) file descriptor opened. Only valid on SOCK_SUCCESS. Otherwise will be invalid |
Implements Drv::IpSocket.
Definition at line 115 of file UdpSocket.cpp.
|
overrideprotectedvirtual |
Protocol specific implementation of recv. Called directly with error handling from recv.
socketDescriptor | descriptor to recv from |
data | data pointer to fill |
size | size of data buffer |
Implements Drv::IpSocket.
Definition at line 182 of file UdpSocket.cpp.
|
overrideprotectedvirtual |
Protocol specific implementation of send. Called directly with retry from send.
socketDescriptor | descriptor to send to |
data | data to send |
size | size of data to send |
Implements Drv::IpSocket.
Definition at line 176 of file UdpSocket.cpp.