Messages in this thread | | | Date | Thu, 15 Oct 2009 22:58:03 +0200 | From | Peter Stuge <> | Subject | Hardware initialization in line discipline - ldisc_open() ? |
| |
I'm writing a line discipline for a serial port multiplexing hardware which turns one "upstream" serial port into 0-8 slower "downstream" serial ports, according to the number of modules installed on the multiplexer.
The attaching program transfers no data on the upstream port, all data will be to/from the ldisc itself, or to/from the downstream ports.
To know which modules are installed, and their configuration, the ldisc needs to perform a handshake using the same packet format as downstream port data transfers.
It would be nice to do this handshake in ldisc_open() so that the attach can fail if the hardware is not responding or just not connected.
Since the packet format is the same it would be easy to reuse the normal ldisc receive path for the handshake, however the ldisc would not see the response until after ldisc_open() has succeeded. Catch-22!
I'm hoping to use ldattach for attaching the ldisc because it's nice to have a standard utility, because it's nice to not duplicate the packet formatting/parsing code, and because the ldisc has to know which modules are installed in the hardware anyway, to create the correct downstream ports.
Can you suggest a solution to this problem? Ideally one that can be contained in the ldisc.
Thanks
//Peter
| |