F´ Flight Software - C/C++ Documentation NASA-v1.6.0
A framework for building embedded system applications to NASA flight quality standards.
Loading...
Searching...
No Matches
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 {
37};
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