00001 #include <sys/types.h>
00002 #include <string.h>
00003
00004 #include <rtsLog.h>
00005 #include <rtsSystems.h>
00006
00007 #include <DAQ_READER/daqReader.h>
00008 #include <DAQ_READER/daq_dta.h>
00009
00010 #include "daq_ftp.h"
00011
00012 extern int ftp_reader(char *m, struct ftp_t *ftp, u_int driver) ;
00013
00014 const char *daq_ftp::help_string = "FTP tst\n" ;
00015
00016 class daq_det_ftp_factory : public daq_det_factory
00017 {
00018 public:
00019 daq_det_ftp_factory() {
00020 daq_det_factory::det_factories[FTP_ID] = this ;
00021 }
00022
00023 daq_det *create() {
00024 return new daq_ftp ;
00025 }
00026 } ;
00027
00028 static daq_det_ftp_factory ftp_factory ;
00029
00030
00031
00032 daq_ftp::daq_ftp(daqReader *rts_caller)
00033 {
00034 LOG(DBG,"FTP: rts_id %d, name %s",rts_id,name) ;
00035
00036
00037 rts_id = FTP_ID ;
00038 sfs_name = name = rts2name(rts_id) ;
00039 caller = rts_caller ;
00040 if(caller) caller->insert(this, rts_id) ;
00041
00042 legacy = new daq_dta ;
00043
00044 LOG(DBG,"%s: constructor: caller %p",name,caller) ;
00045 }
00046
00047 daq_ftp::~daq_ftp()
00048 {
00049 LOG(DBG,"%s: destructor",name) ;
00050 if(caller) caller->de_insert(rts_id) ;
00051
00052 delete legacy ;
00053
00054 return ;
00055 }
00056
00057
00058 daq_dta *daq_ftp::get(const char *bank, int c1, int c2, int c3, void *p1, void *p2)
00059 {
00060 Make() ;
00061 if(!present) return 0 ;
00062
00063 if(strcmp(bank,"*")==0) bank = "legacy" ;
00064
00065 if(strcasecmp(bank,"legacy") != 0) {
00066 LOG(ERR,"%s: unknown bank %s",name,bank) ;
00067 return 0 ;
00068 }
00069
00070 return handle_legacy() ;
00071
00072 }
00073
00074
00075 daq_dta *daq_ftp::handle_legacy()
00076 {
00077
00078
00079 legacy->create(1,"ftp_t",rts_id,DAQ_DTA_STRUCT(ftp_t)) ;
00080
00081
00082 ftp_t *ftp_p = (ftp_t *) legacy->request(1) ;
00083
00084 ftp_reader(caller->mem, ftp_p, m_Debug) ;
00085
00086 legacy->finalize(1,0,0,0) ;
00087 legacy->rewind() ;
00088
00089 return legacy ;
00090 }