Example #1
0
void async_serial::_write_end(const boost::system::error_code& error)
{
    if(!error) {
        boost::lock_guard<boost::mutex> l(_write_queue_mutex);
        if(_write_queue.empty()) {
            _write_buffer.reset();
            _write_buffer_size=0;
            return;
        }
        _write_buffer_size = _write_queue.size();
        _write_buffer.reset(new char[_write_queue.size()]);
        std::copy(_write_queue.begin(),_write_queue.end(),
             _write_buffer.get());
        _write_queue.clear();
        async_write(
            _port,
            boost::asio::buffer(_write_buffer.get(),
            _write_buffer_size),
            boost::bind(
               &async_serial::_write_end,
               this,
               boost::asio::placeholders::error));
    } else {
        _set_error_status(true);
        _do_close();
    }
}
Example #2
0
void async_serial::_read_end(
    const boost::system::error_code& error,
    size_t bytes_transferred)
{
    if(error) {
        if(is_open()) {
            _do_close();
            _set_error_status(true);
        }
    } else {
        if(_callback)
            _callback(
                _read_buffer,
                bytes_transferred);
        _do_read();
    }
}
Example #3
0
void nxt_bluetooth_done() {

	_do_close();
}