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.
Nie jesteś zalogowany. Proszę się zalogować lub zarejestrować.
eko.one.pl → Oprogramowanie / Software → Komunikacja UBUS na openWRT
Strony 1
Zaloguj się lub zarejestruj by napisać odpowiedź
Cześć,
czy miał ktoś przyjemność uruchomiania komunikacji UBUS na openWRT ? Próbuje uruchomić to -> https://github.com/txomon/ubus lecz niestety bezskutecznie.
To jakaś staroć jest. Przeciez ubus jest standardowo w openwrt. Co chcesz zrobić?
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.
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ć?
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 ?
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.hKompilują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
bardzo Ci dziękuje za pomoc. Tak zrobię.
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
Co to znaczy "eclipse nie widzi"? Nie linkujesz z libubox?
Co to znaczy "eclipse nie widzi"? Nie linkujesz z libubox?
ok zlinkowałem tylko z ubusem, zapomniałem o ubox.
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 ?
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);
}Strony 1
Zaloguj się lub zarejestruj by napisać odpowiedź
eko.one.pl → Oprogramowanie / Software → Komunikacja UBUS na openWRT
Forum oparte o PunBB, wspierane przez Informer Technologies, Inc