1
0
mirror of https://github.com/wjwwood/serial.git synced 2026-01-22 11:44:53 +08:00

Sorted out the stdint stuff by including a header from the v8 project.

This commit is contained in:
William Woodall 2012-06-07 17:49:05 -05:00
parent ead96705dd
commit 565ba66271
4 changed files with 104 additions and 45 deletions

View File

@ -43,7 +43,7 @@
#include <sstream> #include <sstream>
#include <exception> #include <exception>
#include <stdexcept> #include <stdexcept>
#include <stdint.h> #include <serial/v8stdint.h>
#define THROW(exceptionClass, message) throw exceptionClass(__FILE__, \ #define THROW(exceptionClass, message) throw exceptionClass(__FILE__, \
__LINE__, (message) ) __LINE__, (message) )
@ -89,47 +89,48 @@ typedef enum {
/*! /*!
* Structure for setting the timeout of the serial port, times are * Structure for setting the timeout of the serial port, times are
* in milliseconds. * in milliseconds.
*
* In order to disable the interbyte timeout, set it to Timeout::max().
*/ */
struct Timeout { struct Timeout {
/*! static uint32_t max() {return std::numeric_limits<uint32_t>::max();}
* Convenience function to generate Timeout structs using a /*!
* single absolute 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. * \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. *
*/ * \return Timeout struct that represents this simple timeout provided.
static Timeout simpleTimeout(long timeout) { */
return Timeout(0, timeout, 0, timeout, 0); static Timeout simpleTimeout(uint32_t timeout) {
} return Timeout(max(), timeout, 0, timeout, 0);
}
/*! Number of milliseconds between bytes received to timeout on. */ /*! Number of milliseconds between bytes received to timeout on. */
uint32_t inter_byte_timeout; uint32_t inter_byte_timeout;
/*! A constant number of milliseconds to wait after calling read. */ /*! A constant number of milliseconds to wait after calling read. */
uint32_t read_timeout_constant; uint32_t read_timeout_constant;
/*! A multiplier against the number of requested bytes to wait after /*! A multiplier against the number of requested bytes to wait after
* calling read. * calling read.
*/ */
uint32_t read_timeout_multiplier; uint32_t read_timeout_multiplier;
/*! A constant number of milliseconds to wait after calling write. */ /*! A constant number of milliseconds to wait after calling write. */
uint32_t write_timeout_constant; uint32_t write_timeout_constant;
/*! A multiplier against the number of requested bytes to wait after /*! A multiplier against the number of requested bytes to wait after
* calling write. * calling write.
*/ */
uint32_t write_timeout_multiplier; uint32_t write_timeout_multiplier;
typedef std::numeric_limits<uint32_t>::max() max; 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,
Timeout (unsigned int32_t inter_byte_timeout_=0, unsigned int32_t read_timeout_constant_=0, uint32_t write_timeout_multiplier_=0)
uint32_t read_timeout_multiplier_=0, uint32_t write_timeout_constant_=0, : inter_byte_timeout(inter_byte_timeout_),
uint32_t write_timeout_multiplier_=0) read_timeout_constant(read_timeout_constant_),
: inter_byte_timeout(inter_byte_timeout_), read_timeout_multiplier(read_timeout_multiplier_),
read_timeout_constant(read_timeout_constant_), write_timeout_constant(write_timeout_constant_),
read_timeout_multiplier(read_timeout_multiplier_), write_timeout_multiplier(write_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' * which would be something like 'COM1' on Windows and '/dev/ttyS0'
* on Linux. * 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 * \param timeout A serial::Timeout struct that defines the timeout
* conditions for the serial port. \see serial::Timeout * conditions for the serial port. \see serial::Timeout
@ -402,13 +403,13 @@ public:
/*! Sets the timeout for reads and writes. */ /*! Sets the timeout for reads and writes. */
void void
setTimeout (int32_t inter_byte_timeout, int32_t read_timeout_constant, setTimeout (uint32_t inter_byte_timeout, uint32_t read_timeout_constant,
int32_t read_timeout_multiplier, int32_t write_timeout_constant, uint32_t read_timeout_multiplier, uint32_t write_timeout_constant,
int32_t write_timeout_multiplier) uint32_t write_timeout_multiplier)
{ {
Timeout timeout(inter_byte_timeout, read_timeout_constant, Timeout timeout(inter_byte_timeout, read_timeout_constant,
read_timeout_multiplier, write_timeout_constant, read_timeout_multiplier, write_timeout_constant,
write_timeout_multiplier); write_timeout_multiplier);
return setTimeout(timeout); return setTimeout(timeout);
} }

57
include/serial/v8stdint.h Normal file
View File

@ -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 <stddef.h>
#include <stdio.h>
#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 <stdint.h>
#endif
#endif // V8STDINT_H_

View File

@ -122,6 +122,7 @@ macro(build_serial)
) )
INSTALL(FILES include/serial/serial.h INSTALL(FILES include/serial/serial.h
include/serial/v8stdint.h
DESTINATION include/serial) DESTINATION include/serial)
IF(NOT CMAKE_FIND_INSTALL_PATH) IF(NOT CMAKE_FIND_INSTALL_PATH)

View File

@ -13,7 +13,7 @@
[ [
"-I/usr/include", "-I/usr/include",
"-I/usr/local/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" "-I${folder:${project_path:serial.sublime-project}}/include"
] ]
} }