From 474cc1e8b93d2d95dcc34f7f20b2cac81da17b49 Mon Sep 17 00:00:00 2001 From: William Woodall Date: Sat, 9 Jun 2012 20:05:44 -0500 Subject: [PATCH] Updating v1.0 docs after merging forgotten Windows changes. --- docs/v1.0/annotated.html | 2 +- .../class_serial_1_1_scoped_read_lock.html | 2 +- .../class_serial_1_1_scoped_write_lock.html | 2 +- docs/v1.0/classes.html | 2 +- docs/v1.0/classserial_1_1_i_o_exception.html | 2 +- ...sserial_1_1_port_not_opened_exception.html | 2 +- docs/v1.0/classserial_1_1_serial.html | 2 +- .../classserial_1_1_serial_execption.html | 2 +- ..._1_1serial_1_1_serial_1_1_serial_impl.html | 30 +- docs/v1.0/files.html | 2 +- docs/v1.0/functions.html | 2 +- docs/v1.0/functions_func.html | 2 +- docs/v1.0/functions_vars.html | 2 +- docs/v1.0/globals.html | 2 +- docs/v1.0/globals_defs.html | 2 +- docs/v1.0/globals_func.html | 2 +- docs/v1.0/graph_legend.html | 2 +- docs/v1.0/index.html | 2 +- docs/v1.0/namespacemembers.html | 2 +- docs/v1.0/namespacemembers_enum.html | 2 +- docs/v1.0/namespacemembers_eval.html | 2 +- docs/v1.0/namespaces.html | 2 +- docs/v1.0/namespaceserial.html | 2 +- docs/v1.0/namespaceserial_1_1serial.html | 2 +- .../namespaceserial_1_1serial_1_1_serial.html | 2 +- docs/v1.0/serial_8cc.html | 7 +- docs/v1.0/serial_8cc__incl.map | 6 +- docs/v1.0/serial_8cc__incl.md5 | 2 +- docs/v1.0/serial_8cc__incl.png | Bin 27740 -> 27801 bytes docs/v1.0/serial_8dox.html | 2 +- docs/v1.0/serial_8h.html | 2 +- docs/v1.0/serial_8h_source.html | 533 +++++++++--------- docs/v1.0/serial__example_8cc.html | 8 +- docs/v1.0/structserial_1_1_timeout.html | 2 +- docs/v1.0/unix_8cc.html | 2 +- docs/v1.0/unix_8h.html | 2 +- docs/v1.0/unix_8h_source.html | 2 +- docs/v1.0/v8stdint_8h.html | 2 +- docs/v1.0/v8stdint_8h_source.html | 2 +- docs/v1.0/win_8cc.html | 2 +- docs/v1.0/win_8h.html | 2 +- docs/v1.0/win_8h_source.html | 2 +- 42 files changed, 329 insertions(+), 327 deletions(-) diff --git a/docs/v1.0/annotated.html b/docs/v1.0/annotated.html index ecf4d3b..732a744 100644 --- a/docs/v1.0/annotated.html +++ b/docs/v1.0/annotated.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/v1.0/class_serial_1_1_scoped_read_lock.html b/docs/v1.0/class_serial_1_1_scoped_read_lock.html index 9e123d6..d1fe683 100644 --- a/docs/v1.0/class_serial_1_1_scoped_read_lock.html +++ b/docs/v1.0/class_serial_1_1_scoped_read_lock.html @@ -157,7 +157,7 @@ Public Member Functions diff --git a/docs/v1.0/class_serial_1_1_scoped_write_lock.html b/docs/v1.0/class_serial_1_1_scoped_write_lock.html index c0e2f7b..e6c4228 100644 --- a/docs/v1.0/class_serial_1_1_scoped_write_lock.html +++ b/docs/v1.0/class_serial_1_1_scoped_write_lock.html @@ -157,7 +157,7 @@ Public Member Functions diff --git a/docs/v1.0/classes.html b/docs/v1.0/classes.html index 352b7ab..24f4a46 100644 --- a/docs/v1.0/classes.html +++ b/docs/v1.0/classes.html @@ -114,7 +114,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/v1.0/classserial_1_1_i_o_exception.html b/docs/v1.0/classserial_1_1_i_o_exception.html index 901e39e..96394b0 100644 --- a/docs/v1.0/classserial_1_1_i_o_exception.html +++ b/docs/v1.0/classserial_1_1_i_o_exception.html @@ -271,7 +271,7 @@ Public Member Functions diff --git a/docs/v1.0/classserial_1_1_port_not_opened_exception.html b/docs/v1.0/classserial_1_1_port_not_opened_exception.html index c3e4541..87d0e2d 100644 --- a/docs/v1.0/classserial_1_1_port_not_opened_exception.html +++ b/docs/v1.0/classserial_1_1_port_not_opened_exception.html @@ -180,7 +180,7 @@ Public Member Functions diff --git a/docs/v1.0/classserial_1_1_serial.html b/docs/v1.0/classserial_1_1_serial.html index 4dd5fc9..444c69d 100644 --- a/docs/v1.0/classserial_1_1_serial.html +++ b/docs/v1.0/classserial_1_1_serial.html @@ -1523,7 +1523,7 @@ Public Member Functions diff --git a/docs/v1.0/classserial_1_1_serial_execption.html b/docs/v1.0/classserial_1_1_serial_execption.html index 27e3aec..2a77ec9 100644 --- a/docs/v1.0/classserial_1_1_serial_execption.html +++ b/docs/v1.0/classserial_1_1_serial_execption.html @@ -180,7 +180,7 @@ Public Member Functions diff --git a/docs/v1.0/classserial_1_1serial_1_1_serial_1_1_serial_impl.html b/docs/v1.0/classserial_1_1serial_1_1_serial_1_1_serial_impl.html index e083610..f8db4a0 100644 --- a/docs/v1.0/classserial_1_1serial_1_1_serial_1_1_serial_impl.html +++ b/docs/v1.0/classserial_1_1serial_1_1_serial_1_1_serial_impl.html @@ -1168,17 +1168,17 @@ Protected Member Functions } // set up raw mode / no echo / binary - options.c_cflag |= (unsigned long) (CLOCAL | CREAD); - options.c_lflag &= (unsigned long) ~(ICANON | ECHO | ECHOE | ECHOK | ECHONL | + options.c_cflag |= (tcflag_t) (CLOCAL | CREAD); + options.c_lflag &= (tcflag_t) ~(ICANON | ECHO | ECHOE | ECHOK | ECHONL | ISIG | IEXTEN); //|ECHOPRT - options.c_oflag &= (unsigned long) ~(OPOST); - options.c_iflag &= (unsigned long) ~(INLCR | IGNCR | ICRNL | IGNBRK); + options.c_oflag &= (tcflag_t) ~(OPOST); + options.c_iflag &= (tcflag_t) ~(INLCR | IGNCR | ICRNL | IGNBRK); #ifdef IUCLC - options.c_iflag &= (unsigned long) ~IUCLC; + options.c_iflag &= (tcflag_t) ~IUCLC; #endif #ifdef PARMRK - options.c_iflag &= (unsigned long) ~PARMRK; + options.c_iflag &= (tcflag_t) ~PARMRK; #endif // setup baud rate @@ -1283,7 +1283,7 @@ Protected Member Functions struct serial_struct ser; ioctl (fd_, TIOCGSERIAL, &ser); // set custom divisor - ser.custom_divisor = ser.baud_base / baudrate_; + ser.custom_divisor = ser.baud_base / (int) baudrate_; // update flags ser.flags &= ~ASYNC_SPD_MASK; ser.flags |= ASYNC_SPD_CUST; @@ -1305,7 +1305,7 @@ Protected Member Functions } // setup char len - options.c_cflag &= (unsigned long) ~CSIZE; + options.c_cflag &= (tcflag_t) ~CSIZE; if (bytesize_ == eightbits) options.c_cflag |= CS8; else if (bytesize_ == sevenbits) @@ -1318,7 +1318,7 @@ Protected Member Functions throw invalid_argument ("invalid char len"); // setup stopbits if (stopbits_ == stopbits_one) - options.c_cflag &= (unsigned long) ~(CSTOPB); + options.c_cflag &= (tcflag_t) ~(CSTOPB); else if (stopbits_ == stopbits_one_point_five) // ONE POINT FIVE same as TWO.. there is no POSIX support for 1.5 options.c_cflag |= (CSTOPB); @@ -1327,11 +1327,11 @@ Protected Member Functions else throw invalid_argument ("invalid stop bit"); // setup parity - options.c_iflag &= (unsigned long) ~(INPCK | ISTRIP); + options.c_iflag &= (tcflag_t) ~(INPCK | ISTRIP); if (parity_ == parity_none) { - options.c_cflag &= (unsigned long) ~(PARENB | PARODD); + options.c_cflag &= (tcflag_t) ~(PARENB | PARODD); } else if (parity_ == parity_even) { - options.c_cflag &= (unsigned long) ~(PARODD); + options.c_cflag &= (tcflag_t) ~(PARODD); options.c_cflag |= (PARENB); } else if (parity_ == parity_odd) { options.c_cflag |= (PARENB | PARODD); @@ -1344,12 +1344,12 @@ Protected Member Functions if (xonxoff_) options.c_iflag |= (IXON | IXOFF); //|IXANY) else - options.c_iflag &= (unsigned long) ~(IXON | IXOFF | IXANY); + options.c_iflag &= (tcflag_t) ~(IXON | IXOFF | IXANY); #else if (xonxoff_) options.c_iflag |= (IXON | IXOFF); else - options.c_iflag &= (unsigned long) ~(IXON | IXOFF); + options.c_iflag &= (tcflag_t) ~(IXON | IXOFF); #endif // rtscts #ifdef CRTSCTS @@ -2105,7 +2105,7 @@ Protected Member Functions diff --git a/docs/v1.0/files.html b/docs/v1.0/files.html index 28ae325..ef48145 100644 --- a/docs/v1.0/files.html +++ b/docs/v1.0/files.html @@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/v1.0/functions.html b/docs/v1.0/functions.html index 42d82bc..20d9d46 100644 --- a/docs/v1.0/functions.html +++ b/docs/v1.0/functions.html @@ -395,7 +395,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/v1.0/functions_func.html b/docs/v1.0/functions_func.html index bb29dd6..50dc074 100644 --- a/docs/v1.0/functions_func.html +++ b/docs/v1.0/functions_func.html @@ -381,7 +381,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/v1.0/functions_vars.html b/docs/v1.0/functions_vars.html index c5bc1b7..f93a5b1 100644 --- a/docs/v1.0/functions_vars.html +++ b/docs/v1.0/functions_vars.html @@ -119,7 +119,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/v1.0/globals.html b/docs/v1.0/globals.html index 00c09f4..8c83bfe 100644 --- a/docs/v1.0/globals.html +++ b/docs/v1.0/globals.html @@ -121,7 +121,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/v1.0/globals_defs.html b/docs/v1.0/globals_defs.html index 55dae40..6c45001 100644 --- a/docs/v1.0/globals_defs.html +++ b/docs/v1.0/globals_defs.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/v1.0/globals_func.html b/docs/v1.0/globals_func.html index e260028..2bd7541 100644 --- a/docs/v1.0/globals_func.html +++ b/docs/v1.0/globals_func.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/v1.0/graph_legend.html b/docs/v1.0/graph_legend.html index 98f11a3..e80c987 100644 --- a/docs/v1.0/graph_legend.html +++ b/docs/v1.0/graph_legend.html @@ -156,7 +156,7 @@ A yellow dashed arrow denotes a relation between a template instance and the tem diff --git a/docs/v1.0/index.html b/docs/v1.0/index.html index 2a014a7..2e119fd 100644 --- a/docs/v1.0/index.html +++ b/docs/v1.0/index.html @@ -144,7 +144,7 @@ Installing diff --git a/docs/v1.0/namespacemembers.html b/docs/v1.0/namespacemembers.html index 0a9b43b..59561b4 100644 --- a/docs/v1.0/namespacemembers.html +++ b/docs/v1.0/namespacemembers.html @@ -151,7 +151,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/v1.0/namespacemembers_enum.html b/docs/v1.0/namespacemembers_enum.html index 2473cf3..aa4de9a 100644 --- a/docs/v1.0/namespacemembers_enum.html +++ b/docs/v1.0/namespacemembers_enum.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/v1.0/namespacemembers_eval.html b/docs/v1.0/namespacemembers_eval.html index c0f938b..6978978 100644 --- a/docs/v1.0/namespacemembers_eval.html +++ b/docs/v1.0/namespacemembers_eval.html @@ -139,7 +139,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/v1.0/namespaces.html b/docs/v1.0/namespaces.html index 64fdefe..a3adc7a 100644 --- a/docs/v1.0/namespaces.html +++ b/docs/v1.0/namespaces.html @@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/v1.0/namespaceserial.html b/docs/v1.0/namespaceserial.html index 5f4a126..0935fcb 100644 --- a/docs/v1.0/namespaceserial.html +++ b/docs/v1.0/namespaceserial.html @@ -249,7 +249,7 @@ Enumerations diff --git a/docs/v1.0/namespaceserial_1_1serial.html b/docs/v1.0/namespaceserial_1_1serial.html index 6330ed7..ac19311 100644 --- a/docs/v1.0/namespaceserial_1_1serial.html +++ b/docs/v1.0/namespaceserial_1_1serial.html @@ -111,7 +111,7 @@ Namespaces diff --git a/docs/v1.0/namespaceserial_1_1serial_1_1_serial.html b/docs/v1.0/namespaceserial_1_1serial_1_1_serial.html index df53e9e..60c0f3b 100644 --- a/docs/v1.0/namespaceserial_1_1serial_1_1_serial.html +++ b/docs/v1.0/namespaceserial_1_1serial_1_1_serial.html @@ -112,7 +112,7 @@ Data Structures diff --git a/docs/v1.0/serial_8cc.html b/docs/v1.0/serial_8cc.html index a5d0bf9..d86161c 100644 --- a/docs/v1.0/serial_8cc.html +++ b/docs/v1.0/serial_8cc.html @@ -96,15 +96,14 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
src/serial.cc File Reference
-
#include <alloca.h>
-#include "serial/serial.h"
+
#include "serial/serial.h"
#include "serial/impl/unix.h"
Include dependency graph for serial.cc:
- +
diff --git a/docs/v1.0/serial_8cc__incl.map b/docs/v1.0/serial_8cc__incl.map index 9b93ade..7a11706 100644 --- a/docs/v1.0/serial_8cc__incl.map +++ b/docs/v1.0/serial_8cc__incl.map @@ -1,5 +1,5 @@ - - - + + + diff --git a/docs/v1.0/serial_8cc__incl.md5 b/docs/v1.0/serial_8cc__incl.md5 index 3cbf1cc..ca4d8e1 100644 --- a/docs/v1.0/serial_8cc__incl.md5 +++ b/docs/v1.0/serial_8cc__incl.md5 @@ -1 +1 @@ -c658af7c9cee1bc94ae43edfaee9db94 \ No newline at end of file +90ebab7e162d611065ad362f55d24cb1 \ No newline at end of file diff --git a/docs/v1.0/serial_8cc__incl.png b/docs/v1.0/serial_8cc__incl.png index 574e4e85843adaee93de7f909656846377d1fb34..72152d9af3b6fe32be6bb40ba959196b4329b9a6 100644 GIT binary patch literal 27801 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 O6Az`8r3w)yf&T#q#t_>8 literal 27740 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 bh@ diff --git a/docs/v1.0/serial_8h.html b/docs/v1.0/serial_8h.html index 94186b2..55e8a6e 100644 --- a/docs/v1.0/serial_8h.html +++ b/docs/v1.0/serial_8h.html @@ -205,7 +205,7 @@ __LINE__, (message) ) diff --git a/docs/v1.0/serial_8h_source.html b/docs/v1.0/serial_8h_source.html index fc2cdd2..cc522f5 100644 --- a/docs/v1.0/serial_8h_source.html +++ b/docs/v1.0/serial_8h_source.html @@ -137,277 +137,280 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); 00087 } flowcontrol_t; 00088 00095 struct Timeout { -00096 static uint32_t max() {return std::numeric_limits<uint32_t>::max();} -00106 static Timeout simpleTimeout(uint32_t timeout) { -00107 return Timeout(max(), timeout, 0, timeout, 0); -00108 } -00109 -00111 uint32_t inter_byte_timeout; -00113 uint32_t read_timeout_constant; -00117 uint32_t read_timeout_multiplier; -00119 uint32_t write_timeout_constant; -00123 uint32_t write_timeout_multiplier; -00124 -00125 Timeout (uint32_t inter_byte_timeout_=0, uint32_t read_timeout_constant_=0, -00126 uint32_t read_timeout_multiplier_=0, uint32_t write_timeout_constant_=0, -00127 uint32_t write_timeout_multiplier_=0) -00128 : inter_byte_timeout(inter_byte_timeout_), -00129 read_timeout_constant(read_timeout_constant_), -00130 read_timeout_multiplier(read_timeout_multiplier_), -00131 write_timeout_constant(write_timeout_constant_), -00132 write_timeout_multiplier(write_timeout_multiplier_) -00133 {} -00134 }; -00135 -00139 class Serial { -00140 public: -00170 Serial (const std::string &port = "", -00171 uint32_t baudrate = 9600, -00172 Timeout timeout = Timeout(), -00173 bytesize_t bytesize = eightbits, -00174 parity_t parity = parity_none, -00175 stopbits_t stopbits = stopbits_one, -00176 flowcontrol_t flowcontrol = flowcontrol_none); -00177 -00179 virtual ~Serial (); +00096 #ifdef max +00097 # undef max +00098 #endif +00099 static uint32_t max() {return std::numeric_limits<uint32_t>::max();} +00109 static Timeout simpleTimeout(uint32_t timeout) { +00110 return Timeout(max(), timeout, 0, timeout, 0); +00111 } +00112 +00114 uint32_t inter_byte_timeout; +00116 uint32_t read_timeout_constant; +00120 uint32_t read_timeout_multiplier; +00122 uint32_t write_timeout_constant; +00126 uint32_t write_timeout_multiplier; +00127 +00128 Timeout (uint32_t inter_byte_timeout_=0, uint32_t read_timeout_constant_=0, +00129 uint32_t read_timeout_multiplier_=0, uint32_t write_timeout_constant_=0, +00130 uint32_t write_timeout_multiplier_=0) +00131 : inter_byte_timeout(inter_byte_timeout_), +00132 read_timeout_constant(read_timeout_constant_), +00133 read_timeout_multiplier(read_timeout_multiplier_), +00134 write_timeout_constant(write_timeout_constant_), +00135 write_timeout_multiplier(write_timeout_multiplier_) +00136 {} +00137 }; +00138 +00142 class Serial { +00143 public: +00173 Serial (const std::string &port = "", +00174 uint32_t baudrate = 9600, +00175 Timeout timeout = Timeout(), +00176 bytesize_t bytesize = eightbits, +00177 parity_t parity = parity_none, +00178 stopbits_t stopbits = stopbits_one, +00179 flowcontrol_t flowcontrol = flowcontrol_none); 00180 -00194 void -00195 open (); -00196 -00201 bool -00202 isOpen () const; -00203 -00205 void -00206 close (); -00207 -00209 size_t -00210 available (); -00211 -00237 size_t -00238 read (uint8_t *buffer, size_t size); -00239 -00248 size_t -00249 read (std::vector<uint8_t> &buffer, size_t size = 1); -00250 -00259 size_t -00260 read (std::string &buffer, size_t size = 1); -00261 -00269 std::string -00270 read (size_t size = 1); -00271 -00282 size_t -00283 readline (std::string &buffer, size_t size = 65536, std::string eol = "\n"); -00284 -00294 std::string -00295 readline (size_t size = 65536, std::string eol = "\n"); -00296 -00308 std::vector<std::string> -00309 readlines (size_t size = 65536, std::string eol = "\n"); -00310 -00322 size_t -00323 write (const uint8_t *data, size_t size); -00324 -00333 size_t -00334 write (const std::vector<uint8_t> &data); -00335 -00344 size_t -00345 write (const std::string &data); -00346 -00355 void -00356 setPort (const std::string &port); -00357 -00364 std::string -00365 getPort () const; -00366 -00401 void -00402 setTimeout (Timeout &timeout); -00403 -00405 void -00406 setTimeout (uint32_t inter_byte_timeout, uint32_t read_timeout_constant, -00407 uint32_t read_timeout_multiplier, uint32_t write_timeout_constant, -00408 uint32_t write_timeout_multiplier) -00409 { -00410 Timeout timeout(inter_byte_timeout, read_timeout_constant, -00411 read_timeout_multiplier, write_timeout_constant, -00412 write_timeout_multiplier); -00413 return setTimeout(timeout); -00414 } -00415 -00423 Timeout -00424 getTimeout () const; -00425 -00438 void -00439 setBaudrate (uint32_t baudrate); -00440 -00449 uint32_t -00450 getBaudrate () const; -00451 -00460 void -00461 setBytesize (bytesize_t bytesize); -00462 -00469 bytesize_t -00470 getBytesize () const; -00471 -00479 void -00480 setParity (parity_t parity); -00481 -00488 parity_t -00489 getParity () const; -00490 -00498 void -00499 setStopbits (stopbits_t stopbits); -00500 -00507 stopbits_t -00508 getStopbits () const; -00509 -00518 void -00519 setFlowcontrol (flowcontrol_t flowcontrol); -00520 -00527 flowcontrol_t -00528 getFlowcontrol () const; -00529 -00531 void -00532 flush (); -00533 -00535 void -00536 flushInput (); -00537 -00539 void -00540 flushOutput (); -00541 -00543 void -00544 sendBreak (int duration); -00545 -00547 void -00548 setBreak (bool level = true); -00549 -00551 void -00552 setRTS (bool level = true); -00553 -00555 void -00556 setDTR (bool level = true); -00557 -00572 bool -00573 waitForChange (); -00574 -00576 bool -00577 getCTS (); -00578 -00580 bool -00581 getDSR (); -00582 -00584 bool -00585 getRI (); -00586 -00588 bool -00589 getCD (); -00590 -00591 private: -00592 // Disable copy constructors -00593 Serial(const Serial&); -00594 void operator=(const Serial&); -00595 const Serial& operator=(Serial); -00596 -00597 std::string read_cache_; -00598 -00599 // Pimpl idiom, d_pointer -00600 class SerialImpl; -00601 SerialImpl *pimpl_; -00602 -00603 // Scoped Lock Classes -00604 class ScopedReadLock; -00605 class ScopedWriteLock; -00606 -00607 // Read common function -00608 size_t -00609 read_ (uint8_t *buffer, size_t size); -00610 // Write common function +00182 virtual ~Serial (); +00183 +00197 void +00198 open (); +00199 +00204 bool +00205 isOpen () const; +00206 +00208 void +00209 close (); +00210 +00212 size_t +00213 available (); +00214 +00240 size_t +00241 read (uint8_t *buffer, size_t size); +00242 +00251 size_t +00252 read (std::vector<uint8_t> &buffer, size_t size = 1); +00253 +00262 size_t +00263 read (std::string &buffer, size_t size = 1); +00264 +00272 std::string +00273 read (size_t size = 1); +00274 +00285 size_t +00286 readline (std::string &buffer, size_t size = 65536, std::string eol = "\n"); +00287 +00297 std::string +00298 readline (size_t size = 65536, std::string eol = "\n"); +00299 +00311 std::vector<std::string> +00312 readlines (size_t size = 65536, std::string eol = "\n"); +00313 +00325 size_t +00326 write (const uint8_t *data, size_t size); +00327 +00336 size_t +00337 write (const std::vector<uint8_t> &data); +00338 +00347 size_t +00348 write (const std::string &data); +00349 +00358 void +00359 setPort (const std::string &port); +00360 +00367 std::string +00368 getPort () const; +00369 +00404 void +00405 setTimeout (Timeout &timeout); +00406 +00408 void +00409 setTimeout (uint32_t inter_byte_timeout, uint32_t read_timeout_constant, +00410 uint32_t read_timeout_multiplier, uint32_t write_timeout_constant, +00411 uint32_t write_timeout_multiplier) +00412 { +00413 Timeout timeout(inter_byte_timeout, read_timeout_constant, +00414 read_timeout_multiplier, write_timeout_constant, +00415 write_timeout_multiplier); +00416 return setTimeout(timeout); +00417 } +00418 +00426 Timeout +00427 getTimeout () const; +00428 +00441 void +00442 setBaudrate (uint32_t baudrate); +00443 +00452 uint32_t +00453 getBaudrate () const; +00454 +00463 void +00464 setBytesize (bytesize_t bytesize); +00465 +00472 bytesize_t +00473 getBytesize () const; +00474 +00482 void +00483 setParity (parity_t parity); +00484 +00491 parity_t +00492 getParity () const; +00493 +00501 void +00502 setStopbits (stopbits_t stopbits); +00503 +00510 stopbits_t +00511 getStopbits () const; +00512 +00521 void +00522 setFlowcontrol (flowcontrol_t flowcontrol); +00523 +00530 flowcontrol_t +00531 getFlowcontrol () const; +00532 +00534 void +00535 flush (); +00536 +00538 void +00539 flushInput (); +00540 +00542 void +00543 flushOutput (); +00544 +00546 void +00547 sendBreak (int duration); +00548 +00550 void +00551 setBreak (bool level = true); +00552 +00554 void +00555 setRTS (bool level = true); +00556 +00558 void +00559 setDTR (bool level = true); +00560 +00575 bool +00576 waitForChange (); +00577 +00579 bool +00580 getCTS (); +00581 +00583 bool +00584 getDSR (); +00585 +00587 bool +00588 getRI (); +00589 +00591 bool +00592 getCD (); +00593 +00594 private: +00595 // Disable copy constructors +00596 Serial(const Serial&); +00597 void operator=(const Serial&); +00598 const Serial& operator=(Serial); +00599 +00600 std::string read_cache_; +00601 +00602 // Pimpl idiom, d_pointer +00603 class SerialImpl; +00604 SerialImpl *pimpl_; +00605 +00606 // Scoped Lock Classes +00607 class ScopedReadLock; +00608 class ScopedWriteLock; +00609 +00610 // Read common function 00611 size_t -00612 write_ (const uint8_t *data, size_t length); -00613 -00614 }; -00615 -00616 class SerialExecption : public std::exception -00617 { -00618 // Disable copy constructors -00619 void operator=(const SerialExecption&); -00620 const SerialExecption& operator=(SerialExecption); -00621 const char* e_what_; -00622 public: -00623 SerialExecption (const char *description) : e_what_ (description) {} -00624 SerialExecption (const SerialExecption& other) { -00625 e_what_ = other.e_what_; -00626 } -00627 -00628 virtual const char* what () const throw () -00629 { -00630 std::stringstream ss; -00631 ss << "SerialException " << e_what_ << " failed."; -00632 return ss.str ().c_str (); -00633 } -00634 }; -00635 -00636 class IOException : public std::exception -00637 { -00638 // Disable copy constructors -00639 void operator=(const IOException&); -00640 const IOException& operator=(IOException); -00641 std::string file_; -00642 int line_; -00643 const char* e_what_; -00644 int errno_; -00645 public: -00646 explicit IOException (std::string file, int line, int errnum) -00647 : file_(file), line_(line), e_what_ (strerror (errnum)), errno_(errnum) {} -00648 explicit IOException (std::string file, int line, const char * description) -00649 : file_(file), line_(line), e_what_ (description), errno_(0) {} -00650 virtual ~IOException() throw() {} -00651 IOException (const IOException& other) { -00652 e_what_ = other.e_what_; -00653 } -00654 -00655 int getErrorNumber () { return errno_; } -00656 -00657 virtual const char* what () const throw () -00658 { -00659 std::stringstream ss; -00660 if (errno_ == 0) -00661 ss << "IO Exception: " << e_what_; -00662 else -00663 ss << "IO Exception (" << errno_ << "): " << e_what_; -00664 ss << ", file " << file_ << ", line " << line_ << "."; -00665 return ss.str ().c_str (); -00666 } -00667 }; -00668 -00669 class PortNotOpenedException : public std::exception -00670 { -00671 // Disable copy constructors -00672 void operator=(const PortNotOpenedException&); -00673 const PortNotOpenedException& operator=(PortNotOpenedException); -00674 const char * e_what_; -00675 public: -00676 PortNotOpenedException (const char * description) : e_what_ (description) {} -00677 PortNotOpenedException (const PortNotOpenedException& other) { -00678 e_what_ = other.e_what_; -00679 } -00680 -00681 virtual const char* what () const throw () -00682 { -00683 std::stringstream ss; -00684 ss << e_what_ << " called before port was opened."; -00685 return ss.str ().c_str (); -00686 } -00687 }; -00688 -00689 } // namespace serial -00690 -00691 #endif +00612 read_ (uint8_t *buffer, size_t size); +00613 // Write common function +00614 size_t +00615 write_ (const uint8_t *data, size_t length); +00616 +00617 }; +00618 +00619 class SerialExecption : public std::exception +00620 { +00621 // Disable copy constructors +00622 void operator=(const SerialExecption&); +00623 const SerialExecption& operator=(SerialExecption); +00624 const char* e_what_; +00625 public: +00626 SerialExecption (const char *description) : e_what_ (description) {} +00627 SerialExecption (const SerialExecption& other) { +00628 e_what_ = other.e_what_; +00629 } +00630 +00631 virtual const char* what () const throw () +00632 { +00633 std::stringstream ss; +00634 ss << "SerialException " << e_what_ << " failed."; +00635 return ss.str ().c_str (); +00636 } +00637 }; +00638 +00639 class IOException : public std::exception +00640 { +00641 // Disable copy constructors +00642 void operator=(const IOException&); +00643 const IOException& operator=(IOException); +00644 std::string file_; +00645 int line_; +00646 const char* e_what_; +00647 int errno_; +00648 public: +00649 explicit IOException (std::string file, int line, int errnum) +00650 : file_(file), line_(line), e_what_ (strerror (errnum)), errno_(errnum) {} +00651 explicit IOException (std::string file, int line, const char * description) +00652 : file_(file), line_(line), e_what_ (description), errno_(0) {} +00653 virtual ~IOException() throw() {} +00654 IOException (const IOException& other) { +00655 e_what_ = other.e_what_; +00656 } +00657 +00658 int getErrorNumber () { return errno_; } +00659 +00660 virtual const char* what () const throw () +00661 { +00662 std::stringstream ss; +00663 if (errno_ == 0) +00664 ss << "IO Exception: " << e_what_; +00665 else +00666 ss << "IO Exception (" << errno_ << "): " << e_what_; +00667 ss << ", file " << file_ << ", line " << line_ << "."; +00668 return ss.str ().c_str (); +00669 } +00670 }; +00671 +00672 class PortNotOpenedException : public std::exception +00673 { +00674 // Disable copy constructors +00675 void operator=(const PortNotOpenedException&); +00676 const PortNotOpenedException& operator=(PortNotOpenedException); +00677 const char * e_what_; +00678 public: +00679 PortNotOpenedException (const char * description) : e_what_ (description) {} +00680 PortNotOpenedException (const PortNotOpenedException& other) { +00681 e_what_ = other.e_what_; +00682 } +00683 +00684 virtual const char* what () const throw () +00685 { +00686 std::stringstream ss; +00687 ss << e_what_ << " called before port was opened."; +00688 return ss.str ().c_str (); +00689 } +00690 }; +00691 +00692 } // namespace serial +00693 +00694 #endif diff --git a/docs/v1.0/serial__example_8cc.html b/docs/v1.0/serial__example_8cc.html index f983125..27628a1 100644 --- a/docs/v1.0/serial__example_8cc.html +++ b/docs/v1.0/serial__example_8cc.html @@ -165,7 +165,7 @@ Functions
                                          {
-#ifdef __WIN32__
+#ifdef _WIN32
       Sleep(milliseconds); // 100 ms
 #else
       usleep(milliseconds*1000); // 100 ms
@@ -212,7 +212,7 @@ Functions
   sscanf(argv[2], "%lu", &baud);
 
   // port, baudrate, timeout in milliseconds
-  serial::Serial my_serial(port, baud, 1000);
+  serial::Serial my_serial(port, baud, serial::Timeout::simpleTimeout(1000));
 
   cout << "Is the serial port open?";
   if(my_serial.isOpen())
@@ -244,7 +244,7 @@ Functions
   }
 
   // Test the timeout at 250ms
-  my_serial.setTimeout(250);
+  my_serial.setTimeout(serial::Timeout::max(), 250, 0, 250, 0);
   count = 0;
   cout << "Timeout == 250ms, asking for 1 more byte than written." << endl;
   while (count < 10) {
@@ -298,7 +298,7 @@ Functions
 
 
 
diff --git a/docs/v1.0/structserial_1_1_timeout.html b/docs/v1.0/structserial_1_1_timeout.html
index 2b014a9..35da142 100644
--- a/docs/v1.0/structserial_1_1_timeout.html
+++ b/docs/v1.0/structserial_1_1_timeout.html
@@ -302,7 +302,7 @@ Data Fields
 
 
 
diff --git a/docs/v1.0/unix_8cc.html b/docs/v1.0/unix_8cc.html
index 0d3ad7d..5710b40 100644
--- a/docs/v1.0/unix_8cc.html
+++ b/docs/v1.0/unix_8cc.html
@@ -178,7 +178,7 @@ Functions
 
 
 
diff --git a/docs/v1.0/unix_8h.html b/docs/v1.0/unix_8h.html
index 578b47b..f92fa2a 100644
--- a/docs/v1.0/unix_8h.html
+++ b/docs/v1.0/unix_8h.html
@@ -142,7 +142,7 @@ DESCRIPTION
 
 
 
diff --git a/docs/v1.0/unix_8h_source.html b/docs/v1.0/unix_8h_source.html
index 90d193c..d74d303 100644
--- a/docs/v1.0/unix_8h_source.html
+++ b/docs/v1.0/unix_8h_source.html
@@ -261,7 +261,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 
 
 
diff --git a/docs/v1.0/v8stdint_8h.html b/docs/v1.0/v8stdint_8h.html
index bca8f28..2e363d2 100644
--- a/docs/v1.0/v8stdint_8h.html
+++ b/docs/v1.0/v8stdint_8h.html
@@ -115,7 +115,7 @@ This graph shows which files directly or indirectly include this file:
diff --git a/docs/v1.0/v8stdint_8h_source.html b/docs/v1.0/v8stdint_8h_source.html index 794c490..895850c 100644 --- a/docs/v1.0/v8stdint_8h_source.html +++ b/docs/v1.0/v8stdint_8h_source.html @@ -155,7 +155,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/v1.0/win_8cc.html b/docs/v1.0/win_8cc.html index c254067..b1e1788 100644 --- a/docs/v1.0/win_8cc.html +++ b/docs/v1.0/win_8cc.html @@ -106,7 +106,7 @@ Include dependency graph for win.cc:
diff --git a/docs/v1.0/win_8h.html b/docs/v1.0/win_8h.html index 9b38f3a..6ebc6d2 100644 --- a/docs/v1.0/win_8h.html +++ b/docs/v1.0/win_8h.html @@ -127,7 +127,7 @@ Namespaces diff --git a/docs/v1.0/win_8h_source.html b/docs/v1.0/win_8h_source.html index e56af7e..ad27599 100644 --- a/docs/v1.0/win_8h_source.html +++ b/docs/v1.0/win_8h_source.html @@ -259,7 +259,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

@@ -116,7 +115,7 @@ Data Structures