476 (edytowany przez lexmark3200 2025-10-01 19:35:08)

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?? wink

#define IP804AR_REG_REQ_CLASS_STATUS(0) (0x88, GENMASK_OL(2, 0))  /* PORT 0 2:0 */ 

477

Odp: Cudy C200P

Prawdopodobnie będzie dobrze.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

478

Odp: Cudy C200P

Generalnie część rejestrów się nie pokrywa.

479 (edytowany przez lexmark3200 2025-10-02 22:13:31)

Odp: Cudy C200P

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

480

Odp: Cudy C200P

Leksmarku podziwiam i jak sie uda to "skrzynka piwa" dla Was!
Dzieki!

481 (edytowany przez lexmark3200 2025-10-02 16:00:38)

Odp: Cudy C200P

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ć sad

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ć.

482

Odp: Cudy C200P

Kompilujesz, uruchamiasz, jak zwraca coś sensownego to zaczyna być dobrze smile

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

483

Odp: Cudy C200P

Ale musiałbym dodać do poemgr jeszcze.

484

Odp: Cudy C200P

Albo napisać sobie wraper z main który by wywoływał te funkcję i wyświetlał dane.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

485

Odp: Cudy C200P

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$ 

486

Odp: Cudy C200P

@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

487

Odp: Cudy C200P

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

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

488

Odp: Cudy C200P

@Cezary.
Możesz mi zrobić z tego pakiet
https://github.com/lexmark3200/poemgr.git

489

Odp: Cudy C200P

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 */
      |                                   ^
Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

490 (edytowany przez lexmark3200 2025-10-02 21:17:12)

Odp: Cudy C200P

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))

491

Odp: Cudy C200P

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.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

492 (edytowany przez lexmark3200 2025-10-02 22:14:03)

Odp: Cudy C200P

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

493

Odp: Cudy C200P

@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.

494

Odp: Cudy C200P

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 errors
Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

495 (edytowany przez lexmark3200 2025-10-03 16:35:18)

Odp: Cudy C200P

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))

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 lol
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

496

Odp: Cudy C200P

Co zmieniłeś? Cały czas masz zdupilowane makro IP804AR_REG_PORT_PD_CLASS i inne.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

497 (edytowany przez lexmark3200 2025-10-03 16:42:41)

Odp: Cudy C200P

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... wink

498

Odp: Cudy C200P

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.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

499 (edytowany przez lexmark3200 2025-10-03 18:13:21)

Odp: Cudy C200P

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?

500

Odp: Cudy C200P

Czyli dla 0 to macro rozwija się jako 0x88 +(0/2), tak.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.