OpENer - Open Source EtherNet/IP(TM) I/O Target Stack  2.1
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
cipconnectionmanager.h File Reference
#include "opener_user_conf.h"
#include "opener_api.h"
#include "typedefs.h"
#include "ciptypes.h"
#include "cipconnectionobject.h"
Include dependency graph for cipconnectionmanager.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define SEQ_GEQ16(a, b)   ( (short)( (a) - (b) ) >= 0 )
 
#define SEQ_GEQ32(a, b)   ( (int)( (a) - (b) ) >= 0 )
 
#define SEQ_GT32(a, b)   ( (int)( (a) - (b) ) > 0 )
 
#define SEQ_LEQ16(a, b)   ( (short)( (a) - (b) ) <= 0 )
 similar macros for comparing 16 bit sequence numbers More...
 
#define SEQ_LEQ32(a, b)   ( (int)( (a) - (b) ) <= 0 )
 macros for comparing sequence numbers according to CIP spec vol 2 3-4.2 for int type variables More...
 

Typedefs

typedef void(* CloseSessionFunction )(const CipConnectionObject *const connection_object)
 

Enumerations

enum  ConnectionManagerExtendedStatusCode {
  kConnectionManagerExtendedStatusCodeSuccess = 0x00, kConnectionManagerExtendedStatusCodeErrorConnectionInUseOrDuplicateForwardOpen = 0x0100, kConnectionManagerExtendedStatusCodeErrorTransportClassAndTriggerCombinationNotSupported = 0x0103, kConnectionManagerExtendedStatusCodeErrorOwnershipConflict = 0x0106,
  kConnectionManagerExtendedStatusCodeErrorConnectionTargetConnectionNotFound, kConnectionManagerExtendedStatusCodeErrorTargetForConnectionNotConfigured, kConnectionManagerExtendedStatusCodeRpiNotSupported = 0x0111, kConnectionManagerExtendedStatusCodeErrorRpiValuesNotAcceptable = 0x0112,
  kConnectionManagerExtendedStatusCodeErrorNoMoreConnectionsAvailable = 0x0113, kConnectionManagerExtendedStatusCodeErrorVendorIdOrProductcodeError = 0x0114, kConnectionManagerExtendedStatusCodeErrorDeviceTypeError = 0x0115, kConnectionManagerExtendedStatusCodeErrorRevisionMismatch = 0x0116,
  kConnectionManagerExtendedStatusCodeNonListenOnlyConnectionNotOpened = 0x0119, kConnectionManagerExtendedStatusCodeTargetObjectOutOfConnections = 0x011A, kConnectionManagerExtendedStatusCodeProductionInhibitTimerGreaterThanRpi, kConnectionManagerExtendedStatusCodeTransportClassNotSupported = 0x011C,
  kConnectionManagerExtendedStatusCodeProductionTriggerNotSuppoerted = 0x011D, kConnectionManagerExtendedStatusCodeDirectionNotSupported = 0x011E, kConnectionManagerExtendedStatusCodeInvalidOToTNetworkConnectionFixVar, kConnectionManagerExtendedStatusCodeInvalidTToONetworkConnectionFixVar,
  kConnectionManagerExtendedStatusCodeInvalidOToTNetworkConnectionPriority, kConnectionManagerExtendedStatusCodeInvalidTToONetworkConnectionPriority, kConnectionManagerExtendedStatusCodeErrorInvalidOToTConnectionType = 0x0123, kConnectionManagerExtendedStatusCodeErrorInvalidTToOConnectionType = 0x0124,
  kConnectionManagerExtendedStatusCodeInvalidOToTNetworkConnectionRedundantOwner = 0x0125, kConnectionManagerExtendedStatusCodeInvalidConfigurationSize = 0x0126, kConnectionManagerExtendedStatusCodeErrorInvalidOToTConnectionSize = 0x0127, kConnectionManagerExtendedStatusCodeErrorInvalidTToOConnectionSize = 0x0128,
  kConnectionManagerExtendedStatusCodeInvalidConfigurationApplicationPath, kConnectionManagerExtendedStatusCodeInvalidConsumingApplicationPath = 0x012A, kConnectionManagerExtendedStatusCodeInvalidProducingApplicationPath = 0x012B, kConnectionManagerExtendedStatusCodeConfigurationSymbolDoesNotExist = 0x012C,
  kConnectionManagerExtendedStatusCodeConsumingSymbolDoesNotExist = 0x012D, kConnectionManagerExtendedStatusCodeProducingSymbolDoesNotExist = 0x012E, kConnectionManagerExtendedStatusCodeInconsistentApplicationPathCombo = 0x012F, kConnectionManagerExtendedStatusCodeInconsistentConsumeDataFormat = 0x0130,
  kConnectionManagerExtendedStatusCodeInconsistentProduceDataFormat = 0x0131, kConnectionManagerExtendedStatusCodeNullForwardOpenNotSupported = 0x0132, kConnectionManagerExtendedStatusCodeConnectionTimeoutMultiplierNotAcceptable, kConnectionManagerExtendedStatusCodeMismatchedTToONetworkConnectionFixVar,
  kConnectionManagerExtendedStatusCodeMismatchedTToONetworkConnectionPriority, kConnectionManagerExtendedStatusCodeMismatchedTransportClass = 0x0137, kConnectionManagerExtendedStatusCodeMismatchedTToOProductionTrigger = 0x0138, kConnectionManagerExtendedStatusCodeMismatchedTToOProductionInhibitTimeSegment = 0x0139,
  kConnectionManagerExtendedStatusCodeConnectionTimedOut = 0x0203, kConnectionManagerExtendedStatusCodeUnconnectedRequestTimedOut = 0x0204, kConnectionManagerExtendedStatusCodeErrorParameterErrorInUnconnectedSendService = 0x0205, kConnectionManagerExtendedStatusCodeMessageToLargeForUnconnectedSendService,
  kConnectionManagerExtendedStatusCodeUnconnectedAcknowledgeWithoutReply, kConnectionManagerExtendedStatusCodeNoBufferMemoryAvailable = 0x0301, kConnectionManagerExtendedStatusCodeNetworkBandwithNotAvailableForData, kConnectionManagerExtendedStatusCodeNoConsumedConnectionIdFilterAvailable,
  kConnectionManagerExtendedStatusCodeNotConfiguredToSendScheduledPriorityData = 0x0304, kConnectionManagerExtendedStatusCodeScheduleSignatureMismatch = 0x0305, kConnectionManagerExtendedStatusCodeScheduleSignatureValidationNotPossible, kConnectionManagerExtendedStatusCodePortNotAvailable = 0x0311,
  kConnectionManagerExtendedStatusCodeLinkAddressNotValid = 0x0312, kConnectionManagerExtendedStatusCodeErrorInvalidSegmentTypeInPath = 0x0315, kConnectionManagerExtendedStatusCodeForwardCloseServiceConnectionPathMismatch = 0x0316, kConnectionManagerExtendedStatusCodeSchedulingNotSpecified = 0x0317,
  kConnectionManagerExtendedStatusCodeLinkAddressToSelfInvalid = 0x0318, kConnectionManagerExtendedStatusCodeSecondaryResourcesUnavailable = 0x0319, kConnectionManagerExtendedStatusCodeRackConnectionAlreadyEstablished = 0x031A, kConnectionManagerExtendedStatusCodeModuleConnectionAlreadyEstablished,
  kConnectionManagerExtendedStatusCodeMiscellaneous = 0x031C, kConnectionManagerExtendedStatusCodeRedundantConnectionMismatch = 0x031D, kConnectionManagerExtendedStatusCodeNoMoreUserConfigurableLinkConsumerResourcesAvailableInTheProducingModule = 0x031E, kConnectionManagerExtendedStatusCodeNoUserConfigurableLinkConsumerResourcesConfiguredInTheProducingModule = 0x031F,
  kConnectionManagerExtendedStatusCodeNetworkLinkOffline = 0x0800, kConnectionManagerExtendedStatusCodeNoTargetApplicationDataAvailable = 0x0810, kConnectionManagerExtendedStatusCodeNoOriginatorApplicationDataAvailable, kConnectionManagerExtendedStatusCodeNodeAddressHasChangedSinceTheNetworkWasScheduled = 0x0812,
  kConnectionManagerExtendedStatusCodeNotConfiguredForOffSubnetMulticast, kConnectionManagerExtendedStatusCodeInvalidProduceConsumeDataFormat = 0x0814, kConnectionManagerExtendedStatusWrongCloser = 0xFFFF
}
 Connection Manager Error codes. More...
 
enum  ConnectionManagerGeneralStatus {
  kConnectionManagerGeneralStatusSuccess = 0x00, kConnectionManagerGeneralStatusExtendedStatus = 0x01, kConnectionManagerGeneralStatusResourceUnavailableForUnconnectedSend = 0x02, kConnectionManagerGeneralStatusPathSegmentErrorInUnconnectedSend = 0x04,
  kConnectionManagerGeneralStatusErrorInDataSegment = 0x09, kConnectionManagerGeneralStatusObjectStateError = 0x0C, kConnectionManagerGeneralStatusDeviceStateError = 0x10, kConnectionManagerGeneralStatusNotEnoughData = 0x13,
  kConnectionManagerGeneralStatusTooMuchData = 0x15
}
 Connection Type constants of the Forward Open service request Indicates either a. More...
 

Functions

void AddNewActiveConnection (const CipConnectionObject *const connection_object)
 Insert the given connection object to the list of currently active and managed connections. More...
 
void CheckForTimedOutConnectionsAndCloseTCPConnections (const CipConnectionObject *const connection_object, CloseSessionFunction CloseSessions)
 
void CloseConnection (CipConnectionObject *RESTRICT connection_object)
 Close the given connection. More...
 
EipStatus ConnectionManagerInit (EipUint16 unique_connection_id)
 Initialize the data of the connection manager object. More...
 
CipConnectionObjectGetConnectedObject (const EipUint32 connection_id)
 Get a connected object dependent on requested ConnectionID. More...
 
CipConnectionObjectGetConnectedOutputAssembly (const EipUint32 output_assembly_id)
 
CipUint GetConnectionId (void)
 Generate a new connection Id utilizing the Incarnation Id as described in the EIP specs. More...
 
EipBool8 IsConnectedOutputAssembly (const EipUint32 instance_number)
 
void RemoveFromActiveConnections (CipConnectionObject *const connection_object)
 Removes connection from the list of active connections. More...
 

Macro Definition Documentation

#define SEQ_GEQ16 (   a,
 
)    ( (short)( (a) - (b) ) >= 0 )

b

Definition at line 160 of file cipconnectionmanager.h.

#define SEQ_GEQ32 (   a,
 
)    ( (int)( (a) - (b) ) >= 0 )

b

Definition at line 151 of file cipconnectionmanager.h.

#define SEQ_GT32 (   a,
 
)    ( (int)( (a) - (b) ) > 0 )

Definition at line 152 of file cipconnectionmanager.h.

Referenced by HandleReceivedConnectedData().

#define SEQ_LEQ16 (   a,
 
)    ( (short)( (a) - (b) ) <= 0 )

similar macros for comparing 16 bit sequence numbers

Definition at line 159 of file cipconnectionmanager.h.

Referenced by HandleReceivedIoConnectionData().

#define SEQ_LEQ32 (   a,
 
)    ( (int)( (a) - (b) ) <= 0 )

macros for comparing sequence numbers according to CIP spec vol 2 3-4.2 for int type variables

Definition at line 150 of file cipconnectionmanager.h.

Typedef Documentation

typedef void(* CloseSessionFunction)(const CipConnectionObject *const connection_object)

Definition at line 224 of file cipconnectionmanager.h.

Enumeration Type Documentation

Connection Manager Error codes.

Enumerator
kConnectionManagerExtendedStatusCodeSuccess 

Obsolete code, should be General Status - Everything is ok

kConnectionManagerExtendedStatusCodeErrorConnectionInUseOrDuplicateForwardOpen 

General Status has to be 0x01, Connection is already in use, or a duplicate Forward Open was received

kConnectionManagerExtendedStatusCodeErrorTransportClassAndTriggerCombinationNotSupported 

General Status has to be 0x01, A Transport class and trigger combination has been specified, which is not supported by the target application

kConnectionManagerExtendedStatusCodeErrorOwnershipConflict 

General Status has to be 0x01, Another connection has already reserved some needed resources

kConnectionManagerExtendedStatusCodeErrorConnectionTargetConnectionNotFound 

General Status has to be 0x01, Forward Close error message, if connection to be closed is not found at the target

kConnectionManagerExtendedStatusCodeErrorTargetForConnectionNotConfigured 

General Status has to be 0x01, Target application not configured and connection request does not contain data segment for configuration

kConnectionManagerExtendedStatusCodeRpiNotSupported 
kConnectionManagerExtendedStatusCodeErrorRpiValuesNotAcceptable 

General Status has to be 0x01, Requested RPI parameters outside of range, needs 6 16-bit extended status words, see Vol.1 Table 3-5.33

kConnectionManagerExtendedStatusCodeErrorNoMoreConnectionsAvailable 

General Status has to be 0x01, No free connection slots available

kConnectionManagerExtendedStatusCodeErrorVendorIdOrProductcodeError 

General Status has to be 0x01, The Product Code or Vendor ID in the electronic key logical segment does not match the Product Code or Vendor ID of the device, or if the compatibility bit is set and one or both are zero, or cannot be emulated.

kConnectionManagerExtendedStatusCodeErrorDeviceTypeError 

General Status has to be 0x01, Device Type specified in the electronic key logical segment does not match the Device Type, or if the compatibility bit is set and Device Type is zero, or cannot be emulated.

kConnectionManagerExtendedStatusCodeErrorRevisionMismatch 

General Status has to be 0x01, Major and minor revision specified in the electronic key logical segment is not a valid revision of the device, or if the compatibility bit is set and the requested Major Revision and/or Minor Revision is 0 or the device cannot emulate the specified revision.

kConnectionManagerExtendedStatusCodeNonListenOnlyConnectionNotOpened 

General Status has to be 0x01, listen-only connection cannot be established, if no non-listen only connections are established

kConnectionManagerExtendedStatusCodeTargetObjectOutOfConnections 

Maximum number of connections supported by the instance of the target object exceeded

kConnectionManagerExtendedStatusCodeProductionInhibitTimerGreaterThanRpi 

The Production Inhibit Time is greater than the Target to Originator RPI

kConnectionManagerExtendedStatusCodeTransportClassNotSupported 

The transport class requested in the Transport Type/Trigger parameter is not supported.

kConnectionManagerExtendedStatusCodeProductionTriggerNotSuppoerted 

The production trigger requested in the Transport Type/Trigger parameter is not supported.

kConnectionManagerExtendedStatusCodeDirectionNotSupported 

The direction requested in the Transport Type/Trigger parameter is not supported

kConnectionManagerExtendedStatusCodeInvalidOToTNetworkConnectionFixVar 

Shall be returned as the result of specifying an O->T fixed / variable flag that is not supported.

kConnectionManagerExtendedStatusCodeInvalidTToONetworkConnectionFixVar 

Shall be returned as the result of specifying an T->O fixed / variable flag that is not supported.

kConnectionManagerExtendedStatusCodeInvalidOToTNetworkConnectionPriority 

Shall be returned as the result of specifying an O->T priority code that is not supported.

kConnectionManagerExtendedStatusCodeInvalidTToONetworkConnectionPriority 

Shall be returned as the result of specifying an T->O priority code that is not supported.

kConnectionManagerExtendedStatusCodeErrorInvalidOToTConnectionType 

Shall be returned as the result of specifying an O->T connection type that is not supported

kConnectionManagerExtendedStatusCodeErrorInvalidTToOConnectionType 

Shall be returned as the result of specifying a T->O connection type that is not supported

kConnectionManagerExtendedStatusCodeInvalidOToTNetworkConnectionRedundantOwner 

Shall be returned as the result of specifying an O->T Redundant Owner flag that is not supported.

kConnectionManagerExtendedStatusCodeInvalidConfigurationSize 

The data segment provided in the Connection_Path parameter did not contain an acceptable number of 16-bit words for the the configuration application path requested. Two additional status words shall follow, the error code plus the max size in words

kConnectionManagerExtendedStatusCodeErrorInvalidOToTConnectionSize 

The size of the consuming object declared in the Forward_Open request and available on the target does not match the size declared in the O->T Network Connection Parameter. Two additional status words shall follow, the error code plus the max size in words

kConnectionManagerExtendedStatusCodeErrorInvalidTToOConnectionSize 

The size of the consuming object declared in the Forward_Open request and available on the target does not match the size declared in the T->O Network Connection Parameter. Two additional status words shall follow, the error code plus the max size in words

kConnectionManagerExtendedStatusCodeInvalidConfigurationApplicationPath 

Configuration application path specified does not correspond to a valid configuration application path within the target application. This error could also be returned if a configuration application path was required, but not provided by a connection request.

kConnectionManagerExtendedStatusCodeInvalidConsumingApplicationPath 

Consumed application path specified does not correspond to a valid consumed application path within the target application. This error could also be returned if a consumed application path was required, but not provided by a connection request.

kConnectionManagerExtendedStatusCodeInvalidProducingApplicationPath 

Produced application path specified does not correspond to a valid produced application path within the target application. This error could also be returned if a produced application path was required, but not provided by a connection request.

kConnectionManagerExtendedStatusCodeConfigurationSymbolDoesNotExist 
kConnectionManagerExtendedStatusCodeConsumingSymbolDoesNotExist 
kConnectionManagerExtendedStatusCodeProducingSymbolDoesNotExist 
kConnectionManagerExtendedStatusCodeInconsistentApplicationPathCombo 
kConnectionManagerExtendedStatusCodeInconsistentConsumeDataFormat 
kConnectionManagerExtendedStatusCodeInconsistentProduceDataFormat 
kConnectionManagerExtendedStatusCodeNullForwardOpenNotSupported 
kConnectionManagerExtendedStatusCodeConnectionTimeoutMultiplierNotAcceptable 
kConnectionManagerExtendedStatusCodeMismatchedTToONetworkConnectionFixVar 
kConnectionManagerExtendedStatusCodeMismatchedTToONetworkConnectionPriority 
kConnectionManagerExtendedStatusCodeMismatchedTransportClass 
kConnectionManagerExtendedStatusCodeMismatchedTToOProductionTrigger 
kConnectionManagerExtendedStatusCodeMismatchedTToOProductionInhibitTimeSegment 
kConnectionManagerExtendedStatusCodeConnectionTimedOut 
kConnectionManagerExtendedStatusCodeUnconnectedRequestTimedOut 
kConnectionManagerExtendedStatusCodeErrorParameterErrorInUnconnectedSendService 
kConnectionManagerExtendedStatusCodeMessageToLargeForUnconnectedSendService 
kConnectionManagerExtendedStatusCodeUnconnectedAcknowledgeWithoutReply 
kConnectionManagerExtendedStatusCodeNoBufferMemoryAvailable 
kConnectionManagerExtendedStatusCodeNetworkBandwithNotAvailableForData 
kConnectionManagerExtendedStatusCodeNoConsumedConnectionIdFilterAvailable 
kConnectionManagerExtendedStatusCodeNotConfiguredToSendScheduledPriorityData 
kConnectionManagerExtendedStatusCodeScheduleSignatureMismatch 
kConnectionManagerExtendedStatusCodeScheduleSignatureValidationNotPossible 
kConnectionManagerExtendedStatusCodePortNotAvailable 
kConnectionManagerExtendedStatusCodeLinkAddressNotValid 
kConnectionManagerExtendedStatusCodeErrorInvalidSegmentTypeInPath 
kConnectionManagerExtendedStatusCodeForwardCloseServiceConnectionPathMismatch 
kConnectionManagerExtendedStatusCodeSchedulingNotSpecified 
kConnectionManagerExtendedStatusCodeLinkAddressToSelfInvalid 
kConnectionManagerExtendedStatusCodeSecondaryResourcesUnavailable 
kConnectionManagerExtendedStatusCodeRackConnectionAlreadyEstablished 
kConnectionManagerExtendedStatusCodeModuleConnectionAlreadyEstablished 
kConnectionManagerExtendedStatusCodeMiscellaneous 
kConnectionManagerExtendedStatusCodeRedundantConnectionMismatch 
kConnectionManagerExtendedStatusCodeNoMoreUserConfigurableLinkConsumerResourcesAvailableInTheProducingModule 
kConnectionManagerExtendedStatusCodeNoUserConfigurableLinkConsumerResourcesConfiguredInTheProducingModule 
kConnectionManagerExtendedStatusCodeNetworkLinkOffline 
kConnectionManagerExtendedStatusCodeNoTargetApplicationDataAvailable 
kConnectionManagerExtendedStatusCodeNoOriginatorApplicationDataAvailable 
kConnectionManagerExtendedStatusCodeNodeAddressHasChangedSinceTheNetworkWasScheduled 
kConnectionManagerExtendedStatusCodeNotConfiguredForOffSubnetMulticast 
kConnectionManagerExtendedStatusCodeInvalidProduceConsumeDataFormat 
kConnectionManagerExtendedStatusWrongCloser 

Definition at line 35 of file cipconnectionmanager.h.

Connection Type constants of the Forward Open service request Indicates either a.

  • Null Request
  • Point-to-point connection request (unicast)
  • Multicast connection request
Enumerator
kConnectionManagerGeneralStatusSuccess 

General Status - Everything is ok

kConnectionManagerGeneralStatusExtendedStatus 

Indicates that extended status is set

kConnectionManagerGeneralStatusResourceUnavailableForUnconnectedSend 
kConnectionManagerGeneralStatusPathSegmentErrorInUnconnectedSend 
kConnectionManagerGeneralStatusErrorInDataSegment 
kConnectionManagerGeneralStatusObjectStateError 
kConnectionManagerGeneralStatusDeviceStateError 
kConnectionManagerGeneralStatusNotEnoughData 
kConnectionManagerGeneralStatusTooMuchData 

Definition at line 23 of file cipconnectionmanager.h.

Function Documentation

void AddNewActiveConnection ( const CipConnectionObject *const  connection_object)

Insert the given connection object to the list of currently active and managed connections.

By adding a connection to the active connection list the connection manager will perform the supervision and handle the timing (e.g., timeout, production inhibit, etc).

Parameters
connection_objectpointer to the connection object to be added.

Definition at line 1406 of file cipconnectionmanager.c.

References ConnectionObjectSetState(), DoublyLinkedListInsertAtHead(), and kConnectionObjectStateEstablished.

Referenced by EstablishClass3Connection(), and EstablishIoConnection().

Here is the call graph for this function:

Here is the caller graph for this function:

void CheckForTimedOutConnectionsAndCloseTCPConnections ( const CipConnectionObject *const  connection_object,
CloseSessionFunction  CloseSessions 
)

Definition at line 1506 of file cipconnectionmanager.c.

References ConnectionObjectEqualOriginator(), ConnectionObjectGetState(), doubly_linked_list_node::data, DoublyLinkedList::first, kConnectionObjectStateTimedOut, and doubly_linked_list_node::next.

Referenced by Class3ConnectionTimeoutHandler(), and HandleIoConnectionTimeOut().

Here is the call graph for this function:

Here is the caller graph for this function:

void CloseConnection ( CipConnectionObject *RESTRICT  connection_object)

Close the given connection.

This function will take the data form the connection and correctly closes the connection (e.g., open sockets)

Parameters
connection_objectpointer to the connection object structure to be closed

Definition at line 1385 of file cipconnectionmanager.c.

References CloseUdpSocket(), ConnectionObjectGetTransportClassTriggerTransportClass(), ConnectionObjectInitializeEmpty(), kConnectionObjectTransportClassTriggerTransportClass3, kUdpCommuncationDirectionConsuming, kUdpCommuncationDirectionProducing, and RemoveFromActiveConnections().

Referenced by Class3ConnectionTimeoutHandler(), and EstablishClass3Connection().

Here is the call graph for this function:

Here is the caller graph for this function:

EipStatus ConnectionManagerInit ( EipUint16  unique_connection_id)

Initialize the data of the connection manager object.

Parameters
unique_connection_idA unique connection id
Returns
kEipStatusOk if successful, otherwise kEipStatusError

Definition at line 207 of file cipconnectionmanager.c.

References AddConnectableObject(), CreateCipClass(), EstablishClass3Connection(), EstablishIoConnection(), ForwardClose(), ForwardOpen(), g_incarnation_id, GetAttributeAll(), GetAttributeSingle(), GetConnectionOwner(), InitializeConnectionManager(), InitializeConnectionManagerData(), InsertService(), kEipStatusError, kEipStatusOk, kForwardClose, kForwardOpen, kGetAttributeAll, kGetAttributeSingle, and kGetConnectionOwner.

Referenced by CipStackInit().

Here is the call graph for this function:

Here is the caller graph for this function:

CipConnectionObject* GetConnectedObject ( const EipUint32  connection_id)

Get a connected object dependent on requested ConnectionID.

Parameters
connection_idConnection ID of the Connection Object to get
Returns
pointer to connected Object NULL .. connection not present in device

Definition at line 920 of file cipconnectionmanager.c.

References ConnectionObjectGetCipConsumedConnectionID(), ConnectionObjectGetState(), doubly_linked_list_node::data, DoublyLinkedList::first, kConnectionObjectStateEstablished, and doubly_linked_list_node::next.

Referenced by HandleReceivedConnectedData(), and NotifyConnectedCommonPacketFormat().

Here is the call graph for this function:

Here is the caller graph for this function:

CipConnectionObject* GetConnectedOutputAssembly ( const EipUint32  output_assembly_id)

Get a connection object for a given output assembly.

Parameters
output_assembly_idrequested output assembly of requested connection
Returns
pointer to connected Object 0 .. connection not present in device

Definition at line 935 of file cipconnectionmanager.c.

References ConnectionObjectGetInstanceType(), ConnectionObjectGetState(), doubly_linked_list_node::data, DoublyLinkedList::first, kConnectionObjectInstanceTypeIOExclusiveOwner, kConnectionObjectStateEstablished, kConnectionObjectStateTimedOut, and doubly_linked_list_node::next.

Referenced by GetExclusiveOwnerConnection().

Here is the call graph for this function:

Here is the caller graph for this function:

CipUint GetConnectionId ( void  )

Generate a new connection Id utilizing the Incarnation Id as described in the EIP specs.

A unique connectionID is formed from the boot-time-specified "incarnation ID" and the per-new-connection-incremented connection number/counter.

Returns
new connection id

Definition at line 177 of file cipconnectionmanager.c.

References g_incarnation_id.

Referenced by ConnectionObjectGeneralConfiguration().

Here is the caller graph for this function:

EipBool8 IsConnectedOutputAssembly ( const EipUint32  instance_number)

Definition at line 1424 of file cipconnectionmanager.c.

References ConnectionObjectIsTypeIOConnection(), cip_connection_object::consumed_path, doubly_linked_list_node::data, DoublyLinkedList::first, connection_path_epath::instance_id, and doubly_linked_list_node::next.

Referenced by SetAssemblyAttributeSingle().

Here is the call graph for this function:

Here is the caller graph for this function:

void RemoveFromActiveConnections ( CipConnectionObject *const  connection_object)

Removes connection from the list of active connections.

Parameters
connection_objectConnection object to be removed from the active connection list

Definition at line 1413 of file cipconnectionmanager.c.

References DoublyLinkedListRemoveNode(), DoublyLinkedList::first, doubly_linked_list_node::next, and OPENER_TRACE_ERR.

Referenced by CloseCommunicationChannelsAndRemoveFromActiveConnectionsList(), and CloseConnection().

Here is the call graph for this function:

Here is the caller graph for this function: