Mail Archives: cygwin/2007/01/09/13:04:17
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:
<! Begin >
//--------------------------------
// 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 <brian AT dessent DOT net> 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()
> <http://msdn2.microsoft.com/en-us/library/aa363436.aspx> and struct DCB:
> <http://msdn2.microsoft.com/en-us/library/aa363214.aspx> 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/
- Raw text -