-
Path: news-archive.icm.edu.pl!news.icm.edu.pl!news.man.lodz.pl!newsfeed.pionier.net.p
l!3.eu.feeder.erje.net!feeder.erje.net!feeder2.ecngs.de!ecngs!feeder.ecngs.de!n
ews.uzoreto.com!news-out.netnews.com!news.alt.net!fdc2.netnews.com!peer03.ams1!
peer.ams1.xlned.com!news.xlned.com!peer01.ams4!peer.am4.highwinds-media.com!new
s.highwinds-media.com!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-sp
o-a-02.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
Date: Tue, 9 Aug 2022 20:38:31 +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>
<1v33pyf001dj9.6motwut9p4ho$.dlg@40tude.net>
From: Atlantis <m...@w...pl>
In-Reply-To: <1v33pyf001dj9.6motwut9p4ho$.dlg@40tude.net>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Lines: 55
Message-ID: <62f2a9a7$0$450$65785112@news.neostrada.pl>
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 83.27.21.205
X-Trace: 1660070311 unt-rea-a-02.news.neostrada.pl 450 83.27.21.205:57402
X-Complaints-To: a...@n...neostrada.pl
X-Received-Bytes: 3904
Xref: news-archive.icm.edu.pl pl.misc.elektronika:773711
[ ukryj nagłówki ]On 09.08.2022 19:13, J.F wrote:
> Blad troche dziwaczny, bo w ogole nie widze definicji MQTTReadPacket
> z parametrem. Jak to zwykłe C, i parametr nie ma znaczenia,
> to nadal dziwaczne.
To jest właśnie jakaś zaszłość historyczna, o której sam wcześniej nie
miałem pojęcia. W C++ funkcja z pustą listą parametrów równa się funkcji
z parametrem void. Jednak w C działa to inaczej - pusta lista parametrów
oznacza niesprecyzowaną liczbę parametrów. Do takiej funkcji możemy
przekazać albo nic, albo cokolwiek i taki kod się skompiluje, jednak z
wnętrza funkcji do tych parametrów i tak nie będziemy mieć dostępu.
Liczyłem na to, że może jakaś ezoteryka języka pozwala na niejawne
przekazanie czegoś w ten sposób jednak wychodzi na to, że ktoś po prostu
zmieniał tę funkcję i po prostu usunął parametry zamiast przerobić
funkcję na void.
> Ale nawet tam, gdzie tak piszą, to nie widzę aby uzywali tego llen,
> czyli błąd w zasadzie bez znaczenia.
> Dane będą w MQTTBuffer ?
Dane powinny trafić do MQTTBuffer, jednak z tego co widzę funkcja
MQTTReadPacket() w jej obecnej formie nie radzi sobie z wiadomością
CONNACK. Odczytuje tylko dwa pierwsze bajty (nagłówek) ale już nie dwa
kolejne, z czego nas interesuje ostatni - result code.
> Wyglada na to, jakby kod byl w połowie wiekszych przeróbek.
Na to wygląda. Udało mi się skontaktować z autorem wcześniejszej wersji
tej biblioteki na PIC32. To znaczy wcześniejszej w stosunku do tego, co
sam znalazłem na GitHubie. A i on prawdopodobnie opierał się na jakimś
wcześniejszym kodzie. Przesłał mi jakąś swoją starą wersję kodu -
nietestowaną i jak się okazało niedziałającą przez kilka bugów (m.in.
powodujących zatrzaskiwanie się maszyny stanów albo błędy podczas
czytania z socketa). Co jednak istotne, w tej wersji kodu funkcja
MQTTReadPacket przyjmowała jeden parametr - wskaźnik na BYTE. Wychodzi
się na to, że pusta lista parametrów powstała, gdy ktoś później
przepisywał ten kod.
Wychodzi na to, że trzeba będzie teraz przyjrzeć się tej funkcji i
ustalić, czemu nie parsuje prawidłowo CONNACT.
> ale o co im by mialo chodzic? Czemu mieliby uzywac llen - len
> niedobre?
Rozróżnienie na len i llen bierze się ze specyfiki MQTT. W podstawowych
wiadomościach (np. kontrolnych) mamy niewielką wartość len. Jednak gdy
trzeba np. załączyć większy payload, załącza się jeszcze dodatkową
informację. Podejrzewam, że w takich sytuacjach obydwie wartości mogą
być potrzebne do manipulowania do manipulowania buforem. Z drugiej
strony obecna wersja MQTTReadPacket posiada lokalną, statyczną tablice o
nazwie lengthLength, która może być właśnie do tego wykorzystywana.
Następne wpisy z tego wątku
- 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
- 12.08.22 11:25 Piotr Gałka
- 16.08.22 13:20 Atlantis
- 17.08.22 18:58 Mirek
- 18.08.22 11:03 Atlantis
Najnowsze wątki z tej grupy
- Procesor NMOS i karta CF
- Jak sprawdzic uC
- radyjko znalazłem
- Telewizor przestał widzieć sygnał z anteny
- LED
- System operacyjny dla 6800?
- Przyłączenie działki do sieci elektrycznej
- Działalność nierejestrowana/definicja sprzętu elektronicznego/misie i kolejki
- Smukły, długi ściągacz izolacji do kynaru
- rezystor 3 omy 400W
- [newbie] Jaki multimetr za 2-4 stówy?
- szafka sieciowa
- Raspberry Pi 5 + dyski SATA
- lutownica na węgiel
- Znów czary (albo niewiedza) - tym razem fotowoltaika
Najnowsze wątki
- 2024-05-23 Skuteczność cięcia a liczba noży robota
- 2024-05-22 Phiiiiii Elektryki częściej uderzają w pieszych
- 2024-05-23 Rzeszów => UX/UI Designer <=
- 2024-05-23 Warszawa => International freight forwarder <=
- 2024-05-23 Warszawa => Key Account Manager <=
- 2024-05-23 Marki => Wdrożeniowiec ERP <=
- 2024-05-23 Warszawa => Starszy inżynier oprogramowania (Rust) <=
- 2024-05-23 Warszawa => Interactive/Experience Designer <=
- 2024-05-23 Warszawa => Technical Lead ( (Java Background)) <=
- 2024-05-23 Warszawa => Software .Net Developer <=
- 2024-05-23 Warszawa => Software Engineer .Net <=
- 2024-05-22 Warszawa => Junior Rekruter <=
- 2024-05-22 Kraków => Java Developer <=
- 2024-05-23 Re: Jak dobra KE "okrada" złą Rosję "dla Ukrainy"
- 2024-05-23 Re: Jak dobra KE "okrada" złą Rosję "dla Ukrainy"