public inbox for ecos-devel@sourceware.org
 help / color / mirror / Atom feed
From: Ilija Kocho <ilijak@siva.com.mk>
To: ecos-devel@ecos.sourceware.org
Subject: Re: tty.cdl
Date: Sun, 27 Mar 2011 11:40:00 -0000	[thread overview]
Message-ID: <4D8F2207.7070701@siva.com.mk> (raw)
In-Reply-To: <alpine.DEB.2.00.1103262013330.1833@sg-laptop>

[-- Attachment #1: Type: text/plain, Size: 1475 bytes --]

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

[-- Attachment #2: tty.cdl --]
[-- Type: text/plain, Size: 5487 bytes --]

# ====================================================================
#
#      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."
}


  reply	other threads:[~2011-03-27 11:40 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-03-26 10:22 tty.cdl Ilija Kocho
2011-03-26 18:33 ` tty.cdl Sergei Gavrikov
2011-03-27 11:40   ` Ilija Kocho [this message]
2011-03-27 12:45     ` tty.cdl Sergei Gavrikov
2011-03-27 15:46       ` tty.cdl Ilija Kocho
2011-03-27 17:11         ` tty.cdl Sergei Gavrikov
2011-03-27 19:34           ` tty.cdl Ilija Kocho
2011-03-27 19:39             ` tty.cdl Sergei Gavrikov
2011-03-27 19:55               ` tty.cdl Ilija Kocho
2011-03-27 21:11                 ` tty.cdl Sergei Gavrikov
2011-03-28 10:42                   ` tty.cdl Ilija Kocho
2011-03-28 12:16                     ` tty.cdl Sergei Gavrikov
2011-03-28 19:00                       ` tty.cdl Ilija Kocho
2011-03-28 19:25                         ` tty.cdl Sergei Gavrikov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4D8F2207.7070701@siva.com.mk \
    --to=ilijak@siva.com.mk \
    --cc=ecos-devel@ecos.sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).