F´ Flight Software - C/C++ Documentation
A framework for building embedded system applications to NASA flight quality standards.
SocketComponentHelper.hpp
Go to the documentation of this file.
1 // ======================================================================
2 // \title SocketComponentHelper.hpp
3 // \author mstarch
4 // \brief hpp file for SocketComponentHelper implementation class
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_SocketComponentHelper_HPP
13 #define DRV_SocketComponentHelper_HPP
14 
15 #include <Fw/Buffer/Buffer.hpp>
16 #include <Drv/Ip/IpSocket.hpp>
17 #include <Os/Task.hpp>
18 #include <Os/Mutex.hpp>
19 
20 namespace Drv {
29  public:
30  enum OpenState{
35  };
40 
44  virtual ~SocketComponentHelper();
45 
59  void start(const Fw::StringBase &name,
62  const Os::Task::ParamType cpuAffinity = Os::Task::TASK_DEFAULT);
63 
75 
85  bool isOpened();
86 
95  void setAutomaticOpen(bool auto_open);
96 
105  SocketIpStatus send(const U8* const data, const U32 size);
106 
115  SocketIpStatus recv(U8* data, U32 &size);
116 
124  void close();
125 
134  void shutdown();
135 
139  bool running();
140 
147  void stop();
148 
158 
159  PROTECTED:
163  virtual void readLoop();
174  virtual IpSocket& getSocketHandler() = 0;
175 
186  virtual Fw::Buffer getBuffer() = 0;
187 
198  virtual void sendBuffer(Fw::Buffer buffer, SocketIpStatus status) = 0;
199 
203  virtual void connected() = 0;
204 
205 
211  static void readTask(void* pointer);
212 
213  PRIVATE:
223  SocketIpStatus reopen();
224 
225  PROTECTED:
229  bool m_reopen = true;
230  bool m_stop = true;
231  OpenState m_open = OpenState::NOT_OPEN;
232 };
233 }
234 #endif // DRV_SocketComponentHelper_HPP
SocketComponentHelper()
constructs the socket read task
bool m_reopen
Force reopen on disconnect.
static constexpr FwSizeType TASK_DEFAULT
Definition: Task.hpp:28
bool m_stop
Stops the task when set to true.
void shutdown()
shutdown the socket communications
SocketIpStatus send(const U8 *const data, const U32 size)
send data to the IP socket from the given buffer
bool isOpened()
check if IP socket has previously been opened
void setAutomaticOpen(bool auto_open)
set socket to automatically open connections when true, or not when false
virtual Fw::Buffer getBuffer()=0
returns a buffer to fill with data
supports a task to read a given socket adaptation
OpenState m_open
Have we successfully opened.
void close()
close the socket communications
virtual void connected()=0
called when the IPv4 system has been connected
virtual IpSocket & getSocketHandler()=0
returns a reference to the socket handler
uint8_t U8
8-bit unsigned integer
Definition: BasicTypes.h:30
FwSizeType ParamType
backwards-compatible parameter type
Definition: Task.hpp:219
SocketIpStatus recv(U8 *data, U32 &size)
receive data from the IP socket from the given buffer
virtual ~SocketComponentHelper()
destructor of the socket read task
static void readTask(void *pointer)
a task designed to read from the socket and output incoming data
void stop()
stop the socket read task and close the associated socket.
virtual void readLoop()
receive off the TCP socket
Os::Task::Status join()
joins to the stopping read task to wait for it to close
SocketIpStatus
Status enumeration for socket return values.
Definition: IpSocket.hpp:29
SocketIpStatus open()
open the socket for communications
Helper base-class for setting up Berkeley sockets.
Definition: IpSocket.hpp:57
virtual void sendBuffer(Fw::Buffer buffer, SocketIpStatus status)=0
sends a buffer to be filled with data
void start(const Fw::StringBase &name, const Os::Task::ParamType priority=Os::Task::TASK_DEFAULT, const Os::Task::ParamType stack=Os::Task::TASK_DEFAULT, const Os::Task::ParamType cpuAffinity=Os::Task::TASK_DEFAULT)
start the socket read task to start producing data
bool running()
is the read loop running