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

◆ EI_API_CIP_setRoutingAssemblyData()

uint32_t EI_API_CIP_setRoutingAssemblyData ( T *  pCipNode_p,
uint16_t  assemblyInstanceId_p,
void *  pSourceBuffer_p,
uint16_t  sourceBufferLength_p,
uint8_t  linkAddr_p 
)

Set routable assembly instance attribute data.

Set routable assembly instance attribute Data (Attribute ID 3). Target instance is encoded by instance ID and link address.

Remarks
For details about encoding please see EI_API_CIP_createRoutableInstance.
Parameters
[in]pCipNode_pPointer to the CIP node.
[in]assemblyInstanceId_pAssembly instance identifier.
[in]pSourceBuffer_pPointer to data buffer.
[in]sourceBufferLength_pSize of data buffer.
[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_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 "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;
uint8_t linkAddr = 1;
uint16_t classId;
uint16_t instanceId;
uint16_t attrId;
uint16_t assemblyInstanceId;
uint8_t srcBuffer[1];
// 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 class for holding data attributes
classId = 0x70;
errCode = EI_API_CIP_createClass(pEI_API_CIP_NODE, classId);
// Define services on defined class
service.getAttrAllResponseCnt = 0;
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_createRoutingAssembly(pEI_API_CIP_NODE, assemblyInstanceId, EI_API_CIP_eAR_GET_AND_SET, linkAddr);
...
// Add assembly member
errCode = EI_API_CIP_addRoutingAssemblyMember(pEI_API_CIP_NODE, assemblyInstanceId, classId, instanceId, attrId, linkAddr);
// Get attribute Size of assembly instance ID = 100, as number of bytes in attribute Data
errCode = EI_API_CIP_getRoutingAssemblySize(pEI_API_CIP_NODE, assemblyInstanceId, &size, linkAddr)
// Set assembly data, size of source buffer needs to be equal to size of Data attribute in bytes
if (size == sizeof(srcBuffer))
{
srcBuffer[0] = 0x5A;
errCode = EI_API_CIP_setRoutingAssemblyData(pEI_API_CIP_NODE, assemblyInstanceId, &srcBuffer, size, linkAddr);
}
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_addRoutingAssemblyMember(T *pCipNode_p, uint16_t assemblyInstanceId_p, uint16_t classId_p, uint16_t instanceId_p, uint16_t attributeId_p, uint8_t linkAddr_p)
Add an member to an routable assembly member list.
Definition EI_API_CIP_stub.c:6804
ETHIP_API uint32_t EI_API_CIP_getRoutingAssemblySize(T *pCipNode_p, uint16_t assemblyInstanceId_p, uint16_t *pSize_p, uint8_t linkAddr_p)
Get routable assembly instance attribute Size.
Definition EI_API_CIP_stub.c:6399
ETHIP_API uint32_t EI_API_CIP_setRoutingAssemblyData(T *pCipNode_p, uint16_t assemblyInstanceId_p, void *pSourceBuffer_p, uint16_t sourceBufferLength_p, uint8_t linkAddr_p)
Set routable assembly instance attribute data.
Definition EI_API_CIP_stub.c:6674
ETHIP_API uint32_t EI_API_CIP_createRoutingAssembly(T *pCipNode_p, uint16_t assemblyInstanceId_p, EI_API_CIP_EAr_t accessRule_p, uint8_t linkAddr_p)
Create a new routable assembly instance.
Definition EI_API_CIP_stub.c:6316
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_stub.c:292
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_eSC_GETATTRSINGLE
Definition EI_API_def.h:109
@ EI_API_CIP_eSC_SETATTRSINGLE
Definition EI_API_def.h:110
@ EI_API_CIP_eAR_GET_AND_SET
Definition EI_API_def.h:124
@ EI_API_CIP_eEDT_USINT
Definition EI_API_CIP_define.h:97
@ 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 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_stub.c:1592
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
void * pvValue
Definition EI_API_CIP_define.h:192
General attribute parameter collection.
Definition EI_API_CIP_define.h:184
EI_API_CIP_ESc_t code
Definition EI_API_CIP_define.h:173
EI_API_CIP_CBService callback
Definition EI_API_CIP_define.h:176
uint16_t getAttrAllResponseCnt
Definition EI_API_CIP_define.h:174
General service parameter collection.
Definition EI_API_CIP_define.h:172
See also
EI_API_CIP_createRoutingAssembly EI_API_CIP_addRoutingAssemblyMember EI_API_CIP_getRoutingAssemblySize EI_API_CIP_getRoutingAssemblyData EI_API_CIP_EAr_t EI_API_CIP_EError_t