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

◆ EI_API_CIP_setRoutableInstanceAttrFunc()

uint32_t EI_API_CIP_setRoutableInstanceAttrFunc ( T *  pCipNode_p,
uint16_t  classId_p,
uint16_t  instanceId_p,
EI_API_CIP_SAttr_t pAttr_p,
uint8_t  linkAddr_p 
)

Register a callback function to a specific CIP attribute of routable instance.

This function can be used to register a callback function to a CIP attribute of routable instance. The callback will be executed if the registers access rule (get or set) are triggered. Target instance is encoded by instance ID and link address.

Remarks
You have to register the callback for every attribute you are interested. For details about encoding please see EI_API_CIP_createRoutableInstance.
Parameters
[in]pCipNode_pPointer to the CIP node.
[in]classId_pClass identifier.
[in]instanceId_pInstance identifier.
[in]pAttr_pPointer to struct of attribute parameters.
[in]linkAddr_pLink address used to encode the target instance ID.
Returns
EI_API_CIP_EError_t as uint32_t value.
Return values
EI_API_CIP_eERR_OKSuccess.
EI_API_CIP_eERR_GENERALInstance encoding failed.
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
uint32_t cbCountUpUsint(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, uint16_t linkAddress_p)
{
...
}
uint32_t registerCallback(EI_API_CIP_NODE_T *pCipNode_p)
{
uint32_t errCode;
uint16_t classId = 0x010D;
uint16_t instanceId = 0x0001;
uint8_t linkAddr = 1;
// Initialize structure to zero/null
EI_API_CIP_SAttr_t attr = { 0 };
EI_API_CIP_CBGetAttr_CIPRouting ptr_cb = cbCountUpUsint;
attr.id = 0x300;
attr.get_callback_routed = ptr_cb;
attr.set_callback_routed = NULL;
errCode = EI_API_CIP_setRoutableInstanceAttrFunc(pCipNode_p, classId, instanceId, &attr, linkAddr);
return(errCode);
}
uint32_t(* EI_API_CIP_CBGetAttr_CIPRouting)(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, uint16_t linkAddress_p)
Function prototype for CIP get attribute callback function for Routed objects.
Definition EI_API_def.h:416
@ EI_API_CIP_eAR_GET
Attribute is gettable.
Definition EI_API_def.h:123
ETHIP_API uint32_t EI_API_CIP_setRoutableInstanceAttrFunc(T *pCipNode_p, uint16_t classId_p, uint16_t instanceId_p, EI_API_CIP_SAttr_t *pAttr_p, uint8_t linkAddr_p)
Register a callback function to a specific CIP attribute of routable instance.
Definition EI_API_CIP_stub.c:6139
EI_API_CIP_CBGetAttr_CIPRouting get_callback_routed
Definition EI_API_CIP_define.h:194
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_CBSetAttr_CIPRouting set_callback_routed
Definition EI_API_CIP_define.h:196
General attribute parameter collection.
Definition EI_API_CIP_define.h:184
See also
EI_API_CIP_CBGetAttr EI_API_CIP_addRoutableInstanceAttr EI_API_CIP_SAttr EI_API_CIP_EError_t