aicodix / modem

Simple OFDM modem for transceiving datagrams
BSD Zero Clause License
102 stars 20 forks source link

Change packet size #8

Closed LieBtrau closed 7 months ago

LieBtrau commented 7 months ago

Hi Ahmet,

It's been a while since I experimented with your modem. As far as I know, it supports two fix packet sizes: 5380 bytes for the default code branch, and 170 bytes for the short code branch.

I'd like to use your modem with Reticulum, but unfortunately that network stack expects an MTU of 500 bytes. With Reticulum supported, you wouldn't have to deal with questions for AES or RC4 support in Rattlegram. All encryption and authentication is dealt with by Reticulum.

The best I could do now is to send three packets of 170bytes, but that's rather inefficient. I wonder how much work it would be to e.g. increase the packet size of 170 threefold to 510 bytes.

Best regards,

Christoph

xdsopl commented 7 months ago

please look in the next branch

LieBtrau commented 7 months ago

I'm using the g++ compiler instead of clang++. Unfortunately neither the "master"-branch, nor the "next"-branch are building correctly. I get the same errors for both branches:

g++ -march=native -std=c++17 -W -Wall -Ofast -fno-exceptions -fno-rtti -I../dsp -I../code encode.cc -o encode
In file included from ../code/simd.hh:1501,
                 from ../code/polar_helper.hh:9,
                 from ../code/polar_parity_aided.hh:10,
                 from encode.cc:25:
../code/avx2_double.hh: In function ‘SIMD<float, WIDTH> vshuf(SIMD<float, WIDTH>, SIMD<unsigned int, WIDTH>) [with int WIDTH = 16]’:
../code/avx2_double.hh:1341:99: error: cannot convert ‘__m256i’ to ‘__m256’
 1341 | _mm256_permutevar8x32_ps(a.m[0], b.m[i]), _mm256_cmpgt_epi32(_mm256_set1_epi32(8), b.m[i])),
      |                                           ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                                             |
      |                                                             __m256i

In file included from /usr/lib/gcc/x86_64-linux-gnu/11/include/immintrin.h:43,
                 from ../code/avx2.hh:9,
                 from ../code/simd.hh:1500,
                 from ../code/polar_helper.hh:9,
                 from ../code/polar_parity_aided.hh:10,
                 from encode.cc:25:
/usr/lib/gcc/x86_64-linux-gnu/11/include/avxintrin.h:172:35: note:   initializing argument 2 of ‘__m256 _mm256_and_ps(__m256, __m256)’
  172 | _mm256_and_ps (__m256 __A, __m256 __B)
      |                            ~~~~~~~^~~
In file included from ../code/simd.hh:1501,
                 from ../code/polar_helper.hh:9,
                 from ../code/polar_parity_aided.hh:10,
                 from encode.cc:25:
../code/avx2_double.hh:1342:139: error: cannot convert ‘__m256i’ to ‘__m256’
 1342 | sub_epi32(b.m[i], _mm256_set1_epi32(8))), _mm256_cmpgt_epi32(b.m[i], _mm256_set1_epi32(7))));
      |                                           ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                                             |
      |                                                             __m256i

In file included from /usr/lib/gcc/x86_64-linux-gnu/11/include/immintrin.h:43,
                 from ../code/avx2.hh:9,
                 from ../code/simd.hh:1500,
                 from ../code/polar_helper.hh:9,
                 from ../code/polar_parity_aided.hh:10,
                 from encode.cc:25:
/usr/lib/gcc/x86_64-linux-gnu/11/include/avxintrin.h:172:35: note:   initializing argument 2 of ‘__m256 _mm256_and_ps(__m256, __m256)’
  172 | _mm256_and_ps (__m256 __A, __m256 __B)
      |                            ~~~~~~~^~~
make: *** [Makefile:21: encode] Error 1

Could you have a look at this please?

Best regards,

Christoph

xdsopl commented 7 months ago

Thanks for reporting. It should be fixed with: https://github.com/aicodix/code/commit/019adfa609ac6d1bc1c5dd8c5c70ab9097069643

LieBtrau commented 7 months ago

Yes, the compile error is fixed. Thanks.

LieBtrau commented 7 months ago

Yes, the compile error is fixed. Thanks.