StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
daq_ssd.cxx
1 #include <sys/types.h>
2 #include <string.h>
3 
4 #include <rtsLog.h>
5 #include <rtsSystems.h>
6 
7 #include <DAQ_READER/daqReader.h>
8 #include <DAQ_READER/daq_dta.h>
9 
10 #include "daq_ssd.h"
11 
12 
13 const char *daq_ssd::help_string = "SSD tst\n" ;
14 
16 {
17 public:
19  daq_det_factory::det_factories[SSD_ID] = this ;
20  }
21 
22  daq_det *create() {
23  return new daq_ssd ;
24  }
25 } ;
26 
27 static daq_det_ssd_factory ssd_factory ;
28 
29 
30 
31 daq_ssd::daq_ssd(daqReader *rts_caller)
32 {
33  LOG(DBG,"SSD: rts_id %d, name %s",rts_id,name) ;
34 
35  rts_id = SSD_ID ;
36  sfs_name = name = rts2name(rts_id) ;
37  caller = rts_caller ;
38  if(caller) caller->insert(this, rts_id) ;
39 
40  legacy = new daq_dta ;
41 
42  LOG(DBG,"%s: constructor: caller %p",name,caller) ;
43 }
44 
45 daq_ssd::~daq_ssd()
46 {
47  LOG(DBG,"%s: destructor",name) ;
48  if(caller) caller->de_insert(rts_id) ;
49 
50  delete legacy ;
51 
52  return ;
53 }
54 
55 
56 daq_dta *daq_ssd::get(const char *bank, int c1, int c2, int c3, void *p1, void *p2)
57 {
58  Make() ;
59  if(!present) return 0 ;
60 
61  if(strcmp(bank,"*")==0) bank = "legacy" ; // set default, if called with *
62 
63  if(strcasecmp(bank,"legacy") != 0) {
64  LOG(ERR,"%s: unknown bank %s",name,bank) ;
65  return 0 ;
66  }
67 
68  return handle_legacy() ;
69 
70 }
71 
72 
73 daq_dta *daq_ssd::handle_legacy()
74 {
75 
76  // I need one object of ssd_t type but let the create decide on the necessary size
77  legacy->create(1,"ssd_t",rts_id,DAQ_DTA_STRUCT(ssd_t)) ;
78 
79 
80  ssd_t *ssd_p = (ssd_t *) legacy->request(1) ; // need ONE ssd_t object
81 
82  ssd_reader(caller->mem, ssd_p, m_Debug) ;
83 
84  legacy->finalize(1,0,0,0) ; // 1 entry; sector 0, row 0, pad 0
85  legacy->rewind() ;
86 
87  return legacy ;
88 }
Definition: daq_ssd.h:21