+ int i;
+ struct EmulSerial *hw = (struct EmulSerial *)_hw;
+ TRACEMSG("rate=%d", rate);
+ for (i=0;i<sizeof(BaudRate)/sizeof(unsigned long);i++)
+ if (BaudRate[i]==rate)
+ break;
+ if (i<sizeof(BaudRate)/sizeof(unsigned long))
+ {
+ bzero(&newtio, sizeof(newtio));
+ newtio.c_cflag = BaudSetting[i] | CS8 | CLOCAL | CREAD;
+ newtio.c_iflag = IGNPAR ;
+ newtio.c_oflag &= ~OPOST;
+
+
+ /* set input mode (non-canonical, no echo,...) */
+ newtio.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
+
+ tcsetattr(hw->fd,TCSANOW,&newtio);
+ }
+ else
+ {
+ TRACEMSG("invalid rate %d", rate);
+ ASSERT(i<sizeof(BaudRate)/sizeof(unsigned long));
+ }
+