WarpTwin
Documentation for WarpTwin models and classes.
Loading...
Searching...
No Matches
warptwin::ExternalInterfaceModel Class Reference

Manage all external interfaces to and from warptwin. More...

#include <ExternalInterfaceModel.h>

Inheritance diagram for warptwin::ExternalInterfaceModel:

Classes

struct  Params
struct  Inputs
struct  Outputs

Public Member Functions

void connectExternalSocket (clockwerk::DataIOBase &signal, std::string mode, const std::string &ip, int port)
 Connect a signal to an external socket.
void connectExternalSharedMemory (clockwerk::DataIOBase &signal, std::string mode, const std::string shmem_address)
 Connect a signal to an external shared memory.
 ExternalInterfaceModel (warpos::FlightExecutive &executive)
virtual ~ExternalInterfaceModel ()
Public Member Functions inherited from warpos::App
 App (FlightExecutive &executive, const char *name, uint16 apid, uint8 instance=0)
 Executive-based constructor for the task.
virtual ~App ()
 Destructor. Doesn't really do anything.
int16 startup ()
 Initialize the app. Should be called once before step.
int16 step ()
 Step the app by a single step. Maps params, inputs, etc. to outputs.
virtual int16 activate ()
 Activate the app. The app will step when active.
virtual int16 deactivate ()
 Deactivate the app. The app will not step when deactivated.
virtual int16 command (uint16 apid, uint8 *buffer, uint16 size)
 Process commands issued to the app.
log_level_e logLevel ()
 Get the log level set for the executive.
void logLevel (log_level_e log_level)
 Set the executive log level.
bool isStarted ()
 Return whether task startup has been run.
uint16 apid ()
 Get the apid for this app.
uint8 & instance ()
 Get the instance of this app (used to differentiate between multiple instances of the same app).
Public Member Functions inherited from clockwerk::GraphTreeObject
 GraphTreeObject (const char *gt_nme="", GraphTreeObject **storage_array=nullptr, uint32 storage_size=0)
 Name-based constructor for GraphTreeObject which will have no children by default.
virtual ~GraphTreeObject ()
 Destructor.
GraphTreeObjectparent ()
 Functions to get object's parent/children.
GraphTreeObject ** children ()
GraphTreeObjectchildAtIndex (uint8 i) const
int16 parent (GraphTreeObject *new_parent)
 Function to assign the node's parent via pointer.
int16 parent (GraphTreeObject &new_parent)
 Function to assign the node's parent via reference.
uint8 nChildren () const
 Getters for number of children and descendants.
uint16 nDescendants () const
uint8 capacity () const
const char * name () const
 Getter and setter for object name.
int16 name (const char *new_name)
uint8 rank ()
 Getter for the object rank.
int8 type ()
 Function to indicate type – -1 by default unless implemented downstream.
bool loggable ()
 Getter for object logability flag – note no setter because should only be set by this or a derived class in its definition.
GraphTreeObjectgetRootDataPointer ()
 Get the pointer to the highest object in the graph tree.
virtual int16 str (char *output, size_t size) const
 Get object represented as string.
virtual int16 fromStr (const char *val)
 Set value of graphtreeobject from string.

Public Attributes

Params params = Params(this, "params")
Inputs inputs = Inputs(this, "inputs")
Outputs outputs = Outputs(this, "outputs")
Public Attributes inherited from warpos::App
clockwerk::DataIO< bool > active = clockwerk::DataIO<bool>(this, "active", true)
 The active flag for the task – set to true by default.

Protected Member Functions

int16 start () override
int16 execute () override
int _syncSockets ()
 Synchronize all sockets to external.
int _syncShmem ()
 Synchronize all shared memory to external.
Protected Member Functions inherited from clockwerk::GraphTreeObject
int16 _setStorage (GraphTreeObject **storage_array, uint8 storage_size)
 Getter for object's string address.
void _recalculateDescendants ()
 Function to recursively re-calculate the number of descendants of a given node on the tree.
void _recalculateRank ()
 Function to recursively re-calculate the rank of a given node on the tree.
int16 _addChild (GraphTreeObject *child)
 Function to decompose a string into a series of substrings via indexing.
int16 _removeChild (GraphTreeObject *child)
 Function to remove a child from the graph node's children.

Protected Attributes

std::vector< DataIOSocketRelay * > _socket_relays
std::vector< DataIOShmemRelay * > _shmem_relays
Protected Attributes inherited from warpos::App
FlightExecutiveexc
 Override our executive to include the FlightExecutive instead.
int16 _error = 0
 Internal variable to track and return error on app step through.
uint16 _apid = 0
 Internal variable to hold the APID for this app.
bool _is_started = false
 Flag indicating whether app has been started or not.
log_level_e _local_log_level = log_level_e::LOG_WARNING
 The log level for this particular app.
GraphTreeObject_app_children [MAXIMUM_APP_CHILDREN]
 Local storage for App children so it can live on the graph tree.
uint8 _instance
 Instance number of this app. Used to differentiate between multiple instances of the same app.
Protected Attributes inherited from clockwerk::GraphTreeObject
GraphTreeObject_parent = nullptr
GraphTreeObject ** _children_ptr = nullptr
uint32 _max_num_children = 0
uint16 _num_descendants = 0
char _name [MAXIMUM_NAME_CHARS] = ""
 String name for object.
uint8 _num_children = 0
 Number of direct children of the tree (not including the tree itself).
uint8 _rank = 0
int8 _graph_tree_type = BASE_GRAPH_TREE
 Variable to store graph tree object type.
bool _loggable = false
 Variable to indicate whether the selected object is loggable. Set to false by default.
uint32 _index = 0
 Index pointing to the next write location for the graph tree children.

Detailed Description

Manage all external interfaces to and from warptwin.

The External Interface Model is designed to manage all interfaces to and from WarpTwin. It is configured such that it manages the creation, storage, and synchronization of DataIO interfaces to shared memory and sockets, as created through connectExternalSocket and connectExternalSharedMemory. These interfaces are shychronized twice per simulation step – once in start step before any other models run, and once in end step after all models have run.

This model is designed to be created by the Sim Scheduler and should not be created individually.

In addition to shmem and socket synchronization, this model manages the following:

  • Synchronizing data passthroughs from socket to shared memory and vice-versa
  • Receiving commands from external sources through the WarpTwin API

Constructor & Destructor Documentation

◆ ExternalInterfaceModel()

warptwin::ExternalInterfaceModel::ExternalInterfaceModel ( warpos::FlightExecutive & executive)

Model-specific implementations of startup and derivative Must be scheduled manually to derivative

◆ ~ExternalInterfaceModel()

warptwin::ExternalInterfaceModel::~ExternalInterfaceModel ( )
virtual

Member Function Documentation

◆ _syncShmem()

int warptwin::ExternalInterfaceModel::_syncShmem ( )
protected

Synchronize all shared memory to external.

Returns
Error code corresponding to success/failure

◆ _syncSockets()

int warptwin::ExternalInterfaceModel::_syncSockets ( )
protected

Synchronize all sockets to external.

Returns
Error code corresponding to success/failure

◆ connectExternalSharedMemory()

void warptwin::ExternalInterfaceModel::connectExternalSharedMemory ( clockwerk::DataIOBase & signal,
std::string mode,
const std::string shmem_address )

Connect a signal to an external shared memory.

Parameters
signalThe signal to connect externally
modeThe mode (must be INPUT or OUTPUT) on which the signal is connected
shmem_addressThe shared memory location on which the signal is connected

◆ connectExternalSocket()

void warptwin::ExternalInterfaceModel::connectExternalSocket ( clockwerk::DataIOBase & signal,
std::string mode,
const std::string & ip,
int port )

Connect a signal to an external socket.

Parameters
signalThe signal to connect externally
modeThe mode (must be INPUT or OUTPUT) on which the signal is connected
ipThe IP address of the connection
portThe port for the connection

◆ execute()

int16 warptwin::ExternalInterfaceModel::execute ( )
overrideprotectedvirtual

Reimplemented from warpos::App.

◆ start()

int16 warptwin::ExternalInterfaceModel::start ( )
overrideprotectedvirtual

Reimplemented from warpos::App.

Member Data Documentation

◆ _shmem_relays

std::vector<DataIOShmemRelay*> warptwin::ExternalInterfaceModel::_shmem_relays
protected

◆ _socket_relays

std::vector<DataIOSocketRelay*> warptwin::ExternalInterfaceModel::_socket_relays
protected

◆ inputs

Inputs warptwin::ExternalInterfaceModel::inputs = Inputs(this, "inputs")

◆ outputs

Outputs warptwin::ExternalInterfaceModel::outputs = Outputs(this, "outputs")

◆ params

Params warptwin::ExternalInterfaceModel::params = Params(this, "params")

The documentation for this class was generated from the following files: