Class CipUDINT
- java.lang.Object
-
- com.automation_pros.odva.cip.data.BaseDataType<java.lang.Integer>
-
- com.automation_pros.odva.cip.data.CipUDINT
-
- All Implemented Interfaces:
BitAddressable
,BoolHost
public class CipUDINT extends BaseDataType<java.lang.Integer> implements BoolHost, BitAddressable
-
-
Field Summary
-
Fields inherited from class com.automation_pros.odva.cip.data.BaseDataType
dimensions, memberOffsets, sLogger, variantContext, varyingDimension
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
bytesEach()
Obtain the bytes-per-element of this object's payload encoding.protected int
bytesImpl(int[] indices)
Retrieve the bytes payload size of a single array element (or sole element).CipUDINT
copy()
Produce a deep clone of the object.protected void
copyToImpl(BaseDataType<?> dest, int[] indices)
Support deep copy operations one element at a time.protected void
copyToImpl(BaseDataType<?> dest, int[] toIndices, int[] fromIndices)
Support slice copy operations one element at a time.java.lang.String
crcName()
Obtain the name of this type as used for computing structure CRCs.java.lang.Integer
get(int[] indices)
Application-side value retrieval.boolean
getBit(int b)
boolean
getBit(int[] indices, int b)
DataDefinitionSeg
getNestingDef()
Return the element (not including array) type definition as a Path Segment, using the abbreviated form if a composite data type.int
intValue(int... indices)
For data types 32-bits wide or less, return the best available 32-bit representation.java.math.BigInteger
longValue(int... indices)
For data types 64-bits wide or less, return the best available 64-bit representation.protected void
putPayloadImpl(java.nio.ByteBuffer dest, int[] indices)
All concrete implementations must supply their per-element encoder here.void
set(int[] indices, java.lang.Integer val)
Application-side value storage.void
setBit(int[] indices, int b, boolean v)
void
setBit(int b, boolean v)
void
setDimensions(int[] newDimensions)
Update the lengths of the array dimensions to the given values.void
setInt(int val, int... indices)
For data types 32-bits wide or less, set the appropriate bits from a 32-bit representation.protected void
setPayloadImpl(java.nio.ByteBuffer source, int[] indices)
All concrete implementations must supply their per-element decoder here.java.lang.String
structCRCString()
Logix processors don't follow CIP Volume 1 Table C-6.9 in their tag read/write routines for structures.CipUDINT
wrap(int[] indices)
Application-side wrapper for inner dimensions.-
Methods inherited from class com.automation_pros.odva.cip.data.BaseDataType
alignment, browseInner, browseInnerImpl, bytes, checkDimensions, chkAbbrevType, concatIndices, conditionalSuffix, copyTo, CRC16, CRC16, CRC16, dim2linear, dim2linear, dim2qty, dim2suffix, dimensionToString, doubleValue, extendIntArray, fillIntArray, get, getCompleteDef, getDimensions, getMemberOffsets, getSymbolType, getTypeCode, getVariantContext, getVaryingDimension, hasOffset, incIdx, intArray, linear2dim, linear2dim, makeInstance, maxEach, minEach, nestedBytes, nestedBytesEach, nestedBytesImpl, nestedPutPayload, nestedPutPayloadImpl, nestedSetPayload, nestedSetPayloadImpl, putAbbrevType, putPayload, range2suffix, rawCRC16, set, setFromTokenImpl, setFromTokenizer, setFromTokenizerImpl, setFromTokenString, setLong, setMemberOffsets, setPayload, setupTokenizer, setVariantContext, setVariantDimension, setVariantDimension, singleToString, sliceTo, toString
-
-
-
-
Constructor Detail
-
CipUDINT
public CipUDINT()
-
CipUDINT
public CipUDINT(int val)
-
CipUDINT
public CipUDINT(int[] dimensions)
-
CipUDINT
protected CipUDINT(CipUDINT data, int[] indices)
-
-
Method Detail
-
getNestingDef
public DataDefinitionSeg getNestingDef()
Description copied from class:BaseDataType
Return the element (not including array) type definition as a Path Segment, using the abbreviated form if a composite data type.- Specified by:
getNestingDef
in classBaseDataType<java.lang.Integer>
-
crcName
public java.lang.String crcName()
Description copied from class:BaseDataType
Obtain the name of this type as used for computing structure CRCs. Can be different from the name(s) used by the CipPath parser.- Overrides:
crcName
in classBaseDataType<java.lang.Integer>
- Returns:
-
setDimensions
public void setDimensions(int[] newDimensions)
Description copied from class:BaseDataType
Update the lengths of the array dimensions to the given values. The number of subscripts must match the current number of subscripts. The operation must be data-preserving.This implementation handles pure Object storage types. Anything else must override.
- Overrides:
setDimensions
in classBaseDataType<java.lang.Integer>
-
structCRCString
public java.lang.String structCRCString()
Description copied from class:BaseDataType
Logix processors don't follow CIP Volume 1 Table C-6.9 in their tag read/write routines for structures. Instead, they run the CRC over comma-separated ASCII type strings that make up the structure. This is referred to in the Logix Data Access Programming Manual as the "Structure Handle".- Overrides:
structCRCString
in classBaseDataType<java.lang.Integer>
- Returns:
-
intValue
public int intValue(int... indices)
Description copied from class:BaseDataType
For data types 32-bits wide or less, return the best available 32-bit representation. If the subscripts are incomplete, return the element with the remaining subscripts set to zero.- Overrides:
intValue
in classBaseDataType<java.lang.Integer>
- Parameters:
indices
- Array subscripts.- Returns:
-
setInt
public void setInt(int val, int... indices)
Description copied from class:BaseDataType
For data types 32-bits wide or less, set the appropriate bits from a 32-bit representation. If the subscripts are incomplete, set the element with the remaining subscripts set to zero.- Overrides:
setInt
in classBaseDataType<java.lang.Integer>
- Parameters:
val
- New value, truncated to 8 or 16 bits if needed.indices
- Array subscripts.
-
longValue
public java.math.BigInteger longValue(int... indices)
Description copied from class:BaseDataType
For data types 64-bits wide or less, return the best available 64-bit representation. If the subscripts are incomplete, return the element with the remaining subscripts set to zero.- Overrides:
longValue
in classBaseDataType<java.lang.Integer>
- Parameters:
indices
- Array subscripts.- Returns:
-
get
public java.lang.Integer get(int[] indices)
Description copied from class:BaseDataType
Application-side value retrieval. Subclasses must implement this function to retrieve elements of the storage array in the application data type.- Specified by:
get
in classBaseDataType<java.lang.Integer>
- Parameters:
indices
- Array subscripts. Missing subscripts not allowed.- Returns:
-
set
public void set(int[] indices, java.lang.Integer val)
Description copied from class:BaseDataType
Application-side value storage. Subclasses must implement this function to store one value or complex element into the storage array.- Specified by:
set
in classBaseDataType<java.lang.Integer>
- Parameters:
indices
- Array subscripts. Missing subscripts not allowed.
-
getBit
public boolean getBit(int[] indices, int b)
- Specified by:
getBit
in interfaceBitAddressable
-
setBit
public void setBit(int[] indices, int b, boolean v)
- Specified by:
setBit
in interfaceBitAddressable
-
bytesEach
public int bytesEach()
Description copied from class:BaseDataType
Obtain the bytes-per-element of this object's payload encoding. Objects with variable length encodings must return zero and implement the bytesImpl(), minEach(), maxEach(), and alignment() methods instead.- Specified by:
bytesEach
in classBaseDataType<java.lang.Integer>
- Returns:
- encoded bytes per element
-
setPayloadImpl
protected void setPayloadImpl(java.nio.ByteBuffer source, int[] indices)
Description copied from class:BaseDataType
All concrete implementations must supply their per-element decoder here.- Specified by:
setPayloadImpl
in classBaseDataType<java.lang.Integer>
-
putPayloadImpl
protected void putPayloadImpl(java.nio.ByteBuffer dest, int[] indices)
Description copied from class:BaseDataType
All concrete implementations must supply their per-element encoder here.- Specified by:
putPayloadImpl
in classBaseDataType<java.lang.Integer>
-
bytesImpl
protected int bytesImpl(int[] indices)
Description copied from class:BaseDataType
Retrieve the bytes payload size of a single array element (or sole element). Objects with fixed element sizes may simply return bytesEach() here.- Specified by:
bytesImpl
in classBaseDataType<java.lang.Integer>
- Returns:
-
copy
public CipUDINT copy()
Description copied from class:BaseDataType
Produce a deep clone of the object.- Specified by:
copy
in classBaseDataType<java.lang.Integer>
-
copyToImpl
protected void copyToImpl(BaseDataType<?> dest, int[] indices)
Description copied from class:BaseDataType
Support deep copy operations one element at a time.- Specified by:
copyToImpl
in classBaseDataType<java.lang.Integer>
-
copyToImpl
protected void copyToImpl(BaseDataType<?> dest, int[] toIndices, int[] fromIndices)
Description copied from class:BaseDataType
Support slice copy operations one element at a time.- Specified by:
copyToImpl
in classBaseDataType<java.lang.Integer>
-
wrap
public CipUDINT wrap(int[] indices)
Description copied from class:BaseDataType
Application-side wrapper for inner dimensions. Implementations must update memberOffsets if not not using the protected constructor.- Specified by:
wrap
in classBaseDataType<java.lang.Integer>
- Parameters:
indices
- Array subscripts. Missing subscripts are allowed.
-
-