Czy komenda `flags` działa poprawnie z wartościami 64-bitowymi na innych platformach niż symulator i BK7238?
Tak — poprawka dla 64-bitowego `flags` wygląda na działającą, a zgłoszone problemy na innych platformach dotyczą osobnej flagi 13, nie samego parsowania 64-bitowej wartości [#21457513][#21459645][#21459843] Na RTL-B ustawienie wszystkich flag przeszło bez błędów, ale pojawił się wcześniej znany problem z flagą 13; autor uznał go za niezwiązany z PR [#21457513][#21459741] Na RTL8720D nowa wartość flagi została zaakceptowana, bez twardego błędu, również z zastrzeżeniem dotyczącym flagi 13 [#21459645] Na XR809 i TR6260 testy też przyjęły nową wartość, a obserwowane zawieszenia po restarcie wskazano jako istniejący problem flagi 13, nie tej poprawki [#21459843] Dodatkowo poprawiono wyświetlanie zera w WebUI i PR został scalony, z planem dalszych testów na platformach [#21459741][#21460862]
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
Zmodyfikowałem komendę Flags, aby obsługiwała 64bit. Wyświetlanie na WEBui również zostało naprawione. Sprawdzone na symulatorze i na BK7238. Czy ktoś może to zweryfikować na innych platformach?
Btw, jaki był pierwotny powód zrobienia z flag 2 liczb całkowitych, zamiast uint64_t?
Nie wiem.
Nie wiem. Być może pierwsza wersja miała tylko 32 flagi.
Dodano po 11 [minutach]: .
insmod napisał:
Czy to nie zepsuje konfiguracji na platformach, gdzie long to 8 bajtów?
Masz rację, zmieniono na uint32.
Dodano po 3 [minutach]: .
BTW, na której platformie dla OBK long ma faktycznie długość 8 bajtów? Czy wszystkie są 32 bitowymi mcu, czy nie?
To moja wina, jestem developerem głównie dla Win i na 64bit Win (LLP64) long jest 32bit
>>21456907 Obecnie wszystkie są 32-bitowe, ale kto wie w przyszłości. I choć long na 32bit to zazwyczaj 4 bajty, kto wie co zrobią niektóre kompilatory. Wiem, że widziałem 4 bajty długości na 64-bitowych oknach.
Nie pamiętam dobrze, ale chyba zacząłem od pojedynczej 32-bitowej liczby całkowitej. Potem dodałem kolejne 32 bity i okazało się, że istnieje długotrwały błąd z ustawioną (lub odczytaną?) flagą. Był on poruszany kilka razy, ale nie doczekaliśmy się żadnej definitywnej poprawki, chyba że PR 1548 działa dobrze na wszystkich platformach?
Tworzę pierwsze na świecie oprogramowanie open source przeznaczone dla platform BK7231, XR809, BL602, W600, W800, LN882H, ECR, TRS, RTL, jak również ESP8266 i ESP32 używanych w różnych urządzeniach IoT, pozwalające uwolnić je od serwerów producenta, od śledzenia, dowolnie modyfikować i sparować z Home Assistant.
Dodatkowo publikuję różnorodne materiały, często tutoriale i praktyczne demonstracje.
Jeśli podoba Ci się moja twórczość i w czymś Ci pomogłem, to rozważ wsparcie mnie tutaj: https://www.paypal.com/paypalme/openshwprojects Mój Github: https://github.com/openshwprojects Mój tutorial PIC18F SDCC: https://www.elektroda.pl/rtvforum/topic3635522.html Pracuję na stacji hot air SUGON 8630 Pro od Katemedia
Ok, przetestuję. Czy najnowsza kompilacja wygląda na ostateczną do testów?
Czy są platformy, którymi w ogóle nie powinienem się przejmować, bo na pewno nie zadziałają? I czy wszystkie ESP powinny być traktowane jako jeden test, czy po jednym z każdej wymaganej serii - np. jeden ESP32-C#, jeden ESP32-S# itd.
Pamiętam, że mój początkowy kod flag działał dobrze na Windowsie. Dlatego błąd nie został znaleziony przez tak długi czas...
Tworzę pierwsze na świecie oprogramowanie open source przeznaczone dla platform BK7231, XR809, BL602, W600, W800, LN882H, ECR, TRS, RTL, jak również ESP8266 i ESP32 używanych w różnych urządzeniach IoT, pozwalające uwolnić je od serwerów producenta, od śledzenia, dowolnie modyfikować i sparować z Home Assistant.
Dodatkowo publikuję różnorodne materiały, często tutoriale i praktyczne demonstracje.
Jeśli podoba Ci się moja twórczość i w czymś Ci pomogłem, to rozważ wsparcie mnie tutaj: https://www.paypal.com/paypalme/openshwprojects Mój Github: https://github.com/openshwprojects Mój tutorial PIC18F SDCC: https://www.elektroda.pl/rtvforum/topic3635522.html Pracuję na stacji hot air SUGON 8630 Pro od Katemedia
>>21457353 To jest ostateczne. Nie ma potrzeby testowania wszystkich urządzeń, wszystkie są 32-bitowe.
Należy sprawdzić, czy funkcja strtoull() działa dobrze na głównych SDK (ESP, BL, LN). Beken jest w porządku.
Może moglibyśmy zrobić system autotestów podobny do tego z Windowsa, ale przeznaczony do uruchamiania na urządzeniach?
Na przykład umieścić go w cmd_selfTest.c i zrobić tam długą listę komend z asercjami wyników.
Następnie moglibyśmy uruchomić go na fizycznych urządzeniach, aby upewnić się, że wszystko jest w porządku.
Mogłoby to być bardzo przydatne, zwłaszcza biorąc pod uwagę różnice między platformami i takie....
Mieliśmy już problemy z tym związane, na przykład:
- time_t size (32 bit vs 64 bit)
- brakujący realloc na BL602
- dziwne zachowanie sprintf (pamiętasz statyczną stronę IP?)
Tworzę pierwsze na świecie oprogramowanie open source przeznaczone dla platform BK7231, XR809, BL602, W600, W800, LN882H, ECR, TRS, RTL, jak również ESP8266 i ESP32 używanych w różnych urządzeniach IoT, pozwalające uwolnić je od serwerów producenta, od śledzenia, dowolnie modyfikować i sparować z Home Assistant.
Dodatkowo publikuję różnorodne materiały, często tutoriale i praktyczne demonstracje.
Jeśli podoba Ci się moja twórczość i w czymś Ci pomogłem, to rozważ wsparcie mnie tutaj: https://www.paypal.com/paypalme/openshwprojects Mój Github: https://github.com/openshwprojects Mój tutorial PIC18F SDCC: https://www.elektroda.pl/rtvforum/topic3635522.html Pracuję na stacji hot air SUGON 8630 Pro od Katemedia
Może moglibyśmy zrobić system autotestu, taki jak ten w Windows, ale zaprojektowany do działania na urządzeniu?
.
Myślę, że nie jest to konieczne. Główne problemy są ujawniane na Win, a "specjalne" nieoczekiwane problemy i tak zostałyby wykryte przez test z bardzo małym prawdopodobieństwem.
Jesteś pewien? Podejrzewam, że nawet w tej chwili realloc jest nadal zepsuty na BL602 ... @miegapele może wiedzieć więcej na ten temat.
Tworzę pierwsze na świecie oprogramowanie open source przeznaczone dla platform BK7231, XR809, BL602, W600, W800, LN882H, ECR, TRS, RTL, jak również ESP8266 i ESP32 używanych w różnych urządzeniach IoT, pozwalające uwolnić je od serwerów producenta, od śledzenia, dowolnie modyfikować i sparować z Home Assistant.
Dodatkowo publikuję różnorodne materiały, często tutoriale i praktyczne demonstracje.
Jeśli podoba Ci się moja twórczość i w czymś Ci pomogłem, to rozważ wsparcie mnie tutaj: https://www.paypal.com/paypalme/openshwprojects Mój Github: https://github.com/openshwprojects Mój tutorial PIC18F SDCC: https://www.elektroda.pl/rtvforum/topic3635522.html Pracuję na stacji hot air SUGON 8630 Pro od Katemedia
Dlatego myślę, że możemy skorzystać z prostego autotestu, który działa na dowolnej platformie, z wpisem #define w obk_config.h, więc zajmuje 0 miejsca w wersjach Release.
Mógłby testować podstawowe rzeczy, takie jak parsowanie JSON, wykonywanie poleceń itp.
Tworzę pierwsze na świecie oprogramowanie open source przeznaczone dla platform BK7231, XR809, BL602, W600, W800, LN882H, ECR, TRS, RTL, jak również ESP8266 i ESP32 używanych w różnych urządzeniach IoT, pozwalające uwolnić je od serwerów producenta, od śledzenia, dowolnie modyfikować i sparować z Home Assistant.
Dodatkowo publikuję różnorodne materiały, często tutoriale i praktyczne demonstracje.
Jeśli podoba Ci się moja twórczość i w czymś Ci pomogłem, to rozważ wsparcie mnie tutaj: https://www.paypal.com/paypalme/openshwprojects Mój Github: https://github.com/openshwprojects Mój tutorial PIC18F SDCC: https://www.elektroda.pl/rtvforum/topic3635522.html Pracuję na stacji hot air SUGON 8630 Pro od Katemedia
100 oznacza 100ms odstęp między krokami.
Działa w taki sposób, że najpierw drukuje polecenie, które uruchomi, czeka 100 ms, aż dziennik przejdzie, następnie uruchamia polecenie, następnie sprawdza wynik uruchomienia, następnie czeka 100 ms i ponownie uruchamia....
Przykładowe uruchomienie:
Najważniejszą rzeczą, na którą należy zwrócić uwagę, jest to, że jeśli jakieś polecenie ulegnie awarii, można je również uruchomić z konsoli bez sterownika testowego.
Proszę o wstępną opinię, ale także odczekaj 1 dzień przed uruchomieniem. Wkrótce to poprawię.
Tworzę pierwsze na świecie oprogramowanie open source przeznaczone dla platform BK7231, XR809, BL602, W600, W800, LN882H, ECR, TRS, RTL, jak również ESP8266 i ESP32 używanych w różnych urządzeniach IoT, pozwalające uwolnić je od serwerów producenta, od śledzenia, dowolnie modyfikować i sparować z Home Assistant.
Dodatkowo publikuję różnorodne materiały, często tutoriale i praktyczne demonstracje.
Jeśli podoba Ci się moja twórczość i w czymś Ci pomogłem, to rozważ wsparcie mnie tutaj: https://www.paypal.com/paypalme/openshwprojects Mój Github: https://github.com/openshwprojects Mój tutorial PIC18F SDCC: https://www.elektroda.pl/rtvforum/topic3635522.html Pracuję na stacji hot air SUGON 8630 Pro od Katemedia
Jednym z praktycznych zastosowań tego może być ten przeklęty błąd parsowania IP:
.
Tworzę pierwsze na świecie oprogramowanie open source przeznaczone dla platform BK7231, XR809, BL602, W600, W800, LN882H, ECR, TRS, RTL, jak również ESP8266 i ESP32 używanych w różnych urządzeniach IoT, pozwalające uwolnić je od serwerów producenta, od śledzenia, dowolnie modyfikować i sparować z Home Assistant.
Dodatkowo publikuję różnorodne materiały, często tutoriale i praktyczne demonstracje.
Jeśli podoba Ci się moja twórczość i w czymś Ci pomogłem, to rozważ wsparcie mnie tutaj: https://www.paypal.com/paypalme/openshwprojects Mój Github: https://github.com/openshwprojects Mój tutorial PIC18F SDCC: https://www.elektroda.pl/rtvforum/topic3635522.html Pracuję na stacji hot air SUGON 8630 Pro od Katemedia
Tak i będzie to wreszcie znaczące, a nie bezcelowe jak testowanie na Windows, ponieważ te funkcje są poza naszym SDK i testowanie ich na Windows nie powie nam, czy będą działać na Beken na BL602.
Tworzę pierwsze na świecie oprogramowanie open source przeznaczone dla platform BK7231, XR809, BL602, W600, W800, LN882H, ECR, TRS, RTL, jak również ESP8266 i ESP32 używanych w różnych urządzeniach IoT, pozwalające uwolnić je od serwerów producenta, od śledzenia, dowolnie modyfikować i sparować z Home Assistant.
Dodatkowo publikuję różnorodne materiały, często tutoriale i praktyczne demonstracje.
Jeśli podoba Ci się moja twórczość i w czymś Ci pomogłem, to rozważ wsparcie mnie tutaj: https://www.paypal.com/paypalme/openshwprojects Mój Github: https://github.com/openshwprojects Mój tutorial PIC18F SDCC: https://www.elektroda.pl/rtvforum/topic3635522.html Pracuję na stacji hot air SUGON 8630 Pro od Katemedia
to wszystko brzmi całkiem nieźle. Jak dokładnie działają i pomagają autotesty? Nie jestem zbyt dobry w kodowaniu, ale wydaje mi się to sensowną rzeczą. Jeśli, na przykład, współautor proponuje zmiany w kodzie w nowym PR i powodują one gdzieś problem, jak objawia się autotest? Co i gdzie zawodzi? Gdzieś w dzienniku przepływu kompilacji?
Te autotesty zasadniczo symulują scenariusz przypadku użycia, na przykład ustawienie diody LED, a następnie sprawdzają zewnętrznie, czy wynik przypadku użycia jest zgodny z oczekiwaniami.
Na przykład, jeśli ustawimy dwa piny PWM, oczekujemy, że pojawi się sterowanie CW i oczekujemy, że polecenie Dimmer zadziała. Oczekujemy, że pewne rzeczy zostaną opublikowane, gdy zmieni się stan światła, możemy to również przetestować. Symulujemy więc ustawienie dwóch pinów PWM, następnie uruchamiamy kilka poleceń i sprawdzamy, czy wynik jest zgodny z oczekiwaniami (na przykład, czy wyjściowe wartości PWM są zgodne z oczekiwaniami dla prawidłowego sterowania CW).
Przykład 1 - jeśli ustawimy kanał 1 na 123, czy stała $CH1 działa w skrypcie i rozszerza się do 123?
Kod: C / C++
Zaloguj się, aby zobaczyć kod
Jeśli "buffer" nie jest "123", SELFTEST_ASSERT_STRING pokaże błąd na kompilacji Github (czerwony krzyżyk zamiast zielonego znacznika wyboru).
Przykład 2 - jeśli ustawimy dwa piny PWM, czy są one poprawnie wykrywane jako światło CW? Czy światło poprawnie reaguje na komendy i ustawienia PWM?
Kod: C / C++
Zaloguj się, aby zobaczyć kod
Przyjrzyjmy się bliżej jednemu fragmentowi:
Kod: C / C++
Zaloguj się, aby zobaczyć kod
.
To w zasadzie mówi:
- jeśli masz ustawione światło CW, a OBK otrzyma komendę POWER OFF Tasmota, zmienna led_enableAll powinna mieć wartość 0 (false), a oba PWM powinny mieć wartość 0
- jeśli później otrzymamy komendę POWER ON Tasmota, led_enableAll ma mieć wartość 1 (true) i dla aktualnej konfiguracji (ustawionej wcześniej w kodzie) pierwszy PWM powinien wynosić 100%, drugi 0% (ponieważ wcześniej ustawiliśmy temperaturę 100% zimna).
Dzięki temu mechanizmowi, gdy tylko ktoś złamie oczekiwane zachowanie (na przykład doda zmianę, która sprawi, że światła CW nie będą działać), dowiemy się o tym w czasie kompilacji, ponieważ autotest to wychwyci.
Per-platform można uruchomić tylko na prawdziwych urządzeniach platformowych, takich jak BK7231, a nie w symulatorze .
Zostały one wprowadzone, ponieważ nie wszystko można przetestować w symulatorze Windows.
Niektóre rzeczy są per-platformowe, na przykład komenda sscanf lub realloc itp.
Mamy więc "inne" sscanf lub sprintf na każdej platformie - inne na BK7231, W800, W600....
Dlatego dodałem komendy testowe, takie jak ta:
Kod: C / C++
Zaloguj się, aby zobaczyć kod
.
To sprawdza parsowanie IP i jest to wymagane, ponieważ okazało się problematyczne, patrz implementacja:
Kod: C / C++
Zaloguj się, aby zobaczyć kod
To nie jest tylko teoretyczna próbka - naprawdę mieliśmy ten problem:
Jak widać powyżej, mieliśmy problem z sscanf, który wymaga specjalnej obsługi na W600/LN882H/Realtek, a my nie wychwyciliśmy go wcześnie.
Gdybyśmy mieli wtedy testy urządzeń dla poszczególnych platform, które obejmowałyby str do ip, wychwycilibyśmy to wcześniej.
Wyłapanie tego problemu jest niemożliwe w autotestach systemu Windows, ponieważ jest on obecny tylko na niektórych platformach z ich specyficzną implementacją.
Dzięki testom per-platform możliwe jest teraz wyłapanie tego błędu.
Jeśli skompilujesz OBK z włączonymi komendami testowymi i jeśli twoja platforma ma uszkodzony str_to_ip, to ten kod:
Kod: C / C++
Zaloguj się, aby zobaczyć kod
spróbuje przeanalizować "192.168.0.123", ale to się nie powiedzie, a następnie "if" to wykryje, więc zwróci CMD_RES_ERROR.
Później drv_test.c to wychwyci i pokaże błąd tutaj:
Autotesty są bardzo przydatne, ponieważ pozwalają szybko sprawdzić, czy wszystkie testowane funkcje działają zgodnie z oczekiwaniami. Nie trzeba konfigurować światła CW, aby sprawdzić, czy PWM są ustawione poprawnie - robi się to za pomocą autotestów Windows w SImulatorze na każdej kompilacji Github. Nie trzeba też teraz ręcznie sprawdzać każdej strony, takiej jak lokalna konfiguracja ip na każdej platformie, ponieważ testy per-platformowe również to obejmą....
Jak uruchomić autotesty? - aby uruchomić autotesty symulatora Windows, wystarczy uruchomić kompilację online github, są one uruchamiane automatycznie
- aby uruchomić testy na platformę, skompiluj OBK z ENABLE_TEST_COMMANDS, flashuj go na swoje urządzenie i uruchom "backlog startDriver Test; StartTest 100;"
Nie miałem czasu, aby uruchomić testy per-platform, ale podejrzewam, że przynajmniej test realloc spowoduje awarię urządzenia BL602 - realloc jest znany jako problem na BL602.
Tworzę pierwsze na świecie oprogramowanie open source przeznaczone dla platform BK7231, XR809, BL602, W600, W800, LN882H, ECR, TRS, RTL, jak również ESP8266 i ESP32 używanych w różnych urządzeniach IoT, pozwalające uwolnić je od serwerów producenta, od śledzenia, dowolnie modyfikować i sparować z Home Assistant.
Dodatkowo publikuję różnorodne materiały, często tutoriale i praktyczne demonstracje.
Jeśli podoba Ci się moja twórczość i w czymś Ci pomogłem, to rozważ wsparcie mnie tutaj: https://www.paypal.com/paypalme/openshwprojects Mój Github: https://github.com/openshwprojects Mój tutorial PIC18F SDCC: https://www.elektroda.pl/rtvforum/topic3635522.html Pracuję na stacji hot air SUGON 8630 Pro od Katemedia
Teraz zróbmy demonstrację. Rozważymy hipotetyczny scenariusz, w którym ktoś przypadkowo łamie jakąś funkcję, na przykład zestaw kanałów.
Zmodyfikowałem CHANNEL_Set_Ex, aby zawsze ustawiał wartość na 0:
.
Następnie zatwierdziłem zmiany na Githubie.
Zobaczmy co się dzieje.
Właśnie się buduje, więc poczekajmy chwilę...
.
A potem otrzymujemy:
.
Jak widać, wiele autotestów nie powiodło się. Oczekują, że kanały będą działać, więc rozpoznają, że coś jest nie tak:
Tworzę pierwsze na świecie oprogramowanie open source przeznaczone dla platform BK7231, XR809, BL602, W600, W800, LN882H, ECR, TRS, RTL, jak również ESP8266 i ESP32 używanych w różnych urządzeniach IoT, pozwalające uwolnić je od serwerów producenta, od śledzenia, dowolnie modyfikować i sparować z Home Assistant.
Dodatkowo publikuję różnorodne materiały, często tutoriale i praktyczne demonstracje.
Jeśli podoba Ci się moja twórczość i w czymś Ci pomogłem, to rozważ wsparcie mnie tutaj: https://www.paypal.com/paypalme/openshwprojects Mój Github: https://github.com/openshwprojects Mój tutorial PIC18F SDCC: https://www.elektroda.pl/rtvforum/topic3635522.html Pracuję na stacji hot air SUGON 8630 Pro od Katemedia
Symulator kompilacji i testy uruchamiane w systemie Windows nie są niczym nowym, są już w naszym Githubie od miesiąca lub dłużej. Są uruchamiane z każdym commitem.
Jedyną nową rzeczą, którą wprowadziłem wczoraj, są testy per-platform, które można uruchomić tylko ręcznie na fizycznym urządzeniu.
Tworzę pierwsze na świecie oprogramowanie open source przeznaczone dla platform BK7231, XR809, BL602, W600, W800, LN882H, ECR, TRS, RTL, jak również ESP8266 i ESP32 używanych w różnych urządzeniach IoT, pozwalające uwolnić je od serwerów producenta, od śledzenia, dowolnie modyfikować i sparować z Home Assistant.
Dodatkowo publikuję różnorodne materiały, często tutoriale i praktyczne demonstracje.
Jeśli podoba Ci się moja twórczość i w czymś Ci pomogłem, to rozważ wsparcie mnie tutaj: https://www.paypal.com/paypalme/openshwprojects Mój Github: https://github.com/openshwprojects Mój tutorial PIC18F SDCC: https://www.elektroda.pl/rtvforum/topic3635522.html Pracuję na stacji hot air SUGON 8630 Pro od Katemedia
Dyskusja dotyczy weryfikacji zmodyfikowanej komendy Flags, która została dostosowana do obsługi 64-bitowych wartości. Użytkownicy omawiają potencjalne problemy związane z długością typu long na różnych platformach, a także historyczne powody, dla których flagi były pierwotnie zbudowane z dwóch 32-bitowych liczb całkowitych. Wspomniano o testach przeprowadzonych na symulatorze oraz na platformie BK7238, a także o potrzebie weryfikacji na innych urządzeniach. Uczestnicy dyskusji proponują wprowadzenie systemu autotestów, który mógłby pomóc w identyfikacji problemów na różnych platformach. Wspomniano również o błędach związanych z flagą 13 na RTL8720D oraz o testach przeprowadzonych na innych modelach, takich jak RTL8195A i TR6260. Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.