beeping-core 2.0.0
C++20 library for encoding and decoding data over sound
Loading...
Searching...
No Matches
Globals.h
1#ifdef _ANDROID_LOG_
2#include <android/log.h>
3#endif //_ANDROID_LOG_
4
5#ifdef _IOS_LOG_
6void ios_log(const char* message, ...) __attribute__((format(printf, 1, 2)));
7#endif //_IOS_LOG_
8
9namespace Globals {
10
11enum DECODING_MODE { DECODING_MODE_AUDIBLE = 0, DECODING_MODE_INAUDIBLE = 1 };
12
13// --- Constexpr token/tone counts (immutable across all instances) ---
14constexpr int numTokensAll = 32;
15constexpr int numTonesAll = 9;
16
17constexpr int numTokensAudible = numTokensAll;
18constexpr int numTokensNonAudible = numTokensAll;
19
20constexpr int numTonesAudibleMultiTone = numTonesAll;
21constexpr int numTonesNonAudibleMultiTone = numTonesAll;
22
23constexpr int numFrontDoorTokens = 2;
24constexpr int numWordTokens = 9;
25constexpr int numCheckTokens = 1;
26constexpr int numCorrectionTokens = 8;
27constexpr int numMessageTokens =
28 numWordTokens + numCheckTokens + numCorrectionTokens;
29constexpr int numTotalTokens = numFrontDoorTokens + numMessageTokens;
30
31// --- Character / frequency lookup (pure functions, no global state) ---
32extern int getIdxFromChar(char c);
33extern char getCharFromIdx(int idx);
34
35extern float getFreqFromIdxAudible(int idx, float mSampleRate, int mWindowSize);
36extern float getFreqFromIdxNonAudible(int idx, float mSampleRate,
37 int mWindowSize);
38
39extern void getFreqsFromIdxAudibleMultiTone(int idx, float samplingRate,
40 int windowSize, float** freqs);
41extern float getToneFromIdxAudibleMultiTone(int idx, float samplingRate,
42 int windowSize);
43extern void getIdxsFromIdxAudibleMultiTone(int idx, int** idxs);
44
45extern void getFreqsFromIdxNonAudibleMultiTone(int idx, float samplingRate,
46 int windowSize, float baseFreq,
47 float freqOffset, float** freqs);
48extern float getToneFromIdxNonAudibleMultiTone(int idx, float samplingRate,
49 int windowSize, float baseFreq,
50 float freqOffset);
51extern void getIdxsFromIdxNonAudibleMultiTone(int idx, int** idxs);
52
53extern int getIdxTokenFromIdxsTonesAudibleMultiTone(int idx1, int idx2);
54extern int getIdxTokenFromIdxsTonesNonAudibleMultiTone(int idx1, int idx2);
55
56extern float getLoudnessFromIdx(int idx, int numTokens);
57extern void getLoudnessAudibleMultiToneFromIdx(int idx, float** freqsLoudness);
58extern void getLoudnessNonAudibleMultiToneFromIdx(int idx,
59 float** freqsLoudness);
60
61extern float getMusicalNoteFromIdx(int idx);
62
63extern float maxValue(float* myArray, int size);
64extern int maxValue(int* myArray, int size);
65
66extern float secondValue(float* myArray, int size);
67
68extern int maxValueIdx(float* myArray, int size);
69extern int maxValueIdx(int* myArray, int size);
70
71extern int secondValueIdx(float* myArray, int size);
72extern int secondValueIdx(int* myArray, int size);
73
74extern float sum(float* data, int size);
75extern float square_sum(float* data, int size);
76extern float mean(float* data, int size);
77extern float standard_deviation(float* data, int size);
78extern float standard_deviation(float* data, float mean, int size);
79
80} // namespace Globals