Re: tty.cdl
Ilija Kocho <[email protected]>
| Newsgroups | gmane.os.ecos.devel |
|---|---|
| Message-ID | <[email protected]> |
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? 2. This may be question for John. CYGOPT_IO_SERIAL_PROC_INCREMENTER interface is used as a stealth container for define_proc. I guess this is not a typical usage of cdl_interface. Could it cause a trouble? Note: I haven't tested compilation yet, only header generation. If this approach is considered acceptable I would produce required changes in tty.c and post a bug on Bugzilla. Regards Ilija
tty.cdl
(text/plain, 5.4 KB)
# ====================================================================
#
# tty.cdl
#
# eCos serial TTY configuration data
#
# ====================================================================
## ####ECOSGPLCOPYRIGHTBEGIN####
## -------------------------------------------
## This file is part of eCos, the Embedded Configurable Operating System.
## Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
##
## eCos is free software; you can redistribute it and/or modify it under
## the terms of the GNU General Public License as published by the Free
## Software Foundation; either version 2 or (at your option) any later
## version.
##
## eCos is distributed in the hope that it will be useful, but WITHOUT
## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
## for more details.
##
## You should have received a copy of the GNU General Public License
## along with eCos; if not, write to the Free Software Foundation, Inc.,
## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
##
## As a special exception, if other files instantiate templates or use
## macros or inline functions from this file, or you compile this file
## and link it with other works to produce a work based on this file,
## this file does not by itself cause the resulting work to be covered by
## the GNU General Public License. However the source code for this file
## must still be made available in accordance with section (3) of the GNU
## General Public License v2.
##
## This exception does not invalidate any other reasons why a work based
## on this file might be covered by the GNU General Public License.
## -------------------------------------------
## ####ECOSGPLCOPYRIGHTEND####
# ====================================================================
######DESCRIPTIONBEGIN####
#
# Author(s): jskov
# Original data: gthomas
# Contributors: ilijak
# Date: 1999-07-07
#
#####DESCRIPTIONEND####
#
# ====================================================================
#define_header "tty_defices.inl"
cdl_component CYGPKG_IO_SERIAL_HALDIAG {
display "HAL/diag serial device driver"
flavor bool
default_value 1
description "
This option enables the use of the HAL diagnostic channel
via the standard I/O drivers."
compile -library=libextras.a common/haldiag.c
}
cdl_option CYGDAT_IO_SERIAL_TTY_CONSOLE {
display "Console device name"
flavor data
default_value {"\"/dev/ttydiag\""}
description "
This option selects the TTY device to use for the console."
}
cdl_component CYGPKG_IO_SERIAL_TTY_TTYDIAG {
display "TTY mode HAL/diag channel"
flavor bool
default_value 1
description "
This option causes '/dev/ttydiag' to be included in the standard
drivers."
}
# Proc index
set proc_i 0
# Workarround to prevent configtool crash
set __dev "_DEV"
for { set ::channel 0 } { $::channel < 6 } { incr ::channel } {
cdl_interface CYGINT_IO_SERIAL_TTY_TTY[set ::channel] {
}
cdl_component CYGPKG_IO_SERIAL_TTY_TTY[set ::channel] {
display "TTY mode channel #[set ::channel]"
# active_if CYGINT_IO_SERIAL_TTY_TTY[set ::channel]
flavor bool
default_value 0
define_proc {
puts $::cdl_header ""
puts $::cdl_header "#ifdef __CYGSEM_FILE_IS_IO_SERIAL_COMMON_TTY_C"
puts $::cdl_header "static struct tty_private_info tty_private_info$proc_i;"
puts $::cdl_header "DEVTAB_ENTRY(tty_io$proc_i,"
puts $::cdl_header " \"/dev/tty$proc_i\","
puts $::cdl_header " CYGDAT_IO_SERIAL_TTY_TTY$proc_i$__dev,"
puts $::cdl_header " &tty_devio,"
puts $::cdl_header " tty_init,"
puts $::cdl_header " tty_lookup,"
puts $::cdl_header " &tty_private_info$proc_i);"
puts $::cdl_header "#endif // __CYGSEM_FILE_IS_IO_SERIAL_COMMON_TTY_C"
puts $::cdl_header ""
}
description "
This option causes '/dev/tty[set ::channel]' to be included in the standard
drivers."
cdl_option CYGDAT_IO_SERIAL_TTY_TTY[set ::channel]_DEV {
display "TTY mode channel #[set ::channel] device"
flavor data
default_value [ format { "\"/dev/ser%d\"" } $::channel ]
description "
This option selects the physical device to use for
'/dev/tty[set ::channel]'."
}
}
cdl_interface CYGOPT_IO_SERIAL_PROC_INCREMENTER[set ::channel] {
no_define
define_proc {
incr proc_i
}
description "Increment proc_i for every tty - active or inactive."
}
}
cdl_interface CYGOPT_IO_SERIAL_PROC_ZERO {
no_define
define_proc {
set proc_i 0
}
description "Reset proc_i for next save."
}