jmri.jmrix.can
Class CanMessage

java.lang.Object
  extended by jmri.jmrix.AbstractMessage
      extended by jmri.jmrix.AbstractMRMessage
          extended by jmri.jmrix.can.CanMessage
All Implemented Interfaces:
CanFrame, CanMutableFrame, Message

public class CanMessage
extends AbstractMRMessage
implements CanMutableFrame

Base class for messages in a CANbus based message/reply protocol.

It is expected that any CAN based system will be based upon basic CANbus concepts such as ID (standard or extended), Normal and RTR frames and a data field.

The _dataChars[] and _nDataChars members refer to the data field, not the entire message.

"header" refers to the full 11 or 29 bit header; which mode is separately set via the "extended" parameter

CBUS uses a 2-bit "Pri" field and 7-bit "ID" ("CAN ID") field, with separate accessors. CBUS ID is set as a layout connection preference and registered by the traffic controller.

Author:
Andrew Crosland Copyright (C) 2008, Bob Jacobsen Copyright (C) 2008, 2009, 2010

Field Summary
 
Fields inherited from class jmri.jmrix.AbstractMRMessage
LONG_TIMEOUT, SHORT_TIMEOUT
 
Fields inherited from class jmri.jmrix.AbstractMessage
_dataChars, _nDataChars
 
Constructor Summary
CanMessage()
           
CanMessage(CanMessage m)
           
CanMessage(int i)
           
CanMessage(int[] d)
           
 
Method Summary
 boolean equals(Object a)
          Note that a CanMessage and a CanReply can be tested for equality
 int getElement(int n)
           
 int getHeader()
           
 int getNumDataElements()
           
 int hashCode()
          Hash on the header
 boolean isExtended()
           
 boolean isRtr()
           
 boolean isTranslated()
           
 boolean replyExpected()
          Is a reply expected to this message?
 void setData(int[] d)
           
 void setElement(int n, int v)
           
 void setExtended(boolean b)
           
 void setHeader(int h)
           
 void setNumDataElements(int n)
           
 void setRtr(boolean b)
           
 void setTranslated(boolean translated)
           
 
Methods inherited from class jmri.jmrix.AbstractMRMessage
addIntAsFourHex, addIntAsThree, addIntAsThreeHex, addIntAsTwoHex, getNeededMode, getOpCode, getOpCodeHex, getRetries, getTimeout, isBinary, setBinary, setNeededMode, setOpCode, setRetries, setTimeout, toString
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

CanMessage

public CanMessage()

CanMessage

public CanMessage(int i)

CanMessage

public CanMessage(int[] d)

CanMessage

public CanMessage(CanMessage m)
Method Detail

setTranslated

public void setTranslated(boolean translated)

isTranslated

public boolean isTranslated()

hashCode

public int hashCode()
Hash on the header

Overrides:
hashCode in class Object

equals

public boolean equals(Object a)
Note that a CanMessage and a CanReply can be tested for equality

Overrides:
equals in class Object

replyExpected

public boolean replyExpected()
Description copied from class: AbstractMRMessage
Is a reply expected to this message?

By default, a reply is expected to every message; either a reply or a timeout is needed before the next message can be sent.

If this returns false, the transmit queue will immediately go on to transmitt the next message (if any).

Overrides:
replyExpected in class AbstractMRMessage

getNumDataElements

public int getNumDataElements()
Specified by:
getNumDataElements in interface CanFrame
Specified by:
getNumDataElements in interface Message
Overrides:
getNumDataElements in class AbstractMessage

setNumDataElements

public void setNumDataElements(int n)
Specified by:
setNumDataElements in interface CanMutableFrame

getElement

public int getElement(int n)
Specified by:
getElement in interface CanFrame
Specified by:
getElement in interface Message
Overrides:
getElement in class AbstractMessage

setElement

public void setElement(int n,
                       int v)
Specified by:
setElement in interface CanMutableFrame
Specified by:
setElement in interface Message
Overrides:
setElement in class AbstractMessage

setData

public void setData(int[] d)

getHeader

public int getHeader()
Specified by:
getHeader in interface CanFrame

setHeader

public void setHeader(int h)
Specified by:
setHeader in interface CanMutableFrame

isExtended

public boolean isExtended()
Specified by:
isExtended in interface CanFrame

setExtended

public void setExtended(boolean b)
Specified by:
setExtended in interface CanMutableFrame

isRtr

public boolean isRtr()
Specified by:
isRtr in interface CanFrame

setRtr

public void setRtr(boolean b)
Specified by:
setRtr in interface CanMutableFrame


Copyright © 1997 - 2011 JMRI Community.
JMRI, DecoderPro, PanelPro, SoundPro, DispatcherPro and associated logos are our trademarks.

Additional information on copyright, trademarks and licenses is linked here.
Site hosted by: Get JMRI Model Railroad Interface at SourceForge.net. Fast, secure and Free Open Source software downloads