-
Data: 2022-08-09 08:36:38
Temat: Re: Biblioteka MQTT i dziwny kod w C
Od: Atlantis <m...@w...pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On 09.08.2022 07:13, JDX wrote:
> Ewidentny błąd - pokazuje dlaczego należy kompilować z -Wall (oraz
> ewentualnie -pedantic) i nie ignorować ostrzeżeń. Aczkolwiek w
Przy próbie kompilacji z -Wall kompilator (xc32-gcc) wywala kilka błędów
w bibliotece GCC, ale dotyczą one takich rzeczy jak niewykorzystane
zmienne albo niejawne rzutowanie z char* na BYTE* w argumencie funkcji.
Do tej konkretnej konstrukcji z pustą listą parametrów się akurat nie
czepia.
> przytoczonym kontekście nie ma znaczenia - zmienna llen ma zasięg
> lokalny ograniczony do wnętrza if-a i poza wywołaniem MQTTReadPacket()
> nigdzie nie jest tam później używana.
Chodziło mi o inne miejsce - od linii 787. Tam zmienna llen jest
przekazywana do funkcji MQTTReadPacket w taki sam sposób, a potem bierze
udział w wyliczaniu indeksów do MQTTBuffer.
Chociaż z drugiej strony wszystkie z tych operacji to sumowanie. Zmienna
llen jest zmienną lokalną, a wiec jest domyślnie inicjalizowana
wartością 0. Jeśli przekazanie jej przez wskaźnik do funkcji o pustej
liście parametrów nie ma żadnego wpływu na jej wartość, to nie będzie
też miało na późniejsze wyliczenia.
Czyżby pozostałość po jakichś wcześniejszych wersjach kodu, gdzie
faktycznie w parametrze był wskaźnik? A potem autor to przepisał, na
wersję bezparametrową i zamiast dać void wyczyścił listę parametrów, nie
poprawiając wcześniejszych wywołań?
> No i proponuję też zamienić
> switch(rxBF[1]) { //MQTTBuffer
> na
> switch(MQTTBuffer[1]) { //MQTTBuffer
To była pierwsza rzecz jaką sprawdziłem. Wychodzi na to, że:
1) MQTTReadPacket() wołane bezpośrednio przed tym switchem zwraca 2.
2) MQTTBuffer[01] w tym miejscu zwraca wartość 0x02. Zawsze, niezależnie
od tego czy dane do logowania były prawidłowe, czy nie. Postanowiłem
więc sprawdzić co mamy w MQTTBuffer[0] i sprawa się rozjaśniła - mamy
tam 0x20. Razem te dwa bajty stanowią więc prawidłowy nagłówek
wiadomości CONNACK. Dalej powinny iść jeszcze dwa bajty, z których
ostatni stanowi reurn code informujący o stanie autoryzacji. Serwer
istotnie wysyła całą wiadomość - sprawdziłem tcpdump i wiresharkiem.
3) Spróbowałem więc po prostu sprawdzać MQTTBuffer[3] ale niestety - nie
znajduję tam return code. Wygląda to faktycznie tak, jakby
MQTTReadPacket w tym miejscu odczytywało tylko dwa pierwsze bajty, co
zgadzałoby się z wartością zwracaną przez funkcję.
Następne wpisy z tego wątku
- 09.08.22 09:47 Grzegorz Niemirowski
- 09.08.22 10:16 JDX
- 09.08.22 10:29 Atlantis
- 09.08.22 10:53 Atlantis
- 09.08.22 19:13 J.F
- 09.08.22 20:38 Atlantis
- 10.08.22 00:06 Atlantis
- 10.08.22 00:13 JDX
- 10.08.22 09:52 J.F
- 10.08.22 09:59 Grzegorz Niemirowski
- 10.08.22 19:25 Atlantis
- 10.08.22 20:41 heby
- 10.08.22 22:06 Marek
- 10.08.22 22:43 Grzegorz Niemirowski
- 10.08.22 23:26 heby
Najnowsze wątki z tej grupy
- Akumulatorki Ni-MH AA i AAA Green Cell
- Dławik CM
- JDG i utylizacja sprzetu
- Identyfikacja układ SO8 w sterowniku migających światełek choinkowych
- DS1813-10 się psuje
- Taki tam szkolny problem...
- LIR2032 a ML2032
- SmartWatch Multimetr bezprzewodowy
- olej psuje?
- Internet w lesie - Starlink
- Opis produktu z Aliexpress
- No proszę, a śmialiście się z hindusów.
- Zewnętrzne napięcie referencyjne LM385 1,2V -> 100mV dla ICL7106, Metex M-3800
- karta parkingowa
- Wl/Wyl (On/Off) bialy/niebieski
Najnowsze wątki
- 2024-12-04 Warszawa => Architekt rozwiązań (doświadczenie w obszarze Java, AWS
- 2024-12-04 Czy policjantów należy ROZBROIĆ?
- 2024-12-03 Tymoteusz Sz.
- 2024-12-03 Re: Prezydent ułaskawia: Prezydent USA Biden (D) ułaskawia syna własnego
- 2024-12-03 Re: Tani dodatkowy sim do smartwacha
- 2024-12-03 Wróblewo => Analityk finansowy <=
- 2024-12-03 Praktyczny test GPS...
- 2024-12-02 Tak się sprzedają elektryczne woldzwageny ;-)
- 2024-12-02 Akumulator do Hyundai
- 2024-12-02 Olsztyn => Sales Specialist <=
- 2024-12-02 Poznań => Technical Artist <=
- 2024-12-02 Bieruń => Regionalny Kierownik Sprzedaży (OZE) <=
- 2024-12-02 Kraków => Business Development Manager - Dział Sieci i Bezpieczeńst
- 2024-12-02 Chrzanów => Team Lead / Tribe Lead FrontEnd <=
- 2024-12-02 Białystok => Delphi Programmer <=