EtherNet/IP™ Adapter3.09.00
 
Loading...
Searching...
No Matches

◆ EI_API_CIP_addInstanceAttr()

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.

This function adds a attribute to a instance with the class and instance identifier passed as parameter. The parameter details are passed as a struct of type EI_API_CIP_SAttr_t.

Parameters
[in]pCipNode_pPointer to the CIP node.
[in]classId_pClass identifier.
[in]instanceId_pInstance identifier.
[in]pAttr_pPointer to struct of attribute parameters.
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_CLASS_BLACKLISTOperation on the CIP object with specified identifier (class ID) are not allowed.
EI_API_CIP_eERR_CLASS_DOES_NOT_EXISTClass does not exists in CIP node dictionary.
EI_API_CIP_eERR_INSTANCE_DOES_NOT_EXISTInstance does not exist in CIP node dictionary.
EI_API_CIP_eERR_ATTRIBUTE_ALREADY_EXISTAttribute already exists in class or instance.
EI_API_CIP_eERR_ATTRIBUTE_NOT_IMPLEMENTEDAttribute function not implemented.
EI_API_CIP_eERR_ATTRIBUTE_CDT_SIZEPassed constructed data type size for e.g. farray not within valid range.
EI_API_CIP_eERR_MEMALLOCMemory allocation error.
EI_API_CIP_eERR_ATTRIBUTE_EDT_SIZEPassed elementary data type size for e.g. short string not within valid range.
EI_API_CIP_eERR_INSTANCE_UNKNOWN_STATEUnknown state during class operation reached.
Example
#include "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 = 0x0064;
uint16_t instanceId = 0x01;
// Create a new adapter first
pEI_API_ADP = EI_API_ADP_new(numInterfaces);
// Create a CIP node next
initParams.maxInstanceNum = 256;
pEI_API_CIP_NODE = EI_API_CIP_NODE_new(&initParams);
// Create a class
errCode = EI_API_CIP_createClass(pEI_API_CIP_NODE, classId);
// Create instance in class with identifier classId
errCode = EI_API_CIP_createInstance(pEI_API_CIP_NODE, classId, instanceId);
// Attribute parameter set
attr.id = 0x01;
attr.edtSize = 0;
attr.cdtSize = 0;
errCode = EI_API_CIP_addInstanceAttr(pEI_API_CIP_NODE, classId, instanceId, &attr);
ETHIP_API T * EI_API_ADP_new(uint8_t numInterfaces_p)
Create a new EtherNet/IP adapter.
Definition EI_API_ADP_stub.c:231
ETHIP_API uint32_t EI_API_CIP_createClass(T *pCipNode_p, uint16_t classId_p)
Create a CIP class.
Definition EI_API_CIP_stub.c:215
@ EI_API_CIP_eAR_GET
Attribute is gettable.
Definition EI_API_def.h:123
@ EI_API_CIP_eEDT_UINT
Definition EI_API_CIP_define.h:98
@ EI_API_CIP_eCDT_NO
Definition EI_API_CIP_define.h:133
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_stub.c:787
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_stub.c:1170
ETHIP_API T * EI_API_CIP_NODE_new(EI_API_CIP_NODE_InitParams_t *pInitParams)
Create a new CIP node.
Definition EI_API_CIP_stub.c:81
uint16_t maxInstanceNum
Definition EI_API_CIP_define.h:162
Initialization parameters to create new CIP Node.
Definition EI_API_CIP_define.h:161
EI_API_CIP_EEdt_t edt
Definition EI_API_CIP_define.h:186
EI_API_CIP_EAr_t accessRule
Definition EI_API_CIP_define.h:188
uint16_t id
Definition EI_API_CIP_define.h:185
EI_API_CIP_ECdt_t cdt
Definition EI_API_CIP_define.h:187
uint16_t cdtSize
Definition EI_API_CIP_define.h:190
uint16_t edtSize
Definition EI_API_CIP_define.h:189
General attribute parameter collection.
Definition EI_API_CIP_define.h:184
See also
EI_API_CIP_createClass EI_API_CIP_createInstance EI_API_CIP_SAttr_t EI_API_CIP_EEdt_t EI_API_CIP_ECdt_t EI_API_CIP_EAr_t