1) qss - быстро мограет - mpcs загружается
2) qss - светится - mpcs работает
3) qss - не свиться - mpcs выгружена
4) qss - быстро моргнул (светился-быстро погас-засветился снова) - ключь найден
5) qss - моргнул длинно 3 раза (светился-погас-засветился снова) - ошибка mpcs
6) нажатее кнопки QSS до 2 секунд - диод QSS гаснет - перезагружает mpcs
7) нажатее кнопки QSS от 2 секунд и больше ( после того как QSS погаз и снова загорелся
- можно отпускать) - перезагружает роутер командой reboot (без cброса настроек)
Выкладываю, может кому пригодится:
/etc/init.d/mpcs_init
Код:[Выделить]#!/bin/sh /etc/rc.common # Copyright (C) 2006 OpenWrt.org START=99 QSSled=&a
mp;# 34;/sys/class/leds/tl-mr3x20:
;green&# 58;qss" # путь к диоду QSS в переменную start() { /usr/sbin/mpcs_ext & # запускаем mpcs } stop() { exec > /dev/null 2> /dev/null # скрываем все stdout и stderr killall -9 mpcs # снять задачу mpcs rm /tmp/mcps.mem # удаление временных файлов mpcs rm /tmp/*.fifo # удаление временных файлов mpcs rm /tmp/mpcs.led # удаление файла семофора для моргания QSS killall grep # снять задачу grep поиска в логе mpcs killall tee # снять задачу tee killall cat # снять задачу cat echo 0 > $QSSled/brightness # откл. диод QSS }
usr/sbin/mpcs_ext
Код:[Выделить]#!/bin/sh # Copyright (C) 2013 anoxiety # в файле /etc/mpcs/mpcs.conf указываем путь к лог файлу LogFile = /tmp/pipe.mpcs.log QSSled="/s
ys/class/leds/tl-mr3x20:green
8;qs s" # путь к диоду QSS в переменную OKfilter=" tuner .*: found " # то, что ищем в логе mpcs, чтоб мигнуть диодом QSS ERRORfilter=": timeout|: rejected|: not found|incimplete request|too many errors|errno=|failed" # ошибки #exec > /dev/null 2> /dev/null # скрываем все stdout и stderr ledBlink() { # описываем функцию моргания qss local times="$1" # сколько раз мограть local OFFpause="$2" # время выключения local ONpause="$3" # време свечения local blinkLED="$4" # выбор диода для мигания for k in `seq 1 $ (8.14₴)times` # цикл кол-во морганий do echo 0 > $blinkLED/brightness # откл. диод QSS for i in `seq 0 $ (0₴)OFFpause` ; do echo > /dev/null; done # цикл для паузы 0.2 сек, проц грузит не более 50% echo 1 > $blinkLED/brightness # вкл. диод QSS for i in `seq 0 $ (0₴)ONpause` ; do echo > /dev/null; done # цикл для паузы 0.2 сек, проц грузит не более 50% done } if [ ! -f /tmp/mpcs ] ; then # если файла mpcs нету - распакуем его echo timer > $QSSled/trigger; echo 200 > $QSSled/delay_off ;echo 200 > $QSSled/delay_on # быстро мограем диодом QSS cp -f /etc/mpcs/mpcs.bz2 /tmp/ # копируем архив mpcs.bz2 из /etc/mpcs/ в /tmp/ sleep 3 # ждем 3 сек. пока скопируется bunzip2 -f /tmp/mpcs.bz2 # распаковываем файл mpcs в папку /tmp/ chmod +x /tmp/mpcs # даем раcпакованному файлу mpcs права 0755 mkfifo /tmp/pipe.mpcs.log # создаем FIFО канал для совместного доступа к файлу лога mpcs mkfifo /tmp/pipe.tee.read.log # создаем FIFО канал для совместного доступа к файлу лога mpcs echo 0 > $QSSled/brightness; echo 1 > $QSSled/brightness # вкл. диод QSS fi if top -bn1 | grep [t]mp/mpcs > /dev/null; then # если процесс mpcs запущен - выгружаем его echo 0 > $QSSled/brightness # откл. диод QSS killall -9 mpcs # снять задачу mpcs rm /tmp/mcps.mem # удаление временных файлов mpcs rm /tmp/*.fifo # удаление временных файлов mpcs rm /tmp/mpcs.led # удаление файла семафора для моргания QSS killall grep # снять задачу grep поиска в логе mpcs killall tee # снять задачу tee killall cat # снять задачу cat sleep 2 # пауза 2 сек. fi /tmp/mpcs -c /etc/mpcs & # запуск mpcs с ключем -с это путь к конф. файлам /etc/mpcs touch /tmp/mpcs.led # создание файла семафора для моргания QSS echo 1 > $QSSled/brightness # вкл. диод QSS touch /tmp/bufer.mpcs.log.txt cat /tmp/pipe.mpcs.log | tee /tmp/pipe.tee.read.log > /tmp/bufer.mpcs.log.txt & while [ -f /tmp/mpcs.led ]; do # цикл работает если файл семафор mpcs.led существует grep -qE "$OKfilter|$ERRORfilter" /tmp/pipe.tee.read.log && ( # ищем в логе текст, если находим - выполняем дальше if grep -qE "$OKfilter" /tmp/bufer.mpcs.log.txt; then ledBlink 1 500 200 "/sys/class/leds/tl-mr3x20:green
:qss" # моргать 1 раз, выкл 500, вкл. 200 если ок else ledBlink 3 3000 2000 "/sys/class/leds/tl-mr3x20:green
:qss" # моргать 3 раз, выкл 3000, вкл. 2000 fi > /tmp/bufer.mpcs.log.txt # чистим лог файл ); done & # конец цикла
для перезагрузки mpcs кнопкой qss нужно выполнить в putty:
Код:[Выделить]uci add system button uci set system.@button[-1].button=wps
nnuci set system.@button[-1].action=presse
d uci set system.@button[-1].handler='
mpcs_ext &' uci add system button uci set system.@button[-1].button=wps
nnuci set system.@button[-1].action=releas
ed uci set system.@button[-1].handler='
echo 0 >/sys/class/leds/tl-mr3x20:green&
amp; #58;system/brightness; echo 0 >/sys/class/leds/ath9k-phy0/brightnes
s; echo 0 >/sys/class/leds/tl-mr3x20:green&
amp; #58;3G/brightness; echo heartbeat > /sys/class/leds/tl-mr3x20:green:
qss/trigger; reboot' uci set system.@button[-1].min=2 uci set system.@button[-1].max=30 uci
set system.@led[0].interval=500 u
ci commit system
Нувот и все. Еще. Я убрал из прошивки дантеса подключение драйверов при загрузке через insmode. Модули с драйверами к своему шнурку просто нужно скопировать при через wincsp в соответствующие папки в роутере и они будут подключены.
Сообщение отредактировано 3 апреля 2013 09:40. Редактировалось 1 раз(а)