Jpp
KM3NeT_Audio_Data.cpp
Go to the documentation of this file.
1 #include "KM3NeT_Audio_Data.h"
2 
3 #include <netinet/in.h>
4 
5 #ifdef DEBUG_KM3NET_AUDIO_DATA
6 #include <stdlib.h>
7 #include <iostream>
8 #include <boost/date_time/posix_time/posix_time.hpp>
9 #include <Tools/KM3NeT_Debug.h>
10 #define DEBUG_MSG(str,lev) do { if (((uint8_t)lev)>=KM3NeT_Audio_Data::DEBUG_LEVEL) { DBG_MSG << boost::posix_time::microsec_clock::local_time() << " KM3NET_AUDIO_DATA(" << (void*)this << "): "<< str << '\n'; } }while( false )
11 #else
12 #define DEBUG_MSG(str,lev) do { } while ( false )
13 #endif
14 
15 /**
16  * \author fsimeone
17  */
18 
20 {
21  DEBUG_MSG("Constructor",0);
22  if ((window==0)||(overlap==0)||(overlap>=window))
23  {
24  window=STD_WINDOW;
26  }
27  window_=window;
30  write_=offset_=0;
31  data_=(real_type*)malloc(window_*sizeof(real_type));
34 }
35 
37 {
38  DEBUG_MSG("Desctructor",0);
39  free(data_);
40 }
41 
43 {
44  DEBUG_MSG("common header frame length="<<header.Common_Header.Frame_Length,1);
45  DEBUG_MSG("common header data type="<<header.Common_Header.Data_Type,1);
46  DEBUG_MSG("common header detector identifier="<<header.Common_Header.Detector_Identifier,1);
47  DEBUG_MSG("common header run number="<<header.Common_Header.Run_Number,1);
48  DEBUG_MSG("common header sequence number="<<header.Common_Header.Sequence_Number,1);
49  DEBUG_MSG("common header seconds="<<header.Common_Header.Time_Stamp_seconds,1);
50  DEBUG_MSG("common header ticks="<<header.Common_Header.Time_Stamp_ticks,1);
51  DEBUG_MSG("common header dom id="<<header.Common_Header.DOM_Identifier,1);
52  DEBUG_MSG("common header dq status="<<header.Common_Header.DQ_Status,1);
53  DEBUG_MSG("common header som status1="<<header.Common_Header.DOM_Status1,1);
54  DEBUG_MSG("common header som status2="<<header.Common_Header.DOM_Status2,1);
55  DEBUG_MSG("common header som status3="<<header.Common_Header.DOM_Status3,1);
56  DEBUG_MSG("common header som status4="<<header.Common_Header.DOM_Status4,1);
57  DEBUG_MSG("common header items="<<header.Common_Header.Number_of_Items,1);
58 
59  DEBUG_MSG("header time info="<<header.Info.Time_Info,1);
60  header.Info.Time_Info=ntohl(header.Info.Time_Info);
61 
63  {
64  DEBUG_MSG("cktime reset",3);
65  DEBUG_MSG("next s="<<next_.Time_Stamp_seconds,3);
66  DEBUG_MSG("next tick="<<next_.Time_Stamp_ticks,3);
67  DEBUG_MSG("head s="<<header.Common_Header.Time_Stamp_seconds,3);
68  DEBUG_MSG("head tick="<<(header.Common_Header.Time_Stamp_ticks+header.Info.Time_Info),3);
69  header_=header;
70  offset_=round(((float)header_.Info.Time_Info)/62.5);
73  write_=0;
74  }
75  else
76  {
77  DEBUG_MSG("cktime NO reset",0);
78  }
79 }
80 
81 bool KM3NeT_Audio_Data::Append(real_type d)
82 {
83  if (data_==NULL) return false;
84  data_[write_]=d;
85  write_++;
86  DEBUG_MSG("append sampling"<<header_.Info.Samplig_Rate,1);
88  if (next_.Time_Stamp_ticks>=62500000)
89  {
90  next_.Time_Stamp_ticks-=62500000;
92  }
93  if (write_ == window_) return true;
94  return false;
95 }
96 
98 {
99  real_type* l_dummy=data_;
100  data_=(real_type*)malloc(window_*sizeof(real_type));
101  memcpy((void*)data_,(void*)(l_dummy+bound_),overlap_*sizeof(real_type));
103  packet->Time.ToA=offset_;
104  packet->Header=header_.Common_Header;
107 
109  while (header_.Common_Header.Time_Stamp_ticks>=62500000)
110  {
113  }
114  return l_dummy;
115 }
DAQ_Common_Header::DQ_Status
uint32_t DQ_Status
Definition: Audio_Structures.h:22
DAQ_Common_Header::DOM_Status4
uint32_t DOM_Status4
Definition: Audio_Structures.h:26
KM3NeT_Audio_Data::bound_
uint32_t bound_
Definition: KM3NeT_Audio_Data.h:38
Acoustic_Time_of_Arrival::Resolution
uint8_t Resolution
Definition: Audio_Structures.h:77
DAQ_Common_Header::Run_Number
uint32_t Run_Number
Definition: Audio_Structures.h:17
KM3NeT_Debug.h
DAQ_Common_Header::Detector_Identifier
uint32_t Detector_Identifier
Definition: Audio_Structures.h:16
STD_WINDOW
#define STD_WINDOW
Definition: KM3NeT_Audio_Data.h:9
Audio_Time::Time_Stamp_seconds
uint32_t Time_Stamp_seconds
Definition: Audio_Structures.h:70
ToA_Packet
Definition: Audio_Structures.h:85
KM3NeT_Audio_Data::data_
real_type * data_
Definition: KM3NeT_Audio_Data.h:40
KM3NeT_Audio_Data::overlap_
uint32_t overlap_
Definition: KM3NeT_Audio_Data.h:37
KM3NeT_Audio_Data::write_
uint32_t write_
Definition: KM3NeT_Audio_Data.h:39
Audio_Header::Info
Info_Word Info
Definition: Audio_Structures.h:50
DAQ_Common_Header::DOM_Identifier
uint32_t DOM_Identifier
Definition: Audio_Structures.h:21
JTOOLS::overlap
bool overlap(const JRange< T, JComparator_t > &first, const JRange< T, JComparator_t > &second)
Test overlap between ranges.
Definition: JRange.hh:653
KM3NeT_Audio_Data::Check_time
void Check_time(Audio_Header header)
Definition: KM3NeT_Audio_Data.cpp:42
Audio_Time::Time_Stamp_ticks
uint32_t Time_Stamp_ticks
Definition: Audio_Structures.h:71
Audio_Header::Common_Header
DAQ_Common_Header Common_Header
Definition: Audio_Structures.h:49
KM3NeT_Audio_Data::KM3NeT_Audio_Data
KM3NeT_Audio_Data(uint32_t window=STD_WINDOW, uint32_t overlap=STD_OVERLAP)
Definition: KM3NeT_Audio_Data.cpp:19
DAQ_Common_Header::Number_of_Items
uint32_t Number_of_Items
Definition: Audio_Structures.h:27
KM3NeT_Audio_Data.h
DEBUG_MSG
#define DEBUG_MSG(str, lev)
Definition: KM3NeT_Audio_Data.cpp:12
DAQ_Common_Header::Sequence_Number
uint32_t Sequence_Number
Definition: Audio_Structures.h:18
Audio_Header
Definition: Audio_Structures.h:47
ToA_Packet::Time
Acoustic_Time_of_Arrival Time
Definition: Audio_Structures.h:88
DAQ_Common_Header::DOM_Status1
uint32_t DOM_Status1
Definition: Audio_Structures.h:23
Acoustic_Time_of_Arrival::Sampling_Rate
uint8_t Sampling_Rate
Definition: Audio_Structures.h:78
ToA_Packet::Header
DAQ_Common_Header Header
Definition: Audio_Structures.h:87
DAQ_Common_Header::Data_Type
uint32_t Data_Type
Definition: Audio_Structures.h:15
KM3NeT_Audio_Data::next_
Audio_Time next_
Definition: KM3NeT_Audio_Data.h:34
Info_Word::Samplig_Rate
uint8_t Samplig_Rate
Definition: Audio_Structures.h:43
DAQ_Common_Header::DOM_Status3
uint32_t DOM_Status3
Definition: Audio_Structures.h:25
Info_Word::Time_Info
uint32_t Time_Info
Definition: Audio_Structures.h:44
DAQ_Common_Header::Time_Stamp_seconds
uint32_t Time_Stamp_seconds
Definition: Audio_Structures.h:19
KM3NeT_Audio_Data::Append
bool Append(real_type sample)
Definition: KM3NeT_Audio_Data.cpp:81
Info_Word::Info
union Info_Word::Info_Word_Bitfield Info
KM3NeT_Audio_Data::~KM3NeT_Audio_Data
virtual ~KM3NeT_Audio_Data()
Definition: KM3NeT_Audio_Data.cpp:36
KM3NeT_Audio_Data::offset_
uint32_t offset_
Definition: KM3NeT_Audio_Data.h:35
Info_Word::Info_Word_Bitfield::Bits
struct Info_Word::Info_Word_Bitfield::@0 Bits
STD_OVERLAP
#define STD_OVERLAP
Definition: KM3NeT_Audio_Data.h:10
DAQ_Common_Header::Time_Stamp_ticks
uint32_t Time_Stamp_ticks
Definition: Audio_Structures.h:20
Info_Word::Info_Word_Bitfield::Amplitude_Resolution
unsigned Amplitude_Resolution
Definition: Audio_Structures.h:37
DAQ_Common_Header::DOM_Status2
uint32_t DOM_Status2
Definition: Audio_Structures.h:24
KM3NeT_Audio_Data::window_
uint32_t window_
Definition: KM3NeT_Audio_Data.h:36
KM3NeT_Audio_Data::Get_window
real_type * Get_window(ToA_Packet *packet)
Definition: KM3NeT_Audio_Data.cpp:97
KM3NeT_Audio_Data::header_
Audio_Header header_
Definition: KM3NeT_Audio_Data.h:30
DAQ_Common_Header::Frame_Length
uint32_t Frame_Length
Definition: Audio_Structures.h:14
Acoustic_Time_of_Arrival::ToA
uint32_t ToA
Definition: Audio_Structures.h:81