Skip to content

Commit 9c42807

Browse files
authored
Restructure core side & EuPI Improvement Patch (#215)
### Summary - It has been reorganized as follows in the `core` folder. (with test code) - base - charset - fft - modem - packet - renderer - wakeup - wave - Update gradle.properties setting for build speed. ``` org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 ``` - Remove `samplerate` argument from `FFTModel` interface - Add `initialize` function for re-using FFT in `FFTProcessor` & `BlueFFT` - Refactoring `renderer` for `EuPI` Tx - Refactoring `EuPI` for `Eupi` Rx - Improve EuPI listening performance - Remove one test case from `FFTHelperTest` - Build errors sometimes occur. (not everytime). After this patch, `v0.8.1.1` will be published.
1 parent eb4e9d5 commit 9c42807

File tree

95 files changed

+402
-467
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

95 files changed

+402
-467
lines changed

euphony/src/main/cpp/CMakeLists.txt

+31-31
Original file line numberDiff line numberDiff line change
@@ -24,37 +24,37 @@ target_link_libraries(
2424
set(EUPHONY_SRC
2525
arms/kiss_fft.c
2626
arms/kiss_fftr.c
27-
core/source/AudioStreamCallback.cpp
28-
core/source/ASCIICharset.cpp
29-
core/source/ASK.cpp
30-
core/source/UTF8Charset.cpp
31-
core/source/UTF16Charset.cpp
32-
core/source/UTF32Charset.cpp
33-
core/source/DefaultCharset.cpp
34-
core/source/Base2.cpp
35-
core/source/Base16.cpp
36-
core/source/Base32.cpp
37-
core/source/Base64.cpp
38-
core/source/Base16Exception.cpp
39-
core/source/Base32Exception.cpp
40-
core/source/Base64Exception.cpp
41-
core/source/EuPIOscillator.cpp
42-
core/source/EuPIRenderer.cpp
43-
core/source/FFTHelper.cpp
44-
core/source/FFTModel.cpp
45-
core/source/FFTProcessor.cpp
46-
core/source/BlueFFT.cpp
47-
core/source/FSK.cpp
48-
core/source/HexVector.cpp
49-
core/source/Packet.cpp
50-
core/source/PacketBuilder.cpp
51-
core/source/PacketErrorDetector.cpp
52-
core/source/TxEngine.cpp
53-
core/source/RxEngine.cpp
54-
core/source/Wave.cpp
55-
core/source/WaveBuilder.cpp
56-
core/source/WaveRenderer.cpp
57-
core/source/WakeUpFFTSensor.cpp
27+
core/AudioStreamCallback.cpp
28+
core/charset/ASCIICharset.cpp
29+
core/modem/ASK.cpp
30+
core/charset/UTF8Charset.cpp
31+
core/charset/UTF16Charset.cpp
32+
core/charset/UTF32Charset.cpp
33+
core/charset/DefaultCharset.cpp
34+
core/base/Base2.cpp
35+
core/base/Base16.cpp
36+
core/base/Base32.cpp
37+
core/base/Base64.cpp
38+
core/base/Base16Exception.cpp
39+
core/base/Base32Exception.cpp
40+
core/base/Base64Exception.cpp
41+
core/renderer/EuPIOscillator.cpp
42+
core/renderer/EuPIRenderer.cpp
43+
core/fft/FFTHelper.cpp
44+
core/fft/FFTModel.cpp
45+
core/fft/FFTProcessor.cpp
46+
core/fft/BlueFFT.cpp
47+
core/modem/FSK.cpp
48+
core/HexVector.cpp
49+
core/packet/Packet.cpp
50+
core/packet/PacketBuilder.cpp
51+
core/packet/PacketErrorDetector.cpp
52+
core/TxEngine.cpp
53+
core/RxEngine.cpp
54+
core/wave/Wave.cpp
55+
core/wave/WaveBuilder.cpp
56+
core/renderer/WaveRenderer.cpp
57+
core/wakeup/WakeUpFFTSensor.cpp
5858
native-connector.cpp
5959
)
6060

euphony/src/main/cpp/core/Definitions.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
#include <cstdint>
55
#include <math.h>
6-
#include "Wave.h"
6+
#include "wave/Wave.h"
77

88
namespace Euphony {
99
typedef std::vector<std::shared_ptr<Wave>> WaveList;

euphony/src/main/cpp/core/source/HexVector.cpp euphony/src/main/cpp/core/HexVector.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#include "../HexVector.h"
1+
#include "HexVector.h"
22
#include <string>
33
#include <sstream>
44

euphony/src/main/cpp/core/source/RxEngine.cpp euphony/src/main/cpp/core/RxEngine.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
#include "../RxEngine.h"
2-
#include "../FFTProcessor.h"
1+
#include "RxEngine.h"
2+
#include "fft/FFTProcessor.h"
33
#include <oboe/Oboe.h>
44
#include <Log.h>
55

euphony/src/main/cpp/core/source/TxEngine.cpp euphony/src/main/cpp/core/TxEngine.cpp

+7-7
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55

66
#include <utility>
77
#include <Log.h>
8-
#include "../Base2.h"
9-
#include "../ModemFactory.h"
10-
#include "../PacketBuilder.h"
11-
#include "../TxEngine.h"
12-
#include "../EuPIRenderer.h"
13-
#include "../AudioStreamCallback.h"
14-
#include "../WaveRenderer.h"
8+
#include "base/Base2.h"
9+
#include "modem/ModemFactory.h"
10+
#include "packet/PacketBuilder.h"
11+
#include "TxEngine.h"
12+
#include "renderer/EuPIRenderer.h"
13+
#include "AudioStreamCallback.h"
14+
#include "renderer/WaveRenderer.h"
1515

1616
using namespace Euphony;
1717

File renamed without changes.

euphony/src/main/cpp/core/source/Base16.cpp euphony/src/main/cpp/core/base/Base16.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#include "../Base16.h"
1+
#include "base/Base16.h"
22
#include <iomanip>
33

44
using namespace Euphony;
File renamed without changes.

euphony/src/main/cpp/core/source/Base16Exception.cpp euphony/src/main/cpp/core/base/Base16Exception.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
#include "../Definitions.h"
2-
#include "../Base16Exception.h"
1+
#include "Definitions.h"
2+
#include "base/Base16Exception.h"
33

44
using namespace Euphony;
55

euphony/src/main/cpp/core/source/Base2.cpp euphony/src/main/cpp/core/base/Base2.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#include "../Base2.h"
1+
#include "base/Base2.h"
22
#include <sstream>
33

44
using namespace Euphony;
File renamed without changes.

euphony/src/main/cpp/core/source/Base32.cpp euphony/src/main/cpp/core/base/Base32.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#include "../Base32.h"
1+
#include "base/Base32.h"
22
#include <iomanip>
33
#include <sstream>
44
#include <cmath>
File renamed without changes.

euphony/src/main/cpp/core/source/Base32Exception.cpp euphony/src/main/cpp/core/base/Base32Exception.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
#include "../Definitions.h"
2-
#include "../Base32Exception.h"
1+
#include "Definitions.h"
2+
#include "base/Base32Exception.h"
33

44
using namespace Euphony;
55

euphony/src/main/cpp/core/source/Base64.cpp euphony/src/main/cpp/core/base/Base64.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#include "../Base64.h"
1+
#include "base/Base64.h"
22
#include <iomanip>
33
#include <sstream>
44
#include <cmath>
File renamed without changes.

euphony/src/main/cpp/core/source/Base64Exception.cpp euphony/src/main/cpp/core/base/Base64Exception.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
#include "../Definitions.h"
2-
#include "../Base64Exception.h"
1+
#include "Definitions.h"
2+
#include "base/Base64Exception.h"
33

44
using namespace Euphony;
55

euphony/src/main/cpp/core/BaseFactory.h euphony/src/main/cpp/core/base/BaseFactory.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#ifndef EUPHONY_BASEFACTORY_H
22
#define EUPHONY_BASEFACTORY_H
33

4-
#include "Definitions.h"
4+
#include "../Definitions.h"
55
#include "Base2.h"
66
#include "Base16.h"
77

euphony/src/main/cpp/core/source/ASCIICharset.cpp euphony/src/main/cpp/core/charset/ASCIICharset.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#include "../ASCIICharset.h"
1+
#include "ASCIICharset.h"
22
#include <sstream>
33
#include <iomanip>
44

euphony/src/main/cpp/core/source/DefaultCharset.cpp euphony/src/main/cpp/core/charset/DefaultCharset.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
#include "../DefaultCharset.h"
1+
#include "DefaultCharset.h"
2+
23
using namespace Euphony;
34

45
HexVector DefaultCharset::encode(std::string src) {

euphony/src/main/cpp/core/source/UTF16Charset.cpp euphony/src/main/cpp/core/charset/UTF16Charset.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#include "../UTF16Charset.h"
1+
#include "UTF16Charset.h"
22
#include <codecvt>
33
#include <iomanip>
44

euphony/src/main/cpp/core/source/UTF32Charset.cpp euphony/src/main/cpp/core/charset/UTF32Charset.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#include "../UTF32Charset.h"
1+
#include "UTF32Charset.h"
22
#include <bitset>
33
#include <codecvt>
44
#include <iomanip>

euphony/src/main/cpp/core/source/UTF8Charset.cpp euphony/src/main/cpp/core/charset/UTF8Charset.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#include "../UTF8Charset.h"
1+
#include "UTF8Charset.h"
22

33
#include <iostream>
44
#include <string>

euphony/src/main/cpp/core/source/BlueFFT.cpp euphony/src/main/cpp/core/fft/BlueFFT.cpp

+19-25
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
#include "../BlueFFT.h"
2-
#include "../Definitions.h"
1+
#include "BlueFFT.h"
2+
#include <Definitions.h>
33

44
using namespace Euphony;
55

6-
BlueFFT::BlueFFT(int fft_size, int sample_rate)
7-
: FFTModel(fft_size, sample_rate)
6+
BlueFFT::BlueFFT(int fft_size)
7+
: FFTModel(fft_size)
88
, fftSize(fft_size)
99
, halfOfFFTSize(fft_size >> 1)
1010
{
@@ -21,26 +21,35 @@ BlueFFT::~BlueFFT() {
2121
std::vector<float>().swap(phaseSpectrum);
2222
}
2323

24-
void BlueFFT::initFloatSrc() {
25-
floatSrc.clear();
24+
void BlueFFT::initialize() {
2625
std::vector<fcpx>().swap(floatSrc);
27-
floatSrc.resize(fftSize);
26+
floatSrc.resize(fftSize, 0);
27+
28+
std::vector<i16cpx>().swap(i16Src);
29+
i16Src.resize(fftSize, 0);
30+
31+
std::vector<float>().swap(amplitudeSpectrum);
32+
amplitudeSpectrum.resize(halfOfFFTSize, 0);
33+
34+
std::vector<float>().swap(phaseSpectrum);
35+
phaseSpectrum.resize(halfOfFFTSize, 0);
2836
}
37+
2938
Spectrums BlueFFT::makeSpectrum(const short *src) {
3039
/* TODO: should implement makeSpectrum for short source */
31-
return {0, 0};
40+
return {nullptr, nullptr};
3241
}
3342

3443
Spectrums BlueFFT::makeSpectrum(const float *src) {
35-
initFloatSrc();
44+
initialize();
3645

3746
for(int i = 0; i < fftSize; i++) {
3847
floatSrc[i].real(src[i]);
3948
}
4049

4150
FFT(floatSrc, false);
4251

43-
int startIdx = frequencyToIndex(kStartSignalFrequency) - 1;
52+
int startIdx = 0;
4453
int lenHalfOfNumSamples = halfOfFFTSize;
4554

4655
for(int i = startIdx; i <= lenHalfOfNumSamples; ++i) {
@@ -54,21 +63,6 @@ Spectrums BlueFFT::makeSpectrum(const float *src) {
5463
return {&amplitudeSpectrum[0], &phaseSpectrum[0]};
5564
}
5665

57-
int BlueFFT::getResultSize() const {
58-
return halfOfFFTSize + 1;
59-
}
60-
61-
inline float BlueFFT::shortToFloat(const short val) {
62-
if( val < 0 )
63-
return val * ( 1 / 32768.0f );
64-
else
65-
return val * ( 1 / 32767.0f );
66-
}
67-
68-
inline int BlueFFT::frequencyToIndex(const int freq) const {
69-
return (int)(((halfOfFFTSize) + 1) * ((double)freq / (double)getSampleRate()));
70-
}
71-
7266
template <typename T>
7367
void BlueFFT::FFT(std::vector<T> &spectrum, bool inv) {
7468
int N = fftSize;

euphony/src/main/cpp/core/BlueFFT.h euphony/src/main/cpp/core/fft/BlueFFT.h

+2-5
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,13 @@ namespace Euphony {
1313

1414
class BlueFFT : public FFTModel {
1515
public:
16-
BlueFFT(int fft_size, int sample_rate);
16+
BlueFFT(int fft_size);
1717
~BlueFFT();
1818
virtual Spectrums makeSpectrum(const short* src);
1919
virtual Spectrums makeSpectrum(const float* src);
20-
int getResultSize() const;
2120

2221
private:
23-
void initFloatSrc();
24-
static float shortToFloat(const short val);
25-
int frequencyToIndex(const int freq) const;
22+
void initialize();
2623
template <typename T>
2724
void FFT(std::vector<T> &data, bool inv);
2825

euphony/src/main/cpp/core/source/FFTHelper.cpp euphony/src/main/cpp/core/fft/FFTHelper.cpp

+6-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#include "../FFTHelper.h"
1+
#include "FFTHelper.h"
22
#include <cmath>
33

44
using namespace Euphony;
@@ -38,7 +38,11 @@ int FFTHelper::getMaxIdxFromSource(const float *fft_source, const int standardFr
3838
int maxIndex = 0;
3939
float maxValue = 0;
4040
const int startIdx = getIndexOfFrequency(standardFrequency, fftSize, sampleRate);
41-
const int endIdx = startIdx + range;
41+
int endIdx = startIdx + range;
42+
const int halfFFTSize = fftSize >> 1;
43+
if(endIdx > halfFFTSize)
44+
endIdx = halfFFTSize;
45+
4246
for(int i = startIdx - 1; i < endIdx; i++) {
4347
if(fft_source[i] > maxValue) {
4448
maxValue = fft_source[i];

euphony/src/main/cpp/core/source/FFTModel.cpp euphony/src/main/cpp/core/fft/FFTModel.cpp

+3-12
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
1-
#include "../FFTModel.h"
2-
#include "../Definitions.h"
1+
#include "FFTModel.h"
2+
#include <Definitions.h>
33

44
using namespace Euphony;
55

6-
FFTModel::FFTModel(int fftSizeSrc, int sampleRateSrc)
6+
FFTModel::FFTModel(int fftSizeSrc)
77
: fftSize(fftSizeSrc)
8-
, sampleRate(sampleRateSrc)
98
{ }
109

1110
int FFTModel::getFFTSize() const {
@@ -16,14 +15,6 @@ void FFTModel::setFFTSize(int fftSizeSrc) {
1615
fftSize = fftSizeSrc;
1716
}
1817

19-
int FFTModel::getSampleRate() const {
20-
return sampleRate;
21-
}
22-
23-
void FFTModel::setSampleRate(int sampleRateSrc) {
24-
sampleRate = sampleRateSrc;
25-
}
26-
2718
float FFTModel::makeAmplitudeSpectrum(float real, float im) const {
2819
return sqrtf(real * real + im * im ) / (float) (fftSize >> 1);
2920
}

euphony/src/main/cpp/core/FFTModel.h euphony/src/main/cpp/core/fft/FFTModel.h

+1-4
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ namespace Euphony {
1616

1717
class FFTModel {
1818
public:
19-
FFTModel(int fftSizeSrc, int sampleRateSrc);
19+
FFTModel(int fftSizeSrc);
2020
virtual ~FFTModel() = default;
2121

2222
virtual Spectrums makeSpectrum(const short *pcmSrc) = 0;
@@ -27,12 +27,9 @@ namespace Euphony {
2727

2828
int getFFTSize() const;
2929
void setFFTSize(int fftSize);
30-
int getSampleRate() const;
31-
void setSampleRate(int sampleRate);
3230

3331
private:
3432
int fftSize;
35-
int sampleRate;
3633

3734
};
3835
}

0 commit comments

Comments
 (0)