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
SocketReadTask.hpp
Go to the documentation of this file.
1 // ======================================================================
2 // \title SocketReadTask.hpp
3 // \author mstarch
4 // \brief hpp file for SocketReadTask 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_SOCKETREADTASK_HPP
13 #define DRV_SOCKETREADTASK_HPP
14 
15 #include <Fw/Buffer/Buffer.hpp>
16 #include <Drv/Ip/IpSocket.hpp>
17 #include <Os/Task.hpp>
18 
19 namespace Drv {
28  public:
33 
37  virtual ~SocketReadTask();
38 
52  void startSocketTask(const Fw::StringBase &name,
53  const bool reconnect = true,
56  const NATIVE_UINT_TYPE cpuAffinity = Os::Task::TASK_DEFAULT);
57 
69 
78  void close();
79 
86  void stopSocketTask();
87 
96  Os::Task::TaskStatus joinSocketTask(void** value_ptr);
97 
98 
99  PROTECTED:
110  virtual IpSocket& getSocketHandler() = 0;
111 
122  virtual Fw::Buffer getBuffer() = 0;
123 
134  virtual void sendBuffer(Fw::Buffer buffer, SocketIpStatus status) = 0;
135 
139  virtual void connected() = 0;
140 
146  static void readTask(void* pointer);
147 
149  bool m_reconnect;
150  bool m_stop;
151 
152 };
153 };
154 #endif // DRV_SOCKETREADTASK_HPP
Drv::SocketReadTask::SocketReadTask
SocketReadTask()
constructs the socket read task
Definition: SocketReadTask.cpp:22
Fw::StringBase
Definition: StringType.hpp:23
NATIVE_UINT_TYPE
unsigned int NATIVE_UINT_TYPE
native unsigned integer type declaration
Definition: BasicTypes.hpp:28
Drv::IpSocket
Helper base-class for setting up Berkley sockets.
Definition: IpSocket.hpp:45
Drv::SocketReadTask::m_reconnect
bool m_reconnect
Force reconnection.
Definition: SocketReadTask.hpp:149
Buffer.hpp
Drv
Definition: BlockDriver.hpp:11
Task.hpp
Drv::SocketReadTask::open
SocketIpStatus open()
open the socket for communications
Definition: SocketReadTask.cpp:39
Drv::SocketReadTask::m_stop
bool m_stop
Stops the task when set to true.
Definition: SocketReadTask.hpp:150
Fw::Buffer
Definition: Buffer.hpp:43
Drv::SocketReadTask::close
void close()
close the socket communications
Definition: SocketReadTask.cpp:48
Drv::SocketReadTask::m_task
Os::Task m_task
Definition: SocketReadTask.hpp:148
Drv::SocketReadTask::getSocketHandler
virtual IpSocket & getSocketHandler()=0
returns a reference to the socket handler
Os::Task::TASK_DEFAULT
static const NATIVE_UINT_TYPE TASK_DEFAULT
Definition: Task.hpp:18
Os::Task::TaskStatus
TaskStatus
Definition: Task.hpp:19
Drv::SocketReadTask
supports a task to read a given socket adaptation
Definition: SocketReadTask.hpp:27
Drv::SocketReadTask::connected
virtual void connected()=0
called when the IPv4 system has been connected
Drv::SocketReadTask::stopSocketTask
void stopSocketTask()
stop the socket read task and close the associated socket.
Definition: SocketReadTask.cpp:56
Os::Task
forward declaration
Definition: Task.hpp:16
Drv::SocketIpStatus
SocketIpStatus
Status enumeration for socket return values.
Definition: IpSocket.hpp:23
Drv::SocketReadTask::~SocketReadTask
virtual ~SocketReadTask()
destructor of the socket read task
Definition: SocketReadTask.cpp:24
Drv::SocketReadTask::readTask
static void readTask(void *pointer)
a task designed to read from the socket and output incoming data
Definition: SocketReadTask.cpp:61
Drv::SocketReadTask::sendBuffer
virtual void sendBuffer(Fw::Buffer buffer, SocketIpStatus status)=0
sends a buffer to be filled with data
Drv::SocketReadTask::joinSocketTask
Os::Task::TaskStatus joinSocketTask(void **value_ptr)
joins to the stopping read task to wait for it to close
Definition: SocketReadTask.cpp:52
IpSocket.hpp
Drv::SocketReadTask::startSocketTask
void startSocketTask(const Fw::StringBase &name, const bool reconnect=true, const NATIVE_UINT_TYPE priority=Os::Task::TASK_DEFAULT, const NATIVE_UINT_TYPE stack=Os::Task::TASK_DEFAULT, const NATIVE_UINT_TYPE cpuAffinity=Os::Task::TASK_DEFAULT)
start the socket read task to start producing data
Definition: SocketReadTask.cpp:26
Drv::SocketReadTask::getBuffer
virtual Fw::Buffer getBuffer()=0
returns a buffer to fill with data