case 9600: speed = B9600; break;
case 19200: speed = B19200; break;
case 38400: speed = B38400; break;
- case 57600: speed = B57600; break;
- case 115200: speed = B115200; break;
- case 230400: speed = B230400; break;
- default: throw invalid_argument("set_baud_rate");
+ case 57600: speed = 0010001; break;
+ case 115200: speed = 0010002; break;
+ case 230400: speed = 0010003; break;
+ case 460800: speed = 0010004; break;
+ case 500000: speed = 0010005; break;
+ case 576000: speed = 0010006; break;
+ case 921600: speed = 0010007; break;
+ case 1000000: speed = 0010010; break;
+ case 1152000: speed = 0010011; break;
+ case 1500000: speed = 0010012; break;
+ case 2000000: speed = 0010013; break;
+ case 2500000: speed = 0010014; break;
+ case 3000000: speed = 0010015; break;
+ case 3500000: speed = 0010016; break;
+ case 4000000: speed = 0010017; break;
+ default: throw invalid_argument("Serial::set_baud_rate");
}
- cfsetospeed(&state, speed);
- cfsetispeed(&state, speed);
+ int ret = cfsetospeed(&state, speed);
+ if(ret==0)
+ ret = cfsetispeed(&state, speed);
+ if(ret<0)
+ throw invalid_argument("Serial::set_baud_rate");
}
void Serial::DeviceState::set_data_bits(unsigned bits)
case 6: flag = CS6; break;
case 7: flag = CS7; break;
case 8: flag = CS8; break;
- default: throw invalid_argument("set_data_bits");
+ default: throw invalid_argument("Serial::set_data_bits");
}
state.c_cflag = (state.c_cflag&~CSIZE)|flag;
case Serial::NONE: flag = 0; break;
case Serial::EVEN: flag = PARENB; break;
case Serial::ODD: flag = PARENB|PARODD; break;
- default: throw invalid_argument("set_parity");
+ default: throw invalid_argument("Serial::set_parity");
}
state.c_cflag = (state.c_cflag&~(PARENB|PARODD))|flag;
{
case 1: flag = 0; break;
case 2: flag = CSTOPB; break;
- default: throw invalid_argument("set_stop_bits");
+ default: throw invalid_argument("Serial::set_stop_bits");
}
state.c_cflag = (state.c_cflag&~CSTOPB)|flag;