From: <bo...@us...> - 2008-10-21 07:21:25
|
Revision: 333 http://gearbox.svn.sourceforge.net/gearbox/?rev=333&view=rev Author: borax00 Date: 2008-10-21 07:21:16 +0000 (Tue, 21 Oct 2008) Log Message: ----------- dont throw an exception during parseResponse(), or the buffer wont get eaten up. Modified Paths: -------------- gearbox/trunk/src/gbxsickacfr/driver.cpp gearbox/trunk/src/gbxsickacfr/messages.cpp Modified: gearbox/trunk/src/gbxsickacfr/driver.cpp =================================================================== --- gearbox/trunk/src/gbxsickacfr/driver.cpp 2008-10-21 07:03:25 UTC (rev 332) +++ gearbox/trunk/src/gbxsickacfr/driver.cpp 2008-10-21 07:21:16 UTC (rev 333) @@ -309,7 +309,7 @@ assert( angleIncrementInHundredthDegrees == ANGULAR_RESOLUTION_1_0_DEG || angleIncrementInHundredthDegrees == ANGULAR_RESOLUTION_0_5_DEG || angleIncrementInHundredthDegrees == ANGULAR_RESOLUTION_0_25_DEG ); - return angleIncrementInHundredthDegrees; + return (uint16_t)angleIncrementInHundredthDegrees; } bool Modified: gearbox/trunk/src/gbxsickacfr/messages.cpp =================================================================== --- gearbox/trunk/src/gbxsickacfr/messages.cpp 2008-10-21 07:03:25 UTC (rev 332) +++ gearbox/trunk/src/gbxsickacfr/messages.cpp 2008-10-21 07:21:16 UTC (rev 333) @@ -120,7 +120,7 @@ uint16_t getWord( const uChar *buf, int &pos ) { - uint16_t word = buf[pos] | (buf[pos+1]<<8); + uint16_t word = (uint16_t)( buf[pos] | (buf[pos+1]<<8) ); pos += sizeof(uint16_t); return word; } @@ -187,7 +187,7 @@ bool LmsResponse::isError() const { - uChar generalStatus = status & STATUS_GENERAL_MASK ; + uChar generalStatus = (uChar)( status & STATUS_GENERAL_MASK ); if ( generalStatusIsError( generalStatus ) ) { return true; @@ -212,7 +212,7 @@ bool LmsResponse::isWarn() const { - uChar generalStatus = status & STATUS_GENERAL_MASK ; + uChar generalStatus = (uChar)( status & STATUS_GENERAL_MASK ); if ( generalStatusIsWarn( generalStatus ) ) { return true; @@ -547,8 +547,8 @@ { LmsMeasurementData *d = new LmsMeasurementData; - uChar measurementMode = buf[1] >> 6; - float rangeConversion; + uChar measurementMode = (uChar)( buf[1] >> 6 ); + double rangeConversion; if ( measurementMode == MEASURED_VALUE_UNIT_MM ) { rangeConversion = 1.0/1000.0; @@ -913,8 +913,16 @@ response = new LmsResponse; response->type = buffer[msgStart+4]; response->status = buffer[msgStart+telegramLength-3]; - parseResponse( response->type, &(buffer[msgStart+5]), commandAndDataLength-2, *response ); - return true; + + try { + parseResponse( response->type, &(buffer[msgStart+5]), commandAndDataLength-2, *response ); + return true; + } + catch ( const std::exception &e ) + { + cout << __func__ << "(): Error parsing response: " << e.what() << endl; + return false; + } } void This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bo...@us...> - 2009-02-13 07:58:33
|
Revision: 381 http://gearbox.svn.sourceforge.net/gearbox/?rev=381&view=rev Author: borax00 Date: 2009-02-13 07:58:24 +0000 (Fri, 13 Feb 2009) Log Message: ----------- warn on WARNING only, not INFO Modified Paths: -------------- gearbox/trunk/src/gbxsickacfr/gbxserialdeviceacfr/serialdevicehandler.cpp gearbox/trunk/src/gbxsickacfr/gbxserialdeviceacfr/serialdevicehandler.h gearbox/trunk/src/gbxsickacfr/sickdefines.cpp Modified: gearbox/trunk/src/gbxsickacfr/gbxserialdeviceacfr/serialdevicehandler.cpp =================================================================== --- gearbox/trunk/src/gbxsickacfr/gbxserialdeviceacfr/serialdevicehandler.cpp 2009-02-09 01:40:32 UTC (rev 380) +++ gearbox/trunk/src/gbxsickacfr/gbxserialdeviceacfr/serialdevicehandler.cpp 2009-02-13 07:58:24 UTC (rev 381) @@ -193,7 +193,7 @@ if ( SUPER_DEBUG ) { stringstream ssDebug; - ssDebug << "SerialDeviceHandler::processSerialBuffer: buffer is: " << toHexString(buffer_); + ssDebug << "SerialDeviceHandler::processSerialBuffer: buffer is: " << toAsciiString(buffer_); tracer_.debug( ssDebug.str() ); } @@ -259,6 +259,12 @@ { break; } + + // If we've parsed the entire thing we can stop. + if ( buffer_.size() == 0 ) + { + break; + } } return statusOK; } @@ -280,4 +286,15 @@ return ss.str(); } +std::string +toAsciiString( const char *buf, int bufLen ) +{ + stringstream ss; + ss << "[ "; + for ( int i=0; i < bufLen; i++ ) + ss <<buf[i]; + ss << " ]"; + return ss.str(); +} + } // namespace Modified: gearbox/trunk/src/gbxsickacfr/gbxserialdeviceacfr/serialdevicehandler.h =================================================================== --- gearbox/trunk/src/gbxsickacfr/gbxserialdeviceacfr/serialdevicehandler.h 2009-02-09 01:40:32 UTC (rev 380) +++ gearbox/trunk/src/gbxsickacfr/gbxserialdeviceacfr/serialdevicehandler.h 2009-02-13 07:58:24 UTC (rev 381) @@ -150,11 +150,13 @@ ////////////////////////////////////////////////////////////////////// std::string toHexString( const char *buf, int bufLen ); -// inline std::string toHexString( char *buf, int bufLen ) -// { return toHexString( (const unsigned char *)buf, bufLen ); } inline std::string toHexString( const std::vector<char> &buf ) {return toHexString( &(buf[0]), buf.size() );} +std::string toAsciiString( const char *buf, int bufLen ); +inline std::string toAsciiString( const std::vector<char> &buf ) +{return toAsciiString( &(buf[0]), buf.size() );} + } // namespace #endif Modified: gearbox/trunk/src/gbxsickacfr/sickdefines.cpp =================================================================== --- gearbox/trunk/src/gbxsickacfr/sickdefines.cpp 2009-02-09 01:40:32 UTC (rev 380) +++ gearbox/trunk/src/gbxsickacfr/sickdefines.cpp 2009-02-13 07:58:24 UTC (rev 381) @@ -261,8 +261,10 @@ bool generalStatusIsWarn( uChar generalStatus ) { - return ( generalStatus == STATUS_INFO || - generalStatus == STATUS_WARNING ); +// AlexB: don't warn on 'INFO', just warn on 'WARNING'. +// return ( generalStatus == STATUS_INFO || +// generalStatus == STATUS_WARNING ); + return ( generalStatus == STATUS_WARNING ); } bool generalStatusIsError( uChar generalStatus ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |