X-Spam-Check-By: sourceware.org Message-ID: <4e41f5c20701091003y44b29b61q8dd715aeadd0a852@mail.gmail.com> Date: Tue, 9 Jan 2007 11:03:43 -0700 From: "Morgan Gangwere" <0 DOT fractalus AT gmail DOT com> To: cygwin AT cygwin DOT com Subject: Re: Support for Baud Rates above 250000 baud? In-Reply-To: <45A34E7D.6ABD61F5@dessent.net> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <45A34258 DOT 7040709 AT avegasystems DOT com> <45A34E7D DOT 6ABD61F5 AT dessent DOT net> X-IsSubscribed: yes Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com what I would do is have say Minicom try and talk at those rates first. another option is to have a file like "newbaud.h" that looks like this: //-------------------------------- // newbaud.h -high speed baud rate functions //-------------------------------- #IFNDEF NEWBAUD_H #DEFINE NEWBAUD_H int setbaud(int baudrate, int port) { // this sets the buad rate to baudrate //... if(sucess) { return 1} else {return failure} //... } #ENDIF where failiure would be used for the FAILIURE MODE. IAGT, it should never happen, as you should always be able to set the baud rate On 1/9/07, Brian Dessent wrote: > David le Comte wrote: > > > I am running Cygwin on a PC that is running Windows XP. My Cygwin > > version is "CYGWIN_NT-5.1" and it was downloaded and installed late last > > No, it's not. The output from uname tells us nothing about which > version of Cygwin (or any of the other of dozens of packages you might > have installed), rather it simply means that you are running Windows NT > version 5.1, aka Windows XP. The current version of Cygwin is 1.5.23-2, > and if you want to include helpful information try attaching the output > of "cygcheck -svr" as requested in the posting instructions. > > > Adding entries into termios.h for higher > > baudrates using the convention that B460800 was 0x01006, > > B500000 was 0x01007, and B921600 was 0x01008 > > caused errors. > > > > #define B230400 0x01004 > > #define B256000 0x01005 > > /* 3 new entries - as an experiement to see if it works */ > > #define B460800 0x01006 > > #define B500000 0x01007 > > #define B921600 0x01008 > > > > The calls to cfsetispeed() and cfsetospeed() failed. Not unsurprising, > > as one could assume that they had been using the original termios.h when > > they were compiled. > > This is a Very Bad Idea in general. You can't just add new defines to a > header file and expect it to work. The header is an indication of what > a library supports, it is a one-way street. > > > 1) Is there a build available for Cygwin (on a Windows platform) that > > has support for higher baud rates? If so, does anyone know where I > > could find it? > > That's kind of an odd question. Cygwin is open source and of course > people are free to take it and patch it to do whatever they want, so > it's certainly possible that someone has patched their Cygwin to allow > other baud rate settings. But if they did it would be a separate > project and off-topic for this list, and I'm not aware of any such thing > existing. > > Occasionally new features are added to the code which have yet to be > included in released versions, in which case users are directed to try > the new code in the Cygwin snapshots which are provided on cygwin.com, > but in this case that's not an issue as I'm not aware of any recent > changes to this part of the code. > > > 2) Assuming there is no such build available, are there plans to add > > support for higher baud rates? If so, does anyone know when? > > > > 2) Would it be difficult to download the appropriate source files, modify > > them, and make my own Cygwin build? (The idea of doing this terrifies > > me by the way). If it is possible, could someone give me some pointers > > on how to do this? > > If you read the Win32 API docs for SetCommState() > and struct DCB: > you see the > canonical list of #defined baud rates that Win32 supports. But there's > also this tidbit: "This member can be an actual baud rate value, or one > of the following indexes." > > So from this we can see that Win32 supports arbitrary baud rates (with a > certain list of #defined standard ones) whereas the POSIX termios.h / > speed_t API that Cygwin is emulating does not have the capability to set > the rate arbitarily. Thus, any baud rate can be supported, but the code > has to exist to do the mapping of the symbolic constant. You can see > this happening in fhandler_serial.cc, which does the actual mapping of > termios to filling the Win32 struct DCB: > > case B110: > state.BaudRate = CBR_110; > break; > case B300: > state.BaudRate = CBR_300; > break; > case B600: > state.BaudRate = CBR_600; > break; > case B1200: > state.BaudRate = CBR_1200; > break; > case B2400: > state.BaudRate = CBR_2400; > break; > case B4800: > state.BaudRate = CBR_4800; > break; > case B9600: > state.BaudRate = CBR_9600; > break; > case B19200: > state.BaudRate = CBR_19200; > break; > case B38400: > state.BaudRate = CBR_38400; > break; > case B57600: > state.BaudRate = CBR_57600; > break; > case B115200: > state.BaudRate = CBR_115200; > break; > case B230400: > state.BaudRate = 230400 /* CBR_230400 - not defined */; > break; > default: > /* Unsupported baud rate! */ > termios_printf ("Invalid t->c_ospeed %d", t->c_ospeed); > set_errno (EINVAL); > return -1; > } > > Thus it appears that it should be easily possible to add a Bxxxxx define > for any desired baud rate, as long as you update termios.h and > fhandler_serial.cc to know about it. So yes, you could just make this > change and rebuild a local cygwin1.dll that supports it. Building > cygwin1.dll is not much different than any other autoconf-style package > and there are instructions in the Users Guide (or the FAQ, I can't > remember.) It would be better however to somehow figure out a list of > the missing standard baud rates that are in common use and submit a > patch to add them upstream, rather than just ad hoc adding whatever you > need. > > Brian > > -- > Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple > Problem reports: http://cygwin.com/problems.html > Documentation: http://cygwin.com/docs.html > FAQ: http://cygwin.com/faq/ > > -- Morgan gangwere "Space does not reflect society, it expresses it." -- Castells, M., Space of Flows, Space of Places: Materials for a Theory of Urbanism in the Information Age, in The Cybercities Reader, S. Graham, Editor. 2004, Routledge: London. p. 82-93. -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/