EtherNet/IP™ Adapter  1.04.06
User Reference Manual

◆ EI_API_CIP_getAssemblyData()

uint32_t EI_API_CIP_getAssemblyData ( T pCipNode_p,
uint16_t  assemblyInstanceId_p,
void *  pDestinationBuffer_p,
uint16_t  destinationBufferLength_p 
)

Get assembly instance attribute data.

Get assembly instance attribute Data (Attribute ID 3).

Parameters
[in]pCipNode_pPointer to the CIP node.
[in]assemblyInstanceId_pAssembly instance identifier.
[in]pDestinationBuffer_pPointer to data buffer.
[in]destinationBufferLength_pSize of data buffer.
Returns
EI_API_CIP_EError_t as uint32_t value.
Return values
EI_API_CIP_eERR_OKSuccess.
EI_API_CIP_eERR_NODE_INVALIDCIP node is invalid, possibly EI_API_CIP_NODE_new() was not called.
EI_API_CIP_eERR_GENERALCIP error code.
EI_API_CIP_eERR_ASSEMBLY_DOES_NOT_EXISTThe assembly with the given ID could not be found.
EI_API_CIP_eERR_ASSEMBLY_INVALID_BUFFERInvalid buffer pointer.
EI_API_CIP_eERR_ASSEMBLY_BAD_BUFFERSIZEBuffer size does not match assembly members' size.
Example
#include <api/EI_API.h>
EI_API_ADP_T* pEI_API_ADP = NULL;
EI_API_CIP_NODE_T* pEI_API_CIP_NODE = NULL;
uint32_t errCode;
uint8_t numInterfaces = 1;
uint16_t classId;
uint16_t instanceId;
uint16_t attrId;
uint16_t assemblyInstanceId;
uint8_t dstBuffer[1];
// Create a new adapter first
pEI_API_ADP = EI_API_ADP_new(numInterfaces);
// Create a CIP node next
pEI_API_CIP_NODE = EI_API_CIP_NODE_new();
...
// Create class for holding data attributes
classId = 0x70;
errCode = EI_API_CIP_createClass(pEI_API_CIP_NODE, classId);
// Define services on defined class
service.callback = NULL;
errCode = EI_API_CIP_addClassService(pEI_API_CIP_NODE, classId, &service);
errCode = EI_API_CIP_addClassService(pEI_API_CIP_NODE, classId, &service);
// Create instance with ID = 1, under defined class
instanceId = 0x01;
errCode = EI_API_CIP_createInstance(pEI_API_CIP_NODE, classId, instanceId);
// Add attribute with ID = 0x300 (Vendor Specific Attribute ID Range)
// of type USINT and read-write access under the created instance 0x01
attrId = 0x300;
attr.id = attrId;
attr.cdtSize = 0;
errCode = EI_API_CIP_addInstanceAttr(pEI_API_CIP_NODE, classId, instanceId, &attr);
// Set value of instance attribute in the instance with ID = 0x01
uint8_t value = 0xFF;
attr.pvValue = &value;
errCode = EI_API_CIP_setInstanceAttr(pEI_API_CIP_NODE, classId, instanceId, &attr);
// Under pEI_API_CIP_NODE, create assembly instance with ID = 100, with read-write access
assemblyInstanceId = 0x64;
errCode = EI_API_CIP_createAssembly(pEI_API_CIP_NODE, assemblyInstanceId, EI_API_CIP_eAR_GET_AND_SET);
...
// Add assembly member
errCode = EI_API_CIP_addAssemblyMember(pEI_API_CIP_NODE, assemblyInstanceId, classId, instanceId, attrId);
// Get attribute Size of assembly instance ID = 100, as number of bytes in attribute Data
errCode = EI_API_CIP_getAssemblySize(pEI_API_CIP_NODE, assemblyInstanceId, &size)
// Get assembly data, size of destination buffer needs to be equal to size of Data attribute in bytes
if (size == sizeof(dstBuffer))
{
errCode = EI_API_CIP_getAssemblyData(pEI_API_CIP_NODE, assemblyInstanceId, dstBuffer, size);
}
See also
EI_API_CIP_createAssembly EI_API_CIP_addAssemblyMember EI_API_CIP_getAssemblySize EI_API_CIP_setAssemblyData EI_API_CIP_SService_t EI_API_CIP_SAttr_t EI_API_CIP_EAr_t EI_API_CIP_EError_t
EI_API_CIP_getAssemblySize
ETHIP_API uint32_t EI_API_CIP_getAssemblySize(T *pCipNode_p, uint16_t assemblyInstanceId_p, uint16_t *pSize_p)
Get assembly instance attribute Size.
Definition: EI_API_CIP_main.c:5589
EI_API_CIP_SAttr::edt
EI_API_CIP_EEdt_t edt
Definition: EI_API_CIP.h:194
EI_API_CIP_SAttr::cdt
EI_API_CIP_ECdt_t cdt
Definition: EI_API_CIP.h:195
EI_API_CIP_SService::code
EI_API_CIP_ESc_t code
Definition: EI_API_CIP.h:181
EI_API_CIP_SService::getAttrAllResponseCnt
uint16_t getAttrAllResponseCnt
Definition: EI_API_CIP.h:182
EI_API_CIP_createAssembly
ETHIP_API uint32_t EI_API_CIP_createAssembly(T *pCipNode_p, uint16_t assemblyInstanceId_p, EI_API_CIP_EAr_t accessRule_p)
Create a new assembly instance.
Definition: EI_API_CIP_main.c:5348
EI_API_CIP_SAttr
General attribute parameter collection.
Definition: EI_API_CIP.h:192
EI_API_CIP_createInstance
ETHIP_API uint32_t EI_API_CIP_createInstance(T *pCipNode_p, uint16_t classId_p, uint16_t instanceId_p)
Creates a CIP instance.
Definition: EI_API_CIP_main.c:906
EI_API_CIP_eEDT_USINT
@ EI_API_CIP_eEDT_USINT
Definition: EI_API_CIP.h:127
EI_API_CIP_createClass
ETHIP_API uint32_t EI_API_CIP_createClass(T *pCipNode_p, uint16_t classId_p)
Create a CIP class.
Definition: EI_API_CIP_main.c:361
EI_API_CIP_getAssemblyData
ETHIP_API uint32_t EI_API_CIP_getAssemblyData(T *pCipNode_p, uint16_t assemblyInstanceId_p, void *pDestinationBuffer_p, uint16_t destinationBufferLength_p)
Get assembly instance attribute data.
Definition: EI_API_CIP_main.c:5729
EI_API_CIP_addClassService
ETHIP_API uint32_t EI_API_CIP_addClassService(T *pCipNode_p, uint16_t classId_p, EI_API_CIP_SService_t *pService_p)
Add service/s to the class.
Definition: EI_API_CIP_main.c:435
EI_API_CIP_SService
General service parameter collection.
Definition: EI_API_CIP.h:180
EI_API_CIP_NODE_new
ETHIP_API T * EI_API_CIP_NODE_new(void)
Create a new CIP node.
Definition: EI_API_CIP_main.c:69
EI_API_CIP_eSC_SETATTRSINGLE
@ EI_API_CIP_eSC_SETATTRSINGLE
Definition: EI_API_def.h:117
EI_API_CIP_SAttr::pvValue
void * pvValue
Definition: EI_API_CIP.h:200
EI_API_CIP_eSC_GETATTRSINGLE
@ EI_API_CIP_eSC_GETATTRSINGLE
Definition: EI_API_def.h:116
EI_API_CIP_SAttr::cdtSize
uint16_t cdtSize
Definition: EI_API_CIP.h:198
EI_API_CIP_SAttr::accessRule
EI_API_CIP_EAr_t accessRule
Definition: EI_API_CIP.h:196
EI_API_CIP_SAttr::id
uint16_t id
Definition: EI_API_CIP.h:193
EI_API_CIP_setInstanceAttr
ETHIP_API uint32_t EI_API_CIP_setInstanceAttr(T *pCipNode_p, uint16_t classId_p, uint16_t instanceId_p, EI_API_CIP_SAttr_t *pAttr_p)
Set instance attribute value only.
Definition: EI_API_CIP_main.c:2234
EI_API_CIP_eCDT_NO
@ EI_API_CIP_eCDT_NO
Definition: EI_API_CIP.h:163
EI_API_CIP_addAssemblyMember
ETHIP_API uint32_t EI_API_CIP_addAssemblyMember(T *pCipNode_p, uint16_t assemblyInstanceId_p, uint16_t classId_p, uint16_t instanceId_p, uint16_t attributeId_p)
Add an member to an assembly member list.
Definition: EI_API_CIP_main.c:5484
EI_API_CIP_eAR_GET_AND_SET
@ EI_API_CIP_eAR_GET_AND_SET
Definition: EI_API_def.h:131
EI_API_CIP_SService::callback
EI_API_CIP_CBService callback
Definition: EI_API_CIP.h:184
EI_API_ADP_new
ETHIP_API T * EI_API_ADP_new(uint8_t numInterfaces_p)
Create a new EtherNet/IP adapter.
Definition: EI_API_ADP_main.c:235
EI_API_CIP_addInstanceAttr
ETHIP_API uint32_t EI_API_CIP_addInstanceAttr(T *pCipNode_p, uint16_t classId_p, uint16_t instanceId_p, EI_API_CIP_SAttr_t *pAttr_p)
Add an attribute to an instance.
Definition: EI_API_CIP_main.c:1455