Jpp test-rotations-new
the software that should make you happy
Loading...
Searching...
No Matches
AcousticDataFilter.h
Go to the documentation of this file.
1#ifndef ACOUSTICDATAFILTER_H_
2#define ACOUSTICDATAFILTER_H_
3
4#include <string>
5#include <sstream>
6#include <iostream>
7#include <ctime>
8#include <unistd.h>
9#include <stdio.h>
10
11#include <vector>
12#include <map>
13
14#include <boost/asio.hpp>
15#include <boost/bind.hpp>
16#include <boost/atomic.hpp>
17#include <boost/shared_ptr.hpp>
18#include <boost/make_shared.hpp>
19#include <boost/thread/thread.hpp>
20
21#include <boost/algorithm/string/trim.hpp>
22
26#include <JDAQ/JDAQTags.hh>
27
28#include "toalib/km3_toa_lib.hpp"
30#include "Tools/KM3NeT_DOM.h"
31#include "Config/parser.h"
32
33#define SERVER_THREAD_POOL 2
34#define TRIGGER_THREAD_POOL 8
35#define MAX_TOA_SIZE 1048576
36
37
38/**
39 * \author fsimeone
40 */
41
44
45//#define DEBUG_ACOUSTICDATAFILTER
46
48{
49public:
50 static const int DEBUG_LEVEL=1;
51
52 AcousticDataFilter( const std::string& address,\
53 const std::string& port,\
54 const std::string& name,\
55 const std::string& server,\
56 const std::string& wisdom,\
57 const std::string& output,\
58 const std::string& raw,\
60 const int level);
61 virtual ~AcousticDataFilter();
62
63 void Send_toa_async(ToA_Packet packet){strand_.post(boost::bind(&AcousticDataFilter::Send_toa,this,packet));};
64
65 virtual void actionEnter() {};
66 virtual void actionExit() {exit_=true;};
67 virtual void actionInit(int length, const char* buffer);
68 virtual void actionConfigure(int length, const char* buffer);
69 virtual void actionStart(int length, const char* buffer);
70 virtual void actionPause(int length, const char* buffer);
71 virtual void actionContinue(int length, const char* buffer);
72 virtual void actionStop(int length, const char* buffer);
73 virtual void actionReset(int length, const char* buffer);
74 virtual void actionQuit(int length, const char* buffer);
75 //virtual void actionInput(int length, const char* buffer) {};
76 virtual void actionRunning() {};
77
78
79private:
80 const JNET::JTag & clientTag() const { return KM3NETDAQ::RC_AFILTER; };
81
82 void Create_probes(std::vector<std::string> probes,std::size_t window);
83 void Create_DOMs(std::vector<std::string> doms,std::string& debug_file_path,std::size_t window,std::size_t overlap);
84 void Start_accept();
85 void Accept_completed(pLink link, const boost::system::error_code& error);
86 void Start();
87 void Stop();
88 void Open_toa_file();
89 void Send_toa(ToA_Packet packet);
90
91 boost::atomic<bool> exit_;
92 boost::atomic<bool> running_;
93 std::string address_;
94 std::string port_;
95
99
100 boost::thread_group server_threads_;
101 boost::asio::io_service server_io_service_;
102 boost::asio::io_service::work* server_work_;
103 boost::asio::ip::tcp::acceptor server_acceptor_;
104 boost::thread_group trigger_threads_;
105 boost::asio::io_service trigger_io_service_;
106 boost::asio::io_service::work* trigger_work_;
107 boost::asio::io_service::strand strand_;
108
109 std::string debug_file_path_;
110 std::string toa_file_path_;
111 std::ofstream toa_file_;
112 std::string wisdom_file_;
113};
114
115#endif /* ACOUSTICDATAFILTER_H_ */
std::pair< std::size_t, pProbe > probe_entry
std::pair< std::size_t, pDOM > dom_entry
Fixed parameters and ControlHost tags for KM3NeT DAQ.
General purpose message reporting.
boost::asio::io_service::strand strand_
boost::asio::ip::tcp::acceptor server_acceptor_
virtual void actionEnter()
Interface methods for actions corresponding to state transitions.
void Create_probes(std::vector< std::string > probes, std::size_t window)
void Send_toa(ToA_Packet packet)
virtual void actionQuit(int length, const char *buffer)
boost::atomic< bool > exit_
boost::atomic< bool > running_
boost::asio::io_service::work * trigger_work_
boost::thread_group trigger_threads_
virtual void actionContinue(int length, const char *buffer)
virtual void actionConfigure(int length, const char *buffer)
std::vector< pLink > links_
virtual void actionReset(int length, const char *buffer)
std::map< std::size_t, pDOM > doms_
boost::asio::io_service::work * server_work_
virtual void actionStop(int length, const char *buffer)
virtual void actionExit()
boost::asio::io_service server_io_service_
boost::asio::io_service trigger_io_service_
void Create_DOMs(std::vector< std::string > doms, std::string &debug_file_path, std::size_t window, std::size_t overlap)
const JNET::JTag & clientTag() const
boost::thread_group server_threads_
virtual void actionInit(int length, const char *buffer)
virtual void actionRunning()
This method is repeatedly called when this client machine is in state Running and the clock interval ...
AcousticDataFilter(const std::string &address, const std::string &port, const std::string &name, const std::string &server, const std::string &wisdom, const std::string &output, const std::string &raw, JLOGGER::JLogger *logger, const int level)
static const int DEBUG_LEVEL
void Accept_completed(pLink link, const boost::system::error_code &error)
void Send_toa_async(ToA_Packet packet)
virtual void actionPause(int length, const char *buffer)
virtual void actionStart(int length, const char *buffer)
std::map< std::size_t, pProbe > probes_
std::string name
Definition JDAQCHSM.hh:165
Interface for logging messages.
Definition JLogger.hh:22
ControlHost tag.
Definition JTag.hh:38
Control unit client base class.
JSharedPointer< JControlHost > server
message server
JMessageLogger logger
message logger
static const JNET::JTag RC_AFILTER
Definition JDAQTags.hh:78