F´ Flight Software - C/C++ Documentation NASA-v1.6.0
A framework for building embedded system applications to NASA flight quality standards.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
IpSocket.hpp
Go to the documentation of this file.
1// ======================================================================
2// \title IpSocket.hpp
3// \author mstarch
4// \brief hpp file for IpSocket core implementation classes
5//
6// \copyright
7// Copyright 2009-2020, by the California Institute of Technology.
8// ALL RIGHTS RESERVED. United States Government Sponsorship
9// acknowledged.
10//
11// ======================================================================
12#ifndef DRV_IP_IPHELPER_HPP_
13#define DRV_IP_IPHELPER_HPP_
14
15#include <FpConfig.hpp>
16#include <IpCfg.hpp>
17#include <Os/Mutex.hpp>
18
19namespace Drv {
38
45class IpSocket {
46 public:
47 IpSocket();
48 virtual ~IpSocket(){};
67 SocketIpStatus configure(const char* hostname, const U16 port, const U32 send_timeout_seconds,
68 const U32 send_timeout_microseconds);
69
79 bool isOpened();
80
113 SocketIpStatus send(const U8* const data, const U32 size);
129 SocketIpStatus recv(U8* const data, I32& size);
136 void close();
137
138 PROTECTED:
139
146
153 static SocketIpStatus addressToIp4(const char* address, void* ip4);
166 virtual I32 sendProtocol(const U8* const data, const U32 size) = 0;
167
174 virtual I32 recvProtocol( U8* const data, const U32 size) = 0;
175
180 U16 m_port;
181 bool m_open;
183};
184} // namespace Drv
185
186#endif /* DRV_SOCKETIPDRIVER_SOCKETHELPER_HPP_ */
PlatformIntType NATIVE_INT_TYPE
Definition BasicTypes.h:51
uint8_t U8
8-bit unsigned integer
Definition BasicTypes.h:26
C++-compatible configuration header for fprime configuration.
@ SOCKET_MAX_HOSTNAME_SIZE
Definition IpCfg.hpp:23
Helper base-class for setting up Berkley sockets.
Definition IpSocket.hpp:45
virtual I32 sendProtocol(const U8 *const data, const U32 size)=0
Protocol specific implementation of send. Called directly with retry from send.
void close()
closes the socket
Definition IpSocket.cpp:109
U16 m_port
IP address port used.
Definition IpSocket.hpp:180
virtual I32 recvProtocol(U8 *const data, const U32 size)=0
Protocol specific implementation of recv. Called directly with error handling from recv.
bool isOpened()
check if IP socket has previously been opened
Definition IpSocket.cpp:101
virtual ~IpSocket()
Definition IpSocket.hpp:48
char m_hostname[SOCKET_MAX_HOSTNAME_SIZE]
Hostname to supply.
Definition IpSocket.hpp:182
SocketIpStatus recv(U8 *const data, I32 &size)
receive data from the IP socket from the given buffer
Definition IpSocket.cpp:173
bool m_open
Have we successfully opened.
Definition IpSocket.hpp:181
SocketIpStatus send(const U8 *const data, const U32 size)
send data out the IP socket from the given buffer
Definition IpSocket.cpp:138
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
Definition IpSocket.cpp:53
U32 m_timeoutMicroseconds
Definition IpSocket.hpp:179
Os::Mutex m_lock
Definition IpSocket.hpp:176
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.
Definition IpSocket.cpp:80
NATIVE_INT_TYPE m_fd
Definition IpSocket.hpp:177
SocketIpStatus setupTimeouts(NATIVE_INT_TYPE socketFd)
setup the socket timeout properties of the opened outgoing socket
Definition IpSocket.cpp:63
virtual SocketIpStatus openProtocol(NATIVE_INT_TYPE &fd)=0
Protocol specific open implementation, called from open.
SocketIpStatus open()
open the IP socket for communications
Definition IpSocket.cpp:120
SocketIpStatus
Status enumeration for socket return values.
Definition IpSocket.hpp:23
@ SOCK_INVALID_IP_ADDRESS
Bad IP address supplied.
Definition IpSocket.hpp:27
@ SOCK_FAILED_TO_GET_HOST_IP
Host IP lookup failed.
Definition IpSocket.hpp:26
@ SOCK_FAILED_TO_ACCEPT
Failed to accept connection.
Definition IpSocket.hpp:35
@ SOCK_SUCCESS
Socket operation successful.
Definition IpSocket.hpp:24
@ SOCK_FAILED_TO_BIND
Failed to bind to socket.
Definition IpSocket.hpp:33
@ SOCK_DISCONNECTED
Failed to read socket with disconnect.
Definition IpSocket.hpp:32
@ SOCK_READ_ERROR
Failed to read socket.
Definition IpSocket.hpp:31
@ SOCK_FAILED_TO_SET_SOCKET_OPTIONS
Failed to configure socket.
Definition IpSocket.hpp:29
@ SOCK_FAILED_TO_GET_SOCKET
Socket open failed.
Definition IpSocket.hpp:25
@ SOCK_FAILED_TO_LISTEN
Failed to listen on socket.
Definition IpSocket.hpp:34
@ SOCK_INTERRUPTED_TRY_AGAIN
Interrupted status for retries.
Definition IpSocket.hpp:30
@ SOCK_FAILED_TO_CONNECT
Failed to connect socket.
Definition IpSocket.hpp:28
@ SOCK_SEND_ERROR
Failed to send after configured retries.
Definition IpSocket.hpp:36