OpENer - Open Source EtherNet/IP(TM) I/O Target Stack
2.1
|
Go to the source code of this file.
Functions | |
int | DecodePaddedEPath (CipEpath *epath, const EipUint8 **message) |
Decodes padded EPath. More... | |
EipStatus | GetAttributeAll (CipInstance *instance, CipMessageRouterRequest *message_router_request, CipMessageRouterResponse *message_router_response, struct sockaddr *originator_address, const int encapsulation_session) |
Generic implementation of the GetAttributeAll CIP service. More... | |
EipStatus | GetAttributeSingle (CipInstance *RESTRICT const instance, CipMessageRouterRequest *const message_router_request, CipMessageRouterResponse *const message_router_response, struct sockaddr *originator_address, const int encapsulation_session) |
Generic implementation of the GetAttributeSingle CIP service. More... | |
size_t | GetSizeOfAttribute (const CipAttributeStruct *const attribute_struct) |
EipStatus | NotifyClass (const CipClass *const RESTRICT cip_class, CipMessageRouterRequest *const message_router_request, CipMessageRouterResponse *const message_router_response, struct sockaddr *originator_address, const int encapsulation_session) |
Check if requested service present in class/instance and call appropriate service. More... | |
Variables | |
EipUint8 | g_message_data_reply_buffer [] |
Common CIP object interface
Definition in file cipcommon.h.
Decodes padded EPath.
epath | EPath object to the receiving element |
message | pointer to the message to decode |
Definition at line 804 of file cipcommon.c.
References CipEpath::attribute_number, CipEpath::class_id, GetIntFromMessage(), CipEpath::instance_number, kEipStatusError, kSegmentTypeReserved, LOGICAL_SEGMENT_FORMAT_EIGHT_BIT, LOGICAL_SEGMENT_FORMAT_SIXTEEN_BIT, LOGICAL_SEGMENT_TYPE_ATTRIBUTE_ID, LOGICAL_SEGMENT_TYPE_CLASS_ID, LOGICAL_SEGMENT_TYPE_INSTANCE_ID, LOGICAL_SEGMENT_TYPE_MEMBER_ID, OPENER_TRACE_ERR, CipEpath::path_size, and SEGMENT_TYPE_LOGICAL_SEGMENT.
Referenced by CreateMessageRouterRequestStructure().
EipStatus GetAttributeAll | ( | CipInstance * | instance, |
CipMessageRouterRequest * | message_router_request, | ||
CipMessageRouterResponse * | message_router_response, | ||
struct sockaddr * | originator_address, | ||
const int | encapsulation_session | ||
) |
Generic implementation of the GetAttributeAll CIP service.
Copy all attributes from Object into the global message buffer.
instance | pointer to object instance with data. |
message_router_request | pointer to MR request. |
message_router_response | pointer for MR response. |
originator_address | address struct of the originator as received |
encapsulation_session | associated encapsulation session of the explicit message |
Definition at line 704 of file cipcommon.c.
References CipEpath::attribute_number, CipAttributeStruct::attribute_number, cip_instance::attributes, CalculateIndex(), cip_instance::cip_class, CipMessageRouterResponse::data, CipMessageRouterResponse::data_length, CipMessageRouterResponse::general_status, cip_class::get_all_bit_mask, GetCipService(), kCipErrorServiceNotSupported, kEipStatusError, kEipStatusOk, kEipStatusOkSend, kGetAttributeSingle, cip_class::number_of_attributes, CipMessageRouterResponse::reply_service, CipMessageRouterRequest::request_path, CipMessageRouterRequest::service, cip_service_struct::service_function, and CipMessageRouterResponse::size_of_additional_status.
Referenced by CipEthernetLinkInit(), CipIdentityInit(), ConnectionManagerInit(), and CreateCipClass().
EipStatus GetAttributeSingle | ( | CipInstance *RESTRICT const | instance, |
CipMessageRouterRequest *const | message_router_request, | ||
CipMessageRouterResponse *const | message_router_response, | ||
struct sockaddr * | originator_address, | ||
const int | encapsulation_session | ||
) |
Generic implementation of the GetAttributeSingle CIP service.
Check from classID which Object requests an attribute, search if object has the appropriate attribute implemented.
instance | pointer to instance. |
message_router_request | pointer to request. |
message_router_response | pointer to response. |
originator_address | address struct of the originator as received |
encapsulation_session | associated encapsulation session of the explicit message |
Definition at line 391 of file cipcommon.c.
References CipEpath::attribute_number, BeforeAssemblyDataSend(), CalculateIndex(), CipMessageRouterResponse::data, CipAttributeStruct::data, CipMessageRouterResponse::data_length, EncodeData(), CipMessageRouterResponse::general_status, GetCipAttribute(), kCipByteArray, kCipErrorAttributeNotSupported, kCipErrorSuccess, kEipStatusOkSend, kGetAttributeAll, OPENER_ASSERT, OPENER_TRACE_INFO, CipMessageRouterResponse::reply_service, CipMessageRouterRequest::request_path, CipMessageRouterRequest::service, CipMessageRouterResponse::size_of_additional_status, and CipAttributeStruct::type.
Referenced by CipIdentityInit(), CipMessageRouterInit(), ConnectionManagerInit(), CreateAssemblyClass(), CreateCipClass(), GetAttributeSingleEthernetLink(), and GetAttributeSingleQoS().
size_t GetSizeOfAttribute | ( | const CipAttributeStruct *const | attribute_struct | ) |
Definition at line 900 of file cipcommon.c.
References CipAttributeStruct::data, CipTcpIpNetworkInterfaceConfiguration::domain_name, kCip6Usint, kCipBool, kCipByte, kCipByteArray, kCipDate, kCipDateAndTime, kCipDint, kCipDword, kCipEngUnit, kCipEpath, kCipFtime, kCipInt, kCipItime, kCipLint, kCipLreal, kCipLtime, kCipLword, kCipMemberList, kCipReal, kCipShortString, kCipSint, kCipStime, kCipString, kCipString2, kCipStringN, kCipTime, kCipTimeOfDay, kCipUdint, kCipUdintUdintUdintUdintUdintString, kCipUint, kCipUlint, kCipUsint, kCipUsintUsint, kCipWord, kInternalUint6, CipByteArray::length, CipShortString::length, CipString::length, CipStringN::length, CipEpath::path_size, CipStringN::size, and CipAttributeStruct::type.
EipStatus NotifyClass | ( | const CipClass *const RESTRICT | cip_class, |
CipMessageRouterRequest *const | message_router_request, | ||
CipMessageRouterResponse *const | message_router_response, | ||
struct sockaddr * | originator_address, | ||
const int | encapsulation_session | ||
) |
Check if requested service present in class/instance and call appropriate service.
cip_class | class receiving the message |
message_router_request | request message |
message_router_response | reply message |
originator_address | address struct of the originator as received |
encapsulation_session | associated encapsulation session of the explicit message |
Definition at line 75 of file cipcommon.c.
References cip_instance::cip_class, CipMessageRouterResponse::data_length, CipMessageRouterResponse::general_status, GetCipInstance(), CipEpath::instance_number, kCipErrorPathDestinationUnknown, kCipErrorServiceNotSupported, kEipStatusOkSend, cip_service_struct::name, cip_class::number_of_services, OPENER_ASSERT, OPENER_TRACE_INFO, OPENER_TRACE_WARN, CipMessageRouterResponse::reply_service, CipMessageRouterRequest::request_path, CipMessageRouterRequest::service, cip_service_struct::service_function, cip_service_struct::service_number, cip_class::services, and CipMessageRouterResponse::size_of_additional_status.
Referenced by NotifyMessageRouter().
EipUint8 g_message_data_reply_buffer[] |
A buffer for holding the replay generated by explicit message requests or producing I/O connections. These will use this buffer in the following ways:
Reply buffer
Definition at line 30 of file cipcommon.c.
Referenced by CipMessageRouterInit(), and NotifyMessageRouter().