Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Linux и FreeBSD » Программирование в *nix » Подскажите как допилить скриптик для телефона

Ответить
Настройки темы
Подскажите как допилить скриптик для телефона

Пользователь


Сообщения: 91
Благодарности: 9

Профиль | Отправить PM | Цитировать


Доброго времени суток.

Прощу подсказать как еще можно оптимизировать(или лучше переписать) sh скрипт для телефона Desire Z на Android.
Гдето в интернете видел ролик, где загружается HTC Desire телефон на андроиде и при этом у него мигает лампочка зарядки как HDD LED.
Захотелось себе сделать также, но беглый поиск не принес отдельной программы для Android имеющей данный функционал.
Решил делать своими силами, а самое простое это скрипт запускающийся из init.d и работающий в фоне.

Погуглив на тему лампочек я решил использовать зеленую лампочку зарядки.
/sys/devices/platform/leds-microp/leds/green/brightness , если в него записать 1 диод зажигается, 0 выключается.

Также в интернете нашел скрипт который делает почти то что нужно(изначально мигал светодиодом на клавиатуре) и немного его переписал.

Запускаю скрипт так.
Код: Выделить весь код
#!/system/bin/sh

/system/bin/led.sh >/dev/null 2>&1 &
renice 20 `pidof led.sh`
Сам скрипт
Код: Выделить весь код
#!/system/bin/sh

CHECKINTERVAL=0.3

getVmstat()
{
        cat /proc/vmstat|egrep "pgpgin|pgpgout"
}

led_on()
{
        echo "1" > /sys/devices/platform/leds-microp/leds/green/brightness
}

led_off()
{
        echo "0" > /sys/devices/platform/leds-microp/leds/green/brightness
}

# initialise variables
NEW=$(getVmstat)
OLD=$(getVmstat)

while [ 1 ] ; do
        sleep $CHECKINTERVAL
        NEW=$(getVmstat)
        if [ "$NEW" = "$OLD" ]; then
                led_off
        else
                led_on
        fi
        OLD=$NEW
done
Несмотря на работу с виртуальными фс proc и sys, а также задержку скрипт жрет много процессорного времени и не дает сбрасывать частоту, в итоге батарейка тает на глазах.
Код: Выделить весь код
CPU: 20.1% usr 63.2% sys  0.0% nic 16.5% idle  0.0% io  0.0% irq  0.0% sirq
Load average: 2.44 2.44 2.42 2/464 18764
←[7m  PID  PPID USER     STAT   VSZ %VSZ CPU %CPU COMMAND←[0m
 1220     1 0        S      760  0.2   0 12.1 {led.sh} /system/bin/sh /system/bi
    5     2 0        SW       0  0.0   0  0.6 [rcu_kthread]
10434  9171 1000     S     206m 55.8   0  0.4 system_server
11297  9171 1000     S     131m 35.7   0  0.4 {ndroid.systemui} com.android.syst
 2769  9171 10087    S     100m 27.2   0  0.2 com.fd.httpd

Отправлено: 01:06, 29-09-2012

 

Пользователь


Сообщения: 91
Благодарности: 9

Профиль | Отправить PM | Цитировать


Я вот тут еще подумал и немного переделал скрипт. Sleep делает меньшую задержку чем хотелось бы, а переменная $STATE нужна для того, чтобы лишний раз не писать в файл одно и тоже. Еще не знаю насколько шустрый egrep, но раз можно эту задачу решить обычным грепом думаю так будет лучше.

Код: Выделить весь код
#!/system/bin/sh

# Renice this
renice 19 $$

getVmstat()
{
    cat /proc/vmstat | grep "pgpg"
}

# initialise variables
CHECK=50000
STATE="0"
NEW=$(getVmstat)
OLD=$(getVmstat)

while [ 1 ] ; do
    usleep $CHECK;
    NEW=$(getVmstat);
    if [ "$NEW" = "$OLD" ]; then
        if [ "$STATE" = "1" ]; then
            STATE="0";
            echo "0" > /sys/devices/platform/leds-microp/leds/green/brightness;
        fi
    else
        if [ "$STATE" = "0" ]; then
            STATE="1";
            echo "1" > /sys/devices/platform/leds-microp/leds/green/brightness;
        fi
    fi
    OLD=$NEW
done
А можно выполнять включать и выключать диод только тогда когда состояние изменилось без циклов? Ну чтото вроде sleep_until_state_change();
Что еще можно сделать?

Отправлено: 02:22, 29-09-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.



Компьютерный форум OSzone.net » Linux и FreeBSD » Программирование в *nix » Подскажите как допилить скриптик для телефона

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - Помогите допилить скрипт*(create subfolders ) datosha Программирование и базы данных 6 09-04-2012 16:46
VBS/WSH/JS - скриптик вбс с запросом на бд chip-tmn Скриптовые языки администрирования Windows 0 24-10-2011 09:17
Скриптик... karnage Программирование и базы данных 5 15-05-2004 05:14
Подскажите формат данных для передачи в ИК-порт телефона denbessonov Мобильные ОС, смартфоны и планшеты 1 11-05-2003 18:14
Проверьте скриптик Kosiak Вебмастеру 8 25-04-2003 23:42




 
Переход