if we fail to open SerialInterface twice then don't keep trying

This commit is contained in:
Stephen Birarda 2013-05-06 13:08:45 -07:00
parent 9e5f446ba2
commit f3a9dcf777
2 changed files with 28 additions and 17 deletions

View file

@ -34,6 +34,11 @@ const int GRAVITY_SAMPLES = 200; // Use the first samples to
const bool USING_INVENSENSE_MPU9150 = 1;
SerialInterface::SerialInterface() :
active(false),
_failedOpenAttempts(0) {
}
void SerialInterface::pair() {
#ifdef __APPLE__
@ -43,6 +48,9 @@ void SerialInterface::pair() {
int matchStatus;
regex_t regex;
if (_failedOpenAttempts < 2) {
// if we've already failed to open the detected interface twice then don't try again
// for now this only works on OS X, where the usb serial shows up as /dev/tty.usb*
if((devDir = opendir("/dev"))) {
while((entry = readdir(devDir))) {
@ -60,8 +68,9 @@ void SerialInterface::pair() {
}
closedir(devDir);
}
#endif
}
#endif
}
// connect to the serial port
@ -73,6 +82,7 @@ int SerialInterface::initializePort(char* portname, int baud) {
if (serialFd == -1) {
printLog("Failed.\n");
_failedOpenAttempts++;
return -1; // Failed to open port
}
struct termios options;

View file

@ -36,7 +36,7 @@ extern const bool USING_INVENSENSE_MPU9150;
class SerialInterface {
public:
SerialInterface() { active = false; };
SerialInterface();
void pair();
void readData();
@ -68,6 +68,7 @@ private:
int _lastYaw;
int _lastPitch;
int _lastRoll;
int _failedOpenAttempts;
};
#endif