Commit Graph

71 Commits

Author SHA1 Message Date
Georgi Gerganov
33c3bc2131 arduino : update the examples for Tx and Rx 2022-06-05 18:19:25 +03:00
Georgi Gerganov
0cf3d0e36b ggwave : big refactoring / renaming 2022-06-05 15:21:55 +03:00
Georgi Gerganov
3f52b0f1b0 ggwave : significantly speed-up fixed-length decoding on Arduino 2022-06-05 09:46:45 +03:00
Georgi Gerganov
6349e20a81 ggwave : minor rename 2022-06-05 09:23:48 +03:00
Georgi Gerganov
83e6b72e55 ggwave : various improvements
- faster FFT implementation
- built-in Direct Sequence Spread option
- remove <map> dependency from implementation
- update arduino-rx example
2022-06-04 15:41:23 +03:00
Georgi Gerganov
3fba71926d ggwave : switch from uint8_t -> uint16_t for fixed length decoding
uint8_t does not work so well for some reason. Probably we lose
precission, although it's not obvious why
2022-06-04 10:23:13 +03:00
Georgi Gerganov
11f8c660b6 ggwave : remove <map> header dependency 2022-05-30 22:52:12 +03:00
Georgi Gerganov
782ab237ac ggwave : remove <functional> header dependency 2022-05-30 22:01:38 +03:00
Georgi Gerganov
422f0dcc84 ggwave : remove <chrono> and <memory> headers 2022-05-30 19:55:30 +03:00
Georgi Gerganov
f798257f77 examples : remove ggwave-mod
No longer needed since the core ggwave lib now supports mono-tone
protocols
2022-05-30 19:09:53 +03:00
Georgi Gerganov
d4a66d9d31 arduino-rx : generate Tx response 2022-05-29 23:00:33 +03:00
Georgi Gerganov
62e54102ed ggwave : reduce memory usage for fixed length decoding 2022-05-29 22:12:06 +03:00
Georgi Gerganov
6888ca58f2 ggwave : add mono-tone protocols 2022-05-29 21:25:17 +03:00
Georgi Gerganov
fb2dcb3a37 ggwave : do not compute Tx amplitudes when Tx only tones 2022-05-29 17:58:07 +03:00
Georgi Gerganov
f6378c7b09 ggwave : compute Tx amplitudes always 2022-05-29 17:55:29 +03:00
Georgi Gerganov
9d9189f081 ggwave : add option to only generate tones on Tx 2022-05-29 17:42:24 +03:00
Georgi Gerganov
528d442a45 ggwave : reduce memory allocations on Tx 2022-05-29 17:18:27 +03:00
Georgi Gerganov
721ba8e107 ggwave : remove unused ampl i16 Tx buffer 2022-05-29 16:49:10 +03:00
Georgi Gerganov
1090fdb397 ecc : reduce memory allocations in reed-solomon lib 2022-05-29 12:15:24 +03:00
Georgi Gerganov
aea3096b85 wip : pimpled Tx and moved resampler inside GGWave 2022-05-29 11:19:57 +03:00
Georgi Gerganov
2e2f3563aa wip : pimpled Rx 2022-05-29 10:40:28 +03:00
Georgi Gerganov
9c79bc52d9 wip : refactoring 2022-05-29 09:45:17 +03:00
Georgi Gerganov
8fa457fce0 wip 2022-05-28 22:14:16 +03:00
Georgi Gerganov
fcb3bec055 wip 2022-05-28 19:41:56 +03:00
Georgi Gerganov
5b709ed3d3 ggwave, waver : minor compile warning fixes 2022-02-05 13:18:52 +02:00
Georgi Gerganov
bbacdbcc96 c-api : add toggleRxProtocol() (#60)
This function allows to enable/disable Rx protocols during the decoding
process. This is useful when the Tx/Rx protocol is known in advance.
2021-11-22 21:29:26 +02:00
Georgi Gerganov
43bf2f17e1 ggwave : fix out-of-bounds access in ggwave_decode (#53)
Also, provide a memory-safe overload called ggwave_ndecode()
The overload takes an extra parameter that specifies the size of
the output buffer and thus limits the size of the Rx payload that can be
decoded and stored.
2021-09-21 07:07:12 +03:00
Georgi Gerganov
9cf2d476b8 Add interface for changing ggwave's internal logging (#52)
* ggwave : add interface for changing ggwave's internal logging

Using GGWave::setLogFile() it is now possible to change the log file
used internally by ggwave, or disable it all together.

* ggwave : add comments about thread-safety of setLogFile
2021-09-21 06:48:16 +03:00
Georgi Gerganov
d73b18426b ggwave : fix python build on Windows 2021-07-03 11:45:18 +03:00
Georgi Gerganov
ba87a651e3 ggwave : add option to query the generated tones
Calling the getWaveformTones() method after calling encode() gives a
list of the tones participating in the generated sound
2021-04-03 18:49:36 +03:00
Georgi Gerganov
a0f5e9e3da waver : display detected Rx in spectrogram 2021-02-28 09:33:55 +02:00
Georgi Gerganov
1c59e38696 ggwave : switch to floating point sampling rate 2021-02-27 12:23:25 +02:00
Georgi Gerganov
5b5293d764 Waver v1.4.0 (#23)
* waver : change default protocol

* waver : global scale to 1.25

* waver : more colors

* waver : resend last message

* waver : bigger send button

* waver : start with fixed-length enabled

* waver : fix spectrum display for fixed-length mode

* waver : add option to control input sample rate offset

* ggwave : improve fixed-length decoding

* examples-common : SDL now captures 1024 samples instead of 4096

* waver : spectrum improvements + spectrogram mode

* minor changes

* ggwave : add FFT static method

* waver : realtime spectrum display

* waver : fix dragging behavior

* waver : show current tx protocol in "Messages"

* waver : show frequency range and bandwidth of selected protocol

* waver : change sample rate offset function

output instead of input

* waver : add info about local peers

* waver : add option to pause spectrum by clicking it

* waver : minor

* waver : add option descriptions

* waver : fix data races

* waver : purple-ish background

* waver : cian-ish background

* waver : add option button to cancel receiving

* waver : add option to select Rx Protocols

* waver : change default protocol

* waver : fix displayed protocol for each message
2021-02-27 11:45:01 +02:00
Georgi Gerganov
553b414929 ggwave : more resampling fixes
This time the sound cracking should be fixed for real.

Also adding option to generate noise in the cpp tests
2021-02-21 13:30:27 +02:00
Georgi Gerganov
62b71c3322 ggwave : resampling fixes
The old output resampling was bugged and produced cracking in the audio
when the output sampling rate was different from the base sampling rate.

Additionally, the decoding wasn't properly handling resampled input in all
cases.
2021-02-21 00:16:43 +02:00
Georgi Gerganov
f4fb02d5d4 ggwave : add "soundMarkerThreshold" parameter
Can be used to control the threshold used for distinguishing odd from even
frequencies in the sound markers.
2021-02-21 00:13:28 +02:00
Georgi Gerganov
19bf22df0d ggwave v0.2.0 (#20)
* ggwave : add support for fixed length transmissions

* spectrogram : add sample rate offset for debugging purposes

* gwave : fix decoding bug

* waver : wip

* wip

* remove post-marker frames

* add resampler

* ggwave : input/output resampling

* ggwave : fix python build

* ggwave : update spm

* ggwave : refactor duplicate encode/decode code

* ggwave : fix sound marker detection

* waver : fix typo

* ggwave : fix uninitialized members

* ggwave : more sensitive receive
2021-02-20 19:16:15 +02:00
Georgi Gerganov
9b3bcfb619 ggwave : should improve recall success rate
especially for "fastest" protocols
2021-02-09 20:25:17 +02:00
Georgi Gerganov
105e0fd48d update default parameters + python updates
- by default ggwave will now output 32-bit float samples
- python samples no longer use numpy
- python test now decodes payload
- fix buffer overflow in receive.py example
2021-01-23 23:30:24 +02:00
Georgi Gerganov
ba8e0cd2b1 c, python : add option to query encode size 2021-01-23 17:13:13 +02:00
Georgi Gerganov
0c746c1b15 tests : add test for capture/playback at different sample rates 2021-01-23 16:27:50 +02:00
Georgi Gerganov
597cc48cbb core : refactoring + bug fix
- rename callback types
- fix calculation of data frames
2021-01-23 15:47:59 +02:00
Georgi Gerganov
f245b6e930 tests : add C test 2021-01-23 14:25:18 +02:00
Georgi Gerganov
a64106783f Support for various sample formats (#11)
* wip : support for various sample formats

* finalize support for various sample formats

* adding more tests

* update python bindings

* add "string" header
2021-01-23 11:45:20 +02:00
Georgi Gerganov
86b3615012 tests : adding first tests + sanitizer builds 2021-01-18 21:32:27 +02:00
Georgi Gerganov
cd332b5919 ggwave : refactoring + comments 2021-01-17 21:19:41 +02:00
Georgi Gerganov
2ed431fa81 Add python bindings + package (#10)
* wip : python package

* wip : minor fixes

* wip : upload package to main pypi

* wip : initial text encoding

* wip : extending C api

* wip : use map of global instances

* wip : added decode functionality

* update main README
2021-01-17 17:36:50 +02:00
Georgi Gerganov
94978e679a ggwave : add default samples per frame 2021-01-16 18:39:11 +02:00
Georgi Gerganov
7ccd6ed2c6 ggwave : print to stderr + send() return bool 2021-01-10 15:33:09 +02:00
Georgi Gerganov
a9b339c02e ggwave : getTxProtocols is now static method 2021-01-09 13:24:19 +02:00