00001 #ifndef _DDL_LIB_H_
00002 #define _DDL_LIB_H_
00003
00004 #include <RORC/rorc_lib.h>
00005
00006 #include "rb.hh"
00007
00008 class ddlDriver : public rb {
00009 public:
00010 ddlDriver(int board, int channel, int fifo_cou, u_int buff_bytes) ;
00011 ~ddlDriver() { ; } ;
00012
00013 int open(char *vbuff = 0, u_int pbuff = 0) ;
00014 void close() ;
00015
00016 int start(u_int what=4) ;
00017 int stop() ;
00018
00019
00020 int cmd(u_char cmd, u_int param=0, u_int dest=4) ;
00021 int read(u_int param=0) ;
00022
00023 int write(char *inbuff, int bytes, int no_delay=0, int param=0) ;
00024
00025 int link_check() ;
00026
00027 int busy() ;
00028
00029 int mark(char *addr, u_int how) ;
00030 int get(char **addr, u_int *status) ;
00031 int get_priority(char **addr, u_int *status, int *ix=0) ;
00032 int free(char *addr) ;
00033 int free_ix(int ix) ;
00034
00035 int get_free_fifos() ;
00036
00037 void emu_place_event(int ix, char *data, int bytes) ;
00038 void emu_go() ;
00039
00040 u_int status ;
00041
00042 int start_ix ;
00043
00044 unsigned int fifo_order[128] ;
00045 unsigned int fifo_order_cou ;
00046
00047 private:
00048
00049
00050 u_int phys_buff ;
00051
00052
00053
00054
00055
00056
00057 rorcDescriptor_t dev ;
00058
00059
00060
00061 volatile u_int sfifo_p ;
00062
00063
00064 u_int sbuff_p ;
00065
00066
00067 volatile u_int rfifo_p ;
00068
00069
00070 u_int rbuff_p ;
00071
00072
00073 int set_base(char *vbuff, u_int pbuff) ;
00074 } ;
00075
00076
00077 #endif