1

Temat: Komunikacja UBUS na openWRT

Cześć,

czy miał ktoś przyjemność uruchomiania komunikacji UBUS na openWRT ? Próbuje uruchomić to -> https://github.com/txomon/ubus  lecz niestety bezskutecznie.

2

Odp: Komunikacja UBUS na openWRT

To jakaś staroć jest. Przeciez ubus jest standardowo w openwrt. Co chcesz zrobić?

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

3 (edytowany przez r00ti 2019-11-05 22:44:10)

Odp: Komunikacja UBUS na openWRT

chce uruchomic komunikacje UBUS wlasnie na urzadzeniu z openWRT. Mam sdk openWRT na moim ubuntu gdzie buduje projekt i robie cross compilacje na urzadzenie docelowe. I potrzebuje jakies wskazowki co musze zrobic ? Sam sdk posiada libubus i libubox. W projekcie mam dodany toolchain z tego SDK i wszystko ladnie sie kompiluje, problem w tym ze nie wiem jak skorzystac z tej biblioteki ubus, ktora niby jest juz w tym sdk.

4

Odp: Komunikacja UBUS na openWRT

Nadal nie wiem co chcesz zrobić. Co rozumiesz pod pojęciem "chce uruchomic komunikacje UBUS"? Ubus jest w openwrt tak po prostu, działa itd. Więc co chcesz z nim zrobić?

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

5 (edytowany przez r00ti 2019-11-05 23:13:53)

Odp: Komunikacja UBUS na openWRT

mam 2 aplikacje na urzadzeniu i chciałbym żeby przesyłały między sobą jakieś dane. Program napisany jest w jezyku c, wykorzystuje ECLIPSE i cross compilacje na ubuntu.

np. chcialbym uruchomic tego klienta.

https://lxr.openwrt.org/source/ubus/examples/client.c

zeby to zrobic na ubuntu musze widziec "libubus.h" oraz <libubox> ktore teoretycznie powinny byc na SDK, ktore jest na ubuntu ?

6

Odp: Komunikacja UBUS na openWRT

To jest właśnie ubus który jest w openwrt. Jak skompilujesz sdk to ubus też się skompiluje, biblioteki też się skompilują, przykład tez (choć nie jest pakietowany).

Zarówno pliki nagłówkowe jak i biblioteki są w sdk, (w tym przykładzie dla x86/64)

$ ls staging_dir/target-x86_64_musl/usr/lib/libubus*
staging_dir/target-x86_64_musl/usr/lib/libubus.so
$ ls staging_dir/target-x86_64_musl/usr/include/libubus*
staging_dir/target-x86_64_musl/usr/include/libubus.h

Kompilując własny program masz właśnie je używać. Eclipse używasz do pisania, ale linkować masz z w/w biblioteką i robisz to na dwa sposoby: albo "ręcznie" - czytaj: http://eko.one.pl/?p=openwrt-kompilacja … odurdowego albo prościej - robisz odpowiedni makefile dla openwrt który zrobi z twojego kodu paczkę, a skrypty z sdk wiedzą gdzie i co się znajduje. Przykłady makefile masz setki w sdk (katalog package i feed), przykład masz też np tu: https://dl.eko.one.pl/projekty/helloworld.tar.gz

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

7

Odp: Komunikacja UBUS na openWRT

bardzo Ci dziękuje za pomoc. Tak zrobię.

8 (edytowany przez r00ti 2019-11-12 18:30:01)

Odp: Komunikacja UBUS na openWRT

Ok, rozpocząłem pracę nad tym ubusem. Mimo tego, że zaincludowalem "libubus" i <libubox/blob.h> to eclipse nie widzi mi blob_buf_init. Mógłbym pomóc ?



EDIT

po dodaniu patha do lib -> staging_dir/target/usr/lib i jako biblioteka podanie ubus
dostaje
Description    Resource    Path    Location    Type
libubox.so, needed by /home/xxx/opW/openwrt/staging_dir/target-mipsel_24kc_musl/usr/lib/libubus.so, not found (try using -rpath or -rpath-link)    tass             C/C++ Problem

9

Odp: Komunikacja UBUS na openWRT

Co to znaczy "eclipse nie widzi"? Nie linkujesz z libubox?

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

10

Odp: Komunikacja UBUS na openWRT

Cezary napisał/a:

Co to znaczy "eclipse nie widzi"? Nie linkujesz z libubox?


ok zlinkowałem tylko z ubusem, zapomniałem o ubox.

11

Odp: Komunikacja UBUS na openWRT

Mam pytanie. W kodzie tworze sobie plik json z mojej struktury, którą chce wyslać przez UBUS.

Więc tak :

blobmsg_buf_init(&buf);
temps=blobmsg_add_json_from_file(&buf,"settings3.json");
    log_info("%d",temps);
    if (!temps) {
            log_info("failed to load %s\n",filename);
            //return -1;
        }
    else{
        log_info("succesful");
    }

Wczytałem json poprawnie do bufora. I jaki jest kolejny krok ? Jak moglę wyslać tak ibufor jsona za pomocą ubus ? Wyrzkostuje do tego funkcje ubus_invoke ?

12

Odp: Komunikacja UBUS na openWRT

Mam kolejne pytanie. Tworze projekt clienta, który odbiera dane od servera i to mi działa super. Kolejnym krokiem jakim chce zrobić to, że ja wysyłam coś na server ale tylko raz i w konkretnym momencie. Program wykorzysutje posix, mam stworzony osobny watek do wysylania danych i zabezpieczony sem_wait. Jak dostane semaphor to chce wyslac TYLKO raz dane do serwera. Aktualnie jak przychodzi mi request od serwera zebym wyslal mu dane to za pomocą tego sem_post działa, ale jak wysyłam sem_post z innego threada zeby mi wyslal te dane to juz dziwne ale nie .

Thread od wysylania, ktory działa na odpowiedz requesta (teoretycznie wyglada to tak smao, tylko wysylany jest z innego watku):

while (1)
    {
        sem_wait(&xMutexUbusSenderData);
        uloop_timeout_add(&_xCountTimeForData);
        usleep(10000);
    }