• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Radio Internetowe na ESP32
#1
Witam.

Składał może ktoś radio internetowe z tej strony?
http://rcl-radio.ru/?p=120767
Oczywiście do kodu zaimplementowałem listę polskich stacji.
Podczas kompilacji otrzymuję błędy jak poniżej.
Bibliotekę ESP32-AudioI2S mam w wersji 2.0.0. - na tej powinno działać
Jak ją zaktualizuję do najnowszej wersji, to się wszystko kompiluje ale szkic jest zbyt duży.
Może ktoś podpowie gdzie szukać przyczyny?
Pozdrawiam.


c:\Users\danie\Documents\Arduino\libraries\ESP32-audioI2S-2.0.3\src\aac_decoder\aac_decoder.cpp: In function 'void UnpackQuads(int, int, int*)':
c:\Users\danie\Documents\Arduino\libraries\ESP32-audioI2S-2.0.3\src\aac_decoder\aac_decoder.cpp:3289:106: error: invalid conversion from 'int*' to 'int32_t*' {aka 'long int*'} [-fpermissive]
3289 |        nCodeBits = DecodeHuffmanScalar(huffTabSpec, &huffTabSpecInfo[cb - HUFFTAB_SPEC_OFFSET], bitBuf, &val);
      |                                                                                                          ^~~~
      |                                                                                                          |
      |                                                                                                          int*
In file included from c:\Users\danie\Documents\Arduino\libraries\ESP32-audioI2S-2.0.3\src\aac_decoder\aac_decoder.cpp:9:
c:\Users\danie\Documents\Arduino\libraries\ESP32-audioI2S-2.0.3\src\aac_decoder\aac_decoder.h:490:115: note:  initializing argument 4 of 'int DecodeHuffmanScalar(const short int*, const HuffInfo_t*, unsigned int, int32_t*)'
  490 | int DecodeHuffmanScalar(const signed short *huffTab, const HuffInfo_t *huffTabInfo, unsigned int bitBuf, int32_t *val);
      |                                                                                                          ~~~~~~~~~^~~
c:\Users\danie\Documents\Arduino\libraries\ESP32-audioI2S-2.0.3\src\aac_decoder\aac_decoder.cpp: In function 'void UnpackPairsNoEsc(int, int, int*)':
c:\Users\danie\Documents\Arduino\libraries\ESP32-audioI2S-2.0.3\src\aac_decoder\aac_decoder.cpp:3336:104: error: invalid conversion from 'int*' to 'int32_t*' {aka 'long int*'} [-fpermissive]
3336 |        nCodeBits = DecodeHuffmanScalar(huffTabSpec, &huffTabSpecInfo[cb-HUFFTAB_SPEC_OFFSET], bitBuf, &val);
      |                                                                                                        ^~~~
      |                                                                                                        |
      |                                                                                                        int*
c:\Users\danie\Documents\Arduino\libraries\ESP32-audioI2S-2.0.3\src\aac_decoder\aac_decoder.h:490:115: note:  initializing argument 4 of 'int DecodeHuffmanScalar(const short int*, const HuffInfo_t*, unsigned int, int32_t*)'
  490 | int DecodeHuffmanScalar(const signed short *huffTab, const HuffInfo_t *huffTabInfo, unsigned int bitBuf, int32_t *val);
      |                                                                                                          ~~~~~~~~~^~~
c:\Users\danie\Documents\Arduino\libraries\ESP32-audioI2S-2.0.3\src\aac_decoder\aac_decoder.cpp: In function 'void UnpackPairsEsc(int, int, int*)':
c:\Users\danie\Documents\Arduino\libraries\ESP32-audioI2S-2.0.3\src\aac_decoder\aac_decoder.cpp:3378:104: error: invalid conversion from 'int*' to 'int32_t*' {aka 'long int*'} [-fpermissive]
3378 |        nCodeBits = DecodeHuffmanScalar(huffTabSpec, &huffTabSpecInfo[cb-HUFFTAB_SPEC_OFFSET], bitBuf, &val);
      |                                                                                                        ^~~~
      |                                                                                                        |
      |                                                                                                        int*
c:\Users\danie\Documents\Arduino\libraries\ESP32-audioI2S-2.0.3\src\aac_decoder\aac_decoder.h:490:115: note:  initializing argument 4 of 'int DecodeHuffmanScalar(const short int*, const HuffInfo_t*, unsigned int, int32_t*)'
  490 | int DecodeHuffmanScalar(const signed short *huffTab, const HuffInfo_t *huffTabInfo, unsigned int bitBuf, int32_t *val);
      |                                                                                                          ~~~~~~~~~^~~
c:\Users\danie\Documents\Arduino\libraries\ESP32-audioI2S-2.0.3\src\aac_decoder\aac_decoder.cpp: In function 'int DecodeOneScaleFactor()':
c:\Users\danie\Documents\Arduino\libraries\ESP32-audioI2S-2.0.3\src\aac_decoder\aac_decoder.cpp:4179:82: error: invalid conversion from 'int*' to 'int32_t*' {aka 'long int*'} [-fpermissive]
4179 |    nBits = DecodeHuffmanScalar(huffTabScaleFact, &huffTabScaleFactInfo, bitBuf, &val);
      |                                                                                  ^~~~
      |                                                                                  |
      |                                                                                  int*
c:\Users\danie\Documents\Arduino\libraries\ESP32-audioI2S-2.0.3\src\aac_decoder\aac_decoder.h:490:115: note:  initializing argument 4 of 'int DecodeHuffmanScalar(const short int*, const HuffInfo_t*, unsigned int, int32_t*)'
  490 | int DecodeHuffmanScalar(const signed short *huffTab, const HuffInfo_t *huffTabInfo, unsigned int bitBuf, int32_t *val);
      |                                                                                                          ~~~~~~~~~^~~
c:\Users\danie\Documents\Arduino\libraries\ESP32-audioI2S-2.0.3\src\aac_decoder\aac_decoder.cpp: In function 'void GenerateNoiseVector(int*, int*, int)':
c:\Users\danie\Documents\Arduino\libraries\ESP32-audioI2S-2.0.3\src\aac_decoder\aac_decoder.cpp:5313:41: error: invalid conversion from 'uint32_t*' {aka 'long unsigned int*'} to 'unsigned int*' [-fpermissive]
5313 |        coef[i] = ((int32_t)Get32BitVal((uint32_t *)last)) >> 16;
      |                                        ^~~~~~~~~~~~~~~~
      |                                        |
      |                                        uint32_t* {aka long unsigned int*}
c:\Users\danie\Documents\Arduino\libraries\ESP32-audioI2S-2.0.3\src\aac_decoder\aac_decoder.cpp:5146:40: note:  initializing argument 1 of 'unsigned int Get32BitVal(unsigned int*)'
5146 | unsigned int Get32BitVal(unsigned int *last)
      |                          ~~~~~~~~~~~~~~^~~~
c:\Users\danie\Documents\Arduino\libraries\ESP32-audioI2S-2.0.3\src\aac_decoder\aac_decoder.cpp: In function 'int DecodeOneSymbol(int)':
c:\Users\danie\Documents\Arduino\libraries\ESP32-audioI2S-2.0.3\src\aac_decoder\aac_decoder.cpp:8549:57: error: invalid conversion from 'int*' to 'int32_t*' {aka 'long int*'} [-fpermissive]
8549 |    nBits = DecodeHuffmanScalar(huffTabSBR, hi, bitBuf, &val);
      |                                                        ^~~~
      |                                                        |
      |                                                        int*
c:\Users\danie\Documents\Arduino\libraries\ESP32-audioI2S-2.0.3\src\aac_decoder\aac_decoder.h:490:115: note:  initializing argument 4 of 'int DecodeHuffmanScalar(const short int*, const HuffInfo_t*, unsigned int, int32_t*)'
  490 | int DecodeHuffmanScalar(const signed short *huffTab, const HuffInfo_t *huffTabInfo, unsigned int bitBuf, int32_t *val);
      |                                                                                                          ~~~~~~~~~^~~
Znaleziono wiele bibliotek w "SSD1306.h"
  Wykorzystane: C:\Users\danie\Documents\Arduino\libraries\ESP32-OLED0.96-ssd1306-master
  Niewykorzystane: C:\Users\danie\Documents\Arduino\libraries\ESP8266_and_ESP32_Oled_Driver_for_SSD1306_display
Znaleziono wiele bibliotek w "ESP32Encoder.h"
  Wykorzystane: C:\Users\danie\Documents\Arduino\libraries\ESP32Encoder
  Niewykorzystane: C:\Users\danie\Documents\Arduino\libraries\ESP32Encoder-0.10.0
Znaleziono wiele bibliotek w "Audio.h"
  Wykorzystane: C:\Users\danie\Documents\Arduino\libraries\ESP32-audioI2S-2.0.3
  Niewykorzystane: C:\Users\danie\Documents\Arduino\libraries\ESP32-audioI2S-master
Znaleziono wiele bibliotek w "SD.h"
  Wykorzystane: C:\Users\danie\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.1\libraries\SD
  Niewykorzystane: C:\Users\danie\AppData\Local\Arduino15\libraries\SD
exit status 1

Compilation error: exit status 1
 
Odpowiedź
#2
(09-10-2025, 18:06)daniel55 napisał(a): Witam.

Może ktoś podpowie gdzie szukać przyczyny?
Pozdrawiam.
Wszystkie te błędy wyglądają na niestarannie napisany kod - ogólnie C/C++w coraz nowszych wersja jest coraz bardziej czepialskie - mniej tolerancyjne na nieścisłości. I masz efekt jest jak się stary kod kompiluje nowszym kompilatorem. Możesz albo poprawić kod (głównie ujednolicić typy zmiennych, albo dodać jawne rzutowanie), albo ustawić w kompilatorze mniej czepialskie opcje (to zwykle powinny być warningi, ale gcc ma opcje by traktował warning jak errory i kończył z błędem).
 
Odpowiedź
#3
Dzięki za sugestie.
Kod zaczerpnięty ze strony projektu, którą podlinkowałem wyżej.
Ogólnie kompilator czepia się kodu bibliotek.
Spróbuję najpierw ustawić opcje kompilatora i zobaczę co będzie.
Pozdrawiam.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości