Testy Rad@Home na android'a

Zaczęty przez matszpk, 28 Sierpień 2011, 11:43

matszpk

udostępnilem na moim koncie ftp aplikacje Rad@Home na androida (bez żadnych zmian w kodzie). jest w http://krzyszp.info/matszpk/experimental/radathome_app. proszę na początku testowac ją jako standalone. na razie nie mam odpowiedniego sprzętu do testów, dlatego ją udostępniłem wam. uruchamia się normalnie.
wymagany jest sprzęt i kernel ze wsparciem dla OTG (USB on the GO), no miernik. podobno OTG działa na SGS II.
jeśli ktos ma sprzęt może przetestować aplikacje.

krzyszp

Puszczam newsa na stronie Radioactive@Home, mam nadzieję, że odzew będzie spory ;)

Myślę, że czujnik musi jak najszybciej do Ciebie trafić :)

Fajne zegarki :)
Należę do drużyny BOINC@Poland
 Moja wizytówka

matszpk

dzięki. na razie jeszcze nie mam odpowiedniego telefonu (z obsługą OTG, czyli host mode dla USB). aplikację należy wsadzić do katalogu /data/local/tmp i uruchomić np. z opóżnieniem w tle. no i podłączyc czujnik.
na razie mam inne plany zwiazane z projektem więc na razie nie planuje testów. dam znac jeśli będę chciał mieć czujnik do testów.

krzyszp

Za to na pewno mógłby się odezwać ktoś, kto takowy telefon ma...

Planujesz wsparcie (nawet opcjonalne) dla GPS'a?

Fajne zegarki :)
Należę do drużyny BOINC@Poland
 Moja wizytówka

matszpk

jeśli chodzi o GPS to jeszcze nie wiem jak to będzie wyglądać. (łatwo to zrobić w javie, ale nie znalazłem jeszcze sposobu jak to zrobić w native exec w C/C++).

krzyszp

A jak wygląda dokumentacjia API dla C, C++ w Androidzie? Możesz jakimiś linkami się podzielić?
I drugie pytania - jak i czym kompilujesz soft dla Androida? Jakiego IDE używasz i jak tworzysz GUI dla programów?

Fajne zegarki :)
Należę do drużyny BOINC@Poland
 Moja wizytówka

matszpk

w androidzie jest biblioteka bionic, która spełnia taką samą rolę co libc. jest też zestaw statycznych bibliotek STL/c++ (np.: stlport,stdc++). ogolnie API wygląda bardzo podobnie jak w normalnym linuksie (pomijając ograniczenia z obsługą wątków, C++, wyjątków i itd). takze są biblioteki do OpenGLES i itd. Oprocz tego jest binder do komunikacji. jednak pewnych rzeczy nie ma(np.: SYSV IPC, bo nie pasuje do mobilnych urządzeń i są lepsze rozwiązania). dla wersji 2.2 andka nie znalazlem obslugi akcelerometru i GPS'a  :dunno:.
do kompilacji używam AndroidNDK w wersji r5b. są tam kompilatory C/C++ i jest możliwośc standalone aplikacji (w wersji beta  ;) ).
Jeśli chodzi o IDE C/C++, to jest to prosty edytor Kate (z KDE), do javy uzywam EclipseSDK.

krzyszp

#7
To powinno pomóc:
http://www.vogella.de/articles/AndroidLocationAPI/article.html#overview_locationapi

Edit:
Tylko że to też Java :(

Fajne zegarki :)
Należę do drużyny BOINC@Poland
 Moja wizytówka

matszpk

android location wcale nie jest potrzebny (chyba, że chcesz z lokacji GPS określac polozenie na mapie). do GPS'a wystarczy zwykle android-sdk. poza tym jak widzisz jest to napisane w Javie. w androidzie aplikacje pisze się Javie, a do uruchamiania sluzy maszyna DalvikVM. kod natywny to całkiem inna bajka (tak jak w przypadku klienta i aplikacji). wiec mysle, że będzie potrzebny bridge pomiedzy aplikacja Javy, a kodem natywnym.

krzyszp

A nie próbowałeś dopytać się czegoś na forum developerów Androida na temat obsługi natywnej GPS'a i akcelerometrów?

Ps. Dzięki za info na temat środowiska w jakim pracujesz.

Fajne zegarki :)
Należę do drużyny BOINC@Poland
 Moja wizytówka

matszpk

jest to dostępne od wersji android 2.3. ale nie probowałem. raczej byłoby lepiej wspierać także wersję 2.2.

krzyszp

Cytat: matszpk w 28 Sierpień 2011, 19:09
jest to dostępne od wersji android 2.3. ale nie probowałem. raczej byłoby lepiej wspierać także wersję 2.2.
Zanim wszystko przetestujemy, wersja 2.3 będzie pewnie najczęściej wykorzystywaną (wliczając tablety), dlatego myślę, że jeśli masz ochotę, to możesz popracować nad tą wersją najpierw.
Jeszcze jedno pytanie, mianowicie jakie jeszcze (oprócz S2) znasz modele telefonów/tabletów z obsługą OTG? Ewentualnie, jak można sprawdzić, czy dany model to wspiera?

Fajne zegarki :)
Należę do drużyny BOINC@Poland
 Moja wizytówka

matszpk

co do innych modeli mogą być potrzebne zmiany w kerneli (specjalne wersje), raczej nie jest tak różowo, np.: dla HTC HD2 (trzeba miec specjalną przejsciowkę), jednak to może byc kłopotliwe lub nawet niemożliwe (ze względu brak wsparcia hardware'u). co do wersji 2.3 to raczej jest obsługa tylko akcelerometru (GPS'a nie ma) (zajrzałem do headerów systemowych). dla nowego 3.0 nie sprawdzalem.

krzyszp

No to pozostaje opcja napisania klienta w Javie...

Fajne zegarki :)
Należę do drużyny BOINC@Poland
 Moja wizytówka

matszpk

niekoniecznie. jak pisałem można zrobić bridge (most) pomiędzy aplikacją natywną a w javie. po prostu zintegruje się to jakoś z NativeBOINC'iem  ::)...

krzyszp

Podłączyłem dzisiaj czujnik (dopiero przyszedł do mnie odpowiedni kabelek z Hongkongu) do mojego SGS2, niestety, czujnik nie ruszył, ale:
Podłączenie samego kabla-przejściówki skutkowało pojawieniem się napisu "Host USB connected" (lub coś bardzo podobnego), niestety, nie mam pod ręką żadnego pendriva (swoją drogą, cholera wie, gdzie wcięło moje), więc podłączyłem... ładowarkę baterii e-papierierosów na USB (a co tam, telefon na gwarancji), skutek? Komunikat "High powered device connected" - telefon nie spłonął... No i teraz pytanie - czy Android obsługuje HID'a???

Fajne zegarki :)
Należę do drużyny BOINC@Poland
 Moja wizytówka

matszpk

niby to powinno działać. co do HID'a to nie wiem  :dunno:. ale to dobry znak, że SGS 2 (możliwe) obsługuje OTG.
zastanawiałem się czy nie wrzucić rad@home do listy aplikacji (moglbys sciągnąć go z poziomu nativeboinc'a  :) ).

krzyszp

Cytat: matszpk w 10 Wrzesień 2011, 09:13
niby to powinno działać. co do HID'a to nie wiem  :dunno:. ale to dobry znak, że SGS 2 (możliwe) obsługuje OTG.
zastanawiałem się czy nie wrzucić rad@home do listy aplikacji (moglbys sciągnąć go z poziomu nativeboinc'a  :) ).

Obsługuje OTG (jest tak napisane w specyfikacji), więc generalnie nie wiem, dlaczego licznik nie rusza, zwłaszcza że podłączony do komputera zaczyna działać automatycznie nawet jak nie ma softu na hoście...
Podczep aplikację - zobaczymy, czy znajdzie sprzęt...

Fajne zegarki :)
Należę do drużyny BOINC@Poland
 Moja wizytówka

kotfryc

Hmmm a licznik nadal jest zasilany poprzez USB ? jeśli tak trzeba by było sprawdzić napięcia, może telefon nie daje rady... ? Spróbować z zewnętrznym źródłem zasilania... ? Podejrzewam że telefony mogą mieć jakieś zabez. na portach przed uszkodzonym sprzętem, jeśli licznik by nie był w stanie się wpasować w jakiś profil to nara...
Podłącz jakiś dysk wewnętrzny zasilany przez USB i zobacz co się będzie działo, ja tak podłączyłem raz do tableta i baterię rozładowało w 8 min.  :boing:

krzyszp

Niestety, ja za mało umiem, żeby mu samodzielnie podłączyć zewnętrzne zasilanie (i zrobić to bezpiecznie dla telefonu). Niemniej, brak jakiejkolwiek reakcji (zarówno w telefonie jak i w czujniku) sugeruje, że problem jest w innym miejscu (vide reakcja telefonu na podłączenie ładowarki USB).

Fajne zegarki :)
Należę do drużyny BOINC@Poland
 Moja wizytówka

kotfryc

Można to jeszcze inaczej zrobić, niech Szopler albo TJM sprawdzą ile układ pobiera prądu (chyba jakieś pomiary robili lol) i sprawdzić w specyfikacji telefonu jak bardzo można go obciążyć...

krzyszp

Biorą max 30mA z włączonym buzzerem i podświetlonym wyświetlaczem, a w takim trybie  startuje czujnik i dopiero soft na hoście może to wyłączyć odpowiednią komendą/ami zależnie, co chcesz osiągnąć (dostępne opcje to: dźwięk/podświetlenie/wyświetlanie wyników). Z wszystkim powyłączanym ok. 15-16mA.

Specyfikacji portu USB dla SGS2 nie udało mi się nigdzie znaleźć...

Fajne zegarki :)
Należę do drużyny BOINC@Poland
 Moja wizytówka

kotfryc

#22
Przepisz dane z baterii - pojemność i napięcie... i daj ile telefon na tej baterii powinien chodzić... można policzyć trochę... 16 mA to nie aż tak sporo...
Ale jeśli telefon jest zasilany napięciem innym niż 5v to by znaczyło, że sam musi mieć w środku przetwornicę podciągającą napięcie dla USB. Spróbuj podłączyć inne urządzenia USB generujące obciążenie.

matszpk

aplikacja jest już gotowa na liście. możesz ją dodać za pomocą managera  :).

krzyszp

""High-power USB device connected. Nie można uzyskać dostępu do tego urządzenia"
Może uprawnienia??? To w końcu linux...
Bateria 3.7V, 6.1Wh, 1650mAh, chodzi około 12h z włączonym wifi.

Myślę, że potrzebuję wymienić rom w telefonie, tylko jeszcze nie wiem, jaką mam wersję ;/

Fajne zegarki :)
Należę do drużyny BOINC@Poland
 Moja wizytówka

matszpk

nie wiem  :dunno:. aplikacja i boinc jest uruchamiany z prawami manager'a. mozliwe, że manager nie ma takich uprawnień. zobaczę czy tak jest.

krzyszp

No dobra, na czym stanąłem...

Rom: I9100XXKE7
Kernel u mnie to : 2.6.35.7-I9100XWKF3-CL276555
"Numer wersji" (cokolwiek to oznacza): GINGERBREAD.XWKF3

No i teraz pytanie:
Którą wersję romu muszę pobrać, oznaczoną XXKE7 czy XWKF3???

Fajne zegarki :)
Należę do drużyny BOINC@Poland
 Moja wizytówka

matszpk

może nie zmieniaj jeszcze romu  ;) (i tak nie wiem jaki by trzeba wybrać). mozliwe, ze jest to problem z uprawnieniami. możesz też sprawdzić aplikacje w trybie standalone (samodzielnie uruchomioną z shella).

krzyszp

Tylko że do shella też nie mam dostępu...

Fajne zegarki :)
Należę do drużyny BOINC@Poland
 Moja wizytówka

matszpk

do shella? włącz opcję debugowania w (Ustawienie->Aplikacje->Tworzenie->Debugowanie). Możliwe że będziesz potrzebował specjalnego kodu do Samsunga żeby to włączyć (poszukaj w internecie) prawdopodnie wpisywanego przy dzwonieniu. do łączenia używaj adb (jest android-sdk).

krzyszp

#30
Telefon zrootowany, bez zmian.
Shellem zajmę się później...

Edit:
Gdzie są trzymane pliki projektów?

Fajne zegarki :)
Należę do drużyny BOINC@Poland
 Moja wizytówka

matszpk

pliki klienta siedzą w katalogu /data/data/sk.boinc.nativeboinc/files/boinc. możesz cos tam poszperać, ale nie radzę  :no:. raczej może być problem z biblioteką libusb albo ze sterownikami, albo po prostu nie ma uprawnień. nie wiadomo  :dunno:.
możliwe, że jutro coś wymyslimy. na razie dzisiaj nie mam za bardzo czasu  :dunno: (pilne zadanie w pracy).

Szopler

matszpk - układ dla Ciebie złożony w 80%, w poniedziałek wyślę żebyś na ślepo nie działał 8) tylko podaj adres na PW!

matszpk

szopler. na razie nie ma potrzeby. chciałbym tylko żeby krzyszp postarał się odpalić aplikację z shella. ostatecznie przygotuję wersję, która będzie zdalnie wysyłać debugi. poza tym mam htc sensation, który moze nie miec OTG (nie sgs2). planowałem, że krzyszp sprobuje to odpalic na telefonie (w sumie to on ma wszystkie czujniki, więc tak będzie najszybciej).
W razie problemów udostępnie boinc sdk, dzięki czemu będziecie mogli swoją aplikację skompilować dla androida  ;). krzyszp, chciałbym, żebyś trochę włożył w to wysiłku jeśli chcesz odpalic to na swoim SGS II. jutro pomyślimy.

krzyszp

Z mojej strony nie ma problemu. Tylko początkowo się bałem root'owania ze względu na brak informacji na temat romu itd. Teraz sprawa załatwiona, więc jutro na pewno będę kombinował.
Z tego też powodu pytałem, gdzie app zapisuje swoje dane (aplikacja też "się debugguje"), niestety, podany przez Ciebie katalog jest u mnie pusty... (już od poziomu pierwszego "data").

Fajne zegarki :)
Należę do drużyny BOINC@Poland
 Moja wizytówka

Troll81

Jakby zadziałało wraz z automatycznym odczytywaniem pozycji przez GPS to można by zrobić mapę radioaktywności Zony....

kotfryc

Cytat: Troll81 w 11 Wrzesień 2011, 12:48
Jakby zadziałało wraz z automatycznym odczytywaniem pozycji przez GPS to można by zrobić mapę radioaktywności Zony....
Technicznie nie ma przeciwwskazań, tylko chyba czujki trzeba by było przerobić na zasilanie bateryjne...  :book:

Troll81

a po usb z telefona ich nie zasilisz??

kotfryc

#38
Cytat: Troll81 w 12 Wrzesień 2011, 11:49
a po usb z telefona ich nie zasilisz??
Niby tak... , ale skróciłoby to drastycznie czas działania telefonu i jest ryzyko że mogło by się przyczynić do szybszego zużycia akumulatorka (więcej cykli ładowania/rozładowania + większy pobór prądu). Nie mówiąc o telefonach które mają czasy młodości za sobą i akumulatorki nie starczają już na długo (czyli wybór; albo robisz pomiary i telefon pada, albo nie robisz i możesz skorzystać z 112 jeśli Ci się coś w górach stanie)  Czujka jest zasilana napięciem 5v, a baterie w telefonie mają zazwyczaj napięcie poniżej tej wartości, czyli musi być jakaś przetwornica podnosząca napięcie w tel. - nie wiadomo czy jest na tyle wytrzymała żeby udźwignąć na stałe podłączoną czujkę. Trzeba by było przeglądać specyfikacje każdego telefonu i tabletu  z osobna ...  (pamiętajmy że android nie chodzi tylko na telefonach, ale także na tabletach...)
Generalnie nie byłoby problemu jeśli ktoś by z taką czujką wyszedł z domu raz w tygodniu do kościoła, ale wyobrażam sobie że gro ludzi by ją zabierało na biwaki/wakacje i tutaj się zaczynają schody...
... ale to jest tylko moje zdanie ...

krzyszp

#39
Po kilku testach...
Problemem okazuje się przetwornica, SGS2 nie pozwala na użycie urządzeń określanych jako "High Powered" czyli urządzeń konsumujących więcej niż 100mA - niestety, ale nasz czujnik pobiera więcej w momencie startu... Po wyjęciu układu sterującego przetwornicą czujnik zadziałał (ale to oczywiście bez sensu, gdyż nie tworzy żadnych zliczeń).

Zadaniem na teraz jest lekkie przerobienie czujnika tak, aby nie wymagał on więcej niż 100mA w dowolnym momencie (czyli ograniczenie "konsumpcji" przez przetwornicę do akceptowalnego poziomu) bądź użycie alternatywnego zasilania...

@Matszpk - nie udało mi się nigdzie w telefonie znaleźć folderu z plikami projektu...

Edit:

Niestety, czujnik podłączony bez przetwornicy nie jest prawidłowo rozpoznawany przez soft:
Stderr output

<core_client_version>6.10.58</core_client_version>
<![CDATA[
<message>
aborted by user
</message>
<stderr_txt>
Radac $Rev: 120 $ starting...
error finding DataStore: The specified device was not found
Radac $Rev: 120 $ starting...
error finding DataStore: The specified device was not found
Radac $Rev: 120 $ starting...
error finding DataStore: The specified device was not found

</stderr_txt>
]]>

Fajne zegarki :)
Należę do drużyny BOINC@Poland
 Moja wizytówka