-- 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
|