eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaBiblioteka MQTT i dziwny kod w C › Re: Biblioteka MQTT i dziwny kod w C
  • Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.samoylyk.n
    et!weretis.net!feeder8.news.weretis.net!newsreader4.netcologne.de!news.netcolog
    ne.de!peer02.ams1!peer.ams1.xlned.com!news.xlned.com!peer02.ams4!peer.am4.highw
    inds-media.com!news.highwinds-media.com!newsfeed.neostrada.pl!unt-exc-01.news.n
    eostrada.pl!unt-spo-a-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mai
    l
    Date: Tue, 9 Aug 2022 08:36:38 +0200
    MIME-Version: 1.0
    User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101
    Thunderbird/91.11.0
    Subject: Re: Biblioteka MQTT i dziwny kod w C
    Content-Language: pl
    Newsgroups: pl.misc.elektronika
    References: <62f14473$0$544$65785112@news.neostrada.pl>
    <62f1ecee$0$464$65785112@news.neostrada.pl>
    From: Atlantis <m...@w...pl>
    In-Reply-To: <62f1ecee$0$464$65785112@news.neostrada.pl>
    Content-Type: text/plain; charset=UTF-8; format=flowed
    Content-Transfer-Encoding: 8bit
    Lines: 48
    Message-ID: <62f20076$0$566$65785112@news.neostrada.pl>
    Organization: Telekomunikacja Polska
    NNTP-Posting-Host: 83.27.21.205
    X-Trace: 1660026998 unt-rea-b-01.news.neostrada.pl 566 83.27.21.205:33012
    X-Complaints-To: a...@n...neostrada.pl
    X-Received-Bytes: 3591
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:773702
    [ ukryj 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ę.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: