Собственно вожусь со своим сетапом для удаленной отладки. УСБ девайсов у меня много, 10портового хаба не хватает. Разумеется запитать все это дело, когда там заряжается планшет мобильник, питается несколько девборд и прч. проблемно. Надо бы знать, когда питалово проседает. По крайней мере пока я не поставлю более мощный адаптер питания.
В общем воспользовавшись АТ командой AT+EADC=1, православным башем, и плазмоидом MakeProgress получил примерно такое:
Китайская мобила подрубается к компу по блютуз последовательному порту, и еще работает как удаленная клавиатура. Весь софт я наваял на баше, исходник скрипта привожу ниже. Не слишком красиво, в идеале надо было делать демона на сях, но уж хрен с ним.
Аппаратный компорт остается свободен для аврки, которая управляет питанием всего.
at_daemon.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | #!/bin/bash if [ -e /tmp/at_fifo ]; then echo "Already ready." cat /dev/rfcomm0 >> /tmp/at_fifo& else mkfifo /tmp/at_fifo chmod 777 /tmp/at_fifo echo "Configuring interface" rfcomm bind rfcomm0 34:71:B9:53:66:01 10 stty -F /dev/rfcomm0 115200 echo "AT interface ready" fi #enable ADC & EKPD by default ./at_files/init.sh& while true; do cat /tmp/at_fifo|while read line; do #echo $line CMD=`echo $line|cut -d" " -f1` DATA=`echo $line|cut -d" " -f2| sed 's/.$//'` case "$CMD" in "+EADC:") VBAT=`echo $DATA|cut -d"," -f1` VUSB=`echo $DATA|cut -d"," -f5` echo '{"minimum":0,"maximum":4.5,"value":'$VBAT'}' > /tmp/vbat echo '{"minimum":0,"maximum":6,"value":'$VUSB'}' > /tmp/vusb echo "VBAT=$VBAT; VUSB=$VUSB" ;; "+EKPDS:") KEYEVENT=`echo $DATA|cut -d"," -f1` KEYCODE=`echo $DATA|cut -d"," -f2` if [ $KEYEVENT -eq "1" ]; then echo $KEYCODE ./keymaps/e71.map $KEYCODE fi ;; "SEND") ATCMD=`echo $line|cut -d" " -f2` echo "$ATCMD" > /dev/rfcomm0 echo "Sending CMD: $ATCMD" ;; "ERROR") echo "Bad stuff =(" ;; "OK") echo "All fine" ;; *) echo $line ;; esac done done |
init.sh
Высылает команды на включение вывода с ацп
AT() выдергиваем отсюда для своих нужд.
1 2 3 4 5 6 7 8 9 10 11 | #!/bin/bash AT() { echo "SEND AT$1" > /tmp/at_fifo } sleep 5 #Since there's a bug/feature - a double command of the same thing just increases the poll frequency AT "+EKPD=0" AT "+EADC=0" AT "+EKPD=1" AT "+EADC=1" |
e71.map
Пример мэппинга. В туду сделать его красивше, но это как-нибудь в следующий раз.
e71.map
A small and limited example of key mapping script. Yet to be remade into a better looking map using a more neat solution.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #!/bin/bash -x echo $1 case "$1" in 14) xdotool key Up ;; 15) xdotool key Down ;; 16) xdotool key Left ;; 17) xdotool key Right ;; |
МейкПрогресс для этого пришлось немного хакнуть, он только в % отображал значение. Фичреквест отправил Никите Мельниченко, авось пофиксит к след. релизу.
P.S. Через TST-PS можно оказывается получать координаты нажатия на экран. Жаль в синий зуб не пробросишь…