fork(5) download
  1. /* minicom.cpp
  2.   A simple demonstration minicom client with Boost asio
  3.  
  4.   Parameters:
  5.   baud rate
  6.   serial port (eg /dev/ttyS0 or COM1)
  7.  
  8.   To end the application, send Ctrl-C on standard input
  9.   */
  10.  
  11. #include <deque>
  12. #include <iostream>
  13. #include <boost/bind.hpp>
  14. #include <boost/asio.hpp>
  15. #include <boost/asio/serial_port.hpp>
  16. #include <boost/thread.hpp>
  17. #include <boost/lexical_cast.hpp>
  18. #include <boost/date_time/posix_time/posix_time_types.hpp>
  19.  
  20. #ifdef POSIX
  21. #include <termios.h>
  22. #endif
  23.  
  24. using namespace std;
  25.  
  26. class minicom_client
  27. {
  28. public:
  29. minicom_client(boost::asio::io_service& io_service, unsigned int baud, const string& device)
  30. : active_(true),
  31. io_service_(io_service),
  32. serialPort(io_service, device)
  33. ,m_timeoutTimer(m_io_service, boost::posix_time::milliseconds(10000)) // init the timer
  34. {
  35. if (not serialPort.is_open())
  36. {
  37. cerr << "Failed to open serial port\n";
  38. return;
  39. }
  40. boost::asio::serial_port_base::baud_rate baud_option(baud);
  41. serialPort.set_option(baud_option); // set the baud rate after the port has been opened
  42. read_start();
  43. m_timeoutTimer.async_wait(boost::bind(&minicom_client::ResetPacketTimer, this, _1, _2)); // start the timer
  44. }
  45.  
  46. void write(const char msg) // pass the write data to the do_write function via the io service in the other thread
  47. {
  48. io_service_.post(boost::bind(&minicom_client::do_write, this, msg));
  49. }
  50.  
  51. void close() // call the do_close function via the io service in the other thread
  52. {
  53. io_service_.post(boost::bind(&minicom_client::do_close, this, boost::system::error_code()));
  54. }
  55.  
  56. bool active() // return true if the socket is still active
  57. {
  58. return active_;
  59. }
  60.  
  61. private:
  62.  
  63. static const int max_read_length = 512; // maximum amount of data to read in one operation
  64.  
  65. void read_start(void)
  66. { // Start an asynchronous read and call read_complete when it completes or fails
  67. serialPort.async_read_some(boost::asio::buffer(read_msg_, max_read_length),
  68. boost::bind(&minicom_client::read_complete,
  69. this,
  70. boost::asio::placeholders::error,
  71. boost::asio::placeholders::bytes_transferred));
  72. }
  73.  
  74. void read_complete(const boost::system::error_code& error, size_t bytes_transferred)
  75. { // the asynchronous read operation has now completed or failed and returned an error
  76. if (!error)
  77. { // read completed, so process the data
  78. cout.write(read_msg_, bytes_transferred); // echo to standard output
  79. // you can check here if the packet is complete. Since bytes_transferred is what you got. So is it enough or not.
  80. MyOnReceivedData(MyHandle someHandle, numOfBytes);
  81. read_start(); // start waiting for another asynchronous read again
  82. }
  83. else do_close(error);
  84. }
  85.  
  86. void MyOnReceivedData(MyHandle someHandle,int numOfBytes){
  87. ResetPacketTimer();// we reset the timer here. So each read call is monitored NOT the time of a complete read
  88. //check if whole packet was received
  89. if (wholePacket){
  90. MyOnReceivedPacket(someHandle);
  91. }
  92. }
  93.  
  94. void MyOnReceivedPacket(MyHandle someHandle){
  95. cout << "packet"
  96. clearBuffer(someHandle);
  97. }
  98.  
  99. void MyOnPacketTimeout(MyHandle someHandle){
  100. cout << "we're in";
  101. if (!bufferEmpty(someHandle)){
  102. cout << "timeout";
  103. }
  104. }
  105.  
  106. void ResetPacketTimer(MyHandle someHandle, const boost::system::error_code& error){
  107. MyOnPacketTimeout(someHandle);
  108. m_timeoutTimer.expires_at(m_cpldTimeoutTimer.expires_at() + boost::posix_time::milliseconds(10000)); // give the timer another 10000 millisecs
  109. m_timeoutTimer.async_wait(boost::bind(&minicom_client::ResetPacketTimer, this, _1));
  110. }
  111. void do_write(const char msg)
  112. { // callback to handle write call from outside this class
  113. bool write_in_progress = !write_msgs_.empty(); // is there anything currently being written?
  114. write_msgs_.push_back(msg); // store in write buffer
  115. if (!write_in_progress) // if nothing is currently being written, then start
  116. write_start();
  117. }
  118.  
  119. void write_start(void)
  120. { // Start an asynchronous write and call write_complete when it completes or fails
  121. boost::asio::async_write(serialPort,
  122. boost::asio::buffer(&write_msgs_.front(), 1),
  123. boost::bind(&minicom_client::write_complete,
  124. this,
  125. boost::asio::placeholders::error));
  126. }
  127.  
  128. void write_complete(const boost::system::error_code& error)
  129. { // the asynchronous read operation has now completed or failed and returned an error
  130. if (!error)
  131. { // write completed, so send next write data
  132. write_msgs_.pop_front(); // remove the completed data
  133. if (!write_msgs_.empty()) // if there is anthing left to be written
  134. write_start(); // then start sending the next item in the buffer
  135. }
  136. else
  137. do_close(error);
  138. }
  139.  
  140. void do_close(const boost::system::error_code& error)
  141. { // something has gone wrong, so close the socket & make this object inactive
  142. if (error == boost::asio::error::operation_aborted) // if this call is the result of a timer cancel()
  143. return; // ignore it because the connection cancelled the timer
  144. if (error)
  145. cerr << "Error: " << error.message() << endl; // show the error message
  146. else
  147. cout << "Error: Connection did not succeed.\n";
  148. cout << "Press Enter to exit\n";
  149. serialPort.close();
  150. active_ = false;
  151. }
  152.  
  153. private:
  154. bool active_; // remains true while this object is still operating
  155. boost::asio::io_service& io_service_; // the main IO service that runs this connection
  156. boost::asio::serial_port serialPort; // the serial port this instance is connected to
  157. char read_msg_[max_read_length]; // data read from the socket
  158. deque<char> write_msgs_; // buffered write data
  159. boost::asio::deadline_timer m_timeoutTimer;
  160. };
  161.  
  162. int main(int argc, char* argv[])
  163. {
  164. // on Unix POSIX based systems, turn off line buffering of input, so cin.get() returns after every keypress
  165. // On other systems, you'll need to look for an equivalent
  166. #ifdef POSIX
  167. termios stored_settings;
  168. tcgetattr(0, &stored_settings);
  169. termios new_settings = stored_settings;
  170. new_settings.c_lflag &= (~ICANON);
  171. new_settings.c_lflag &= (~ISIG); // don't automatically handle control-C
  172. tcsetattr(0, TCSANOW, &new_settings);
  173. #endif
  174. try
  175. {
  176. if (argc != 3)
  177. {
  178. cerr << "Usage: minicom <baud> <device>\n";
  179. return 1;
  180. }
  181. boost::asio::io_service io_service;
  182. // define an instance of the main class of this program
  183. minicom_client c(io_service, boost::lexical_cast<unsigned int>(argv[1]), argv[2]);
  184. // run the IO service as a separate thread, so the main thread can block on standard input
  185. boost::thread t(boost::bind(&boost::asio::io_service::run, &io_service));
  186. while (c.active()) // check the internal state of the connection to make sure it's still running
  187. {
  188. char ch;
  189. cin.get(ch); // blocking wait for standard input
  190. if (ch == 3) // ctrl-C to end program
  191. break;
  192. c.write(ch);
  193. }
  194. c.close(); // close the minicom client connection
  195. t.join(); // wait for the IO service thread to close
  196. }
  197. catch (exception& e)
  198. {
  199. cerr << "Exception: " << e.what() << "\n";
  200. }
  201. #ifdef POSIX // restore default buffering of standard input
  202. tcsetattr(0, TCSANOW, &stored_settings);
  203. #endif
  204. return 0;
  205. }
  206.  
  207.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp:86: error: ‘MyHandle’ has not been declared
prog.cpp:94: error: ‘MyHandle’ has not been declared
prog.cpp:99: error: ‘MyHandle’ has not been declared
prog.cpp:106: error: ‘MyHandle’ has not been declared
prog.cpp: In constructor ‘minicom_client::minicom_client(boost::asio::io_service&, unsigned int, const std::string&)’:
prog.cpp:33: error: ‘m_io_service’ was not declared in this scope
prog.cpp: In member function ‘void minicom_client::read_complete(const boost::system::error_code&, size_t)’:
prog.cpp:80: error: ‘MyHandle’ was not declared in this scope
prog.cpp:80: error: ‘numOfBytes’ was not declared in this scope
prog.cpp: In member function ‘void minicom_client::MyOnReceivedData(int, int)’:
prog.cpp:87: error: no matching function for call to ‘minicom_client::ResetPacketTimer()’
prog.cpp:106: note: candidates are: void minicom_client::ResetPacketTimer(int, const boost::system::error_code&)
prog.cpp:89: error: ‘wholePacket’ was not declared in this scope
prog.cpp: In member function ‘void minicom_client::MyOnReceivedPacket(int)’:
prog.cpp:96: error: expected `;' before ‘clearBuffer’
prog.cpp: In member function ‘void minicom_client::MyOnPacketTimeout(int)’:
prog.cpp:101: error: ‘bufferEmpty’ was not declared in this scope
prog.cpp: In member function ‘void minicom_client::ResetPacketTimer(int, const boost::system::error_code&)’:
prog.cpp:108: error: ‘m_cpldTimeoutTimer’ was not declared in this scope
/usr/include/boost/bind/bind.hpp: At global scope:
/usr/include/boost/bind/bind.hpp: In instantiation of ‘boost::_bi::result_traits<boost::_bi::unspecified, void (minicom_client::*)(int, const boost::system::error_code&)>’:
/usr/include/boost/bind/bind_template.hpp:15:   instantiated from ‘boost::_bi::bind_t<boost::_bi::unspecified, void (minicom_client::*)(int, const boost::system::error_code&), boost::_bi::list2<boost::_bi::value<minicom_client*>, boost::arg<1> > >’
prog.cpp:109:   instantiated from here
/usr/include/boost/bind/bind.hpp:69: error: ‘void (minicom_client::*)(int, const boost::system::error_code&)’ is not a class, struct, or union type
/usr/include/boost/asio/detail/bind_handler.hpp: In member function ‘void boost::asio::detail::binder1<Handler, Arg1>::operator()() [with Handler = boost::_bi::bind_t<boost::_bi::unspecified, void (minicom_client::*)(int, const boost::system::error_code&), boost::_bi::list2<boost::_bi::value<minicom_client*>, boost::arg<1> > >, Arg1 = boost::system::error_code]’:
/usr/include/boost/asio/handler_invoke_hook.hpp:63:   instantiated from ‘void boost::asio::asio_handler_invoke(Function, ...) [with Function = boost::asio::detail::binder1<boost::_bi::bind_t<boost::_bi::unspecified, void (minicom_client::*)(int, const boost::system::error_code&), boost::_bi::list2<boost::_bi::value<minicom_client*>, boost::arg<1> > >, boost::system::error_code>]’
/usr/include/boost/asio/detail/handler_invoke_helpers.hpp:39:   instantiated from ‘void boost_asio_handler_invoke_helpers::invoke(const Function&, Context*) [with Function = boost::asio::detail::binder1<boost::_bi::bind_t<boost::_bi::unspecified, void (minicom_client::*)(int, const boost::system::error_code&), boost::_bi::list2<boost::_bi::value<minicom_client*>, boost::arg<1> > >, boost::system::error_code>, Context = boost::_bi::bind_t<boost::_bi::unspecified, void (minicom_client::*)(int, const boost::system::error_code&), boost::_bi::list2<boost::_bi::value<minicom_client*>, boost::arg<1> > >]’
/usr/include/boost/asio/detail/bind_handler.hpp:72:   instantiated from ‘void boost::asio::detail::asio_handler_invoke(const Function&, boost::asio::detail::binder1<Handler, Arg1>*) [with Function = boost::asio::detail::binder1<boost::_bi::bind_t<boost::_bi::unspecified, void (minicom_client::*)(int, const boost::system::error_code&), boost::_bi::list2<boost::_bi::value<minicom_client*>, boost::arg<1> > >, boost::system::error_code>, Handler = boost::_bi::bind_t<boost::_bi::unspecified, void (minicom_client::*)(int, const boost::system::error_code&), boost::_bi::list2<boost::_bi::value<minicom_client*>, boost::arg<1> > >, Arg1 = boost::system::error_code]’
/usr/include/boost/asio/detail/handler_invoke_helpers.hpp:39:   instantiated from ‘void boost_asio_handler_invoke_helpers::invoke(const Function&, Context*) [with Function = boost::asio::detail::binder1<boost::_bi::bind_t<boost::_bi::unspecified, void (minicom_client::*)(int, const boost::system::error_code&), boost::_bi::list2<boost::_bi::value<minicom_client*>, boost::arg<1> > >, boost::system::error_code>, Context = boost::asio::detail::binder1<boost::_bi::bind_t<boost::_bi::unspecified, void (minicom_client::*)(int, const boost::system::error_code&), boost::_bi::list2<boost::_bi::value<minicom_client*>, boost::arg<1> > >, boost::system::error_code>]’
/usr/include/boost/asio/detail/handler_queue.hpp:192:   instantiated from ‘static void boost::asio::detail::handler_queue::handler_wrapper<Handler>::do_call(boost::asio::detail::handler_queue::handler*) [with Handler = boost::asio::detail::binder1<boost::_bi::bind_t<boost::_bi::unspecified, void (minicom_client::*)(int, const boost::system::error_code&), boost::_bi::list2<boost::_bi::value<minicom_client*>, boost::arg<1> > >, boost::system::error_code>]’
/usr/include/boost/asio/detail/handler_queue.hpp:172:   instantiated from ‘boost::asio::detail::handler_queue::handler_wrapper<Handler>::handler_wrapper(Handler) [with Handler = boost::asio::detail::binder1<boost::_bi::bind_t<boost::_bi::unspecified, void (minicom_client::*)(int, const boost::system::error_code&), boost::_bi::list2<boost::_bi::value<minicom_client*>, boost::arg<1> > >, boost::system::error_code>]’
/usr/include/boost/asio/detail/handler_alloc_helpers.hpp:138:   instantiated from ‘boost::asio::detail::handler_ptr<Alloc_Traits>::handler_ptr(boost::asio::detail::raw_handler_ptr<Alloc_Traits>&, Arg1&) [with Arg1 = boost::asio::detail::binder1<boost::_bi::bind_t<boost::_bi::unspecified, void (minicom_client::*)(int, const boost::system::error_code&), boost::_bi::list2<boost::_bi::value<minicom_client*>, boost::arg<1> > >, boost::system::error_code>, Alloc_Traits = boost::asio::detail::handler_alloc_traits<boost::asio::detail::binder1<boost::_bi::bind_t<boost::_bi::unspecified, void (minicom_client::*)(int, const boost::system::error_code&), boost::_bi::list2<boost::_bi::value<minicom_client*>, boost::arg<1> > >, boost::system::error_code>, boost::asio::detail::handler_queue::handler_wrapper<boost::asio::detail::binder1<boost::_bi::bind_t<boost::_bi::unspecified, void (minicom_client::*)(int, const boost::system::error_code&), boost::_bi::list2<boost::_bi::value<minicom_client*>, boost::arg<1> > >, boost::system::error_code> > >]’
/usr/include/boost/asio/detail/handler_queue.hpp:117:   instantiated from ‘static boost::asio::detail::handler_queue::handler* boost::asio::detail::handler_queue::wrap(Handler) [with Handler = boost::asio::detail::binder1<boost::_bi::bind_t<boost::_bi::unspecified, void (minicom_client::*)(int, const boost::system::error_code&), boost::_bi::list2<boost::_bi::value<minicom_client*>, boost::arg<1> > >, boost::system::error_code>]’
/usr/include/boost/asio/detail/task_io_service.hpp:190:   instantiated from ‘void boost::asio::detail::task_io_service<Task>::post(Handler) [with Handler = boost::asio::detail::binder1<boost::_bi::bind_t<boost::_bi::unspecified, void (minicom_client::*)(int, const boost::system::error_code&), boost::_bi::list2<boost::_bi::value<minicom_client*>, boost::arg<1> > >, boost::system::error_code>, Task = boost::asio::detail::epoll_reactor<false>]’
/usr/include/boost/asio/impl/io_service.ipp:126:   instantiated from ‘void boost::asio::io_service::post(Handler) [with CompletionHandler = boost::asio::detail::binder1<boost::_bi::bind_t<boost::_bi::unspecified, void (minicom_client::*)(int, const boost::system::error_code&), boost::_bi::list2<boost::_bi::value<minicom_client*>, boost::arg<1> > >, boost::system::error_code>]’
/usr/include/boost/asio/detail/deadline_timer_service.hpp:172:   instantiated from ‘void boost::asio::detail::deadline_timer_service<Time_Traits, Timer_Scheduler>::wait_handler<Handler>::operator()(const boost::system::error_code&) [with Handler = boost::_bi::bind_t<boost::_bi::unspecified, void (minicom_client::*)(int, const boost::system::error_code&), boost::_bi::list2<boost::_bi::value<minicom_client*>, boost::arg<1> > >, Time_Traits = boost::asio::time_traits<boost::posix_time::ptime>, Timer_Scheduler = boost::asio::detail::epoll_reactor<false>]’
/usr/include/boost/asio/detail/timer_queue.hpp:299:   instantiated from ‘static void boost::asio::detail::timer_queue<Time_Traits>::timer<Handler>::complete_handler(boost::asio::detail::timer_queue<Time_Traits>::timer_base*, const boost::system::error_code&) [with Handler = boost::asio::detail::deadline_timer_service<boost::asio::time_traits<boost::posix_time::ptime>, boost::asio::detail::epoll_reactor<false> >::wait_handler<boost::_bi::bind_t<boost::_bi::unspecified, void (minicom_client::*)(int, const boost::system::error_code&), boost::_bi::list2<boost::_bi::value<minicom_client*>, boost::arg<1> > > >, Time_Traits = boost::asio::time_traits<boost::posix_time::ptime>]’
/usr/include/boost/asio/detail/timer_queue.hpp:276:   instantiated from ‘boost::asio::detail::timer_queue<Time_Traits>::timer<Handler>::timer(const typename Time_Traits::time_type&, Handler, void*) [with Handler = boost::asio::detail::deadline_timer_service<boost::asio::time_traits<boost::posix_time::ptime>, boost::asio::detail::epoll_reactor<false> >::wait_handler<boost::_bi::bind_t<boost::_bi::unspecified, void (minicom_client::*)(int, const boost::system::error_code&), boost::_bi::list2<boost::_bi::value<minicom_client*>, boost::arg<1> > > >, Time_Traits = boost::asio::time_traits<boost::posix_time::ptime>]’
/usr/include/boost/asio/detail/timer_queue.hpp:71:   instantiated from ‘bool boost::asio::detail::timer_queue<Time_Traits>::enqueue_timer(const typename Time_Traits::time_type&, Handler, void*) [with Handler = boost::asio::detail::deadline_timer_service<boost::asio::time_traits<boost::posix_time::ptime>, boost::asio::detail::epoll_reactor<false> >::wait_handler<boost::_bi::bind_t<boost::_bi::unspecified, void (minicom_client::*)(int, const boost::system::error_code&), boost::_bi::list2<boost::_bi::value<minicom_client*>, boost::arg<1> > > >, Time_Traits = boost::asio::time_traits<boost::posix_time::ptime>]’
/usr/include/boost/asio/detail/epoll_reactor.hpp:414:   instantiated from ‘void boost::asio::detail::epoll_reactor<Own_Thread>::schedule_timer(boost::asio::detail::timer_queue<Time_Traits>&, const typename Time_Traits::time_type&, Handler, void*) [with Time_Traits = boost::asio::time_traits<boost::posix_time::ptime>, Handler = boost::asio::detail::deadline_timer_service<boost::asio::time_traits<boost::posix_time::ptime>, boost::asio::detail::epoll_reactor<false> >::wait_handler<boost::_bi::bind_t<boost::_bi::unspecified, void (minicom_client::*)(int, const boost::system::error_code&), boost::_bi::list2<boost::_bi::value<minicom_client*>, boost::arg<1> > > >, bool Own_Thread = false]’
/usr/include/boost/asio/detail/deadline_timer_service.hpp:185:   instantiated from ‘void boost::asio::detail::deadline_timer_service<Time_Traits, Timer_Scheduler>::async_wait(boost::asio::detail::deadline_timer_service<Time_Traits, Timer_Scheduler>::implementation_type&, Handler) [with Handler = boost::_bi::bind_t<boost::_bi::unspecified, void (minicom_client::*)(int, const boost::system::error_code&), boost::_bi::list2<boost::_bi::value<minicom_client*>, boost::arg<1> > >, Time_Traits = boost::asio::time_traits<boost::posix_time::ptime>, Timer_Scheduler = boost::asio::detail::epoll_reactor<false>]’
/usr/include/boost/asio/deadline_timer_service.hpp:157:   instantiated from ‘void boost::asio::deadline_timer_service<TimeType, TimeTraits>::async_wait(typename boost::asio::detail::deadline_timer_service<TimeTraits, boost::asio::detail::epoll_reactor<false> >::implementation_type&, WaitHandler) [with WaitHandler = boost::_bi::bind_t<boost::_bi::unspecified, void (minicom_client::*)(int, const boost::system::error_code&), boost::_bi::list2<boost::_bi::value<minicom_client*>, boost::arg<1> > >, TimeType = boost::posix_time::ptime, TimeTraits = boost::asio::time_traits<boost::posix_time::ptime>]’
/usr/include/boost/asio/basic_deadline_timer.hpp:374:   instantiated from ‘void boost::asio::basic_deadline_timer<Time, TimeTraits, TimerService>::async_wait(WaitHandler) [with WaitHandler = boost::_bi::bind_t<boost::_bi::unspecified, void (minicom_client::*)(int, const boost::system::error_code&), boost::_bi::list2<boost::_bi::value<minicom_client*>, boost::arg<1> > >, Time = boost::posix_time::ptime, TimeTraits = boost::asio::time_traits<boost::posix_time::ptime>, TimerService = boost::asio::deadline_timer_service<boost::posix_time::ptime, boost::asio::time_traits<boost::posix_time::ptime> >]’
prog.cpp:109:   instantiated from here
/usr/include/boost/asio/detail/bind_handler.hpp:39: error: no match for call to ‘(boost::_bi::bind_t<boost::_bi::unspecified, void (minicom_client::*)(int, const boost::system::error_code&), boost::_bi::list2<boost::_bi::value<minicom_client*>, boost::arg<1> > >) (boost::system::error_code&)’
/usr/include/boost/bind/bind.hpp: In member function ‘void boost::_bi::list3<A1, A2, A3>::operator()(boost::_bi::type<void>, F&, A&, int) [with F = boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, A = boost::_bi::list1<boost::system::error_code&>, A1 = boost::_bi::value<minicom_client*>, A2 = boost::arg<1>, A3 = boost::arg<2>]’:
/usr/include/boost/bind/bind_template.hpp:32:   instantiated from ‘typename boost::_bi::result_traits<R, F>::type boost::_bi::bind_t<R, F, L>::operator()(A1&) [with A1 = boost::system::error_code, R = void, F = boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, L = boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> >]’
/usr/include/boost/asio/detail/bind_handler.hpp:39:   instantiated from ‘void boost::asio::detail::binder1<Handler, Arg1>::operator()() [with Handler = boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > >, Arg1 = boost::system::error_code]’
/usr/include/boost/asio/handler_invoke_hook.hpp:63:   instantiated from ‘void boost::asio::asio_handler_invoke(Function, ...) [with Function = boost::asio::detail::binder1<boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > >, boost::system::error_code>]’
/usr/include/boost/asio/detail/handler_invoke_helpers.hpp:39:   instantiated from ‘void boost_asio_handler_invoke_helpers::invoke(const Function&, Context*) [with Function = boost::asio::detail::binder1<boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > >, boost::system::error_code>, Context = boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > >]’
/usr/include/boost/asio/detail/bind_handler.hpp:72:   instantiated from ‘void boost::asio::detail::asio_handler_invoke(const Function&, boost::asio::detail::binder1<Handler, Arg1>*) [with Function = boost::asio::detail::binder1<boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > >, boost::system::error_code>, Handler = boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > >, Arg1 = boost::system::error_code]’
/usr/include/boost/asio/detail/handler_invoke_helpers.hpp:39:   instantiated from ‘void boost_asio_handler_invoke_helpers::invoke(const Function&, Context*) [with Function = boost::asio::detail::binder1<boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > >, boost::system::error_code>, Context = boost::asio::detail::binder1<boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > >, boost::system::error_code>]’
/usr/include/boost/asio/detail/handler_queue.hpp:192:   instantiated from ‘static void boost::asio::detail::handler_queue::handler_wrapper<Handler>::do_call(boost::asio::detail::handler_queue::handler*) [with Handler = boost::asio::detail::binder1<boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > >, boost::system::error_code>]’
/usr/include/boost/asio/detail/handler_queue.hpp:172:   instantiated from ‘boost::asio::detail::handler_queue::handler_wrapper<Handler>::handler_wrapper(Handler) [with Handler = boost::asio::detail::binder1<boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > >, boost::system::error_code>]’
/usr/include/boost/asio/detail/handler_alloc_helpers.hpp:138:   instantiated from ‘boost::asio::detail::handler_ptr<Alloc_Traits>::handler_ptr(boost::asio::detail::raw_handler_ptr<Alloc_Traits>&, Arg1&) [with Arg1 = boost::asio::detail::binder1<boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > >, boost::system::error_code>, Alloc_Traits = boost::asio::detail::handler_alloc_traits<boost::asio::detail::binder1<boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > >, boost::system::error_code>, boost::asio::detail::handler_queue::handler_wrapper<boost::asio::detail::binder1<boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > >, boost::system::error_code> > >]’
/usr/include/boost/asio/detail/handler_queue.hpp:117:   instantiated from ‘static boost::asio::detail::handler_queue::handler* boost::asio::detail::handler_queue::wrap(Handler) [with Handler = boost::asio::detail::binder1<boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > >, boost::system::error_code>]’
/usr/include/boost/asio/detail/task_io_service.hpp:190:   instantiated from ‘void boost::asio::detail::task_io_service<Task>::post(Handler) [with Handler = boost::asio::detail::binder1<boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > >, boost::system::error_code>, Task = boost::asio::detail::epoll_reactor<false>]’
/usr/include/boost/asio/impl/io_service.ipp:126:   instantiated from ‘void boost::asio::io_service::post(Handler) [with CompletionHandler = boost::asio::detail::binder1<boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > >, boost::system::error_code>]’
/usr/include/boost/asio/detail/deadline_timer_service.hpp:172:   instantiated from ‘void boost::asio::detail::deadline_timer_service<Time_Traits, Timer_Scheduler>::wait_handler<Handler>::operator()(const boost::system::error_code&) [with Handler = boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > >, Time_Traits = boost::asio::time_traits<boost::posix_time::ptime>, Timer_Scheduler = boost::asio::detail::epoll_reactor<false>]’
/usr/include/boost/asio/detail/timer_queue.hpp:299:   instantiated from ‘static void boost::asio::detail::timer_queue<Time_Traits>::timer<Handler>::complete_handler(boost::asio::detail::timer_queue<Time_Traits>::timer_base*, const boost::system::error_code&) [with Handler = boost::asio::detail::deadline_timer_service<boost::asio::time_traits<boost::posix_time::ptime>, boost::asio::detail::epoll_reactor<false> >::wait_handler<boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > > >, Time_Traits = boost::asio::time_traits<boost::posix_time::ptime>]’
/usr/include/boost/asio/detail/timer_queue.hpp:276:   instantiated from ‘boost::asio::detail::timer_queue<Time_Traits>::timer<Handler>::timer(const typename Time_Traits::time_type&, Handler, void*) [with Handler = boost::asio::detail::deadline_timer_service<boost::asio::time_traits<boost::posix_time::ptime>, boost::asio::detail::epoll_reactor<false> >::wait_handler<boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > > >, Time_Traits = boost::asio::time_traits<boost::posix_time::ptime>]’
/usr/include/boost/asio/detail/timer_queue.hpp:71:   instantiated from ‘bool boost::asio::detail::timer_queue<Time_Traits>::enqueue_timer(const typename Time_Traits::time_type&, Handler, void*) [with Handler = boost::asio::detail::deadline_timer_service<boost::asio::time_traits<boost::posix_time::ptime>, boost::asio::detail::epoll_reactor<false> >::wait_handler<boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > > >, Time_Traits = boost::asio::time_traits<boost::posix_time::ptime>]’
/usr/include/boost/asio/detail/epoll_reactor.hpp:414:   instantiated from ‘void boost::asio::detail::epoll_reactor<Own_Thread>::schedule_timer(boost::asio::detail::timer_queue<Time_Traits>&, const typename Time_Traits::time_type&, Handler, void*) [with Time_Traits = boost::asio::time_traits<boost::posix_time::ptime>, Handler = boost::asio::detail::deadline_timer_service<boost::asio::time_traits<boost::posix_time::ptime>, boost::asio::detail::epoll_reactor<false> >::wait_handler<boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > > >, bool Own_Thread = false]’
/usr/include/boost/asio/detail/deadline_timer_service.hpp:185:   instantiated from ‘void boost::asio::detail::deadline_timer_service<Time_Traits, Timer_Scheduler>::async_wait(boost::asio::detail::deadline_timer_service<Time_Traits, Timer_Scheduler>::implementation_type&, Handler) [with Handler = boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > >, Time_Traits = boost::asio::time_traits<boost::posix_time::ptime>, Timer_Scheduler = boost::asio::detail::epoll_reactor<false>]’
/usr/include/boost/asio/deadline_timer_service.hpp:157:   instantiated from ‘void boost::asio::deadline_timer_service<TimeType, TimeTraits>::async_wait(typename boost::asio::detail::deadline_timer_service<TimeTraits, boost::asio::detail::epoll_reactor<false> >::implementation_type&, WaitHandler) [with WaitHandler = boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > >, TimeType = boost::posix_time::ptime, TimeTraits = boost::asio::time_traits<boost::posix_time::ptime>]’
/usr/include/boost/asio/basic_deadline_timer.hpp:374:   instantiated from ‘void boost::asio::basic_deadline_timer<Time, TimeTraits, TimerService>::async_wait(WaitHandler) [with WaitHandler = boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > >, Time = boost::posix_time::ptime, TimeTraits = boost::asio::time_traits<boost::posix_time::ptime>, TimerService = boost::asio::deadline_timer_service<boost::posix_time::ptime, boost::asio::time_traits<boost::posix_time::ptime> >]’
prog.cpp:43:   instantiated from here
/usr/include/boost/bind/bind.hpp:385: error: invalid conversion from ‘void (*)()’ to ‘int’
/usr/include/boost/bind/bind.hpp:385: error:   initializing argument 2 of ‘R boost::_mfi::mf2<R, T, A1, A2>::operator()(T*, A1, A2) const [with R = void, T = minicom_client, A1 = int, A2 = const boost::system::error_code&]’
/usr/include/boost/bind/arg.hpp: In constructor ‘boost::arg<I>::arg(const T&) [with T = boost::arg<2> ()(), int I = 1]’:
/usr/include/boost/bind/bind.hpp:385:   instantiated from ‘void boost::_bi::list3<A1, A2, A3>::operator()(boost::_bi::type<void>, F&, A&, int) [with F = boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, A = boost::_bi::list1<boost::system::error_code&>, A1 = boost::_bi::value<minicom_client*>, A2 = boost::arg<1>, A3 = boost::arg<2>]’
/usr/include/boost/bind/bind_template.hpp:32:   instantiated from ‘typename boost::_bi::result_traits<R, F>::type boost::_bi::bind_t<R, F, L>::operator()(A1&) [with A1 = boost::system::error_code, R = void, F = boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, L = boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> >]’
/usr/include/boost/asio/detail/bind_handler.hpp:39:   instantiated from ‘void boost::asio::detail::binder1<Handler, Arg1>::operator()() [with Handler = boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > >, Arg1 = boost::system::error_code]’
/usr/include/boost/asio/handler_invoke_hook.hpp:63:   instantiated from ‘void boost::asio::asio_handler_invoke(Function, ...) [with Function = boost::asio::detail::binder1<boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > >, boost::system::error_code>]’
/usr/include/boost/asio/detail/handler_invoke_helpers.hpp:39:   instantiated from ‘void boost_asio_handler_invoke_helpers::invoke(const Function&, Context*) [with Function = boost::asio::detail::binder1<boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > >, boost::system::error_code>, Context = boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > >]’
/usr/include/boost/asio/detail/bind_handler.hpp:72:   instantiated from ‘void boost::asio::detail::asio_handler_invoke(const Function&, boost::asio::detail::binder1<Handler, Arg1>*) [with Function = boost::asio::detail::binder1<boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > >, boost::system::error_code>, Handler = boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > >, Arg1 = boost::system::error_code]’
/usr/include/boost/asio/detail/handler_invoke_helpers.hpp:39:   instantiated from ‘void boost_asio_handler_invoke_helpers::invoke(const Function&, Context*) [with Function = boost::asio::detail::binder1<boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > >, boost::system::error_code>, Context = boost::asio::detail::binder1<boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > >, boost::system::error_code>]’
/usr/include/boost/asio/detail/handler_queue.hpp:192:   instantiated from ‘static void boost::asio::detail::handler_queue::handler_wrapper<Handler>::do_call(boost::asio::detail::handler_queue::handler*) [with Handler = boost::asio::detail::binder1<boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > >, boost::system::error_code>]’
/usr/include/boost/asio/detail/handler_queue.hpp:172:   instantiated from ‘boost::asio::detail::handler_queue::handler_wrapper<Handler>::handler_wrapper(Handler) [with Handler = boost::asio::detail::binder1<boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > >, boost::system::error_code>]’
/usr/include/boost/asio/detail/handler_alloc_helpers.hpp:138:   instantiated from ‘boost::asio::detail::handler_ptr<Alloc_Traits>::handler_ptr(boost::asio::detail::raw_handler_ptr<Alloc_Traits>&, Arg1&) [with Arg1 = boost::asio::detail::binder1<boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > >, boost::system::error_code>, Alloc_Traits = boost::asio::detail::handler_alloc_traits<boost::asio::detail::binder1<boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > >, boost::system::error_code>, boost::asio::detail::handler_queue::handler_wrapper<boost::asio::detail::binder1<boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > >, boost::system::error_code> > >]’
/usr/include/boost/asio/detail/handler_queue.hpp:117:   instantiated from ‘static boost::asio::detail::handler_queue::handler* boost::asio::detail::handler_queue::wrap(Handler) [with Handler = boost::asio::detail::binder1<boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > >, boost::system::error_code>]’
/usr/include/boost/asio/detail/task_io_service.hpp:190:   instantiated from ‘void boost::asio::detail::task_io_service<Task>::post(Handler) [with Handler = boost::asio::detail::binder1<boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > >, boost::system::error_code>, Task = boost::asio::detail::epoll_reactor<false>]’
/usr/include/boost/asio/impl/io_service.ipp:126:   instantiated from ‘void boost::asio::io_service::post(Handler) [with CompletionHandler = boost::asio::detail::binder1<boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > >, boost::system::error_code>]’
/usr/include/boost/asio/detail/deadline_timer_service.hpp:172:   instantiated from ‘void boost::asio::detail::deadline_timer_service<Time_Traits, Timer_Scheduler>::wait_handler<Handler>::operator()(const boost::system::error_code&) [with Handler = boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > >, Time_Traits = boost::asio::time_traits<boost::posix_time::ptime>, Timer_Scheduler = boost::asio::detail::epoll_reactor<false>]’
/usr/include/boost/asio/detail/timer_queue.hpp:299:   instantiated from ‘static void boost::asio::detail::timer_queue<Time_Traits>::timer<Handler>::complete_handler(boost::asio::detail::timer_queue<Time_Traits>::timer_base*, const boost::system::error_code&) [with Handler = boost::asio::detail::deadline_timer_service<boost::asio::time_traits<boost::posix_time::ptime>, boost::asio::detail::epoll_reactor<false> >::wait_handler<boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > > >, Time_Traits = boost::asio::time_traits<boost::posix_time::ptime>]’
/usr/include/boost/asio/detail/timer_queue.hpp:276:   instantiated from ‘boost::asio::detail::timer_queue<Time_Traits>::timer<Handler>::timer(const typename Time_Traits::time_type&, Handler, void*) [with Handler = boost::asio::detail::deadline_timer_service<boost::asio::time_traits<boost::posix_time::ptime>, boost::asio::detail::epoll_reactor<false> >::wait_handler<boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > > >, Time_Traits = boost::asio::time_traits<boost::posix_time::ptime>]’
/usr/include/boost/asio/detail/timer_queue.hpp:71:   instantiated from ‘bool boost::asio::detail::timer_queue<Time_Traits>::enqueue_timer(const typename Time_Traits::time_type&, Handler, void*) [with Handler = boost::asio::detail::deadline_timer_service<boost::asio::time_traits<boost::posix_time::ptime>, boost::asio::detail::epoll_reactor<false> >::wait_handler<boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > > >, Time_Traits = boost::asio::time_traits<boost::posix_time::ptime>]’
/usr/include/boost/asio/detail/epoll_reactor.hpp:414:   instantiated from ‘void boost::asio::detail::epoll_reactor<Own_Thread>::schedule_timer(boost::asio::detail::timer_queue<Time_Traits>&, const typename Time_Traits::time_type&, Handler, void*) [with Time_Traits = boost::asio::time_traits<boost::posix_time::ptime>, Handler = boost::asio::detail::deadline_timer_service<boost::asio::time_traits<boost::posix_time::ptime>, boost::asio::detail::epoll_reactor<false> >::wait_handler<boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > > >, bool Own_Thread = false]’
/usr/include/boost/asio/detail/deadline_timer_service.hpp:185:   instantiated from ‘void boost::asio::detail::deadline_timer_service<Time_Traits, Timer_Scheduler>::async_wait(boost::asio::detail::deadline_timer_service<Time_Traits, Timer_Scheduler>::implementation_type&, Handler) [with Handler = boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > >, Time_Traits = boost::asio::time_traits<boost::posix_time::ptime>, Timer_Scheduler = boost::asio::detail::epoll_reactor<false>]’
/usr/include/boost/asio/deadline_timer_service.hpp:157:   instantiated from ‘void boost::asio::deadline_timer_service<TimeType, TimeTraits>::async_wait(typename boost::asio::detail::deadline_timer_service<TimeTraits, boost::asio::detail::epoll_reactor<false> >::implementation_type&, WaitHandler) [with WaitHandler = boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > >, TimeType = boost::posix_time::ptime, TimeTraits = boost::asio::time_traits<boost::posix_time::ptime>]’
/usr/include/boost/asio/basic_deadline_timer.hpp:374:   instantiated from ‘void boost::asio::basic_deadline_timer<Time, TimeTraits, TimerService>::async_wait(WaitHandler) [with WaitHandler = boost::_bi::bind_t<void, boost::_mfi::mf2<void, minicom_client, int, const boost::system::error_code&>, boost::_bi::list3<boost::_bi::value<minicom_client*>, boost::arg<1>, boost::arg<2> > >, Time = boost::posix_time::ptime, TimeTraits = boost::asio::time_traits<boost::posix_time::ptime>, TimerService = boost::asio::deadline_timer_service<boost::posix_time::ptime, boost::asio::time_traits<boost::posix_time::ptime> >]’
prog.cpp:43:   instantiated from here
/usr/include/boost/bind/arg.hpp:37: error: creating array with negative size (‘-0x000000001’)
stdout
Standard output is empty