blah2
A real-time passive radar
IqData.h
Go to the documentation of this file.
1 
7 #ifndef IQDATA_H
8 #define IQDATA_H
9 
10 #include <stdint.h>
11 #include <deque>
12 #include <vector>
13 #include <complex>
14 #include <mutex>
15 
16 class IqData
17 {
18 private:
20  uint32_t n;
21 
23  std::mutex mutex_lock;
24 
26  std::deque<std::complex<double>> *data;
27 
29  double min;
30 
32  double max;
33 
35  double mean;
36 
38  std::vector<std::complex<double>> spectrum;
39 
41  std::vector<double> frequency;
42 
43 public:
47  IqData(uint32_t n);
48 
51  uint32_t get_n();
52 
55  uint32_t get_length();
56 
59  void lock();
60 
63  void unlock();
64 
67  std::deque<std::complex<double>> get_data();
68 
72  void push_back(std::complex<double> sample);
73 
76  std::complex<double> pop_front();
77 
80  void print();
81 
84  void clear();
85 
89  void update_spectrum(std::vector<std::complex<double>> spectrum);
90 
94  void update_frequency(std::vector<double> frequency);
95 
99  std::string to_json(uint64_t timestamp);
100 };
101 
102 #endif
A class to store IQ data.
Definition: IqData.h:17
double max
Maximum value.
Definition: IqData.h:32
void lock()
Locker for mutex.
Definition: IqData.cpp:27
void unlock()
Unlocker for mutex.
Definition: IqData.cpp:32
uint32_t get_n()
Getter for maximum number of samples.
Definition: IqData.cpp:17
double mean
Mean value.
Definition: IqData.h:35
std::deque< std::complex< double > > * data
Pointer to IQ data.
Definition: IqData.h:26
void update_spectrum(std::vector< std::complex< double >> spectrum)
Update the time differences and names.
Definition: IqData.cpp:81
std::mutex mutex_lock
True if should not push to buffer (mutex).
Definition: IqData.h:23
std::complex< double > pop_front()
Pop the front of the queue.
Definition: IqData.cpp:55
std::vector< std::complex< double > > spectrum
Spectrum vector.
Definition: IqData.h:38
std::vector< double > frequency
Frequency vector (Hz).
Definition: IqData.h:41
void print()
Print to stdout (debug).
Definition: IqData.cpp:62
void push_back(std::complex< double > sample)
Push a sample to the queue.
Definition: IqData.cpp:42
uint32_t get_length()
Getter for current data length.
Definition: IqData.cpp:22
std::deque< std::complex< double > > get_data()
Getter for data.
Definition: IqData.cpp:37
std::string to_json(uint64_t timestamp)
Generate JSON of the signal and metadata.
Definition: IqData.cpp:91
void clear()
Clear samples from the queue.
Definition: IqData.cpp:73
double min
Minimum value.
Definition: IqData.h:29
void update_frequency(std::vector< double > frequency)
Update the time differences and names.
Definition: IqData.cpp:86
IqData(uint32_t n)
Constructor.
Definition: IqData.cpp:11
uint32_t n
Maximum number of samples.
Definition: IqData.h:20