|  |  | 
|  | /* | 
|  | * | 
|  | Copyright (c) Eicon Networks, 2002. | 
|  | * | 
|  | This source file is supplied for the use with | 
|  | Eicon Networks range of DIVA Server Adapters. | 
|  | * | 
|  | Eicon File Revision :    2.1 | 
|  | * | 
|  | This program 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. | 
|  | * | 
|  | This program is distributed in the hope that it will be useful, | 
|  | but WITHOUT ANY WARRANTY OF ANY KIND WHATSOEVER INCLUDING ANY | 
|  | 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; if not, write to the Free Software | 
|  | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | 
|  | * | 
|  | */ | 
|  | /* | 
|  | *  some macros for detailed trace management | 
|  | */ | 
|  | #include "di_dbg.h" | 
|  | /*****************************************************************************/ | 
|  | #define XMOREC 0x1f | 
|  | #define XMOREF 0x20 | 
|  | #define XBUSY  0x40 | 
|  | #define RMORE  0x80 | 
|  | #define DIVA_MISC_FLAGS_REMOVE_PENDING    0x01 | 
|  | #define DIVA_MISC_FLAGS_NO_RC_CANCELLING  0x02 | 
|  | #define DIVA_MISC_FLAGS_RX_DMA            0x04 | 
|  | /* structure for all information we have to keep on a per   */ | 
|  | /* adapater basis                                           */ | 
|  | typedef struct adapter_s ADAPTER; | 
|  | struct adapter_s { | 
|  | void * io; | 
|  | byte IdTable[256]; | 
|  | byte IdTypeTable[256]; | 
|  | byte FlowControlIdTable[256]; | 
|  | byte FlowControlSkipTable[256]; | 
|  | byte ReadyInt; | 
|  | byte RcExtensionSupported; | 
|  | byte misc_flags_table[256]; | 
|  | dword protocol_capabilities; | 
|  | byte ( * ram_in)(ADAPTER * a, void * adr); | 
|  | word ( * ram_inw)(ADAPTER * a, void * adr); | 
|  | void (* ram_in_buffer)(ADAPTER * a, void * adr, void  * P, word length); | 
|  | void (* ram_look_ahead)(ADAPTER * a, PBUFFER * RBuffer, ENTITY  * e); | 
|  | void ( * ram_out)(ADAPTER * a, void * adr, byte data); | 
|  | void ( * ram_outw)(ADAPTER * a, void * adr, word data); | 
|  | void (* ram_out_buffer)(ADAPTER * a, void * adr, void  * P, word length); | 
|  | void ( * ram_inc)(ADAPTER * a, void * adr); | 
|  | #if defined(DIVA_ISTREAM) | 
|  | dword rx_stream[256]; | 
|  | dword tx_stream[256]; | 
|  | word tx_pos[256]; | 
|  | word rx_pos[256]; | 
|  | byte stream_buffer[2512]; | 
|  | dword ( * ram_offset)(ADAPTER * a); | 
|  | void ( * ram_out_dw) (ADAPTER *a, | 
|  | void *addr, | 
|  | const dword* data, | 
|  | int dwords); | 
|  | void ( * ram_in_dw) (ADAPTER *a, | 
|  | void *addr, | 
|  | dword* data, | 
|  | int dwords); | 
|  | void ( * istream_wakeup)(ADAPTER* a); | 
|  | #else | 
|  | byte stream_buffer[4]; | 
|  | #endif | 
|  | }; | 
|  | /*------------------------------------------------------------------*/ | 
|  | /* public functions of IDI common code                              */ | 
|  | /*------------------------------------------------------------------*/ | 
|  | void pr_out(ADAPTER * a); | 
|  | byte pr_dpc(ADAPTER * a); | 
|  | byte scom_test_int(ADAPTER * a); | 
|  | void scom_clear_int(ADAPTER * a); | 
|  | /*------------------------------------------------------------------*/ | 
|  | /* OS specific functions used by IDI common code                    */ | 
|  | /*------------------------------------------------------------------*/ | 
|  | void free_entity(ADAPTER * a, byte e_no); | 
|  | void assign_queue(ADAPTER * a, byte e_no, word ref); | 
|  | byte get_assign(ADAPTER * a, word ref); | 
|  | void req_queue(ADAPTER * a, byte e_no); | 
|  | byte look_req(ADAPTER * a); | 
|  | void next_req(ADAPTER * a); | 
|  | ENTITY  * entity_ptr(ADAPTER * a, byte e_no); | 
|  | #if defined(DIVA_ISTREAM) | 
|  | struct _diva_xdi_stream_interface; | 
|  | void diva_xdi_provide_istream_info (ADAPTER* a, | 
|  | struct _diva_xdi_stream_interface* pI); | 
|  | void pr_stream (ADAPTER * a); | 
|  | int diva_istream_write (void* context, | 
|  | int Id, | 
|  | void* data, | 
|  | int length, | 
|  | int final, | 
|  | byte usr1, | 
|  | byte usr2); | 
|  | int diva_istream_read (void* context, | 
|  | int Id, | 
|  | void* data, | 
|  | int max_length, | 
|  | int* final, | 
|  | byte* usr1, | 
|  | byte* usr2); | 
|  | #if defined(DIVA_IDI_RX_DMA) | 
|  | #include "diva_dma.h" | 
|  | #endif | 
|  | #endif |