Odp: Cudy C200P
Kolega nie o cenie, tylko portować i testować...
@Cezary:
Mam dla PORT 0 zdefiniować rejetr 0x88, bit 2:0, Dobry to zapis, czy mocno zakręciłem?? ![]()
#define IP804AR_REG_REQ_CLASS_STATUS(0) (0x88, GENMASK_OL(2, 0)) /* PORT 0 2:0 */ Nie jesteś zalogowany. Proszę się zalogować lub zarejestrować.
eko.one.pl → Sprzęt / Hardware → Cudy C200P
Strony Poprzednia 1 … 18 19 20 21 22 … 27 Następna
Zaloguj się lub zarejestruj by napisać odpowiedź
Kolega nie o cenie, tylko portować i testować...
@Cezary:
Mam dla PORT 0 zdefiniować rejetr 0x88, bit 2:0, Dobry to zapis, czy mocno zakręciłem?? ![]()
#define IP804AR_REG_REQ_CLASS_STATUS(0) (0x88, GENMASK_OL(2, 0)) /* PORT 0 2:0 */ Prawdopodobnie będzie dobrze.
Generalnie część rejestrów się nie pokrywa.
Dobra bo już mi się zlewa obraz, wystarczy na dzisiaj.
Fajnie jakby ktoś przysiadł przy tym i sprawdził te rejestry.
Kilku nie potrafię namierzyć - być może, że starsza wersja nie ma tej opcji.
DeviceID - nie widzę nigdzie w datasheet 804AR. JEST HW rev. - ale czy to to samo - nie mam pojęcia.
Przy każdej zmienionej przeze mnie wartości jest w linii komentarz co było.
Tam gdzie nic nie ma, to nie udało mi się namierzyć na chwilę obecną odpowiednika dla 804AR.
Pomocne może być po części:
https://pastebin.com/Us0BvWH6
Leksmarku podziwiam i jak sie uda to "skrzynka piwa" dla Was!
Dzieki!
Sprawa wygląda tak:
https://github.com/blocktrron/poemgr/pull/17
https://github.com/blocktrron/poemgr/pu … 88df05ac84
Na tej podstawie - nie wiem czy dobrze - zbyt uboga moja wiedza:
https://pastebin.com/mJfX3Jnc
https://pastebin.com/SrLu4kh8
Różnica polega na tym, że IP802 ma 2 porty a nasz 804 - 4 porty.
Nie wiem czy dobrze dodałem wsparcie dla dwóch pozostałych, tam gdzie wydawało mi się, że powinno być.
To co dla mnie jest niejasne znajduję się między
/******* np.
/* port current */
#define IP804AR_PAGE_PORT_CURR 0
/**************** */
/*Since the current register have 2 bytes, the I2C read CMD must Burst read 2
bytes (hi byte First ) to avoid the deviation in reading the register value*/
/**************** */
// 2 registers per port
#define IP804AR_REG_PORT_CURR(port) (0xa0 + (port * 2))
#define IP804AR_FBITS_PORT_CURR (2) Nie wiem czy tak ma zostać, czy musi być coś zmienione w kodzie.
Szkoda, że prócz @Cezarego nikt więcej nie chce się zaangażować ![]()
To co by trzeba było sprawdzić, czy z kodu zawartego w 802.c po zmianie na 804.c będzie zaciągał odpowiednie wartości z rejestrów,czy nie będzie trzeba gdzieś zmienić.
Kompilujesz, uruchamiasz, jak zwraca coś sensownego to zaczyna być dobrze ![]()
Ale musiałbym dodać do poemgr jeszcze.
Albo napisać sobie wraper z main który by wywoływał te funkcję i wyświetlał dane.
Dobra dodałem "swoje" pliki do poemgr na swoim PC. Jak mam teraz skompilować taki pakiet? Gdzie wrzucić? Std pakiet jest w:
~/openwrt$ find -name poemgr
./feeds/packages/utils/poemgr
./package/feeds/packages/poemgr
marcin@marcin-Z240:~/openwrt$ Ale przy kompilacji dociągnie mi z git bez dodanych plików.
marcin@marcin-Z240:~/openwrt$ cat ./feeds/packages/utils/poemgr/Makefile
# SPDX-License-Identifier: GPL-2.0-only
include $(TOPDIR)/rules.mk
PKG_NAME:=poemgr
PKG_SOURCE_DATE:=2025-05-28
PKG_SOURCE_VERSION:=87550e1349c3c010a7ed0e306589c6398238d374
PKG_RELEASE:=3
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=https://github.com/blocktrron/poemgr.git
PKG_MIRROR_HASH:=44d1e49e21fedf4446a56beabe7baa5a97a841f8514bcee656f0faff3d48c74f
PKG_MAINTAINER:=David Bauer <mail@david-bauer.net>
PKG_LICENSE:=GPL-2.0-only
include $(INCLUDE_DIR)/package.mk
define Package/poemgr
SECTION:=utils
CATEGORY:=Utilities
DEPENDS:=+libuci +libjson-c
TITLE:=Utility to control PoE ports on the UniFi Flex switch
endef
define Package/poemgr/conffiles
/etc/config/poemgr
endef
define Package/poemgr/install
$(INSTALL_DIR) $(1)/sbin $(1)/usr/lib/poemgr/config $(1)/etc/config $(1)/etc/uci-defaults $(1)/etc/init.d
$(INSTALL_BIN) $(PKG_BUILD_DIR)/poemgr $(1)/sbin/poemgr
$(INSTALL_BIN) $(PKG_BUILD_DIR)/contrib/uswlite-pse-enable $(1)/usr/lib/poemgr/uswlite-pse-enable
$(CP) $(PKG_BUILD_DIR)/contrib/usw-lite.config $(1)/usr/lib/poemgr/config/usw-lite.config
$(INSTALL_BIN) $(PKG_BUILD_DIR)/contrib/uci-defaults.sh $(1)/etc/uci-defaults/99-poemgr
$(INSTALL_BIN) $(PKG_BUILD_DIR)/contrib/procd-init.sh $(1)/etc/init.d/poemgr
endef
$(eval $(call BuildPackage,poemgr))
marcin@marcin-Z240:~/openwrt$ @lexmark3200 można by spróbować porównać dokumentacje przy użyciu ChatGPT. Tutaj jest dla IP802 (nie znalazłem dla IP802AR): https://www.lcsc.com/datasheet/C703563.pdf
A tutaj dla IP804A i IP804AR:
- https://www.lcsc.com/datasheet/C703549.pdf
- https://www.lcsc.com/datasheet/C19626921.pdf
Jeżeli tak to zrobisz to to weźmie z gita źródła i nie będzie tego co chcesz. Zrób clona u sobie tego, zmień źródła i zmień w makefile żeby korzystał z twojego gita. Ew swoje źródła przerób na diff'a, połóż go w podkatalogu patches to będzie się sam nakładał na te źródła.
Obie wersje to robota na około, weź źródła, dodaj to swoje i po prostu skompiluj je kroskompilatorem
@Cezary.
Możesz mi zrobić z tego pakiet
https://github.com/lexmark3200/poemgr.git
Nie kompiluje się
ip804ar.h:170:1: error: "/*" within comment [-Werror=comment]
170 | /*For PORT 3 & 4 IP804AR ?? */
| A po usunięciu komentarza w komentarzu
p804ar.h:179:35: error: expected parameter name, found "0"
179 | #define IP804AR_REG_PORT_PD_CLASS(0) (0x88, GENMASK_OL(2, 0)) /* PORT 0 2:0 */
| ^
ip804ar.h:180:35: error: expected parameter name, found "1"
180 | #define IP804AR_REG_PORT_PD_CLASS(1) (0x88, GENMASK_OL(6, 4)) /* PORT 1 6:4 */
| ^
ip804ar.h:182:35: error: expected parameter name, found "2"
182 | #define IP804AR_REG_PORT_PD_CLASS(2) (0x89, GENMASK_OL(2, 0)) /* PORT 2 2:0 */
| ^To pluje się, że powinien być
(port) zamiast (0),(1) itd.
Chyba, że dodamy tak jak było w oryginalnym 802AR, przy czym AR804 ma drugi rejestr dla dodatkowych portów:
#define IP802AR_PAGE_PORT_PD_CLASS 0
/*Port 0 & 1 */
#define IP802AR_REG_PORT_PD_CLASS(port) (0x88 + (port / 2))
#define IP802AR_SHIFT_PORT_PD_CLASS(port) (4 * (port % 2))
#define IP802AR_MASK_PORT_PD_CLASS(port) \
(GENMASK(2, 0) << IP802AR_SHIFT_PORT_PD_CLASS(port))
/*PORT 2 & 3 */
#define IP802AR_REG_PORT_PD_CLASS(port) (0x89 + (port / 2))
#define IP802AR_SHIFT_PORT_PD_CLASS(port) (4 * (port % 2))
#define IP802AR_MASK_PORT_PD_CLASS(port) \
(GENMASK(2, 0) << IP802AR_SHIFT_PORT_PD_CLASS(port))Ty wiesz że w pliku nagłówkowym zrobiłeś funkcje z dużych liter jako np. IP804AR_init zaś w kodzie masz normalnie ip804ar_init? To się w życiu nie skompiluje.
Dobra poprawiłem ten bubel (sorki nie zwróciłem uwagi, że nie uwzględniał wielkości liter i zmienił mi wszytko jak leciało).
https://github.com/lexmark3200/poemgr.git
@Cezary, możesz w wolnej chwili spróbować to skompilować?
Próbowałem mu podmienić źródło w makfile poemgr na swój github dla openwrt, ale krzyczy błędem.
ip804ar.h:171: error: "IP802AR_REG_PORT_PD_CLASS" redefined [-Werror]
171 | #define IP802AR_REG_PORT_PD_CLASS(port) (0x89 + (port / 2))
|
ip804ar.h:163: note: this is the location of the previous definition
163 | #define IP802AR_REG_PORT_PD_CLASS(port) (0x88 + (port / 2))po usunięciu błędu:
ip804ar.c:517:44: error: 'IP804AR_PAGE_PORT_PD_CLASS' undeclared (first use in this function); did you mean 'IP802AR_PAGE_PORT_PD_CLASS'?
517 | ret = ip804ar_paged_read(pse_chip, IP804AR_PAGE_PORT_PD_CLASS,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
| IP802AR_PAGE_PORT_PD_CLASS
ip804ar.c:517:44: note: each undeclared identifier is reported only once for each function it appears in
ip804ar.c:518:34: error: implicit declaration of function 'IP804AR_REG_PORT_PD_CLASS'; did you mean 'IP802AR_REG_PORT_PD_CLASS'? [-Werror=implicit-function-declaration]
518 | IP804AR_REG_PORT_PD_CLASS(port));
| ^~~~~~~~~~~~~~~~~~~~~~~~~
| IP802AR_REG_PORT_PD_CLASS
ip804ar.c:522:16: error: implicit declaration of function 'IP804AR_MASK_PORT_PD_CLASS'; did you mean 'IP802AR_MASK_PORT_PD_CLASS'? [-Werror=implicit-function-declaration]
522 | ret &= IP804AR_MASK_PORT_PD_CLASS(port);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
| IP802AR_MASK_PORT_PD_CLASS
ip804ar.c:523:17: error: implicit declaration of function 'IP804AR_SHIFT_PORT_PD_CLASS'; did you mean 'IP802AR_SHIFT_PORT_PD_CLASS'? [-Werror=implicit-function-declaration]
523 | ret >>= IP804AR_SHIFT_PORT_PD_CLASS(port);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
| IP802AR_SHIFT_PORT_PD_CLASS
cc1: all warnings being treated as errorsip804ar.h:171: error: "IP802AR_REG_PORT_PD_CLASS" redefined [-Werror]
171 | #define IP802AR_REG_PORT_PD_CLASS(port) (0x89 + (port / 2))
|
ip804ar.h:163: note: this is the location of the previous definition
163 | #define IP802AR_REG_PORT_PD_CLASS(port) (0x88 + (port / 2))Są dwa rejestry dla portów.
Musiałby rozbić, dla portów 0 i 1 0x88 a dla 2 i 3 0x89.
Dobra mam o co się pluł dalej ![]()
Zaraz wrzuce na git
/* Port Detected PD Class */
-#define IP802AR_PAGE_PORT_PD_CLASS 0
+#define IP804AR_PAGE_PORT_PD_CLASS 0
/*For Port 0 & 1 */
-#define IP802AR_REG_PORT_PD_CLASS(port) (0x88 + (port / 2))
+#define IP804AR_REG_PORT_PD_CLASS(port) (0x88 + (port / 2))
-#define IP802AR_SHIFT_PORT_PD_CLASS(port) (4 * (port % 2))
-#define IP802AR_MASK_PORT_PD_CLASS(port) \
+#define IP804AR_SHIFT_PORT_PD_CLASS(port) (4 * (port % 2))
+#define IP804AR_MASK_PORT_PD_CLASS(port) \
(GENMASK(2, 0) << IP804AR_SHIFT_PORT_PD_CLASS(port))
/*For PORT 3 & 4 */
-#define IP802AR_REG_PORT_PD_CLASS(port) (0x89 + (port / 2))
-#define IP802AR_SHIFT_PORT_PD_CLASS(port) (4 * (port % 2))
-#define IP802AR_MASK_PORT_PD_CLASS(port) \
+#define IP804AR_REG_PORT_PD_CLASS(port) (0x89 + (port / 2))
+#define IP804AR_SHIFT_PORT_PD_CLASS(port) (4 * (port % 2))
+#define IP804AR_MASK_PORT_PD_CLASS(port) \
(GENMASK(2, 0) << IP804AR_SHIFT_PORT_PD_CLASS(port))
#define IP804AR_PD_CLASS_0 0
Zmieniłem na git.
Tylko nie wiem jak rozbić te porty na te dwa rejestry. Wczoraj Ci się pluł jak dałem zamiast (port) (0),(2) itd
Co zmieniłeś? Cały czas masz zdupilowane makro IP804AR_REG_PORT_PD_CLASS i inne.
No pisałeś wyżej, że usunąłeś błąd, - to samo makro IP804AR_REG_PORT_PD_CLASS.
Sypał Ci dalej błędem. Poprawiłem to co dalej.
Jak mam rozbić to makro na dwa rejestry, Czy trzeba dodać drugie makro np. IP804AR_REG_PORT_PD_CLASS1 ? No i dodać warunek w 804.c ?
C to nie mój konik... ![]()
Ja usunąłem, żeby było jedno i zobaczyć czy kompiluje się dalej. Ty tego nie poprawiłeś, nadal masz w pliku nagłówkowym dwa tak same makra.
Jeżeli musisz to tak, rozbij to jako dwa różne, albo przekazuj adres jako argument.
To może inaczej.
Nie wiem, czy ja dobrze rozumiem ten zapis:
#define IP804AR_REG_PORT_PD_CLASS(port) (0x88 + (port / 2))
Definiuje makro P804AR_REG_PORT_PD_CLASS w zależności od nr portu?
mam port 0 czyli
P804AR_REG_PORT_PD_CLASS(0) (0x88 +(0/2)) ?? itd?
Czy źle to pojmuje?
Czyli dla 0 to macro rozwija się jako 0x88 +(0/2), tak.
Strony Poprzednia 1 … 18 19 20 21 22 … 27 Następna
Zaloguj się lub zarejestruj by napisać odpowiedź
eko.one.pl → Sprzęt / Hardware → Cudy C200P
Forum oparte o PunBB, wspierane przez Informer Technologies, Inc