00001 #ifndef _RB_HH_
00002 #define _RB_HH_
00003
00004 #include <stdio.h>
00005 #include <sys/types.h>
00006 #include <unistd.h>
00007 #include <pthread.h>
00008 #include <signal.h>
00009 #include <sys/socket.h>
00010 #include <netinet/in.h>
00011 #include <arpa/inet.h>
00012 #include <netdb.h>
00013 #include <errno.h>
00014 #include <string.h>
00015
00016
00017 #include <RORC/rorc_lib.h>
00018
00019
00020
00021 class rb {
00022 public:
00023
00024 typedef rorcReadyFifo_t rbFifo_t ;
00025
00026 rb(int board, int ch, int fifo_cou, u_int buff_bytes) { emulation = 0 ;} ;
00027 virtual ~rb() { } ;
00028
00029
00030
00031 virtual int cmd(u_char cmd, u_int param=0, u_int dest=4) { LOG(DBG,"Sending cmd") ; return 0 ; } ;
00032 virtual int read(u_int param=0) { return 0 ; } ;
00033 virtual int write(char *inbuff, int bytes, int nodelay=0, int param=0) { return 0 ; } ;
00034 virtual int busy() { return 0 ; } ;
00035 virtual int config(int emul=0) { return 0 ; } ;
00036
00037 virtual int open(char *vbuff = 0, u_int pbuf = 0) { return 0 ; } ;
00038 virtual void close() { return ; } ;
00039
00040 virtual int start(u_int w=4) = 0 ;
00041 virtual int stop() = 0 ;
00042
00043 virtual int get(char **addr, u_int *status) = 0 ;
00044 virtual int get_priority(char **addr, u_int *status, int *fifo_ix=0) {
00045 if(fifo_ix) *fifo_ix = -1 ;
00046 return get(addr,status) ;
00047 }
00048
00049 virtual int free(char *addr) = 0 ;
00050 virtual int free_ix(int ix) = 0 ;
00051
00052 virtual int mark(char *addr, u_int how=0) = 0 ;
00053
00054 virtual int inject(int token) { return -1 ; } ;
00055
00056 virtual int link_check() { return 0 ; } ;
00057
00058 virtual int get_free_fifos() { return 0 ; } ;
00059
00060 virtual void emu_place_event(int ix, char *event, int bytes) { return ; } ;
00061 virtual void emu_go() { return ; } ;
00062
00063 u_int alloced_bytes ;
00064 int configd ;
00065 int emulation ;
00066
00067 protected:
00068
00069 int board ;
00070 int ch ;
00071
00072 int emu_fifo_length[128] ;
00073
00074 char *buff ;
00075 int fifo_cou ;
00076 u_int buff_bytes ;
00077
00078
00079 char *rbuff, *sbuff ;
00080 volatile rbFifo_t *sfifo, *rfifo ;
00081
00082
00083 } ;
00084
00085
00086 #endif