|  |  | @ -132,8 +132,10 @@ void TTYPigeon::connect(const char * tty) { | 
			
		
	
		
		
			
				
					
					|  |  |  |   if (pigeon_tty_fd < 0){ |  |  |  |   if (pigeon_tty_fd < 0){ | 
			
		
	
		
		
			
				
					
					|  |  |  |     handle_tty_issue(errno, __func__); |  |  |  |     handle_tty_issue(errno, __func__); | 
			
		
	
		
		
			
				
					
					|  |  |  |     assert(pigeon_tty_fd >= 0); |  |  |  |     assert(pigeon_tty_fd >= 0); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   
 | 
			
		
	
		
		
			
				
					
					|  |  |  |   } |  |  |  |   } | 
			
		
	
		
		
			
				
					
					|  |  |  |   assert(tcgetattr(pigeon_tty_fd, &pigeon_tty) == 0); |  |  |  |   int err = tcgetattr(pigeon_tty_fd, &pigeon_tty); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   assert(err == 0); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |   // configure tty
 |  |  |  |   // configure tty
 | 
			
		
	
		
		
			
				
					
					|  |  |  |   pigeon_tty.c_cflag &= ~PARENB;                                            // disable parity
 |  |  |  |   pigeon_tty.c_cflag &= ~PARENB;                                            // disable parity
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -152,7 +154,8 @@ void TTYPigeon::connect(const char * tty) { | 
			
		
	
		
		
			
				
					
					|  |  |  |   pigeon_tty.c_cc[VMIN] = 0;  // min amount of characters returned
 |  |  |  |   pigeon_tty.c_cc[VMIN] = 0;  // min amount of characters returned
 | 
			
		
	
		
		
			
				
					
					|  |  |  |   pigeon_tty.c_cc[VTIME] = 0; // max blocking time in s/10 (0=inf)
 |  |  |  |   pigeon_tty.c_cc[VTIME] = 0; // max blocking time in s/10 (0=inf)
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |   assert(tcsetattr(pigeon_tty_fd, TCSANOW, &pigeon_tty) == 0); |  |  |  |   err = tcsetattr(pigeon_tty_fd, TCSANOW, &pigeon_tty); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   assert(err == 0); | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | void TTYPigeon::set_baud(int baud){ |  |  |  | void TTYPigeon::set_baud(int baud){ | 
			
		
	
	
		
		
			
				
					|  |  | @ -169,15 +172,20 @@ void TTYPigeon::set_baud(int baud){ | 
			
		
	
		
		
			
				
					
					|  |  |  |   } |  |  |  |   } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |   // make sure everything is tx'ed before changing baud
 |  |  |  |   // make sure everything is tx'ed before changing baud
 | 
			
		
	
		
		
			
				
					
					|  |  |  |   assert(tcdrain(pigeon_tty_fd) == 0); |  |  |  |   int err = tcdrain(pigeon_tty_fd); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   assert(err == 0); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |   // change baud
 |  |  |  |   // change baud
 | 
			
		
	
		
		
			
				
					
					|  |  |  |   assert(tcgetattr(pigeon_tty_fd, &pigeon_tty) == 0); |  |  |  |   err = tcgetattr(pigeon_tty_fd, &pigeon_tty); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |   assert(cfsetspeed(&pigeon_tty, baud_const) == 0); |  |  |  |   assert(err == 0); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |   assert(tcsetattr(pigeon_tty_fd, TCSANOW, &pigeon_tty) == 0); |  |  |  |   err = cfsetspeed(&pigeon_tty, baud_const); | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   assert(err == 0); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   err = tcsetattr(pigeon_tty_fd, TCSANOW, &pigeon_tty); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   assert(err == 0); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |   // flush
 |  |  |  |   // flush
 | 
			
		
	
		
		
			
				
					
					|  |  |  |   assert(tcflush(pigeon_tty_fd, TCIOFLUSH) == 0); |  |  |  |   err = tcflush(pigeon_tty_fd, TCIOFLUSH); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   assert(err == 0); | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | void TTYPigeon::send(const std::string &s) { |  |  |  | void TTYPigeon::send(const std::string &s) { | 
			
		
	
	
		
		
			
				
					|  |  | 
 |