14#define JS8_RX_SAMPLE_RATE 12000
15#define JS8_RX_SAMPLE_SIZE (JS8_NTMAX * JS8_RX_SAMPLE_RATE)
17#define JS8_RING_BUFFER 1
18#define JS8_DECODE_THREAD 1
19#define JS8_ALLOW_EXTENDED 1
20#define JS8_AUTO_SYNC 1
22#define JS8_NUM_SYMBOLS 79
23#define JS8_ENABLE_JS8A 1
24#define JS8_ENABLE_JS8B 1
25#define JS8_ENABLE_JS8C 1
26#define JS8_ENABLE_JS8E 1
27#define JS8_ENABLE_JS8I 1
29#define JS8A_SYMBOL_SAMPLES 1920
30#define JS8A_TX_SECONDS 15
31#define JS8A_START_DELAY_MS 500
33#define JS8B_SYMBOL_SAMPLES 1200
34#define JS8B_TX_SECONDS 10
35#define JS8B_START_DELAY_MS 200
37#define JS8C_SYMBOL_SAMPLES 600
38#define JS8C_TX_SECONDS 6
39#define JS8C_START_DELAY_MS 100
41#define JS8E_SYMBOL_SAMPLES 3840
42#define JS8E_TX_SECONDS 30
43#define JS8E_START_DELAY_MS 500
45#define JS8I_SYMBOL_SAMPLES 384
46#define JS8I_TX_SECONDS 4
47#define JS8I_START_DELAY_MS 100
51 std::int16_t d2[JS8_RX_SAMPLE_SIZE];
78 float savg[JS8_NSMAX];
79 float slin[JS8_NSMAX];
83extern std::mutex fftw_mutex;
87inline int code_time(
int hour,
int minute,
int second){
88 return hour * 10000 + minute * 100 + second;
100 result.hour = nutc / 10000;
101 result.minute = nutc % 10000 / 100;
102 result.second = nutc % 100;