EtherNet/IP™ Adapter  1.04.06
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_CBGetAttr ptr_cb = cbCountUpUsint;
attr.id = 0x68;
attr.get_callback = ptr_cb;
attr.set_callback = NULL;
errCode = EI_API_CIP_setInstanceAttrFunc(pCipNode_p, classId, instanceId, &attr);
return(errCode);
}
See also
EI_API_CIP_CBGetAttr EI_API_CIP_addInstanceAttr EI_API_CIP_getInstanceAttr EI_API_CIP_setInstanceAttr EI_API_CIP_SAttr EI_API_CIP_EError_t
EI_API_CIP_setInstanceAttrFunc
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:1812
EI_API_CIP_SAttr::set_callback
EI_API_CIP_CBSetAttr set_callback
Definition: EI_API_CIP.h:202
EI_API_CIP_SAttr
General attribute parameter collection.
Definition: EI_API_CIP.h:192
EI_API_CIP_eEDT_USINT
@ EI_API_CIP_eEDT_USINT
Definition: EI_API_CIP.h:127
EI_API_CIP_getAttr_usint
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:2923
EI_API_CIP_CBGetAttr
uint32_t(* EI_API_CIP_CBGetAttr)(EI_API_CIP_NODE_T *pCipNode_p, uint16_t classId_p, uint16_t instanceId_p, uint16_t attrId_p, uint16_t *len_p, void *pvValue_p)
Function prototype for CIP get attribute callback function.
Definition: EI_API_def.h:301
EI_API_CIP_SAttr::accessRule
EI_API_CIP_EAr_t accessRule
Definition: EI_API_CIP.h:196
EI_API_CIP_SAttr::get_callback
EI_API_CIP_CBGetAttr get_callback
Definition: EI_API_CIP.h:201
EI_API_CIP_SAttr::id
uint16_t id
Definition: EI_API_CIP.h:193
EI_API_CIP_EAr_t
enum EI_API_CIP_EAr EI_API_CIP_EAr_t
These are the available attribute access rules.
EI_API_CIP_setAttr_usint
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:4331
EI_API_CIP_eAR_GET
@ EI_API_CIP_eAR_GET
Attribute is gettable.
Definition: EI_API_def.h:130