EtherNet/IP™ Adapter  1.02.01
User Reference Manual

◆ EI_API_CIP_setInstanceAttrFunc()

uint32_t EI_API_CIP_setInstanceAttrFunc ( T *  pCipNode_p,
uint16_t  classId_p,
uint16_t  instanceId_p,
EI_API_CIP_SAttr_t pAttr_p 
)

Register a callback function to a specific CIP attribute.

This function can be used to register a callback function to a CIP attribute. The callback will be executed if the registers access rule (get or set) are triggered.

Remarks
You have to register the callback for every attribute you are interested.
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_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_DOES_NOT_EXISTAttribute does not exist in class or instance.
EI_API_CIP_eERR_ATTRIBUTE_INVALID_CALLBACKCallback can not be registered (invalid function pointer).
EI_API_CIP_eERR_ATTRIBUTE_UNKNOWN_STATEUnknown state during attribute operation reached.
Example
void cbCountUpUsint(EI_API_CIP_NODE_T *pCipNode_p, uint16_t classId_p, uint16_t instanceId_p, uint16_t attrId_p, EI_API_CIP_EAr_t accessRule_p)
{
// Elementary data type USINT
EI_API_CIP_eEDT_USINT attrUsintValue;
uint32_t errCode;
// Get current attribute value into attrUsintValue
errCode = EI_API_CIP_getAttr_usint(pCipNode_p, classId_p, instanceId_p, attrId_p, &attrUsintValue);
// Increment value
attrUsintValue++;
errCode = EI_API_CIP_setAttr_usint(pCipNode_p, classId_p, instanceId_p, attrId_p, attrUsintValue);
}
uint32_t registerCallback(EI_API_CIP_NODE_T *pCipNode_p)
{
uint32_t errCode;
uint16_t classId = 0x0064;
uint16_t instanceId = 0x0066;
// Initialize structure to zero/null
EI_API_CIP_SAttr_t attr = { 0 };
EI_API_CIP_CBAttr ptr_cb = cbCountUpUsint;
attr.id = 0x68;
attr.callback = ptr_cb;
EI_API_CIP_CBAttr ptr_cb = cbCountUpUsint;
errCode = EI_API_CIP_setInstanceAttrFunc(pCipNode_p, classId, instanceId, &attr);
return(errCode);
}
ETHIP_API uint32_t EI_API_CIP_getAttr_usint(T *pCipNode_p, uint16_t classId_p, uint16_t instanceId_p, uint16_t attrId_p, ei_api_cip_edt_usint *pValue_p)
Get attribute of type USINT.
Definition: EI_API_CIP_main.c:2909
ETHIP_API uint32_t EI_API_CIP_setAttr_usint(T *pCipNode_p, uint16_t classId_p, uint16_t instanceId_p, uint16_t attrId_p, ei_api_cip_edt_usint value_p)
Set attribute of type USINT.
Definition: EI_API_CIP_main.c:4312
@ EI_API_CIP_eAR_GET
Attribute is gettable.
Definition: EI_API_def.h:130
@ EI_API_CIP_eEDT_USINT
Definition: EI_API_CIP.h:127
enum EI_API_CIP_EAr EI_API_CIP_EAr_t
These are the available attribute access rules.
ETHIP_API uint32_t EI_API_CIP_setInstanceAttrFunc(T *pCipNode_p, uint16_t classId_p, uint16_t instanceId_p, EI_API_CIP_SAttr_t *pAttr_p)
Register a callback function to a specific CIP attribute.
Definition: EI_API_CIP_main.c:1805
EI_API_CIP_EAr_t accessRule
Definition: EI_API_CIP.h:196
uint16_t id
Definition: EI_API_CIP.h:193
General attribute parameter collection.
Definition: EI_API_CIP.h:192
See also
EI_API_CIP_CBAttr EI_API_CIP_addInstanceAttr EI_API_CIP_getInstanceAttr EI_API_CIP_setInstanceAttr EI_API_CIP_SAttr_t EI_API_CIP_EError_t