X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=blobdiff_plain;f=source%2Fio%2Fserial.cpp;h=b256b117098b96a64f337c5c73b5f28818f77627;hp=cf2c6952bf3d7e97eb52eb0102f5253549aa03da;hb=03862ac4f38db0799872850dc4ab43b88688e4eb;hpb=609c9a508cfdc7b42c46c4f21d17639204165a00 diff --git a/source/io/serial.cpp b/source/io/serial.cpp index cf2c695..b256b11 100644 --- a/source/io/serial.cpp +++ b/source/io/serial.cpp @@ -42,10 +42,16 @@ void Serial::close() void Serial::set_block(bool b) { - mode = b?(mode&~M_NONBLOCK):(mode|M_NONBLOCK); + adjust_mode(mode, M_NONBLOCK, !b); sys_set_blocking(handle, b); } +void Serial::set_inherit(bool i) +{ + adjust_mode(mode, M_INHERIT, i); + sys_set_inherit(handle, i); +} + void Serial::set_baud_rate(unsigned rate) { DeviceState state; @@ -100,7 +106,7 @@ void Serial::set_parameters(const string ¶ms) state.apply_to(handle); } -unsigned Serial::do_write(const char *buf, unsigned size) +size_t Serial::do_write(const char *buf, size_t size) { if(size==0) return 0; @@ -108,17 +114,23 @@ unsigned Serial::do_write(const char *buf, unsigned size) return sys_write(handle, buf, size); } -unsigned Serial::do_read(char *buf, unsigned size) +size_t Serial::do_read(char *buf, size_t size) { if(size==0) return 0; - unsigned ret = reader.read(buf, size); + size_t ret = reader.read(buf, size); if(ret==0) set_eof(); return ret; } +const Handle &Serial::get_handle(Mode m) +{ + check_access(m); + return handle; +} + } // namespace IO } // namespace Msp