26

Odp: Problem z kartą dźwiękową

Jeśli chodzi a sleep, to zamiast tego router kompresuje dane z urandom i wysyła do nulla i to jest z najniższym priorytetem - w zasadzie działa jak oczekiwałem.
Mam pytanie odnośnie skryptu:

no= sed -n '1p' /etc/aaa/numer
echo $no
kawalek= sed -n $(no)p /etc/aaa/lista
echo $kawalek
mpc clear
mpc add $kawalek
mpc play
no=$((no+1))
echo $no > /etc/aaa/numer
#echo $no

Co tu jest nie tak - wiem napewno, że coś z odwołaniami do zmiennych.
Może napiszę o co mi chodzi:
do zmiennej no wrzucam numer z pierwszej linii pliku /etc/aaa/numer jako numer stacji, którą chcę odtwarzać (w tym wypadku 3)
do zmiennej kawałek wrzucam adres url stacji, znajdującej się w pliku /etc/aaa/lista w trzeciej linii (to będzie http://188.165.22.29:9300)
wtedy wykonuję mpc clear, następnie chcę dodać stację, której url znajduje się w zmiennej kawalek i włączam odtwarzanie.
następnie inkrementuję liczbę zapisaną w zmiennej no i wrzucam ją do pliku /etc/aaa/lista aby następnym razem odtworzyć następną stację.

No i nie działa, docelowo przed inkrementacją chcę zrobić porównanie aktualnego numeru z liczą linijek w pliku ze stacjami, ale narazie to co mam mi nie chce działać, Cezary - rzucisz na to trochę światła?
Pozdrawiam

27

Odp: Problem z kartą dźwiękową

A nie łatwiej zrobić playlistę i potem mpc next?

28

Odp: Problem z kartą dźwiękową

@szupek:

#!/bin/sh
N=$(cat /tmp/numer.txt)
N=$((N+1))
P=$(sed -n $N,1p /tmp/lista.txt)
if [ -z "$P" ]; then
    echo "1" > /tmp/numer.txt
    P=$(sed -n 1,1p /tmp/lista.txt)
else
    echo $N > /tmp/numer.txt
fi
echo "$P"

numer.txt robisz przez echo "1" > /tmp/numer.txt

lista.txt zawiera linia po linii zbiór czegoś.

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

29

Odp: Problem z kartą dźwiękową

@tymmej, tylko, że jak bawiłęm się z playlistą, to raz wczytana, pozostawała niezmieniona do restartu routera. Mi chodzi o to aby np po dodaniu do pliku stacji radiowej ten wpis był brany pod uwagę przy przełączaniu.
Cezary, przerobiłem skrypt wg Twojego schematu i działa to zgodnie z założeniami - chciałem teraz dołączyć wykonywanie skryptu za pomocą przycisku OTB. Zainstalowałem pakiet kmod-button-hotplug i działałem zgodnie z instrukcjami z http://eko.one.pl/?p=openwrt-button. Jednak po stworzeniu skryptu z zawartością:

    #!/bin/sh
    logger $BUTTON
    logger $ACTION

i wciśnięciu przycisku w logread nic nie widzę.

30

Odp: Problem z kartą dźwiękową

Więc ten przycisk nie jest obsługiwany przez hotpluga. Co to za router?

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

31

Odp: Problem z kartą dźwiękową

To IConnect z zainstalowaną betą do attitude adjustment

32

Odp: Problem z kartą dźwiękową

To nie zadziała. Bo developerzy openwrt zostawili obsługę przycisków jako switch a nie jako key, więc nie będzie pomykać z hotplugiem. W moich obrazach działało, tyle że one są lekko stare.

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

33

Odp: Problem z kartą dźwiękową

to jak fizycznie mogę powiązać przycisk ze skryptem. jest gdzieś opsiana obsługa przycisków jako switch? szukałem, ale nie bardzo mogłem coś na ten temat znaleźć.

34

Odp: Problem z kartą dźwiękową

Nie przez system. Możesz sam napisać skrypt który będzie działał w tle i sprawdzał czy odpowiednie gpio zmieniło stan.

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

35

Odp: Problem z kartą dźwiękową

Cezary, a byłbyś mi w stanie z tym pomóc, bo tu się już jestem zdecydowanie za krótki...

36

Odp: Problem z kartą dźwiękową

Najpierw sprawdź czy da się odczytać gpio (opis jest na eko.one.pl). Sprawdź także czy triggerhappy go nie chwyci (też opisane na eko.one.pl)

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

37

Odp: Problem z kartą dźwiękową

ok, triggerhappy go nie odnalazł, ale udało się odczytywać stan przycisku jako gpio 35. Co dalej?

38

Odp: Problem z kartą dźwiękową

No to masz odczyt gpio. To teraz zrób sobie ładną pętlę czytającą w kółko jego stan. Jak sie zmieni to uruchom coś.

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

39 (edytowany przez szupek 2012-09-09 18:04:28)

Odp: Problem z kartą dźwiękową

Pytanie: Jak zrobić pętlę, aby nie obciążała procka w dużym stopniu, ale też nie "przegapiła" naciśnięcia przycisku. Myślę, że interwał między wykonaniami powinien wynosić ok 100ms - od tego bym przynajmniej zaczął. w katalogu /sys/class/gpio/gpio35 najduje się plik edge w którym jest text "none", do czego on służy? Czy można za jego pomocą wykrywać zbocza?

Cezary, polecisz jakiś kurs tego języka skryptowego, bo robię wszystko po omacku i muszę do najprostszych rzeczy dochodzić. Czytałem, że ash ma wiele wspólnego z Bourne shell, ale wiele rzeczy się nie zgadzają/nie działają w OpenWRT. Chociażby do tej pętli potrzebowałbym jakichs komend odpowiadających np assemblerowskim cjne czy jnz.

Co jest nie tak z tą pętlą:

while [ 1 ]
do {
if "$(cat /sys/class/gpio/gpio35/value)" = 1 ; then
echo "w"
else
echo "e"
fi
   }
done

W odpowiedzi dostaję cały czas to:

./loop.sh: line 10: 1: not found
e

40

Odp: Problem z kartą dźwiękową

while true; do
{ nie ma ma

if [ $(cat ... ten [ to link to programu test i jest potrzebny, kończy się to = 1 ]; then

} też nie ma

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

41

Odp: Problem z kartą dźwiękową

Dobra, jak to jeszcze spowolnić aby wszystkich zasobów nie żarło?

42

Odp: Problem z kartą dźwiękową

sleep, ale to da Ci opóźnienie 1s
więc możesz jakieś obliczenia robić czy coś takiego z odpowiednim nice

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