F´ Flight Software - C/C++ Documentation devel
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 {
39
46class IpSocket {
47 public:
48 IpSocket();
49 virtual ~IpSocket(){};
68 SocketIpStatus configure(const char* hostname, const U16 port, const U32 send_timeout_seconds,
69 const U32 send_timeout_microseconds);
76 bool isStarted();
77
87 bool isOpened();
88
97 virtual SocketIpStatus startup();
98
132 SocketIpStatus send(const U8* const data, const U32 size);
148 SocketIpStatus recv(U8* const data, I32& size);
155 void close();
156
163 virtual void shutdown();
164
165 PROTECTED:
166
173
180 static SocketIpStatus addressToIp4(const char* address, void* ip4);
193 virtual I32 sendProtocol(const U8* const data, const U32 size) = 0;
194
201 virtual I32 recvProtocol( U8* const data, const U32 size) = 0;
202
207 U16 m_port;
208 bool m_open;
211};
212} // namespace Drv
213
214#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 Berkeley sockets.
Definition IpSocket.hpp:46
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:117
U16 m_port
IP address port used.
Definition IpSocket.hpp:207
bool isStarted()
Returns true when the socket is started.
Definition IpSocket.cpp:101
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:109
virtual ~IpSocket()
Definition IpSocket.hpp:49
char m_hostname[SOCKET_MAX_HOSTNAME_SIZE]
Hostname to supply.
Definition IpSocket.hpp:210
SocketIpStatus recv(U8 *const data, I32 &size)
receive data from the IP socket from the given buffer
Definition IpSocket.cpp:195
bool m_started
Have we successfully started the socket.
Definition IpSocket.hpp:209
bool m_open
Have we successfully opened.
Definition IpSocket.hpp:208
SocketIpStatus send(const U8 *const data, const U32 size)
send data out the IP socket from the given buffer
Definition IpSocket.cpp:160
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:206
Os::Mutex m_lock
Definition IpSocket.hpp:203
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:204
SocketIpStatus setupTimeouts(NATIVE_INT_TYPE socketFd)
setup the socket timeout properties of the opened outgoing socket
Definition IpSocket.cpp:63
virtual void shutdown()
shutdown the socket
Definition IpSocket.cpp:128
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:142
virtual SocketIpStatus startup()
startup the socket, a no-op on unless this is server
Definition IpSocket.cpp:135
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
@ SOCK_NOT_STARTED
Socket has not been started.
Definition IpSocket.hpp:37