summaryrefslogtreecommitdiff
path: root/ACE/examples/IPC_SAP/DEV_SAP
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/examples/IPC_SAP/DEV_SAP')
-rw-r--r--ACE/examples/IPC_SAP/DEV_SAP/Makefile.am14
-rw-r--r--ACE/examples/IPC_SAP/DEV_SAP/README23
-rw-r--r--ACE/examples/IPC_SAP/DEV_SAP/reader/Makefile.am39
-rw-r--r--ACE/examples/IPC_SAP/DEV_SAP/reader/dev_sap_reader.mpc11
-rw-r--r--ACE/examples/IPC_SAP/DEV_SAP/reader/reader.cpp72
-rw-r--r--ACE/examples/IPC_SAP/DEV_SAP/writer/Makefile.am39
-rw-r--r--ACE/examples/IPC_SAP/DEV_SAP/writer/dev_sap_writer.mpc11
-rw-r--r--ACE/examples/IPC_SAP/DEV_SAP/writer/writer.cpp77
8 files changed, 286 insertions, 0 deletions
diff --git a/ACE/examples/IPC_SAP/DEV_SAP/Makefile.am b/ACE/examples/IPC_SAP/DEV_SAP/Makefile.am
new file mode 100644
index 00000000000..ecc65507d22
--- /dev/null
+++ b/ACE/examples/IPC_SAP/DEV_SAP/Makefile.am
@@ -0,0 +1,14 @@
+## Process this file with automake to create Makefile.in
+##
+## $Id$
+##
+## This file was generated by MPC. Any changes made directly to
+## this file will be lost the next time it is generated.
+##
+## MPC Command:
+## ./bin/mwc.pl -type automake -noreldefs ACE.mwc
+
+SUBDIRS = \
+ reader \
+ writer
+
diff --git a/ACE/examples/IPC_SAP/DEV_SAP/README b/ACE/examples/IPC_SAP/DEV_SAP/README
new file mode 100644
index 00000000000..8e47d8c5cec
--- /dev/null
+++ b/ACE/examples/IPC_SAP/DEV_SAP/README
@@ -0,0 +1,23 @@
+This directory contains a test example for the DEV_SAP
+class category. It implements a class TTY_IO that is
+derived from ACE_DEV_IO and adds a control method
+with specific features for a serial line connection
+(e.g. /dev/ttya and /dev/ttyb on UNIX systems).
+
+The reader/reader executable initializes its
+device-special file (given as command-line parameter),
+reads characters from it (until it recognizes character 'q')
+ands sends the characters read to stdout.
+
+The writer/writer executable also initializes its
+device-special file (given as command-line parameter),
+reads characters from stdin (until'q') and sends them
+to the device.
+
+To run the tests I connect /dev/ttya and /dev/ttyb (with a
+zero modem cable) and start the reader with "reader /dev/ttya"
+and the writer (in a different window) with "writer /dev/ttyb".
+
+Characters typed in the writer window should now appear as output
+in the reader window. Note that characters are buffered till EOL.
+
diff --git a/ACE/examples/IPC_SAP/DEV_SAP/reader/Makefile.am b/ACE/examples/IPC_SAP/DEV_SAP/reader/Makefile.am
new file mode 100644
index 00000000000..ebd4eb798b8
--- /dev/null
+++ b/ACE/examples/IPC_SAP/DEV_SAP/reader/Makefile.am
@@ -0,0 +1,39 @@
+## Process this file with automake to create Makefile.in
+##
+## $Id$
+##
+## This file was generated by MPC. Any changes made directly to
+## this file will be lost the next time it is generated.
+##
+## MPC Command:
+## ./bin/mwc.pl -type automake -noreldefs ACE.mwc
+
+ACE_BUILDDIR = $(top_builddir)
+ACE_ROOT = $(top_srcdir)
+
+
+## Makefile.dev_sap_reader.am
+
+if !BUILD_ACE_FOR_TAO
+
+noinst_PROGRAMS = reader
+
+reader_CPPFLAGS = \
+ -I$(ACE_ROOT) \
+ -I$(ACE_BUILDDIR)
+
+reader_SOURCES = \
+ reader.cpp
+
+reader_LDADD = \
+ $(ACE_BUILDDIR)/ace/libACE.la
+
+endif !BUILD_ACE_FOR_TAO
+
+## Clean up template repositories, etc.
+clean-local:
+ -rm -f *~ *.bak *.rpo *.sym lib*.*_pure_* core core.*
+ -rm -f gcctemp.c gcctemp so_locations *.ics
+ -rm -rf cxx_repository ptrepository ti_files
+ -rm -rf templateregistry ir.out
+ -rm -rf ptrepository SunWS_cache Templates.DB
diff --git a/ACE/examples/IPC_SAP/DEV_SAP/reader/dev_sap_reader.mpc b/ACE/examples/IPC_SAP/DEV_SAP/reader/dev_sap_reader.mpc
new file mode 100644
index 00000000000..a6535c82e82
--- /dev/null
+++ b/ACE/examples/IPC_SAP/DEV_SAP/reader/dev_sap_reader.mpc
@@ -0,0 +1,11 @@
+// -*- MPC -*-
+// $Id$
+
+project : aceexe {
+ avoids += ace_for_tao
+ exename = reader
+ Source_Files {
+ reader.cpp
+ }
+}
+
diff --git a/ACE/examples/IPC_SAP/DEV_SAP/reader/reader.cpp b/ACE/examples/IPC_SAP/DEV_SAP/reader/reader.cpp
new file mode 100644
index 00000000000..60bfa446c2f
--- /dev/null
+++ b/ACE/examples/IPC_SAP/DEV_SAP/reader/reader.cpp
@@ -0,0 +1,72 @@
+// $Id$
+
+#include "ace/DEV_Addr.h"
+#include "ace/DEV_Connector.h"
+#include "ace/TTY_IO.h"
+
+ACE_RCSID(reader, reader, "$Id$")
+
+int ACE_TMAIN (int argc, ACE_TCHAR *argv[])
+{
+ if (argc < 2)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT ("usage: %s device-filename\n"),
+ argv[0]),
+ 1);
+
+ ACE_TTY_IO read_dev;
+ ACE_DEV_Connector con;
+
+ if (con.connect (read_dev,
+ ACE_DEV_Addr (argv[1])) == -1)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT ("%p\n"),
+ argv[1]),
+ 1);
+
+ ACE_TTY_IO::Serial_Params myparams;
+ myparams.baudrate = 19200;
+ myparams.xonlim = 0;
+ myparams.xofflim = 0;
+ myparams.readmincharacters = 0;
+ myparams.readtimeoutmsec = 10*1000; // 10 seconds
+ myparams.paritymode = "EVEN";
+ myparams.ctsenb = false;
+ myparams.rtsenb = 0;
+ myparams.xinenb = false;
+ myparams.xoutenb = false;
+ myparams.modem = false;
+ myparams.rcvenb = true;
+ myparams.dsrenb = false;
+ myparams.dtrdisable = false;
+ myparams.databits = 8;
+ myparams.stopbits = 1;
+
+ if (read_dev.control (ACE_TTY_IO::SETPARAMS,
+ &myparams) == -1)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT ("%p control\n"),
+ argv[1]),
+ 1);
+
+ // Read till character 'q'.
+ for (char readback = 'x'; readback != 'q'; )
+ {
+ ssize_t bytes_read =
+ read_dev.recv ((void *) &readback, 1);
+
+ if (bytes_read == 1)
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("read: %c\n"),
+ readback));
+ else if (bytes_read == 0)
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("timeout!\n")));
+ else if (bytes_read == -1)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT ("%p recv\n"),
+ argv[1]), 1);
+ }
+
+ return 0;
+}
diff --git a/ACE/examples/IPC_SAP/DEV_SAP/writer/Makefile.am b/ACE/examples/IPC_SAP/DEV_SAP/writer/Makefile.am
new file mode 100644
index 00000000000..b660839e482
--- /dev/null
+++ b/ACE/examples/IPC_SAP/DEV_SAP/writer/Makefile.am
@@ -0,0 +1,39 @@
+## Process this file with automake to create Makefile.in
+##
+## $Id$
+##
+## This file was generated by MPC. Any changes made directly to
+## this file will be lost the next time it is generated.
+##
+## MPC Command:
+## ./bin/mwc.pl -type automake -noreldefs ACE.mwc
+
+ACE_BUILDDIR = $(top_builddir)
+ACE_ROOT = $(top_srcdir)
+
+
+## Makefile.dev_sap_writer.am
+
+if !BUILD_ACE_FOR_TAO
+
+noinst_PROGRAMS = writer
+
+writer_CPPFLAGS = \
+ -I$(ACE_ROOT) \
+ -I$(ACE_BUILDDIR)
+
+writer_SOURCES = \
+ writer.cpp
+
+writer_LDADD = \
+ $(ACE_BUILDDIR)/ace/libACE.la
+
+endif !BUILD_ACE_FOR_TAO
+
+## Clean up template repositories, etc.
+clean-local:
+ -rm -f *~ *.bak *.rpo *.sym lib*.*_pure_* core core.*
+ -rm -f gcctemp.c gcctemp so_locations *.ics
+ -rm -rf cxx_repository ptrepository ti_files
+ -rm -rf templateregistry ir.out
+ -rm -rf ptrepository SunWS_cache Templates.DB
diff --git a/ACE/examples/IPC_SAP/DEV_SAP/writer/dev_sap_writer.mpc b/ACE/examples/IPC_SAP/DEV_SAP/writer/dev_sap_writer.mpc
new file mode 100644
index 00000000000..75486584b6d
--- /dev/null
+++ b/ACE/examples/IPC_SAP/DEV_SAP/writer/dev_sap_writer.mpc
@@ -0,0 +1,11 @@
+// -*- MPC -*-
+// $Id$
+
+project : aceexe {
+ avoids += ace_for_tao
+ exename = writer
+ Source_Files {
+ writer.cpp
+ }
+}
+
diff --git a/ACE/examples/IPC_SAP/DEV_SAP/writer/writer.cpp b/ACE/examples/IPC_SAP/DEV_SAP/writer/writer.cpp
new file mode 100644
index 00000000000..a61b8ca2b8d
--- /dev/null
+++ b/ACE/examples/IPC_SAP/DEV_SAP/writer/writer.cpp
@@ -0,0 +1,77 @@
+// $Id$
+
+#include "ace/DEV_Connector.h"
+#include "ace/TTY_IO.h"
+#include "ace/OS_NS_unistd.h"
+
+ACE_RCSID(writer, writer, "$Id$")
+
+int ACE_TMAIN (int argc, ACE_TCHAR *argv[])
+{
+ if (argc < 2)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT ("usage: %s device-filename\n"),
+ argv[0]), 1);
+
+ ACE_TTY_IO write_dev;
+ ACE_DEV_Connector con;
+
+ if (con.connect (write_dev,
+ ACE_DEV_Addr (argv[1])) == -1)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT ("%p\n"),
+ argv[1]),
+ 1);
+
+ ACE_TTY_IO::Serial_Params myparams;
+ myparams.baudrate = 19200;
+ myparams.xonlim = 0;
+ myparams.xofflim = 0;
+ myparams.readmincharacters = 0;
+ myparams.readtimeoutmsec = 10000;
+ myparams.paritymode = "EVEN";
+ myparams.ctsenb = false;
+ myparams.rtsenb = 0;
+ myparams.xinenb = false;
+ myparams.xoutenb = false;
+ myparams.modem = false;
+ myparams.rcvenb = true;
+ myparams.dsrenb = false;
+ myparams.dtrdisable = false;
+ myparams.databits = 8;
+ myparams.stopbits = 1;
+
+ if (write_dev.control (ACE_TTY_IO::SETPARAMS,
+ &myparams) == -1)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT ("%p\n"),
+ ACE_TEXT ("control")),
+ 1);
+
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("enter character to send, q terminates :\n")));
+
+ for (char writeto;
+ ACE_OS::read (ACE_STDIN, &writeto, 1) != -1;
+ )
+ {
+ ssize_t bytes_written =
+ write_dev.send_n ((void *) &writeto,
+ 1);
+
+ if (bytes_written != 1)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT ("%p\n"),
+ ACE_TEXT ("send")),
+ 1);
+ if (writeto == 'q')
+ break;
+ }
+
+ if (write_dev.close () == -1)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT ("%p\n"),
+ ACE_TEXT ("close")),
+ 1);
+ return 0;
+}