7 #ifndef SRC_CIP_CIPCONNECTIONOBJECT_H_
8 #define SRC_CIP_CIPCONNECTIONOBJECT_H_
12 #include "opener_user_conf.h"
18 #define CIP_CONNECTION_OBJECT_CODE 0x05
101 const connection_object,
249 produced_connection_size);
257 consumed_connection_size);
280 cip_produced_connection_id);
288 cip_consumed_connection_id);
296 watchdog_timeout_action);
304 produced_connection_path_length);
312 consumed_connection_path_length);
320 production_inhibit_time);
328 connection_timeout_multiplier);
341 const CipUint connection_serial_number);
362 const CipUdint requested_packet_interval);
385 const CipUdint requested_packet_interval);
436 const struct sockaddr *
const originator_address);
CipUint ConnectionObjectGetExpectedPacketRate(const CipConnectionObject *const connection_object)
void CipConnectionObjectListArrayFree(DoublyLinkedListNode **node)
ConnectionObjectConnectionType
size_t associated_encapsulation_session
void ConnectionObjectResetProductionInhibitTimer(CipConnectionObject *const connection_object)
bool EqualConnectionTriad(const CipConnectionObject *const object1, const CipConnectionObject *const object2)
CipUint consumed_connection_size
CipInstance * producing_instance
void ConnectionObjectSetInstanceType(CipConnectionObject *const connection_object, const ConnectionObjectInstanceType instance_type)
void CipConnectionObjectDelete(CipConnectionObject **connection_object)
Array deallocator.
CipUint ConnectionObjectGetConsumedConnectionPathLength(const CipConnectionObject *const connection_object)
void(* ConnectionTimeoutFunction)(CipConnectionObject *connection_object)
Function prototype for handling the timeout of connections.
struct sockaddr_in remote_address
CipUint expected_packet_rate
ConnectionReceiveDataFunction connection_receive_data_function
void ConnectionObjectSetProducedConnectionSize(CipConnectionObject *const connection_object, const CipUint produced_connection_size)
ConnectionObjectSocketType
CipUdint ConnectionObjectGetTToORequestedPacketInterval(const CipConnectionObject *const connection_object)
CipUint ConnectionObjectGetProductionInhibitTime(const CipConnectionObject *const connection_object)
bool ConnectionObjectIsTToORedundantOwner(const CipConnectionObject *const connection_object)
CipUdint ConnectionObjectGetCipProducedConnectionID(const CipConnectionObject *const connection_object)
EipUint32 eip_level_sequence_count_producing
bool ConnectionObjectIsTypeNonLOIOConnection(const CipConnectionObject *const connection_object)
ConnectionObjectPriority ConnectionObjectGetOToTPriority(const CipConnectionObject *const connection_object)
size_t ConnectionObjectGetTToOConnectionSize(const CipConnectionObject *const connection_object)
EipStatus(* CipConnectionStateHandler)(CipConnectionObject *RESTRICT const connection_object, ConnectionObjectState new_state)
CipUint requested_produced_connection_size
CipConnectionStateHandler current_state_handler
CipUint ConnectionObjectGetConsumedConnectionSize(const CipConnectionObject *const connection_object)
CipConnectionObject * CipConnectionObjectCreate(const CipOctet *message)
Array allocator.
bool ConnectionObjectEqualOriginator(const CipConnectionObject *const object1, const CipConnectionObject *const object2)
size_t ConnectionObjectGetOToTConnectionSize(const CipConnectionObject *const connection_object)
ConnectionObjectTransportClassTriggerDirection ConnectionObjectGetTransportClassTriggerDirection(const CipConnectionObject *const connection_object)
ConnectionObjectWatchdogTimeoutAction
Possible values for the watch dog time out action of a connection.
ENIPMessage last_reply_sent
CipUint requested_consumed_connection_size
void ConnectionObjectInitializeEmpty(CipConnectionObject *const connection_object)
CipByte transport_class_trigger
CipUdint ConnectionObjectGetCipConsumedConnectionID(const CipConnectionObject *const connection_object)
ConnectionObjectConnectionType ConnectionObjectGetTToOConnectionType(const CipConnectionObject *const connection_object)
void ConnectionObjectSetCipProducedConnectionID(CipConnectionObject *const connection_object, const CipUdint cip_produced_connection_id)
void ConnectionObjectResetInactivityWatchdogTimerValue(CipConnectionObject *const connection_object)
CipUsint ConnectionObjectGetConnectionTimeoutMultiplier(const CipConnectionObject *const connection_object)
ConnectionObjectConnectionSizeType
CipOctet * consumed_connection_path
CipUint ConnectionObjectGetProducedConnectionSize(const CipConnectionObject *const connection_object)
CipUint produced_connection_size
void ConnectionObjectResetLastPackageInactivityTimerValue(CipConnectionObject *const connection_object)
ConnectionCloseFunction connection_close_function
bool ConnectionObjectIsOToTRedundantOwner(const CipConnectionObject *const connection_object)
CipUint ConnectionObjectGetOriginatorVendorId(const CipConnectionObject *const connection_object)
void ConnectionObjectSetConsumedConnectionPathLength(CipConnectionObject *const connection_object, const CipUint consumed_connection_path_length)
void ConnectionObjectInitializeFromMessage(const CipOctet **message, CipConnectionObject *const connection_object)
ConnectionObjectState ConnectionObjectGetState(const CipConnectionObject *const connection_object)
CipUdint t_to_o_requested_packet_interval
uint8_t CipOctet
Data types as defined in the CIP Specification Vol 1 Appendix C.
CipUint ConnectionObjectGetConnectionSerialNumber(const CipConnectionObject *const connection_object)
EipStatus
EIP stack status enum.
void ConnectionObjectSetExpectedPacketRate(CipConnectionObject *const connection_object)
Sets the expected packet rate according to the rules of the CIP specification.
DoublyLinkedListNode * CipConnectionObjectListArrayAllocator()
ConnectionObjectInstanceType
CipUint sequence_count_producing
CipInstance * consuming_instance
ConnectionObjectTransportClassTriggerTransportClass
void ConnectionObjectSetConnectionTimeoutMultiplier(CipConnectionObject *const connection_object, const CipUsint connection_timeout_multiplier)
ConnectionObjectConnectionSizeType ConnectionObjectGetOToTConnectionSizeType(const CipConnectionObject *const connection_object)
void ConnectionObjectSetConsumedConnectionSize(CipConnectionObject *const connection_object, const CipUint consumed_connection_size)
CIP Electronic Key Segment struct.
CipUint connection_serial_number
CipUdint ConnectionObjectGetOriginatorSerialNumber(const CipConnectionObject *const connection_object)
CipConnectionPathEpath produced_path
ConnectionObjectWatchdogTimeoutAction ConnectionObjectGetWatchdogTimeoutAction(const CipConnectionObject *const connection_object)
void ConnectionObjectSetWatchdogTimeoutAction(CipConnectionObject *const connection_object, const CipUsint watchdog_timeout_action)
CipUdint originator_serial_number
void ConnectionObjectSetProducedConnectionPathLength(CipConnectionObject *const connection_object, const CipUint produced_connection_path_length)
void ConnectionObjectSetTToORequestedPacketInterval(CipConnectionObject *connection_object, const CipUdint requested_packet_interval)
CipUdint cip_consumed_connection_id
EipStatus(* ConnectionSendDataFunction)(CipConnectionObject *connection_object)
Function prototype for sending data via a connection.
CipOctet * produced_connection_path
CipConnectionPathEpath configuration_path
CipUint ConnectionObjectGetRequestedPacketInterval(const CipConnectionObject *const connection_object)
CipUsint watchdog_timeout_action
void ConnectionObjectSetProductionInhibitTime(CipConnectionObject *const connection_object, const CipUint production_inhibit_time)
CipInt correct_target_to_originator_size
ConnectionObjectPriority ConnectionObjectGetTToOPriority(const CipConnectionObject *const connection_object)
CipUdint ConnectionObjectGetOToTRequestedPacketInterval(const CipConnectionObject *const connection_object)
void ConnectionObjectSetOriginatorVendorId(CipConnectionObject *connection_object, const CipUint vendor_id)
CipUdint o_to_t_requested_packet_interval
CipUsint ConnectionObjectGetInstanceTypeForAttribute(const CipConnectionObject *const connection_object)
ConnectionTimeoutFunction connection_timeout_function
CipElectronicKey electronic_key
uint64_t transmission_trigger_timer
ConnectionObjectTransportClassTriggerProductionTrigger ConnectionObjectGetTransportClassTriggerProductionTrigger(const CipConnectionObject *const connection_object)
ConnectionObjectConnectionType ConnectionObjectGetOToTConnectionType(const CipConnectionObject *const connection_object)
CipWord o_to_t_network_connection_parameters
CipUint originator_vendor_id
CipUint ConnectionObjectGetProducedConnectionPathLength(const CipConnectionObject *const connection_object)
ConnectionObjectTransportClassTriggerDirection
CipConnectionPathEpath consumed_path
CipUdint cip_produced_connection_id
ConnectionObjectConnectionSizeType ConnectionObjectGetTToOConnectionSizeType(const CipConnectionObject *const connection_object)
void ConnectionObjectSetConnectionSerialNumber(CipConnectionObject *connection_object, const CipUint connection_serial_number)
CipUint consumed_connection_path_length
void ConnectionObjectDeepCopy(CipConnectionObject *RESTRICT destination, const CipConnectionObject *RESTRICT const source)
Copy the given connection data from source to destination.
uint64_t production_inhibit_timer
CipUint produced_connection_path_length
void ConnectionObjectSetOToTRequestedPacketInterval(CipConnectionObject *connection_object, const CipUdint requested_packet_interval)
void ConnectionObjectSetCipConsumedConnectionID(CipConnectionObject *const connection_object, const CipUdint cip_consumed_connection_id)
EipUint32 eip_level_sequence_count_consuming
ConnectionObjectTransportClassTriggerProductionTrigger
bool ConnectionObjectIsTypeIOConnection(const CipConnectionObject *const connection_object)
CipUsint connection_timeout_multiplier
ConnectionSendDataFunction connection_send_data_function
ConnectionObjectTransportClassTriggerTransportClass ConnectionObjectGetTransportClassTriggerTransportClass(const CipConnectionObject *const connection_object)
CipUint sequence_count_consuming
ConnectionObjectInstanceType ConnectionObjectGetInstanceType(const CipConnectionObject *const connection_object)
CipWord t_to_o_network_connection_parameters
CipUint production_inhibit_time
struct sockaddr_in originator_address
uint64_t inactivity_watchdog_timer
void(* ConnectionCloseFunction)(CipConnectionObject *connection_object)
Function prototype for handling the closing of connections.
EipStatus(* ConnectionReceiveDataFunction)(CipConnectionObject *connection_object, const EipUint8 *data, const EipUint16 data_length)
Function prototype for receiving data via a connection.
uint64_t last_package_watchdog_timer
bool CipConnectionObjectOriginatorHasSameIP(const CipConnectionObject *const connection_object, const struct sockaddr *const originator_address)
CipInt correct_originator_to_target_size
void ConnectionObjectSetOriginatorSerialNumber(CipConnectionObject *connection_object, CipUdint originator_serial_number)
void ConnectionObjectSetState(CipConnectionObject *const connection_object, const ConnectionObjectState state)
void ConnectionObjectGeneralConfiguration(CipConnectionObject *const connection_object)
Generate the ConnectionIDs and set the general configuration parameter in the given connection object...