|
From: Bob J. <jac...@us...> - 2002-03-30 19:22:58
|
Update of /cvsroot/jmri/jmri/jmrix/easydcc
In directory usw-pr-cvs1:/tmp/cvs-serv4891
Modified Files:
EasyDccMessage.java EasyDccProgrammer.java EasyDccReply.java
EasyDccTrafficController.java EasyDccTurnoutManager.java
Log Message:
more intermediate work on EasyDCC. Not yet passing all tests
Index: EasyDccMessage.java
===================================================================
RCS file: /cvsroot/jmri/jmri/jmrix/easydcc/EasyDccMessage.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** EasyDccMessage.java 23 Mar 2002 07:28:30 -0000 1.1
--- EasyDccMessage.java 30 Mar 2002 19:22:53 -0000 1.2
***************
*** 1,3 ****
! /**
* EasyDccMessage.java
*
--- 1,3 ----
! /**
* EasyDccMessage.java
*
***************
*** 40,48 ****
public int getElement(int n) {return _dataChars[n];}
public void setElement(int n, int v) { _dataChars[n] = v; }
-
- // mode accessors
- boolean _isBinary;
- public boolean isBinary() { return _isBinary; }
- public void setBinary(boolean b) { _isBinary = b; }
// display format
--- 40,43 ----
***************
*** 50,64 ****
String s = "";
for (int i=0; i<_nDataChars; i++) {
! if (_isBinary) {
! if (i!=0) s+=" ";
! if (_dataChars[i] < 16) s+="0";
! s+=Integer.toHexString(_dataChars[i]);
! } else {
! s+=(char)_dataChars[i];
! }
}
return s;
}
!
// diagnose format
public boolean isKillMain() {
--- 45,53 ----
String s = "";
for (int i=0; i<_nDataChars; i++) {
! s+=(char)_dataChars[i];
}
return s;
}
!
// diagnose format
public boolean isKillMain() {
***************
*** 69,99 ****
return getOpCode() == 'E';
}
!
// static methods to return a formatted message
static public EasyDccMessage getEnableMain() {
EasyDccMessage m = new EasyDccMessage(1);
- m.setBinary(false);
m.setOpCode('E');
return m;
}
!
static public EasyDccMessage getKillMain() {
EasyDccMessage m = new EasyDccMessage(1);
- m.setBinary(false);
m.setOpCode('K');
return m;
}
!
static public EasyDccMessage getProgMode() {
EasyDccMessage m = new EasyDccMessage(1);
- m.setBinary(false);
m.setOpCode('M');
return m;
}
!
static public EasyDccMessage getExitProgMode() {
EasyDccMessage m = new EasyDccMessage(1);
- m.setBinary(false);
m.setOpCode('X');
return m;
--- 58,84 ----
return getOpCode() == 'E';
}
!
// static methods to return a formatted message
static public EasyDccMessage getEnableMain() {
EasyDccMessage m = new EasyDccMessage(1);
m.setOpCode('E');
return m;
}
!
static public EasyDccMessage getKillMain() {
EasyDccMessage m = new EasyDccMessage(1);
m.setOpCode('K');
return m;
}
!
static public EasyDccMessage getProgMode() {
EasyDccMessage m = new EasyDccMessage(1);
m.setOpCode('M');
return m;
}
!
static public EasyDccMessage getExitProgMode() {
EasyDccMessage m = new EasyDccMessage(1);
m.setOpCode('X');
return m;
***************
*** 101,128 ****
static public EasyDccMessage getReadPagedCV(int cv) { //Rxxx
! EasyDccMessage m = new EasyDccMessage(4);
! m.setBinary(false);
m.setOpCode('R');
! addIntAsThree(cv, m, 1);
return m;
}
static public EasyDccMessage getWritePagedCV(int cv, int val) { //Pxxx xxx
! EasyDccMessage m = new EasyDccMessage(8);
! m.setBinary(false);
m.setOpCode('P');
! addIntAsThree(cv, m, 1);
! m.setElement(4,' ');
! addIntAsThree(val, m, 5);
return m;
}
!
static public EasyDccMessage getReadRegister(int reg) { //Vx
if (reg>8) log.error("register number too large: "+reg);
! EasyDccMessage m = new EasyDccMessage(2);
! m.setBinary(false);
m.setOpCode('V');
String s = ""+reg;
! m.setElement(1, s.charAt(s.length()-1));
return m;
}
--- 86,113 ----
static public EasyDccMessage getReadPagedCV(int cv) { //Rxxx
! EasyDccMessage m = new EasyDccMessage(5);
m.setOpCode('R');
! m.setElement(1, ' ');
! addIntAsThree(cv, m, 2);
return m;
}
static public EasyDccMessage getWritePagedCV(int cv, int val) { //Pxxx xxx
! EasyDccMessage m = new EasyDccMessage(9);
m.setOpCode('P');
! m.setElement(1, ' ');
! addIntAsThree(cv, m, 2);
! m.setElement(5,' ');
! addIntAsThree(val, m, 6);
return m;
}
!
static public EasyDccMessage getReadRegister(int reg) { //Vx
if (reg>8) log.error("register number too large: "+reg);
! EasyDccMessage m = new EasyDccMessage(3);
m.setOpCode('V');
String s = ""+reg;
! m.setElement(1, ' ');
! m.setElement(2, s.charAt(s.length()-1));
return m;
}
***************
*** 130,140 ****
static public EasyDccMessage getWriteRegister(int reg, int val) { //Sx xxx
if (reg>8) log.error("register number too large: "+reg);
! EasyDccMessage m = new EasyDccMessage(6);
! m.setBinary(false);
m.setOpCode('S');
String s = ""+reg;
! m.setElement(1, s.charAt(s.length()-1));
! m.setElement(2,' ');
! addIntAsThree(val, m, 3);
return m;
}
--- 115,125 ----
static public EasyDccMessage getWriteRegister(int reg, int val) { //Sx xxx
if (reg>8) log.error("register number too large: "+reg);
! EasyDccMessage m = new EasyDccMessage(7);
m.setOpCode('S');
String s = ""+reg;
! m.setElement(1, ' ');
! m.setElement(2, s.charAt(s.length()-1));
! m.setElement(3,' ');
! addIntAsThree(val, m, 4);
return m;
}
***************
*** 148,157 ****
if (s.length() != 3) s = "0"+s; // handle <10
if (s.length() != 3) s = "0"+s; // handle <100
! m.setElement(offset,s.charAt(0));
! m.setElement(offset+1,s.charAt(1));
m.setElement(offset+2,s.charAt(2));
return s;
}
!
static org.apache.log4j.Category log = org.apache.log4j.Category.getInstance(EasyDccMessage.class.getName());
--- 133,142 ----
if (s.length() != 3) s = "0"+s; // handle <10
if (s.length() != 3) s = "0"+s; // handle <100
! m.setElement(offset,s.charAt(0));
! m.setElement(offset+1,s.charAt(1));
m.setElement(offset+2,s.charAt(2));
return s;
}
!
static org.apache.log4j.Category log = org.apache.log4j.Category.getInstance(EasyDccMessage.class.getName());
Index: EasyDccProgrammer.java
===================================================================
RCS file: /cvsroot/jmri/jmri/jmrix/easydcc/EasyDccProgrammer.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** EasyDccProgrammer.java 23 Mar 2002 07:28:30 -0000 1.1
--- EasyDccProgrammer.java 30 Mar 2002 19:22:53 -0000 1.2
***************
*** 1,3 ****
! /**
* EasyDccProgrammer.java
*
--- 1,3 ----
! /**
* EasyDccProgrammer.java
*
***************
*** 6,10 ****
* @version $Id$
*/
!
// Convert the jmri.Programmer interface into commands for the EasyDcc powerstation
--- 6,10 ----
* @version $Id$
*/
!
// Convert the jmri.Programmer interface into commands for the EasyDcc powerstation
***************
*** 18,37 ****
public class EasyDccProgrammer extends AbstractProgrammer implements EasyDccListener {
!
! public EasyDccProgrammer() {
// error if more than one constructed?
! if (self != null)
log.error("Creating too many EasyDccProgrammer objects");
// register this as the default, register as the Programmer
! self = this;
jmri.InstanceManager.setProgrammer(this);
!
}
! /*
* method to find the existing EasyDccProgrammer object, if need be creating one
*/
! static public final EasyDccProgrammer instance() {
if (self == null) self = new EasyDccProgrammer();
return self;
--- 18,37 ----
public class EasyDccProgrammer extends AbstractProgrammer implements EasyDccListener {
!
! public EasyDccProgrammer() {
// error if more than one constructed?
! if (self != null)
log.error("Creating too many EasyDccProgrammer objects");
// register this as the default, register as the Programmer
! self = this;
jmri.InstanceManager.setProgrammer(this);
!
}
! /*
* method to find the existing EasyDccProgrammer object, if need be creating one
*/
! static public final EasyDccProgrammer instance() {
if (self == null) self = new EasyDccProgrammer();
return self;
***************
*** 41,45 ****
// handle mode
protected int _mode = Programmer.PAGEMODE;
!
public void setMode(int mode) {
if (mode != _mode) {
--- 41,45 ----
// handle mode
protected int _mode = Programmer.PAGEMODE;
!
public void setMode(int mode) {
if (mode != _mode) {
***************
*** 53,57 ****
}
public int getMode() { return _mode; }
!
// notify property listeners - see AbstractProgrammer for more
--- 53,57 ----
}
public int getMode() { return _mode; }
!
// notify property listeners - see AbstractProgrammer for more
***************
*** 70,76 ****
}
}
!
// members for handling the programmer interface
!
int progState = 0;
static final int NOTPROGRAMMING = 0;// is notProgramming
--- 70,76 ----
}
}
!
// members for handling the programmer interface
!
int progState = 0;
static final int NOTPROGRAMMING = 0;// is notProgramming
***************
*** 81,85 ****
int _val; // remember the value being read/written for confirmative reply
int _cv; // remember the cv being read/written
!
// programming interface
public void writeCV(int CV, int val, jmri.ProgListener p) throws jmri.ProgrammerException {
--- 81,85 ----
int _val; // remember the value being read/written for confirmative reply
int _cv; // remember the cv being read/written
!
// programming interface
public void writeCV(int CV, int val, jmri.ProgListener p) throws jmri.ProgrammerException {
***************
*** 90,102 ****
progState = MODESENT;
_val = val;
! _cv = CV;
// start the error timer
startShortTimer();
!
// format and send message to go to program mode
controller().sendEasyDccMessage(EasyDccMessage.getProgMode(), this);
}
!
public void confirmCV(int CV, int val, jmri.ProgListener p) throws jmri.ProgrammerException {
readCV(CV, p);
--- 90,102 ----
progState = MODESENT;
_val = val;
! _cv = CV;
// start the error timer
startShortTimer();
!
// format and send message to go to program mode
controller().sendEasyDccMessage(EasyDccMessage.getProgMode(), this);
}
!
public void confirmCV(int CV, int val, jmri.ProgListener p) throws jmri.ProgrammerException {
readCV(CV, p);
***************
*** 111,125 ****
progState = MODESENT;
_cv = CV;
!
// start the error timer
startShortTimer();
!
// format and send message to go to program mode
controller().sendEasyDccMessage(EasyDccMessage.getProgMode(), this);
!
}
private jmri.ProgListener _usingProgrammer = null;
!
// internal method to remember who's using the programmer
protected void useProgrammer(jmri.ProgListener p) throws jmri.ProgrammerException {
--- 111,125 ----
progState = MODESENT;
_cv = CV;
!
// start the error timer
startShortTimer();
!
// format and send message to go to program mode
controller().sendEasyDccMessage(EasyDccMessage.getProgMode(), this);
!
}
private jmri.ProgListener _usingProgrammer = null;
!
// internal method to remember who's using the programmer
protected void useProgrammer(jmri.ProgListener p) throws jmri.ProgrammerException {
***************
*** 134,138 ****
}
}
!
// internal method to create the EasyDccMessage for programmer task start
protected EasyDccMessage progTaskStart(int mode, int val, int cvnum) throws jmri.ProgrammerException {
--- 134,138 ----
}
}
!
// internal method to create the EasyDccMessage for programmer task start
protected EasyDccMessage progTaskStart(int mode, int val, int cvnum) throws jmri.ProgrammerException {
***************
*** 146,154 ****
}
}
!
public void message(EasyDccMessage m) {
log.error("message received unexpectedly: "+m.toString());
}
!
synchronized public void reply(EasyDccReply m) {
if (progState == NOTPROGRAMMING) {
--- 146,154 ----
}
}
!
public void message(EasyDccMessage m) {
log.error("message received unexpectedly: "+m.toString());
}
!
synchronized public void reply(EasyDccReply m) {
if (progState == NOTPROGRAMMING) {
***************
*** 159,165 ****
if (log.isDebugEnabled()) log.debug("reply in MODESENT state");
// see if reply is the acknowledge of program mode; if not, wait
! if ( (m.match("PROGRAMMING MODE") == -1) &&
! (m.match("COMMAND NOT UNDERSTOOD") == -1) // indicates already in program mode
! ) return;
// here ready to send the read/write command
progState = COMMANDSENT;
--- 159,163 ----
if (log.isDebugEnabled()) log.debug("reply in MODESENT state");
// see if reply is the acknowledge of program mode; if not, wait
! if ( m.match("P") == -1 ) return;
// here ready to send the read/write command
progState = COMMANDSENT;
***************
*** 206,210 ****
progState = NOTPROGRAMMING;
stopTimer();
! // if this was a read, we cached the value earlier. If its a
// write, we're to return the original write value
notifyProgListenerEnd(_val, jmri.ProgListener.OK);
--- 204,208 ----
progState = NOTPROGRAMMING;
stopTimer();
! // if this was a read, we cached the value earlier. If its a
// write, we're to return the original write value
notifyProgListenerEnd(_val, jmri.ProgListener.OK);
***************
*** 213,217 ****
}
}
!
/**
* Internal routine to handle a timeout
--- 211,215 ----
}
}
!
/**
* Internal routine to handle a timeout
***************
*** 227,231 ****
}
}
!
// internal method to notify of the final result
protected void notifyProgListenerEnd(int value, int status) {
--- 225,229 ----
}
}
!
// internal method to notify of the final result
protected void notifyProgListenerEnd(int value, int status) {
Index: EasyDccReply.java
===================================================================
RCS file: /cvsroot/jmri/jmri/jmrix/easydcc/EasyDccReply.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** EasyDccReply.java 23 Mar 2002 07:28:30 -0000 1.1
--- EasyDccReply.java 30 Mar 2002 19:22:53 -0000 1.2
***************
*** 1,3 ****
! /**
* EasyDccReply.java
*
--- 1,3 ----
! /**
* EasyDccReply.java
*
***************
*** 33,37 ****
_dataChars[i] = s.charAt(i);
}
!
public void setOpCode(int i) { _dataChars[0]= (char)i;}
public int getOpCode() {return _dataChars[0];}
--- 33,37 ----
_dataChars[i] = s.charAt(i);
}
!
public void setOpCode(int i) { _dataChars[0]= (char)i;}
public int getOpCode() {return _dataChars[0];}
***************
*** 40,74 ****
public int getNumDataElements() {return _nDataChars;}
public int getElement(int n) {return _dataChars[n];}
! public void setElement(int n, int v) {
_dataChars[n] = (char) v;
! _nDataChars = Math.max(_nDataChars, n+1);
}
- // mode accessors
- boolean _isBinary;
- public boolean isBinary() { return _isBinary; }
- public void setBinary(boolean b) { _isBinary = b; }
-
// display format
public String toString() {
String s = "";
for (int i=0; i<_nDataChars; i++) {
- if (_isBinary) {
- if (i!=0) s+=" ";
- if (_dataChars[i] < 16) s+="0";
- s+=Integer.toHexString(_dataChars[i]);
- } else {
s+=(char)_dataChars[i];
- }
}
return s;
}
! public int value() { // integer value of 1st three digits
! int index = 0;
! index = skipWhiteSpace(index);
! index = skipCOMMAND(index);
! index = skipWhiteSpace(index);
! String s = ""+(char)getElement(index)+(char)getElement(index+1)+(char)getElement(index+2);
int val = -1;
try {
--- 40,61 ----
public int getNumDataElements() {return _nDataChars;}
public int getElement(int n) {return _dataChars[n];}
! public void setElement(int n, int v) {
_dataChars[n] = (char) v;
! _nDataChars = Math.max(_nDataChars, n+1);
}
// display format
public String toString() {
String s = "";
for (int i=0; i<_nDataChars; i++) {
s+=(char)_dataChars[i];
}
return s;
}
! public int value() { // integer value of 8 and 9th digits
! int index = 7; // 8th position is index 7
! //index = skipWhiteSpace(index);
! String s = ""+(char)getElement(index)+(char)getElement(index+1);
int val = -1;
try {
***************
*** 80,84 ****
return val;
}
!
int match(String s) {
// find a specific string in the reply
--- 67,71 ----
return val;
}
!
int match(String s) {
// find a specific string in the reply
***************
*** 86,94 ****
return rep.indexOf(s);
}
!
int skipWhiteSpace(int index) {
// start at index, passing any whitespace & control characters at the start of the buffer
! while (index < getNumDataElements()-1 &&
! ((char)getElement(index) <= ' '))
index++;
return index;
--- 73,81 ----
return rep.indexOf(s);
}
!
int skipWhiteSpace(int index) {
// start at index, passing any whitespace & control characters at the start of the buffer
! while (index < getNumDataElements()-1 &&
! ((char)getElement(index) <= ' '))
index++;
return index;
***************
*** 112,118 ****
return index;
}
!
static public int maxSize = 120;
!
// contents (private)
private int _nDataChars;
--- 99,105 ----
return index;
}
!
static public int maxSize = 120;
!
// contents (private)
private int _nDataChars;
Index: EasyDccTrafficController.java
===================================================================
RCS file: /cvsroot/jmri/jmri/jmrix/easydcc/EasyDccTrafficController.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** EasyDccTrafficController.java 23 Mar 2002 07:28:30 -0000 1.1
--- EasyDccTrafficController.java 30 Mar 2002 19:22:53 -0000 1.2
***************
*** 1,3 ****
! /**
* EasyDccTrafficController.java
*
--- 1,3 ----
! /**
* EasyDccTrafficController.java
*
***************
*** 14,22 ****
import java.util.Vector;
! /**
* Converts Stream-based I/O to/from EasyDcc messages. The "EasyDccInterface"
! * side sends/receives message objects. The connection to
* a EasyDccPortController is via a pair of *Streams, which then carry sequences
! * of characters for transmission. Note that this processing is
* handled in an independent thread.
*
--- 14,22 ----
import java.util.Vector;
! /**
* Converts Stream-based I/O to/from EasyDcc messages. The "EasyDccInterface"
! * side sends/receives message objects. The connection to
* a EasyDccPortController is via a pair of *Streams, which then carry sequences
! * of characters for transmission. Note that this processing is
* handled in an independent thread.
*
***************
*** 29,42 ****
self=this;
}
!
// The methods to implement the EasyDccInterface
protected Vector cmdListeners = new Vector();
!
! public boolean status() { return (ostream != null & istream != null);
}
! public synchronized void addEasyDccListener(EasyDccListener l) {
// add only if not already registered
if (l == null) throw new java.lang.NullPointerException();
--- 29,42 ----
self=this;
}
!
// The methods to implement the EasyDccInterface
protected Vector cmdListeners = new Vector();
!
! public boolean status() { return (ostream != null & istream != null);
}
! public synchronized void addEasyDccListener(EasyDccListener l) {
// add only if not already registered
if (l == null) throw new java.lang.NullPointerException();
***************
*** 81,87 ****
EasyDccListener lastSender = null;
!
protected void notifyReply(EasyDccReply r) {
!
// make a copy of the listener vector to synchronized (not needed for transmit?)
Vector v;
--- 81,87 ----
EasyDccListener lastSender = null;
!
protected void notifyReply(EasyDccReply r) {
!
// make a copy of the listener vector to synchronized (not needed for transmit?)
Vector v;
***************
*** 109,113 ****
if (lastSender != null) lastSender.reply(r);
}
!
/**
--- 109,113 ----
if (lastSender != null) lastSender.reply(r);
}
!
/**
***************
*** 118,129 ****
// remember who sent this
lastSender = reply;
!
// notify all _other_ listeners
notifyMessage(m, reply);
!
// stream to port in single write, as that's needed by serial
int len = m.getNumDataElements();
! int cr = 0;
! if (! m.isBinary()) cr = 1; // space for return
byte msg[] = new byte[len+cr];
--- 118,128 ----
// remember who sent this
lastSender = reply;
!
// notify all _other_ listeners
notifyMessage(m, reply);
!
// stream to port in single write, as that's needed by serial
int len = m.getNumDataElements();
! int cr = 1; // space for carriage return
byte msg[] = new byte[len+cr];
***************
*** 131,135 ****
for (int i=0; i< len; i++)
msg[i] = (byte) m.getElement(i);
! if (! m.isBinary()) msg[len] = 0x0d;
try {
if (ostream != null) {
--- 130,135 ----
for (int i=0; i< len; i++)
msg[i] = (byte) m.getElement(i);
! msg[len] = 0x0d;
!
try {
if (ostream != null) {
***************
*** 149,153 ****
// methods to connect/disconnect to a source of data in a LnPortController
private EasyDccPortController controller = null;
!
/**
* Make connection to existing PortController object.
--- 149,153 ----
// methods to connect/disconnect to a source of data in a LnPortController
private EasyDccPortController controller = null;
!
/**
* Make connection to existing PortController object.
***************
*** 160,164 ****
controller = p;
}
!
/**
* Break connection to existing EasyDccPortController object. Once broken,
--- 160,164 ----
controller = p;
}
!
/**
* Break connection to existing EasyDccPortController object. Once broken,
***************
*** 172,176 ****
controller = null;
}
!
/**
* static function returning the EasyDccTrafficController instance to use.
--- 172,176 ----
controller = null;
}
!
/**
* static function returning the EasyDccTrafficController instance to use.
***************
*** 178,182 ****
* if need be creating one.
*/
! static public EasyDccTrafficController instance() {
if (self == null) {
if (log.isDebugEnabled()) log.debug("creating a new EasyDccTrafficController object");
--- 178,182 ----
* if need be creating one.
*/
! static public EasyDccTrafficController instance() {
if (self == null) {
if (log.isDebugEnabled()) log.debug("creating a new EasyDccTrafficController object");
***************
*** 185,199 ****
return self;
}
!
static protected EasyDccTrafficController self = null;
!
// data members to hold the streams
DataInputStream istream = null;
OutputStream ostream = null;
!
/**
* Handle incoming characters. This is a permanent loop,
! * looking for input messages in character form on the
* stream connected to the PortController via <code>connectPort</code>.
* Terminates with the input stream breaking out of the try block.
--- 185,199 ----
return self;
}
!
static protected EasyDccTrafficController self = null;
!
// data members to hold the streams
DataInputStream istream = null;
OutputStream ostream = null;
!
/**
* Handle incoming characters. This is a permanent loop,
! * looking for input messages in character form on the
* stream connected to the PortController via <code>connectPort</code>.
* Terminates with the input stream breaking out of the try block.
***************
*** 213,217 ****
// we sit in this until the message is complete, relying on
// threading to let other stuff happen
!
// Create output message
EasyDccReply msg = new EasyDccReply();
--- 213,217 ----
// we sit in this until the message is complete, relying on
// threading to let other stuff happen
!
// Create output message
EasyDccReply msg = new EasyDccReply();
***************
*** 221,230 ****
byte char1 = istream.readByte();
msg.setElement(i, char1);
! if (endCOMMAND(msg)) break;
}
!
// message is complete, dispatch it !!
if (log.isDebugEnabled()) log.debug("dispatch reply of length "+i);
! {
final EasyDccReply thisMsg = msg;
final EasyDccTrafficController thisTC = this;
--- 221,230 ----
byte char1 = istream.readByte();
msg.setElement(i, char1);
! if (endReply(msg)) break;
}
!
// message is complete, dispatch it !!
if (log.isDebugEnabled()) log.debug("dispatch reply of length "+i);
! {
final EasyDccReply thisMsg = msg;
final EasyDccTrafficController thisTC = this;
***************
*** 233,237 ****
EasyDccReply msgForLater = thisMsg;
EasyDccTrafficController myTC = thisTC;
! public void run() {
log.debug("Delayed notify starts");
myTC.notifyReply(msgForLater);
--- 233,237 ----
EasyDccReply msgForLater = thisMsg;
EasyDccTrafficController myTC = thisTC;
! public void run() {
log.debug("Delayed notify starts");
myTC.notifyReply(msgForLater);
***************
*** 241,259 ****
}
}
!
! boolean endCOMMAND(EasyDccReply msg) {
! // detect that the reply buffer ends with "COMMAND: " (note ending space)
! int num = msg.getNumDataElements();
! if ( num >= 9) {
! // ptr is offset of last element in EasyDccReply
! int ptr = num-1;
! if (msg.getElement(ptr-1) != ':') return false;
! if (msg.getElement(ptr) != ' ') return false;
! if (msg.getElement(ptr-2) != 'D') return false;
! return true;
! }
! else return false;
}
!
static org.apache.log4j.Category log = org.apache.log4j.Category.getInstance(EasyDccTrafficController.class.getName());
}
--- 241,252 ----
}
}
!
! boolean endReply(EasyDccReply msg) {
! // detect that the reply buffer ends with "\n"
! int index = msg.getNumDataElements()-1;
! if (msg.getElement(index) != 0x0d) return false;
! else return true;
}
!
static org.apache.log4j.Category log = org.apache.log4j.Category.getInstance(EasyDccTrafficController.class.getName());
}
Index: EasyDccTurnoutManager.java
===================================================================
RCS file: /cvsroot/jmri/jmri/jmrix/easydcc/EasyDccTurnoutManager.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -r1.2 -r1.3
*** EasyDccTurnoutManager.java 28 Mar 2002 02:23:31 -0000 1.2
--- EasyDccTurnoutManager.java 30 Mar 2002 19:22:53 -0000 1.3
***************
*** 1,3 ****
! /**
* EasyDccTurnoutManager.java
*
--- 1,3 ----
! /**
* EasyDccTurnoutManager.java
*
***************
*** 6,10 ****
* @version $Id$
*/
!
// System names are "LTnnn", where nnn is the turnout number without padding.
--- 6,10 ----
* @version $Id$
*/
!
// System names are "LTnnn", where nnn is the turnout number without padding.
***************
*** 17,21 ****
// ABC implementations
!
// to free resources when no longer used
public void dispose() throws JmriException {
--- 17,21 ----
// ABC implementations
!
// to free resources when no longer used
public void dispose() throws JmriException {
***************
*** 24,37 ****
// EasyDcc-specific methods
!
public void putBySystemName(EasyDccTurnout t) {
String system = "ET"+t.getNumber();
_tsys.put(system, t);
}
!
public Turnout newTurnout(String systemName, String userName) {
// if system name is null, supply one from the number in userName
if (systemName == null) systemName = "ET"+userName;
!
// return existing if there is one
Turnout t;
--- 24,37 ----
// EasyDcc-specific methods
!
public void putBySystemName(EasyDccTurnout t) {
String system = "ET"+t.getNumber();
_tsys.put(system, t);
}
!
public Turnout newTurnout(String systemName, String userName) {
// if system name is null, supply one from the number in userName
if (systemName == null) systemName = "ET"+userName;
!
// return existing if there is one
Turnout t;
***************
*** 40,44 ****
// get number from name
! if (!systemName.startsWith("NT")) {
log.error("Invalid system name for EasyDcc turnout: "+systemName);
return null;
--- 40,44 ----
// get number from name
! if (!systemName.startsWith("ET")) {
log.error("Invalid system name for EasyDcc turnout: "+systemName);
return null;
***************
*** 47,55 ****
t = new EasyDccTurnout(addr);
t.setUserName(userName);
!
_tsys.put(systemName, t);
if (userName!=null) _tuser.put(userName, t);
t.addPropertyChangeListener(this);
!
return t;
}
--- 47,55 ----
t = new EasyDccTurnout(addr);
t.setUserName(userName);
!
_tsys.put(systemName, t);
if (userName!=null) _tuser.put(userName, t);
t.addPropertyChangeListener(this);
!
return t;
}
***************
*** 57,61 ****
public EasyDccTurnoutManager() {
}
!
static org.apache.log4j.Category log = org.apache.log4j.Category.getInstance(EasyDccTurnoutManager.class.getName());
--- 57,61 ----
public EasyDccTurnoutManager() {
}
!
static org.apache.log4j.Category log = org.apache.log4j.Category.getInstance(EasyDccTurnoutManager.class.getName());
|