/** @file sdb.c
 *  @brief Implement the SDB data structure on the local bus.
 *
 *  Copyright (C) 2011-2012 GSI Helmholtz Centre for Heavy Ion Research GmbH 
 *
 *  We reserved the low 8K memory region for this device.
 *
 *  @author Wesley W. Terpstra <w.terpstra@gsi.de>
 *
 *  @bug None!
 *
 *******************************************************************************
 *  This library is free software; you can redistribute it and/or
 *  modify it under the terms of the GNU Lesser General Public
 *  License as published by the Free Software Foundation; either
 *  version 3 of the License, or (at your option) any later version.
 *
 *  This library 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
 *  Lesser General Public License for more details.
 *  
 *  You should have received a copy of the GNU Lesser General Public
 *  License along with this library. If not, see <http://www.gnu.org/licenses/>.
 *******************************************************************************
 */

#ifndef SDB_H
#define SDB_H

#include "../etherbone.h"

typedef EB_POINTER(eb_sdb_scan) eb_sdb_scan_t;
struct eb_sdb_scan {
  eb_user_data_t user_data;
  sdb_callback_t cb;
  eb_address_t bus_base;
};

typedef EB_POINTER(eb_sdb_record) eb_sdb_record_t;
struct eb_sdb_record {
  eb_sdb_scan_t scan;
  eb_operation_t ops;
  int16_t status;
  uint32_t pending;
};

EB_PRIVATE eb_data_t eb_sdb(eb_socket_t socket, eb_width_t width, eb_address_t addr);

#endif