[Tinyos-2-commits]
CVS: tinyos-2.x/tools/platforms/msp430/cppbsl/src
Serial.h, 1.1, 1.2 Serial.cc, 1.1, 1.2
akoepke
andreaskoepke at users.sourceforge.net
Thu Nov 1 12:20:39 PDT 2007
Update of /cvsroot/tinyos/tinyos-2.x/tools/platforms/msp430/cppbsl/src
In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv19460/src
Modified Files:
Serial.h Serial.cc
Log Message:
sleep better -- more in line with FTDI timeouts etc.
adjust compromise between speed and reliability
Index: Serial.h
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tools/platforms/msp430/cppbsl/src/Serial.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** Serial.h 31 Oct 2007 18:54:56 -0000 1.1
--- Serial.h 1 Nov 2007 19:20:37 -0000 1.2
***************
*** 104,110 ****
std::cerr << "ERROR: BaseSerial::setDTR could not set DTR pin" << std::endl;
}
- else {
- serial_delay(switchdelay);
- }
return r;
}
--- 104,107 ----
***************
*** 116,122 ****
std::cerr << "ERROR: BaseSerial::clrDTR could not clr DTR pin" << std::endl;
}
- else {
- serial_delay(switchdelay);
- }
return r;
}
--- 113,116 ----
***************
*** 128,134 ****
std::cerr << "ERROR: BaseSerial::setRTS could not set RTS pin" << std::endl;
}
- else {
- serial_delay(switchdelay);
- }
return r;
}
--- 122,125 ----
***************
*** 140,146 ****
std::cerr << "ERROR: BaseSerial::clrRTS could not clr RTS pin" << std::endl;
}
- else {
- serial_delay(switchdelay);
- }
return r;
}
--- 131,134 ----
***************
*** 182,190 ****
int readFD(int *err, char *buffer, int count, int maxCount);
virtual int resetPins(int *err);
public:
BaseSerial(const termios& term, int rFD, int wFD, bool T=false, bool R=false) :
! switchdelay(10),
oldtermios(term),
serialReadFD(rFD), serialWriteFD(wFD),
--- 170,179 ----
int readFD(int *err, char *buffer, int count, int maxCount);
+ virtual int setPins(int *err);
virtual int resetPins(int *err);
public:
BaseSerial(const termios& term, int rFD, int wFD, bool T=false, bool R=false) :
! switchdelay(30000),
oldtermios(term),
serialReadFD(rFD), serialWriteFD(wFD),
***************
*** 192,197 ****
int err;
FD_ZERO(&rfds);
! setRST(&err);
! setTEST(&err);
}
--- 181,185 ----
int err;
FD_ZERO(&rfds);
! setPins(&err);
}
***************
*** 236,239 ****
--- 224,228 ----
protected:
virtual int resetPins(int *err);
+ virtual int setPins(int *err);
int telosSetSCL(int *err) {
Index: Serial.cc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tools/platforms/msp430/cppbsl/src/Serial.cc,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** Serial.cc 31 Oct 2007 18:54:56 -0000 1.1
--- Serial.cc 1 Nov 2007 19:20:37 -0000 1.2
***************
*** 46,50 ****
*readFD = -1;
*writeFD = -1;
! for(int i = 0; i < 3; i++) {
*readFD = open(dev, O_RDONLY | O_NOCTTY | O_NONBLOCK);
*err = errno;
--- 46,50 ----
*readFD = -1;
*writeFD = -1;
! for(int i = 0; i < 2; i++) {
*readFD = open(dev, O_RDONLY | O_NOCTTY | O_NONBLOCK);
*err = errno;
***************
*** 147,155 ****
};
int BaseSerial::resetPins(int *err) {
! int r = 0;
! r = setRST(err);
! r = clrTEST(err);
! return r;
}
--- 147,158 ----
};
+ int BaseSerial::setPins(int *err) {
+ setRST(err);
+ return setTEST(err);
+ }
+
int BaseSerial::resetPins(int *err) {
! setRST(err);
! return clrTEST(err);
}
***************
*** 186,196 ****
r = setTEST(err);
if(r == -1) return -1;
! serial_delay(2500);
r = clrRST(err);
if(r == -1) return -1;
! serial_delay(10);
r = setRST(err);
if(r == -1) return -1;
! serial_delay(2500);
cout << "Reset device ..." << endl;
return clearBuffers(err);
--- 189,199 ----
r = setTEST(err);
if(r == -1) return -1;
! serial_delay(switchdelay);
r = clrRST(err);
if(r == -1) return -1;
! serial_delay(switchdelay);
r = setRST(err);
if(r == -1) return -1;
! serial_delay(switchdelay);
cout << "Reset device ..." << endl;
return clearBuffers(err);
***************
*** 203,227 ****
r = setTEST(err);
if(r == -1) return -1;
! serial_delay(2500);
r = clrRST(err);
if(r == -1) return -1;
r = setTEST(err);
if(r == -1) return -1;
- serial_delay(10);
r = clrTEST(err);
if(r == -1) return -1;
- serial_delay(10);
r = setTEST(err);
if(r == -1) return -1;
- serial_delay(10);
r = clrTEST(err);
if(r == -1) return -1;
- serial_delay(10);
r = setRST(err);
if(r == -1) return -1;
- serial_delay(10);
r = setTEST(err);
if(r == -1) return -1;
! serial_delay(2500);
cout << "Invoking BSL..." << endl;
return clearBuffers(err);
--- 206,225 ----
r = setTEST(err);
if(r == -1) return -1;
! serial_delay(switchdelay);
r = clrRST(err);
if(r == -1) return -1;
r = setTEST(err);
if(r == -1) return -1;
r = clrTEST(err);
if(r == -1) return -1;
r = setTEST(err);
if(r == -1) return -1;
r = clrTEST(err);
if(r == -1) return -1;
r = setRST(err);
if(r == -1) return -1;
r = setTEST(err);
if(r == -1) return -1;
! serial_delay(switchdelay);
cout << "Invoking BSL..." << endl;
return clearBuffers(err);
***************
*** 244,249 ****
}
FD_CLR(serialReadFD, &rfds);
! if(retries++ >= 3) {
! cerr << "FATAL: BaseSerial::readFD no data available after 3s" << endl;
return -1;
}
--- 242,247 ----
}
FD_CLR(serialReadFD, &rfds);
! if(retries++ >= 2) {
! cerr << "FATAL: BaseSerial::readFD no data available after 1s" << endl;
return -1;
}
***************
*** 271,275 ****
return -1;
}
! for(unsigned i = 0; i < 3; i++) {
r = write(serialWriteFD,&sync, 1);
if(r == -1) {
--- 269,273 ----
return -1;
}
! for(unsigned i = 0; i < 2; i++) {
r = write(serialWriteFD,&sync, 1);
if(r == -1) {
***************
*** 369,373 ****
r = telosI2CWriteCmd(err, 0, 0);
if(r == -1) return r;
! serial_delay(10000);
r = telosI2CWriteCmd(err, 0, 3);
if(r == -1) return r;
--- 367,371 ----
r = telosI2CWriteCmd(err, 0, 0);
if(r == -1) return r;
! serial_delay(switchdelay);
r = telosI2CWriteCmd(err, 0, 3);
if(r == -1) return r;
***************
*** 378,382 ****
r = telosI2CWriteCmd(err, 0, 0);
if(r == -1) return r;
! serial_delay(2500);
cout << "Reset device ..." << endl;
return clearBuffers(err);
--- 376,380 ----
r = telosI2CWriteCmd(err, 0, 0);
if(r == -1) return r;
! serial_delay(switchdelay);
cout << "Reset device ..." << endl;
return clearBuffers(err);
***************
*** 387,391 ****
r = telosI2CWriteCmd(err, 0, 0);
if(r == -1) return r;
! serial_delay(10000);
r = telosI2CWriteCmd(err, 0, 1);
if(r == -1) return r;
--- 385,389 ----
r = telosI2CWriteCmd(err, 0, 0);
if(r == -1) return r;
! serial_delay(switchdelay);
r = telosI2CWriteCmd(err, 0, 1);
if(r == -1) return r;
***************
*** 402,406 ****
r = telosI2CWriteCmd(err, 0, 0);
if(r == -1) return r;
! serial_delay(2500);
cout << "Invoking BSL..." << endl;
return clearBuffers(err);
--- 400,404 ----
r = telosI2CWriteCmd(err, 0, 0);
if(r == -1) return r;
! serial_delay(switchdelay);
cout << "Invoking BSL..." << endl;
return clearBuffers(err);
***************
*** 472,482 ****
r = telosI2CWriteByte(err, cmdbyte );
if(r == -1) return r;
! return telosI2CStop(err);
}
int TelosBSerial::resetPins(int *err) {
! int r = 0;
! r = setRTS(err);
! r = clrDTR(err);
! return r;
}
--- 470,483 ----
r = telosI2CWriteByte(err, cmdbyte );
if(r == -1) return r;
! r = telosI2CStop(err);
! if(r == -1) return r;
! return clearBuffers(err);
! }
!
! int TelosBSerial::setPins(int *err) {
! return 0;
}
int TelosBSerial::resetPins(int *err) {
! return 0;
}
More information about the Tinyos-2-commits
mailing list