--  BSP.SIO -- Serial Input Output (Low level and polling driven)
--  Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
--  Written by Stephane Carrez (stcarrez@nerim.fr)
--
--  This file 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.
--
--  In addition to the permissions in the GNU General Public License, the
--  Free Software Foundation gives you unlimited permission to link the
--  compiled version of this file with other programs, and to distribute
--  those programs without any restriction coming from the use of this
--  file.  (The General Public License restrictions do apply in other
--  respects; for example, they cover modification of the file, and
--  distribution when not linked into another program.)
--
--  This file 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 this program; see the file COPYING.  If not, write to
--  the Free Software Foundation, 59 Temple Place - Suite 330,
--  Boston, MA 02111-1307, USA.
with BSP.Param;
with BSP.IO;
package body BSP.SIO is

   use BSP.IO;

   procedure Initialize is
   begin
      --  Setup baud rate.
      Ios.BAUD  := F_TCLR or BSP.Param.SIO_DEF_BAUD;
      --  Setup character format 1 start, 8-bits, 1 stop.
      Ios.SCCR1 := 0;
      --  Enable receive and send transmitters.
      Ios.SCCR2 := F_TE or F_RE;
   end Initialize;

   function Receive_Pending return Boolean is
   begin
      return (Ios.SCSR and F_RDRF) /= 0;
   end Receive_Pending;

   procedure Flush is
   begin
      while (Ios.SCSR and F_TDRE) = 0 loop
         if BSP.Param.SIO_RESET_COP then
            Ios.COPRST := 16#55#;
            Ios.COPRST := 16#AA#;
         end if;
      end loop;
   end Flush;

   procedure Send (C : in Character) is
   begin
      Flush;
      Ios.SCDR  := C;
      Ios.SCCR2 := Ios.SCCR2 or F_TE;
   end Send;

   procedure Send (S : in String) is
   begin
      for I in S'Range loop
         Send (S (I));
      end loop;
   end Send;

   function Receive return Character is
   begin
      while (Ios.SCSR and F_RDRF) /= 0 loop
         if Bsp.Param.SIO_RESET_COP then
            Ios.COPRST := 16#55#;
            Ios.COPRST := 16#AA#;
         end if;
      end loop;
      return Ios.SCDR;
   end Receive;

end BSP.SIO;


You may also see the corresponding specification.

You may also see the list of program units.

This hypertext format was generated by David A. Wheeler's ada2html