added logger

This commit is contained in:
sala 2014-09-08 16:01:18 +02:00
parent 87efbf764e
commit 5641101705
9 changed files with 76 additions and 138 deletions

View File

@ -11,16 +11,16 @@ CFLAGS= -g -DC_ONLY -fPIC
DFLAGS= -g -DDACS_INT -DSLS_RECEIVER_UDP_FUNCTIONS
INCLUDES?= -I. -Iincludes -IMySocketTCP -IslsReceiver -IslsDetectorCalibration -IslsReceiver/eigerReceiver -I$(ASM)
INCLUDES?= -I. -Iincludes -IMySocketTCP -IslsReceiver -IslsDetectorCalibration -I$(ASM)
#-IslsReceiverInterface
SRC_CLNT= MySocketTCP/MySocketTCP.cpp slsReceiver/slsReceiver.cpp slsReceiver/UDPInterface.cpp slsReceiver/UDPBaseImplementation.cpp slsReceiver/slsReceiverTCPIPInterface.cpp slsReceiver/slsReceiverUsers.cpp
SRC_CLNT= MySocketTCP/MySocketTCP.cpp slsReceiver/UDPInterface.cpp slsReceiver/UDPBaseImplementation.cpp slsReceiver/UDPStandardImplementation.cpp slsReceiver/slsReceiverTCPIPInterface.cpp slsReceiver/slsReceiver.cpp slsReceiver/slsReceiverUsers.cpp includes/utilities.h
#slsReceiverInterface/receiverInterface.cpp
#slsReceiver/slsReceiverUDPFunctions.cpp
OBJS = $(SRC_CLNT:.cpp=.o)
OBJS += slsReceiver/eigerReceiver.o
OBJS += includes/utilities.h
#OBJS += slsReceiver/eigerReceiver.o
.PHONY: all intdoc package eigerReceiver clean
@ -31,10 +31,8 @@ intdoc: $(SRC_H) $(SRC_CLNT)
doxygen doxy.config
%.o : %.cpp %.h Makefile
ifeq ($(EIGERSLS),yes)
$(CXX) -DEIGERSLS -o $@ -c $< $(INCLUDES) $(DFLAGS) $(EIGERFLAGS) -fPIC $(EPICSFLAGS) -L/usr/lib64/ #$(FLAGS)
else ifeq ($(ROOTSLS),yes)
%.o : %.cpp Makefile
ifeq ($(ROOTSLS),yes)
echo "with root"
$(CXX) -DROOTSLS -o $@ -c $< $(INCLUDES) $(DFLAGS) $(ROOTFLAGS) -fPIC $(EPICSFLAGS) -L/usr/lib64/ #$(FLAGS)
else
@ -43,14 +41,14 @@ else
endif
# LEO: not satisfied by eigerReceiver
package: eigerReceiver $(OBJS) $(DESTDIR)/libSlsReceiver.so $(DESTDIR)/libSlsReceiver.a
package: $(OBJS) $(DESTDIR)/libSlsReceiver.so $(DESTDIR)/libSlsReceiver.a
eigerReceiver:
echo "src client:" $(SRC_CLNT)
cd slsReceiver && make eigerReceiver
#eigerReceiver:
# echo "src client:" $(SRC_CLNT)
# cd slsReceiver && make eigerReceiver
$(DESTDIR)/libSlsReceiver.so: $(OBJS)
$(CXX) -shared -Wl,-soname,libSlsReceiver.so -o libSlsReceiver.so $(OBJS) -lc $(INCLUDES) $(DFLAGS) $(FLAGS) $(EPICSFLAGS) -L/usr/lib64 -lpthread
$(CXX) -shared -Wl,-soname,libSlsReceiver.so -o libSlsReceiver.so $(OBJS) -lc $(INCLUDES) $(DFLAGS) $(FLAGS) $(EPICSFLAGS) -L/usr/lib64 -lpthread
$(shell test -d $(DESTDIR) || mkdir -p $(DESTDIR))
mv libSlsReceiver.so $(DESTDIR)

View File

@ -39,26 +39,26 @@ $(DESTDIR)/sslsReceiver: lib
$(CXX) -static -o $@ $(SRC_CLNT) $(FLAGS) $(INCLUDES) $(CLAGS) $(LIBS) $(LDFLAGRXR)
$(DESTDIR)/slsReceiver: eigerReceiver lib
$(DESTDIR)/slsReceiver: lib
echo "AAAAAAAAAAAA" $(CXX) -o $@ $(SRC_CLNT) $(FLAGS) $(INCLUDES) $(CLAGS) $(LIBS) $(LDFLAGRXR) -fPIC
$(CXX) -o $@ $(SRC_CLNT) $(FLAGS) $(INCLUDES) $(CLAGS) $(LIBS) $(LDFLAGRXR) -fPIC
#$(EIGERFLAGS)
ifeq ($(EIGERSLS), yes)
eigerReceiver:
# $(CXX) $(FLAGS) $(CFLAGS) -fPIC -c -o eigerReceiverTest.o eigerReceiver/eigerReceiverTest.cpp $(EIGERFLAGS)
#ifeq ($(EIGERSLS), yes)
#eigerReceiver:
# $(CXX) $(FLAGS) $(CFLAGS) -fPIC -c -o eigerReceiverTest.o eigerReceiver/eigerReceiverTest.cpp #$(EIGERFLAGS)
# $(CXX) $(FLAGS) $(CFLAGS) -fPIC -c -o eigerReceiver.o eigerReceiver/eigerReceiver.cpp $(EIGERFLAGS)
# $(CXX) eigerReceiverTest.o eigerReceiver.o -o eigerReceiver/eigerReceiverTest $(EIGERFLAGS)
$(CXX) $(FLAGS) $(CFLAGS) $(INCLUDES) -fPIC -c -o eigerReceiver.o eigerReceiverImplementation.cpp $(EIGERFLAGS)
else ifeq ($(ROOTSLS), yes)
eigerReceiver: eigerReceiver/eigerReceiverDummy.cpp
echo "Compiling with root"
$(CXX) $(FLAGS) $(CFLAGS) -fPIC -c -o eigerReceiver.o eigerReceiver/eigerReceiverDummy.cpp $(ROOTFLAGS)
else
eigerReceiver: eigerReceiver/eigerReceiverDummy.cpp
$(CXX) $(FLAGS) $(CFLAGS) $(INCLUDES) -fPIC -c -o eigerReceiver.o eigerReceiver/eigerReceiverDummy.cpp
endif
# $(CXX) $(FLAGS) $(CFLAGS) $(INCLUDES) -fPIC -c -o eigerReceiver.o eigerReceiverImplementation.cpp $(EIGERFLAGS)
#else ifeq ($(ROOTSLS), yes)
#eigerReceiver: eigerReceiver/eigerReceiverDummy.cpp
# echo "Compiling with root"
# $(CXX) $(FLAGS) $(CFLAGS) -fPIC -c -o eigerReceiver.o eigerReceiver/eigerReceiverDummy.cpp $(ROOTFLAGS)
#else
#eigerReceiver: eigerReceiver/eigerReceiverDummy.cpp
# $(CXX) $(FLAGS) $(CFLAGS) $(INCLUDES) -fPIC -c -o eigerReceiver.o eigerReceiver/eigerReceiverDummy.cpp
#endif
lib:
cd ../ && $(MAKE) DESTDIR=../bin LIBDIR=../bin

View File

@ -20,12 +20,10 @@
#include <iomanip> //set precision
#include <sys/mman.h> //munmap
#include <string.h>
#include <iostream>
//#include "utilities.h"
using namespace std;
@ -216,90 +214,9 @@ void UDPBaseImplementation::initializeMembers(){
}
int UDPBaseImplementation::setDetectorType(detectorType det){
cout << "Setting Receiver Type " << endl;
deleteMembers();
initializeMembers();
myDetectorType = det;
switch(myDetectorType){
case GOTTHARD:
cout << endl << "***** This is a GOTTHARD Receiver *****" << endl << endl;
break;
case MOENCH:
cout << endl << "***** This is a MOENCH Receiver *****" << endl << endl;
break;
case EIGER:
cout << endl << "***** This is a EIGER Receiver *****" << endl << endl;
break;
default:
cout << endl << "***** Unknown Receiver *****" << endl << endl;
return FAIL;
break;
}
//moench variables
if(myDetectorType == GOTTHARD){
fifosize = GOTTHARD_FIFO_SIZE;
packetsPerFrame = GOTTHARD_PACKETS_PER_FRAME;
onePacketSize = GOTTHARD_ONE_PACKET_SIZE;
frameSize = GOTTHARD_BUFFER_SIZE;
bufferSize = GOTTHARD_BUFFER_SIZE;
maxPacketsPerFile = MAX_FRAMES_PER_FILE * GOTTHARD_PACKETS_PER_FRAME;
frameIndexMask = GOTTHARD_FRAME_INDEX_MASK;
frameIndexOffset = GOTTHARD_FRAME_INDEX_OFFSET;
packetIndexMask = GOTTHARD_PACKET_INDEX_MASK;
}else if(myDetectorType == MOENCH){
fifosize = MOENCH_FIFO_SIZE;
packetsPerFrame = MOENCH_PACKETS_PER_FRAME;
onePacketSize = MOENCH_ONE_PACKET_SIZE;
frameSize = MOENCH_BUFFER_SIZE;
bufferSize = MOENCH_BUFFER_SIZE;
maxPacketsPerFile = MOENCH_MAX_FRAMES_PER_FILE * MOENCH_PACKETS_PER_FRAME;
frameIndexMask = MOENCH_FRAME_INDEX_MASK;
frameIndexOffset = MOENCH_FRAME_INDEX_OFFSET;
packetIndexMask = MOENCH_PACKET_INDEX_MASK;
}
else if(myDetectorType == EIGER){
fifosize = EIGER_FIFO_SIZE;
packetsPerFrame = EIGER_ONE_GIGA_CONSTANT * dynamicRange * EIGER_MAX_PORTS;
onePacketSize = EIGER_ONE_GIGA_ONE_PACKET_SIZE;
frameSize = onePacketSize * packetsPerFrame;
bufferSize = (frameSize/EIGER_MAX_PORTS) + EIGER_HEADER_LENGTH;//everything one port gets (img header plus packets)
maxPacketsPerFile = EIGER_MAX_FRAMES_PER_FILE * packetsPerFrame;
frameIndexMask = EIGER_FRAME_INDEX_MASK;
frameIndexOffset = EIGER_FRAME_INDEX_OFFSET;
packetIndexMask = EIGER_PACKET_INDEX_MASK;
pthread_mutex_lock(&status_mutex);
listeningthreads_mask = 0x0;
pthread_mutex_unlock(&(status_mutex));
if(thread_started)
createListeningThreads(true);
numListeningThreads = MAX_NUM_LISTENING_THREADS;
}
latestData = new char[frameSize];
setupFifoStructure();
if(createListeningThreads() == FAIL){
cout << "ERROR: Could not create listening thread" << endl;
exit (-1);
}
if(createWriterThreads() == FAIL){
cout << "ERROR: Could not create writer threads" << endl;
exit (-1);
}
setThreadPriorities();
cout << "Ready..." << endl;
cout << "[WARNING] This is a base implementation, " << __func__ << " not correctly implemented" << endl;
return OK;
}
@ -327,6 +244,7 @@ uint32_t UDPBaseImplementation::getFrameIndex(){
return frameIndex;
}
uint32_t UDPBaseImplementation::getAcquisitionIndex(){
if(!totalPacketsCaught)
acquisitionIndex=-1;
@ -343,20 +261,17 @@ void UDPBaseImplementation::resetTotalFramesCaught(){
}
/*file parameters*/
char* UDPBaseImplementation::getFilePath() const{
return (char*)filePath;
FILE_LOG(logWARNING) << "[WARNING] This is a base implementation, " << __func__ << " could have no effects.x" << endl;
return (char*)filePath;
}
char* UDPBaseImplementation::setFilePath(const char c[]){
cout << "[WARNING] This is a base implementation, " << __func__ << " could have no effects." << endl;
/*
if(strlen(c)){
//check if filepath exists
struct stat st;
@ -367,6 +282,7 @@ char* UDPBaseImplementation::setFilePath(const char c[]){
cout << "FilePath does not exist:" << filePath << endl;
}
}
*/
return getFilePath();
}
@ -376,8 +292,11 @@ char* UDPBaseImplementation::getFileName() const{
}
char* UDPBaseImplementation::setFileName(const char c[]){
if(strlen(c))
cout << "[WARNING] This is a base implementation, " << __func__ << " could have no effects." << endl;
/*
if(strlen(c))
strcpy(fileName,c);
*/
return getFileName();
}
@ -387,13 +306,17 @@ int UDPBaseImplementation::getFileIndex(){
}
int UDPBaseImplementation::setFileIndex(int i){
cout << "[WARNING] This is a base implementation, " << __func__ << " could have no effects." << endl;
/*
if(i>=0)
fileIndex = i;
*/
return getFileIndex();
}
int UDPBaseImplementation::setFrameIndexNeeded(int i){
cout << "[WARNING] This is a base implementation, " << __func__ << " could have no effects." << endl;
frameIndexNeeded = i;
return frameIndexNeeded;
}

View File

@ -28,7 +28,6 @@
#include <stdio.h>
#include <semaphore.h>
/**
* @short does all the functions for a receiver, set/get parameters, start/stop etc.
*/

View File

@ -22,6 +22,7 @@ using namespace std;
#include "UDPInterface.h"
#include "UDPBaseImplementation.h"
#include "UDPStandardImplementation.h"
@ -30,7 +31,9 @@ using namespace std;
UDPInterface * UDPInterface::create(string receiver_type){
if (receiver_type == "standard")
return new UDPBaseImplementation();
return new UDPStandardImplementation();
//else if (receiver_type == "REST")
// return new UDPRESTImplementation();
else{
cout << "[ERROR] UDP interface not supported, using standard implementation" << endl;
return new UDPBaseImplementation();

View File

@ -16,6 +16,9 @@
#include "receiver_defs.h"
#include "MySocketTCP.h"
#include "utilities.h"
/*
void print_not_implemented(string method_name){
std::cout << "[WARNING] Method " << method_name << " not implemented!" << std::endl;

View File

@ -6,6 +6,9 @@
#include <iostream>
#include <string.h>
#include "utilities.h"
using namespace std;

View File

@ -12,9 +12,7 @@
#include <getopt.h>
#include "slsReceiver.h"
#include "UDPInterface.h"
#include "utilities.h"
//#include "UDPInterface.h"
using namespace std;
@ -35,6 +33,7 @@ slsReceiver::slsReceiver(int argc, char *argv[], int &success){
int tcpip_port_no = 1984;
success=OK;
string fname = "";
string udp_interface_type = "standard";
//parse command line for config
static struct option long_options[] = {
@ -42,6 +41,7 @@ slsReceiver::slsReceiver(int argc, char *argv[], int &success){
//{"verbose", no_argument, &verbose_flag, 1},
/* These options dont set a flag.
We distinguish them by their indices. */
{"type", required_argument, 0, 't'},
{"config", required_argument, 0, 'f'},
{"rx_tcpport", required_argument, 0, 'b'},
{"help", no_argument, 0, 'h'},
@ -52,7 +52,7 @@ slsReceiver::slsReceiver(int argc, char *argv[], int &success){
int c;
while ( c != -1 ){
c = getopt_long (argc, argv, "bfh", long_options, &option_index);
c = getopt_long (argc, argv, "bfht", long_options, &option_index);
/* Detect the end of the options. */
if (c == -1)
@ -61,12 +61,15 @@ slsReceiver::slsReceiver(int argc, char *argv[], int &success){
switch(c){
case 'f':
fname = optarg;
cout << long_options[option_index].name << " " << optarg << endl;
//cout << long_options[option_index].name << " " << optarg << endl;
break;
case 'b':
sscanf(optarg,"%d",&tcpip_port_no);
cout << long_options[option_index].name << " " << optarg << endl;
sscanf(optarg, "%d", &tcpip_port_no);
break;
case 't':
udp_interface_type = optarg;
break;
case 'h':
@ -74,6 +77,7 @@ slsReceiver::slsReceiver(int argc, char *argv[], int &success){
help_message += """usage: slsReceiver --config config_fname [--rx_tcpport port]\n\n""";
help_message += """\t--config:\t configuration filename for SLS Detector receiver\n""";
help_message += """\t--rx_tcpport:\t TCP Communication Port with the client. Default: 1954.\n\n""";
help_message += """\t--type:\t Type of the receiver. Possible arguments are: standard, REST. Default: standard.\n\n""";
cout << help_message << endl;
break;
@ -85,30 +89,35 @@ slsReceiver::slsReceiver(int argc, char *argv[], int &success){
success = FAIL;
if((!fname.empty()) && (success == OK)){
VERBOSE_PRINT("config file name " + fname );
FILE_LOG(logINFO) << "config file name " << fname;
success = read_config_file(fname, &tcpip_port_no);
VERBOSE_PRINT("Read configuration file of " + iline + " lines");
//VERBOSE_PRINT("Read configuration file of " + iline + " lines");
}
else {
cout << "Error opening configuration file " << fname << endl;
FILE_LOG(logERROR) << "Error opening configuration file " << fname ;
success = FAIL;
}
if(success != OK){
cout << "Failed: see output above for more information " << endl;
FILE_LOG(logERROR) << "Failed: see output above for more information " ;
}
if (success==OK){
cout << "SLS Receiver starting" << endl;
udp_interface = UDPInterface::create("standard");
udp_interface = UDPInterface::create(udp_interface_type);
tcpipInterface = new slsReceiverTCPIPInterface(success, udp_interface, tcpip_port_no);
//tcp ip interface
}
}
slsReceiver::~slsReceiver() {if(udp_interface) delete udp_interface; if(tcpipInterface) delete tcpipInterface;}
slsReceiver::~slsReceiver() {
if(udp_interface)
delete udp_interface;
if(tcpipInterface)
delete tcpipInterface;
}
int slsReceiver::start() {

View File

@ -8,11 +8,11 @@
#include "slsReceiverTCPIPInterface.h"
#include "UDPInterface.h"
#include "UDPBaseImplementation.h"
//#include "UDPBaseImplementation.h"
#include "receiver_defs.h"
#include "MySocketTCP.h"
//#include "utilities.h"
/**