![]() |
F´ Flight Software - C/C++ Documentation
A framework for building embedded system applications to NASA flight quality standards.
|
#include <Drv/TcpClient/TcpClientComponentImpl.hpp>
Public Member Functions | |
TcpClientComponentImpl (const char *const compName) | |
construct the TcpClient component. | |
~TcpClientComponentImpl () | |
Destroy the component. | |
SocketIpStatus | configure (const char *hostname, const U16 port, const U32 send_timeout_seconds=SOCKET_SEND_TIMEOUT_SECONDS, const U32 send_timeout_microseconds=SOCKET_SEND_TIMEOUT_MICROSECONDS, FwSizeType buffer_size=1024) |
Configures the TcpClient settings but does not open the connection. | |
![]() | |
void | init (FwEnumStoreType instance=0) |
Initialize TcpClientComponentBase object. | |
Drv::InputByteStreamSendPort * | get_send_InputPort (FwIndexType portNum) |
void | set_allocate_OutputPort (FwIndexType portNum, Fw::InputBufferGetPort *port) |
Connect port to allocate[portNum]. | |
void | set_deallocate_OutputPort (FwIndexType portNum, Fw::InputBufferSendPort *port) |
Connect port to deallocate[portNum]. | |
void | set_ready_OutputPort (FwIndexType portNum, Drv::InputByteStreamReadyPort *port) |
Connect port to ready[portNum]. | |
void | set_recv_OutputPort (FwIndexType portNum, Drv::InputByteStreamRecvPort *port) |
Connect port to recv[portNum]. | |
![]() | |
void | setIdBase (const U32) |
Set the ID base. | |
U32 | getIdBase () const |
![]() | |
SocketComponentHelper () | |
constructs the socket read task | |
virtual | ~SocketComponentHelper () |
destructor of the socket read task | |
void | start (const Fw::StringBase &name, const bool reconnect=true, 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 | |
SocketIpStatus | open () |
open the socket for communications | |
bool | isOpened () |
check if IP socket has previously been opened | |
SocketIpStatus | reconnect () |
Re-open port if it has been disconnected. | |
SocketIpStatus | send (const U8 *const data, const U32 size) |
send data to the IP socket from the given buffer | |
SocketIpStatus | recv (U8 *data, U32 &size) |
receive data from the IP socket from the given buffer | |
void | close () |
close the socket communications | |
void | shutdown () |
shutdown the socket communications | |
bool | running () |
is the read loop running | |
void | stop () |
stop the socket read task and close the associated socket. | |
Os::Task::Status | join () |
joins to the stopping read task to wait for it to close | |
Protected Member Functions | |
IpSocket & | getSocketHandler () |
returns a reference to the socket handler | |
Fw::Buffer | getBuffer () |
returns a buffer to fill with data | |
void | sendBuffer (Fw::Buffer buffer, SocketIpStatus status) |
sends a buffer to be filled with data | |
void | connected () |
called when the IPv4 system has been connected | |
![]() | |
TcpClientComponentBase (const char *compName="") | |
Construct TcpClientComponentBase object. | |
virtual | ~TcpClientComponentBase () |
Destroy TcpClientComponentBase object. | |
FwIndexType | getNum_send_InputPorts () const |
FwIndexType | getNum_allocate_OutputPorts () const |
FwIndexType | getNum_deallocate_OutputPorts () const |
FwIndexType | getNum_ready_OutputPorts () const |
FwIndexType | getNum_recv_OutputPorts () const |
bool | isConnected_allocate_OutputPort (FwIndexType portNum) |
bool | isConnected_deallocate_OutputPort (FwIndexType portNum) |
bool | isConnected_ready_OutputPort (FwIndexType portNum) |
bool | isConnected_recv_OutputPort (FwIndexType portNum) |
Drv::SendStatus | send_handlerBase (FwIndexType portNum, Fw::Buffer &sendBuffer) |
Handler base-class function for input port send. | |
Fw::Buffer | allocate_out (FwIndexType portNum, U32 size) |
Invoke output port allocate. | |
void | deallocate_out (FwIndexType portNum, Fw::Buffer &fwBuffer) |
Invoke output port deallocate. | |
void | ready_out (FwIndexType portNum) |
Invoke output port ready. | |
void | recv_out (FwIndexType portNum, Fw::Buffer &recvBuffer, const Drv::RecvStatus &recvStatus) |
Invoke output port recv. | |
virtual void | lock () |
Lock the guarded mutex. | |
virtual void | unLock () |
Unlock the guarded mutex. | |
![]() | |
PassiveComponentBase (const char *name) | |
Named constructor. | |
virtual | ~PassiveComponentBase () |
Destructor. | |
void | init (NATIVE_INT_TYPE instance) |
Initialization function. | |
NATIVE_INT_TYPE | getInstance () const |
![]() | |
ObjBase (const char *name) | |
ObjBase constructor. | |
virtual | ~ObjBase () |
Destructor. | |
void | init () |
Object initializer. | |
![]() | |
virtual void | readLoop () |
receive off the TCP socket | |
Additional Inherited Members | |
![]() | |
enum | OpenState { NOT_OPEN , OPENING , OPEN , SKIP } |
![]() | |
enum | { NUM_SEND_INPUT_PORTS = 1 } |
Enumerations for numbers of typed input ports. More... | |
enum | { NUM_ALLOCATE_OUTPUT_PORTS = 1 , NUM_DEALLOCATE_OUTPUT_PORTS = 1 , NUM_READY_OUTPUT_PORTS = 1 , NUM_RECV_OUTPUT_PORTS = 1 } |
Enumerations for numbers of typed output ports. More... | |
![]() | |
static void | readTask (void *pointer) |
a task designed to read from the socket and output incoming data | |
![]() | |
Os::Task | m_task |
Os::Mutex | m_lock |
SocketDescriptor | m_descriptor |
bool | m_reconnect = false |
Force reconnection. | |
bool | m_stop = true |
Stops the task when set to true. | |
OpenState | m_open = OpenState::NOT_OPEN |
Have we successfully opened. | |
Definition at line 23 of file TcpClientComponentImpl.hpp.
Drv::TcpClientComponentImpl::TcpClientComponentImpl | ( | const char *const | compName | ) |
construct the TcpClient component.
compName | name of this component |
Definition at line 25 of file TcpClientComponentImpl.cpp.
Drv::TcpClientComponentImpl::~TcpClientComponentImpl | ( | ) |
Destroy the component.
Definition at line 40 of file TcpClientComponentImpl.cpp.
SocketIpStatus Drv::TcpClientComponentImpl::configure | ( | const char * | hostname, |
const U16 | port, | ||
const U32 | send_timeout_seconds = SOCKET_SEND_TIMEOUT_SECONDS , |
||
const U32 | send_timeout_microseconds = SOCKET_SEND_TIMEOUT_MICROSECONDS , |
||
FwSizeType | buffer_size = 1024 |
||
) |
Configures the TcpClient settings but does not open the connection.
The TcpClientComponent needs to connect to a remote TCP server. This call configures the hostname, port and send timeouts for that socket connection. This call should be performed on system startup before recv or send are called. Note: hostname must be a dot-notation IP address of the form "x.x.x.x". DNS translation is left up to the user.
hostname | ip address of remote tcp server in the form x.x.x.x |
port | port of remote tcp server |
send_timeout_seconds | send timeout seconds component. Defaults to: SOCKET_TIMEOUT_SECONDS |
send_timeout_microseconds | send timeout microseconds component. Must be less than 1000000. Defaults to: SOCKET_TIMEOUT_MICROSECONDS |
buffer_size | size of the buffer to be allocated. Defaults to 1024. |
Definition at line 28 of file TcpClientComponentImpl.cpp.
|
protectedvirtual |
called when the IPv4 system has been connected
Implements Drv::SocketComponentHelper.
Definition at line 68 of file TcpClientComponentImpl.cpp.
|
protectedvirtual |
returns a buffer to fill with data
Gets a reference to a buffer to fill with data. This allows the component to determine how to provide a buffer and the socket read task just fills said buffer.
Implements Drv::SocketComponentHelper.
Definition at line 50 of file TcpClientComponentImpl.cpp.
|
protectedvirtual |
returns a reference to the socket handler
Gets a reference to the current socket handler in order to operate generically on the IpSocket instance. Used for receive, and open calls. This socket handler will be a TcpClient.
Implements Drv::SocketComponentHelper.
Definition at line 46 of file TcpClientComponentImpl.cpp.
|
protectedvirtual |
sends a buffer to be filled with data
Sends the buffer gotten by getBuffer that has now been filled with data. This is used to delegate to the component how to send back the buffer. Ignores buffers with error status error.
Implements Drv::SocketComponentHelper.
Definition at line 54 of file TcpClientComponentImpl.cpp.