Package jmri.jmrix.can
Interface CanFrame
-
- All Known Subinterfaces:
CanMutableFrame
- All Known Implementing Classes:
CanMessage
,CanReply
@Immutable public interface CanFrame
Base interface for immutable messages in a CANbus based message/reply protocol.It is expected that any CAN based system will be based upon basic CAN concepts such as ID/header (standard or extended), Normal and RTR frames and a data field.
"header" refers to the full 11 or 29 bit header; which mode is separately set via the "extended" parameter
-
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description default void
appendHexElements(java.lang.StringBuilder sb)
Append the hex value of the data elements to a StringBuilder.default boolean
dataFramesEqual(CanFrame a, CanFrame b)
Compare 2 CanFrame data elements for equality.default boolean
extendedOrRtr()
Check if the CAN Frame is extended OR RtR.int
getElement(int n)
Get a single data byte in the frame.int
getHeader()
Get the CAN Frame header.int
getNumDataElements()
Get number of data bytes in the frame.default java.lang.String
getToString()
Get formatted toString.default boolean
isEqual(java.lang.Object a, java.lang.Object b)
Compare 2 CanFrames for equality.boolean
isExtended()
Get if the CAN Frame has an extended header.boolean
isRtr()
Get if the CAN Frame is an RTR Frame.default java.lang.String
monString()
Get formatted monitor String.
-
-
-
Method Detail
-
getHeader
int getHeader()
Get the CAN Frame header.- Returns:
- header value
-
isExtended
boolean isExtended()
Get if the CAN Frame has an extended header.- Returns:
- true if extended, else false
-
isRtr
boolean isRtr()
Get if the CAN Frame is an RTR Frame.- Returns:
- true if RTR, else false
-
getNumDataElements
int getNumDataElements()
Get number of data bytes in the frame.- Returns:
- 0-8
-
getElement
int getElement(int n)
Get a single data byte in the frame.- Parameters:
n
- the index, 0-7- Returns:
- the data element value
-
monString
default java.lang.String monString()
Get formatted monitor String. Includes if Frame is Extended. Header value at start. All values hex format. Only valid data elements are included.- Returns:
- eg. "(1A ext) 81 EA 83 00 12"
-
getToString
default java.lang.String getToString()
Get formatted toString. Does NOT include if Frame is Extended. All values hex format. Only valid data elements are included.- Returns:
- eg. "[12] 81 EA 83"
-
appendHexElements
default void appendHexElements(java.lang.StringBuilder sb)
Append the hex value of the data elements to a StringBuilder.- Parameters:
sb
- to append the hex values to
-
isEqual
default boolean isEqual(java.lang.Object a, java.lang.Object b)
Compare 2 CanFrames for equality.- Parameters:
a
- CanFrame to testb
- CanFrame to test- Returns:
- true if RTR, Extended, Header and Data elements match, else false
-
dataFramesEqual
default boolean dataFramesEqual(CanFrame a, CanFrame b)
Compare 2 CanFrame data elements for equality.- Parameters:
a
- CanFrame to testb
- CanFrame to test- Returns:
- true if Data elements match, else false
-
extendedOrRtr
default boolean extendedOrRtr()
Check if the CAN Frame is extended OR RtR.- Returns:
- true if either extended or RtR, else false
-
-