This is the mail archive of the
ecos-devel@sourceware.org
mailing list for the eCos project.
Re: tty.cdl
On Sun, 27 Mar 2011, Ilija Kocho wrote:
> On 26.03.2011 19:32, Sergei Gavrikov wrote:
> > On Sat, 26 Mar 2011, Ilija Kocho wrote:
> >
> >> Hello colleagues
> >>
> >> I need to extend tty.cdl in order to accommodate more than 4 serial
> >> ports, currently I need 6. I can simply add 2 port entries but i would
> >> prefer something like the snippet below. Either case I am ready to post
> >> to Bugzilla.
> >> Note: Similar case is with termios.cdl
> >>
> >> Please advise.
> >
> > Hi Ilija,
> >
> > It seems your issue cannot be solved by editing the config files *only*.
> > There are a couple of hardwired conditional definitions for device table
> > entries there, take a look at
> >
> > $ECOS_REPOSITORY/io/serial/<version>/src/common/tty.c
> > $ECOS_REPOSITORY/io/serial/<version>/src/common/termiostty.c
> >
> >
> > Sergei
> Hi Sergei
>
> Thanks for the notes. I tried to extend this concept to tty.c, please
> see attached CDL. Here are my questions.
>
> 1. The proc output is in io-serial.h and is protected to instantiate in
> only file that defines __CYGSEM_FILE_IS_IO_SERIAL_COMMON_TTY_C (tty.c)
> I would ask if it is possible to redirect puts to other file?
Hi Ilija,
I get it (about your attempting to build the in-lines using CDL), but, I
would keep things simpler, i.e. just would add two absent entries for
TTY4, TTY5, TTYx in tty.c. Those are conditional definitions depend on
cdl_component CYGPKG_IO_SERIAL_TTY_TTYx {
user_value 1
};
such things define itself if user enables TTYx
pkgconf/io_serial.h:
#define CYGPKG_IO_SERIAL_TTY_TTYx 1
#define CYGDAT_IO_SERIAL_TTY_TTYx_DEV "/dev/serX"
otherwise auto-generated io_serial.h header has no such definitions.
Right?
I dislike a complicated Tcl programming in eCos config files (however,
this is mine).
I tried such thing in config file
if {! [info exist ::env(ECOS_MAX_TTY_DEVS)]} {;# check env variable
set ::max_tty_devs 4
} {
set ::max_tty_devs $::env(ECOS_MAX_TTY_DEVS)
}
for { set ::device 0 } { $::device < $::max_tty_devs } { incr ::device } {
cdl_component CYGPKG_IO_SERIAL_TTY_TTY[set ::device] {
display "TTY mode channel #[set ::device]"
flavor bool
default_value 0
...
and if I've configured eCos as
% env ECOS_MAX_TTY_DEVS=6 ecosconfig new <target>
% env ECOS_MAX_TTY_DEVS=6 ecosconfig tree
I got 6 definitions for TTYs in eCos config. So, it was needed to add 2
new entries in tty.c *only* (just c&p) to get things spin.
Well, I tried
% export ECOS_MAX_TTY_DEVS=6
configtool
and, I've seen in CT
-[*] TTY mode serial device drivers
...
+ [ ] TTY mode for channel #0
...
+ [ ] TTY mode for channel #5
+ [ ] TTY mode for channel #6
However, I have nothing against hardwired iterators in {,termios}tty.cdl
For six? eight ports?
for { set ::device 0 } { $::device < 6 } { incr ::device } {
...
In any cases user should enable the Nth serial port for TTY/TERMIOS to
get the record in pkgconf/io_serial.h and this header is included in
tty.c and termiostty.c sources.
Sergei