Jpp  debug
the software that should make you happy
Public Member Functions | Static Public Attributes | Private Member Functions | Private Attributes | List of all members
KM3NeT_Audio_Channel Class Reference

#include <KM3NeT_Audio_Channel.h>

Public Member Functions

 KM3NeT_Audio_Channel (boost::asio::io_service &io_service, callback_send_toa callback, uint32_t id, std::string &debug_path, uint32_t window=STD_WINDOW, uint32_t overlap=STD_OVERLAP)
 
virtual ~KM3NeT_Audio_Channel ()
 
void Add_probe (pProbe probe, std::size_t id, std::size_t threshold)
 
void Append (real_type sample)
 
void Check_time (Audio_Header header)
 
void Set_test (uint32_t id)
 

Static Public Attributes

static const int DEBUG_LEVEL =2
 

Private Member Functions

void Analysis (ToA_Packet packet, real_type *buffer, uint32_t length)
 
void Open_test_file (uint32_t id, uint8_t ch)
 

Private Attributes

boost::asio::io_service::strand strand_
 
std::map< std::size_t, std::size_t > thresholds_
 
std::vector< std::size_t > probes_id_
 
callback_send_toa send_toa_
 
uint32_t id_
 
KM3::TOALIB::CTOAFinder finder_
 
KM3NeT_Audio_Data data_
 
std::string debug_files_path_
 
uint32_t test_
 
uint32_t overlap_
 
std::FILE * test_file_
 

Detailed Description

Definition at line 28 of file KM3NeT_Audio_Channel.h.

Constructor & Destructor Documentation

◆ KM3NeT_Audio_Channel()

KM3NeT_Audio_Channel::KM3NeT_Audio_Channel ( boost::asio::io_service &  io_service,
callback_send_toa  callback,
uint32_t  id,
std::string &  debug_path,
uint32_t  window = STD_WINDOW,
uint32_t  overlap = STD_OVERLAP 
)

Definition at line 17 of file KM3NeT_Audio_Channel.cc.

23  : strand_(io_service),\
24  finder_(window),\
25  data_(window,overlap)
26 {
27  DEBUG_MSG("Constructor",0);
28  id_=id;
29  send_toa_=callback;
30  test_=0;
32  test_file_=0;
33  debug_files_path_=debug_path;
34 }
#define DEBUG_MSG(str, lev)
callback_send_toa send_toa_
boost::asio::io_service::strand strand_
bool overlap(const JRange< T, JComparator_t > &first, const JRange< T, JComparator_t > &second)
Test overlap between ranges.
Definition: JRange.hh:641

◆ ~KM3NeT_Audio_Channel()

KM3NeT_Audio_Channel::~KM3NeT_Audio_Channel ( )
virtual

Definition at line 36 of file KM3NeT_Audio_Channel.cc.

37 {
38  DEBUG_MSG("Destructor",0);
39  if ((test_)&&(test_file_)) std::fclose(test_file_);
40 }

Member Function Documentation

◆ Add_probe()

void KM3NeT_Audio_Channel::Add_probe ( pProbe  probe,
std::size_t  id,
std::size_t  threshold 
)

Definition at line 42 of file KM3NeT_Audio_Channel.cc.

43 {
44  thresholds_.insert(threshold_entry(id,threshold));
45  probes_id_.push_back(id);
46  finder_.addProbeSignal(probe);
47 }
std::pair< std::size_t, std::size_t > threshold_entry
std::map< std::size_t, std::size_t > thresholds_
std::vector< std::size_t > probes_id_
KM3::TOALIB::CTOAFinder finder_

◆ Append()

void KM3NeT_Audio_Channel::Append ( real_type  sample)

Definition at line 49 of file KM3NeT_Audio_Channel.cc.

50 {
51  if(data_.Append(sample))
52  {
53  ToA_Packet l_toa;
54  l_toa.Time.Channel=1;
55  real_type* buffer=data_.Get_window(&l_toa);
56  strand_.post(boost::bind(&KM3NeT_Audio_Channel::Analysis,this,l_toa,buffer,data_.Get_size()));
57  }
58 }
void Analysis(ToA_Packet packet, real_type *buffer, uint32_t length)
KM3NeT_Audio_Data data_
real_type * Get_window(ToA_Packet *packet)
bool Append(real_type sample)
Acoustic_Time_of_Arrival Time

◆ Check_time()

void KM3NeT_Audio_Channel::Check_time ( Audio_Header  header)
inline

Definition at line 43 of file KM3NeT_Audio_Channel.h.

43 {data_.Check_time(header);};
void Check_time(Audio_Header header)

◆ Set_test()

void KM3NeT_Audio_Channel::Set_test ( uint32_t  id)
inline

Definition at line 44 of file KM3NeT_Audio_Channel.h.

44 {test_=id;};

◆ Analysis()

void KM3NeT_Audio_Channel::Analysis ( ToA_Packet  packet,
real_type *  buffer,
uint32_t  length 
)
private

Definition at line 60 of file KM3NeT_Audio_Channel.cc.

61 {
62  DEBUG_MSG("Analysis",2);
63  if (test_)
64  {
66 
67  if (std::ftell(test_file_)>MAX_DUMP_SIZE)
68  {
69  DEBUG_MSG("Test file DOM="<<packet.Header.DOM_Identifier<<" ch="<<packet.Time.Channel<<" closed",2);
70  std::fclose(test_file_);
72  }
73 
74  if (test_file_)
75  {
76  std::fwrite( (char*) &packet.Header.Time_Stamp_seconds, sizeof(uint32_t), 1, test_file_);
77  std::fwrite( (char*) &packet.Header.Time_Stamp_ticks, sizeof(uint32_t), 1, test_file_);
78  std::fwrite( (char*) &length, sizeof(uint32_t), 1, test_file_);
79  std::fwrite( ((char*)buffer)+sizeof(real_type)*overlap_,sizeof(real_type), length-overlap_, test_file_);
80  }
81  }
83  finder_.copyFromBuffer(buffer,length);
84  finder_.findTOAs(toaList);
85  free(buffer);
86 
87  packet.Header.Number_of_Items=1;
88  packet.Header.Frame_Length=sizeof(ToA_Packet);
89 
91  packet.Header.DOM_Identifier=htonl(packet.Header.DOM_Identifier);
92  packet.Header.DQ_Status=htonl(packet.Header.DQ_Status);
93  packet.Header.DOM_Status1=htonl(packet.Header.DOM_Status1);
94  packet.Header.DOM_Status2=htonl(packet.Header.DOM_Status2);
95  packet.Header.DOM_Status3=htonl(packet.Header.DOM_Status3);
96  packet.Header.DOM_Status4=htonl(packet.Header.DOM_Status4);
97  packet.Header.Data_Type=htonl(packet.Header.Data_Type);
98  packet.Header.Frame_Length=htonl(packet.Header.Frame_Length);
99  packet.Header.Number_of_Items=htonl(packet.Header.Number_of_Items);
100  packet.Header.Run_Number=htonl(packet.Header.Run_Number);
101  packet.Header.Sequence_Number=htonl(packet.Header.Sequence_Number);
102  packet.Header.Time_Stamp_seconds=htonl(packet.Header.Time_Stamp_seconds);
103  packet.Header.Time_Stamp_ticks=htonl(packet.Header.Time_Stamp_ticks);
104 
105  double sampling=128./packet.Time.Sampling_Rate;
106  for (uint8_t i=0; i<toaList.size(); i++)
107  {
108  ToA_Packet l_toa;
109  l_toa=packet;
110  l_toa.Time.Reserved=0;
111 
112  if (toaList[i].getGoodness()>=thresholds_.find(probes_id_[i])->second)
113  {
114  l_toa.Time.Emitter_ID=probes_id_[i];
115  l_toa.Time.Quality_Factor=toaList[i].getGoodness();
116  l_toa.Time.ToA+=sampling * toaList[i].getTime();
117 
118  l_toa.Time.Emitter_ID=htonl(l_toa.Time.Emitter_ID);
119  l_toa.Time.Quality_Factor=htonl(l_toa.Time.Quality_Factor);
120  l_toa.Time.ToA=htonl(l_toa.Time.ToA);
121 
122  send_toa_(l_toa);
123  }
124  }
125 }
#define MAX_DUMP_SIZE
void Open_test_file(uint32_t id, uint8_t ch)
uint32_t Time_Stamp_seconds
uint32_t Detector_Identifier
DAQ_Common_Header Header

◆ Open_test_file()

void KM3NeT_Audio_Channel::Open_test_file ( uint32_t  id,
uint8_t  ch 
)
private

Definition at line 127 of file KM3NeT_Audio_Channel.cc.

128 {
129  std::string l_file=debug_files_path_;
130  std::time_t seconds = std::time(0);
131  l_file+="DOM_"+std::to_string((long long unsigned int)id)+"_CH"+std::to_string((long long unsigned int)ch)+"_"+std::to_string((long long unsigned int)seconds)+".bin";
132  test_file_= std::fopen(l_file.c_str(),"wb");
133  DEBUG_MSG("Test file opened at "<<seconds,2);
134 }
std::string to_string(const T &value)
Convert value to string.

Member Data Documentation

◆ DEBUG_LEVEL

const int KM3NeT_Audio_Channel::DEBUG_LEVEL =2
static

Definition at line 31 of file KM3NeT_Audio_Channel.h.

◆ strand_

boost::asio::io_service::strand KM3NeT_Audio_Channel::strand_
private

Definition at line 48 of file KM3NeT_Audio_Channel.h.

◆ thresholds_

std::map<std::size_t,std::size_t> KM3NeT_Audio_Channel::thresholds_
private

Definition at line 49 of file KM3NeT_Audio_Channel.h.

◆ probes_id_

std::vector<std::size_t> KM3NeT_Audio_Channel::probes_id_
private

Definition at line 50 of file KM3NeT_Audio_Channel.h.

◆ send_toa_

callback_send_toa KM3NeT_Audio_Channel::send_toa_
private

Definition at line 52 of file KM3NeT_Audio_Channel.h.

◆ id_

uint32_t KM3NeT_Audio_Channel::id_
private

Definition at line 54 of file KM3NeT_Audio_Channel.h.

◆ finder_

KM3::TOALIB::CTOAFinder KM3NeT_Audio_Channel::finder_
private

Definition at line 56 of file KM3NeT_Audio_Channel.h.

◆ data_

KM3NeT_Audio_Data KM3NeT_Audio_Channel::data_
private

Definition at line 57 of file KM3NeT_Audio_Channel.h.

◆ debug_files_path_

std::string KM3NeT_Audio_Channel::debug_files_path_
private

Definition at line 59 of file KM3NeT_Audio_Channel.h.

◆ test_

uint32_t KM3NeT_Audio_Channel::test_
private

Definition at line 61 of file KM3NeT_Audio_Channel.h.

◆ overlap_

uint32_t KM3NeT_Audio_Channel::overlap_
private

Definition at line 62 of file KM3NeT_Audio_Channel.h.

◆ test_file_

std::FILE* KM3NeT_Audio_Channel::test_file_
private

Definition at line 63 of file KM3NeT_Audio_Channel.h.


The documentation for this class was generated from the following files: