(* libsimpleio bindings for GNU Modula-2 *)

(* Copyright (C)2018-2023, Philip Munts dba Munts Technologies.                *)
(*                                                                             *)
(* Redistribution and use in source and binary forms, with or without          *)
(* modification, are permitted provided that the following conditions are met: *)
(*                                                                             *)
(* * Redistributions of source code must retain the above copyright notice,    *)
(*   this list of conditions and the following disclaimer.                     *)
(*                                                                             *)
(* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" *)
(* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE   *)
(* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE  *)
(* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE   *)
(* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR         *)
(* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF        *)
(* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS    *)
(* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN     *)
(* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)     *)
(* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE  *)
(* POSSIBILITY OF SUCH DAMAGE.                                                 *)

DEFINITION MODULE FOR "C" libspi;

  IMPORT
    SYSTEM;

  EXPORT UNQUALIFIED
    AUTO_CS,
    SPI_open,
    SPI_close,
    SPI_transaction;

  CONST
    AUTO_CS = -1;

  PROCEDURE SPI_open
   (name      : ARRAY OF CHAR;
    mode      : CARDINAL;
    wordsize  : CARDINAL;
    speed     : CARDINAL;
    VAR spifd : INTEGER;
    VAR error : CARDINAL);

  PROCEDURE SPI_close
   (spifd     : INTEGER;
    VAR error : CARDINAL);

  PROCEDURE SPI_transaction
   (spifd     : INTEGER;
    csfd      : INTEGER;
    cmd       : SYSTEM.ADDRESS;
    cmdlen    : CARDINAL;
    delayus   : CARDINAL;
    resp      : SYSTEM.ADDRESS;
    resplen   : CARDINAL;
    VAR error : CARDINAL);

END libspi.
