Class Assembly
- java.lang.Object
-
- com.automation_pros.odva.cip.types.CipTree
-
- com.automation_pros.odva.cip.types.CipTreeCtx
-
- com.automation_pros.odva.cip.types.CipObject
-
- com.automation_pros.odva.cip.core.CipInstance
-
- com.automation_pros.odva.cip.application.Assembly
-
- All Implemented Interfaces:
DataContext,AttributeHolder,Connectable,DataWrapper,java.lang.Comparable<CipInstance>
public class Assembly extends CipInstance implements Connectable, DataWrapper
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classAssembly.AssyMemberprotected static classAssembly.DynamicDataprotected classAssembly.MemberListprotected classAssembly.NumMembData-
Nested classes/interfaces inherited from class com.automation_pros.odva.cip.types.CipObject
CipObject.FutureMultipleReply
-
Nested classes/interfaces inherited from class com.automation_pros.odva.cip.types.CipTree
CipTree.ChildMap
-
-
Field Summary
Fields Modifier and Type Field Description protected booleanactiveCipLINTconsumeTSprotected java.util.List<Assembly.AssyMember>fastMembersprotected booleanlockedprotected java.util.List<Assembly.AssyMember>membersstatic org.slf4j.LoggersLogger-
Fields inherited from class com.automation_pros.odva.cip.core.CipInstance
attr_all
-
Fields inherited from class com.automation_pros.odva.cip.types.CipTree
children, objEPath, parent, segment
-
Fields inherited from interface com.automation_pros.odva.cip.data.DataContext
emptyContext
-
-
Constructor Summary
Constructors Modifier Constructor Description Assembly(InstanceSeg seg, AssyMgr parent, BaseDataType<?> data, java.lang.String name)Construct a static assembly instance using a given CIP data element for read/write content.protectedAssembly(InstanceSeg seg, AssyMgr parent, ConnectableAttr data, java.lang.String name)Construct an assembly instance with a given connectable data attribute.Assembly(InstanceSeg seg, AssyMgr parent, java.lang.String name)Construct a dynamic assembly instance with an empty member list.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidconfig(SimpleDataSeg dataseg)Configuration assemblies or any other object that can be targeted for configuration data in a forward open service must implement this method.AppConsumerconnect(AppOwner owner, ConxClass.CxParams params, byte dirtrigcls)This method requests that the given connection be assigned as the owner of this object and an appropriate AppConsumer shim be created to handle the incoming data.voiddisconnect()This method forces any owner's shim to shutdown (breaking a connection if applicable), and if there was an owner, shuts down subscribers too.voiddisconnectSubscribers()This method disconnects all subscribers, a requirement during shutdown.BaseDataType<?>getData()Many CIP objects wrap a CIP data type.intgetDataSize()java.lang.StringgetDisplayName()java.util.List<Assembly.AssyMember>getMembers()AppOwnergetOwner()Obtain the current owner's shim if owned, or null.AssyMgrgetParent()intpayloadBytes()Report number of payload bytes expected, other than the mode & CIP short sequence.voidputMembers(java.util.List<Assembly.AssyMember> newMembers)voidservice(CipObject appContext, CipRequest request, int nesting)Execute a CIP service on the object, using the request supplied.voidsubscribe(AppProducer sub, ConxClass.CxParams params, byte dirtrigcls)This method requests that the given connection be added to the list of subscribers to new data production from this object.voidtxFresh()This method notifies a producer that a data has been updated and a new sequence number should be generated.voidtxTrigger()This method notifies a producer that a transmission trigger has expired and new data would be appropriate if it can be assembled and delivered synchronously in this call.voidunsubscribe(AppProducer sub)This method drops the given connection from the list of new data subscribers.-
Methods inherited from class com.automation_pros.odva.cip.core.CipInstance
compareTo, getAttribute, getEPathImpl, getSegment, isPrivate, number, setParent, toString
-
Methods inherited from class com.automation_pros.odva.cip.types.CipObject
executor, getChild, getDevice, getName, isShutdown, logger, onReplacement, removeChildSymbol, scheduler, setChild, setChildSymbol, setName, shutdown
-
Methods inherited from class com.automation_pros.odva.cip.types.CipTreeCtx
getCtxDataImpl, getNamedDef, getParentDataCtx, getTypeByCRC, getTypeByName, getTypesImpl
-
Methods inherited from class com.automation_pros.odva.cip.types.CipTree
cleanup, entrySet, follow, getChildren, getEPath, keySet, removeChild, setSegment
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface com.automation_pros.odva.cip.types.AttributeHolder
executor, getChild, getEPath, isShutdown, logger, scheduler, shutdown
-
Methods inherited from interface com.automation_pros.odva.cip.data.DataContext
fromEnum, getCtxData, getCtxDataOrNull, getTypes, makeHosted, makeUnhosted, toEnum
-
-
-
-
Field Detail
-
sLogger
public static final org.slf4j.Logger sLogger
-
locked
protected boolean locked
-
active
protected boolean active
-
members
protected final java.util.List<Assembly.AssyMember> members
-
fastMembers
protected java.util.List<Assembly.AssyMember> fastMembers
-
consumeTS
public final CipLINT consumeTS
-
-
Constructor Detail
-
Assembly
protected Assembly(InstanceSeg seg, AssyMgr parent, ConnectableAttr data, java.lang.String name)
Construct an assembly instance with a given connectable data attribute. The given attribute is expected to already be connected to this parent object.- Parameters:
seg-parent-data-name-
-
Assembly
public Assembly(InstanceSeg seg, AssyMgr parent, BaseDataType<?> data, java.lang.String name)
Construct a static assembly instance using a given CIP data element for read/write content. The data element may be an array or structure.- Parameters:
seg- The instance segment that will identify this assembly. If null, an instance number will be chosen from the vendor specific ranges, or any available instance above the last vendor range.parent- The assembly class object that will be the parentdata- The content data element
-
Assembly
public Assembly(InstanceSeg seg, AssyMgr parent, java.lang.String name)
Construct a dynamic assembly instance with an empty member list.- Parameters:
seg- The instance segment that will identify this assembly. If null, an instance number will be chosen from the vendor specific ranges, or any available instance above the last vendor range.parent- The assembly class object that will be the parent
-
-
Method Detail
-
getMembers
public java.util.List<Assembly.AssyMember> getMembers()
-
putMembers
public void putMembers(java.util.List<Assembly.AssyMember> newMembers)
-
getDisplayName
public java.lang.String getDisplayName()
- Specified by:
getDisplayNamein interfaceAttributeHolder- Overrides:
getDisplayNamein classCipObject
-
service
public void service(CipObject appContext, CipRequest request, int nesting)
Description copied from class:CipObjectExecute a CIP service on the object, using the request supplied. Supply a reply to the request and/or throw an appropriate CipException. Replies are not required before this routine returns.
Direct service() calls MUST NOT BLOCK. Any operation that will take any significant time must be delegated to an executor. "Significant" may vary by application, but typically would be in the fractional millisecond range.
- Specified by:
servicein interfaceAttributeHolder- Overrides:
servicein classCipInstance- Parameters:
appContext- Root object for application path lookups. Generally aMirrored Devicefrom a port context.request- What to do and where to reply. Services to be handled by child objects are to be passed to their service() method with nesting+1.nesting- How many leading path segments items to skip when processing this request. Avoids copying the balance of an application path into a new request when passing a request to a child object.
-
connect
public AppConsumer connect(AppOwner owner, ConxClass.CxParams params, byte dirtrigcls)
Description copied from interface:ConnectableThis method requests that the given connection be assigned as the owner of this object and an appropriate AppConsumer shim be created to handle the incoming data. Application Consumer objects handle data flow from connections to application objects. The providedAppOwnerinstance includes appropriate buffer handling, including removal/use of CIP short sequence numbers and originator idle/run mode indicators. This class's shutdown() method is used to disconnect.- Specified by:
connectin interfaceConnectabledirtrigcls- Direction/Trigger/Class combination to use.- Returns:
-
payloadBytes
public int payloadBytes()
Description copied from interface:ConnectableReport number of payload bytes expected, other than the mode & CIP short sequence.- Specified by:
payloadBytesin interfaceConnectable- Returns:
-
disconnect
public void disconnect()
Description copied from interface:ConnectableThis method forces any owner's shim to shutdown (breaking a connection if applicable), and if there was an owner, shuts down subscribers too.- Specified by:
disconnectin interfaceConnectable
-
disconnectSubscribers
public void disconnectSubscribers()
Description copied from interface:ConnectableThis method disconnects all subscribers, a requirement during shutdown.- Specified by:
disconnectSubscribersin interfaceConnectable
-
getOwner
public AppOwner getOwner()
Description copied from interface:ConnectableObtain the current owner's shim if owned, or null.- Specified by:
getOwnerin interfaceConnectable- Returns:
-
subscribe
public void subscribe(AppProducer sub, ConxClass.CxParams params, byte dirtrigcls)
Description copied from interface:ConnectableThis method requests that the given connection be added to the list of subscribers to new data production from this object. Repeat subscriptions are ignored.- Specified by:
subscribein interfaceConnectabledirtrigcls- Direction/Trigger/Class combination to use.
-
unsubscribe
public void unsubscribe(AppProducer sub)
Description copied from interface:ConnectableThis method drops the given connection from the list of new data subscribers.- Specified by:
unsubscribein interfaceConnectable
-
txTrigger
public void txTrigger()
Description copied from interface:ConnectableThis method notifies a producer that a transmission trigger has expired and new data would be appropriate if it can be assembled and delivered synchronously in this call.- Specified by:
txTriggerin interfaceConnectable
-
txFresh
public void txFresh()
Description copied from interface:ConnectableThis method notifies a producer that a data has been updated and a new sequence number should be generated. Produces to subscribers with application or change of state trigger types.- Specified by:
txFreshin interfaceConnectable
-
config
public void config(SimpleDataSeg dataseg)
Description copied from interface:ConnectableConfiguration assemblies or any other object that can be targeted for configuration data in a forward open service must implement this method.- Specified by:
configin interfaceConnectable
-
getParent
public AssyMgr getParent()
- Specified by:
getParentin interfaceAttributeHolder- Overrides:
getParentin classCipObject
-
getDataSize
public int getDataSize()
-
getData
public BaseDataType<?> getData()
Description copied from interface:DataWrapperMany CIP objects wrap a CIP data type. This interface allows the member resolver to access fragments of complex wrapped data in a uniform way.- Specified by:
getDatain interfaceDataWrapper- Returns:
-
-