| 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().