From 565ba66271be97890db45869ebf7b65d22d9607a Mon Sep 17 00:00:00 2001 From: William Woodall Date: Thu, 7 Jun 2012 17:49:05 -0500 Subject: [PATCH] Sorted out the stdint stuff by including a header from the v8 project. --- include/serial/serial.h | 89 ++++++++++++++++++++------------------- include/serial/v8stdint.h | 57 +++++++++++++++++++++++++ serial.cmake | 1 + serial.sublime-project | 2 +- 4 files changed, 104 insertions(+), 45 deletions(-) create mode 100644 include/serial/v8stdint.h diff --git a/include/serial/serial.h b/include/serial/serial.h index 5145e0a..db57ba6 100644 --- a/include/serial/serial.h +++ b/include/serial/serial.h @@ -43,7 +43,7 @@ #include #include #include -#include +#include #define THROW(exceptionClass, message) throw exceptionClass(__FILE__, \ __LINE__, (message) ) @@ -89,47 +89,48 @@ typedef enum { /*! * Structure for setting the timeout of the serial port, times are * in milliseconds. + * + * In order to disable the interbyte timeout, set it to Timeout::max(). */ struct Timeout { - /*! - * Convenience function to generate Timeout structs using a - * single absolute timeout. - * - * \param timeout A long that defines the time in milliseconds until a - * timeout occurs after a call to read or write is made. - * - * \return Timeout struct that represents this simple timeout provided. - */ - static Timeout simpleTimeout(long timeout) { - return Timeout(0, timeout, 0, timeout, 0); - } + static uint32_t max() {return std::numeric_limits::max();} + /*! + * Convenience function to generate Timeout structs using a + * single absolute timeout. + * + * \param timeout A long that defines the time in milliseconds until a + * timeout occurs after a call to read or write is made. + * + * \return Timeout struct that represents this simple timeout provided. + */ + static Timeout simpleTimeout(uint32_t timeout) { + return Timeout(max(), timeout, 0, timeout, 0); + } - /*! Number of milliseconds between bytes received to timeout on. */ - uint32_t inter_byte_timeout; - /*! A constant number of milliseconds to wait after calling read. */ - uint32_t read_timeout_constant; - /*! A multiplier against the number of requested bytes to wait after - * calling read. - */ - uint32_t read_timeout_multiplier; - /*! A constant number of milliseconds to wait after calling write. */ - uint32_t write_timeout_constant; - /*! A multiplier against the number of requested bytes to wait after - * calling write. - */ - uint32_t write_timeout_multiplier; + /*! Number of milliseconds between bytes received to timeout on. */ + uint32_t inter_byte_timeout; + /*! A constant number of milliseconds to wait after calling read. */ + uint32_t read_timeout_constant; + /*! A multiplier against the number of requested bytes to wait after + * calling read. + */ + uint32_t read_timeout_multiplier; + /*! A constant number of milliseconds to wait after calling write. */ + uint32_t write_timeout_constant; + /*! A multiplier against the number of requested bytes to wait after + * calling write. + */ + uint32_t write_timeout_multiplier; - typedef std::numeric_limits::max() max; - - Timeout (unsigned int32_t inter_byte_timeout_=0, unsigned int32_t read_timeout_constant_=0, - uint32_t read_timeout_multiplier_=0, uint32_t write_timeout_constant_=0, - uint32_t write_timeout_multiplier_=0) - : inter_byte_timeout(inter_byte_timeout_), - read_timeout_constant(read_timeout_constant_), - read_timeout_multiplier(read_timeout_multiplier_), - write_timeout_constant(write_timeout_constant_), - write_timeout_multiplier(write_timeout_multiplier_) - {} + Timeout (uint32_t inter_byte_timeout_=0, uint32_t read_timeout_constant_=0, + uint32_t read_timeout_multiplier_=0, uint32_t write_timeout_constant_=0, + uint32_t write_timeout_multiplier_=0) + : inter_byte_timeout(inter_byte_timeout_), + read_timeout_constant(read_timeout_constant_), + read_timeout_multiplier(read_timeout_multiplier_), + write_timeout_constant(write_timeout_constant_), + write_timeout_multiplier(write_timeout_multiplier_) + {} }; /*! @@ -145,7 +146,7 @@ public: * which would be something like 'COM1' on Windows and '/dev/ttyS0' * on Linux. * - * \param baudrate An integer that represents the baudrate + * \param baudrate An unsigned 32-bit integer that represents the baudrate * * \param timeout A serial::Timeout struct that defines the timeout * conditions for the serial port. \see serial::Timeout @@ -402,13 +403,13 @@ public: /*! Sets the timeout for reads and writes. */ void - setTimeout (int32_t inter_byte_timeout, int32_t read_timeout_constant, - int32_t read_timeout_multiplier, int32_t write_timeout_constant, - int32_t write_timeout_multiplier) + setTimeout (uint32_t inter_byte_timeout, uint32_t read_timeout_constant, + uint32_t read_timeout_multiplier, uint32_t write_timeout_constant, + uint32_t write_timeout_multiplier) { Timeout timeout(inter_byte_timeout, read_timeout_constant, - read_timeout_multiplier, write_timeout_constant, - write_timeout_multiplier); + read_timeout_multiplier, write_timeout_constant, + write_timeout_multiplier); return setTimeout(timeout); } diff --git a/include/serial/v8stdint.h b/include/serial/v8stdint.h new file mode 100644 index 0000000..ca0db6b --- /dev/null +++ b/include/serial/v8stdint.h @@ -0,0 +1,57 @@ +// This header is from the v8 google project: +// http://code.google.com/p/v8/source/browse/trunk/include/v8stdint.h + +// Copyright 2012 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Load definitions of standard types. + +#ifndef V8STDINT_H_ +#define V8STDINT_H_ + +#include +#include + +#if defined(_WIN32) && !defined(__MINGW32__) + +typedef signed char int8_t; +typedef unsigned char uint8_t; +typedef short int16_t; // NOLINT +typedef unsigned short uint16_t; // NOLINT +typedef int int32_t; +typedef unsigned int uint32_t; +typedef __int64 int64_t; +typedef unsigned __int64 uint64_t; +// intptr_t and friends are defined in crtdefs.h through stdio.h. + +#else + +#include + +#endif + +#endif // V8STDINT_H_ diff --git a/serial.cmake b/serial.cmake index ed63438..1f422cd 100644 --- a/serial.cmake +++ b/serial.cmake @@ -122,6 +122,7 @@ macro(build_serial) ) INSTALL(FILES include/serial/serial.h + include/serial/v8stdint.h DESTINATION include/serial) IF(NOT CMAKE_FIND_INSTALL_PATH) diff --git a/serial.sublime-project b/serial.sublime-project index c6270a1..65e92d9 100644 --- a/serial.sublime-project +++ b/serial.sublime-project @@ -13,7 +13,7 @@ [ "-I/usr/include", "-I/usr/local/include", - "-I/usr/lib/clang/3.1/include/", + // "-I/usr/lib/clang/3.1/include/", "-I${folder:${project_path:serial.sublime-project}}/include" ] }