В связи с выпуском в паблик решил открыть новую тему.
Итак, управление плеером пультом телевизора по технологии СЕС (синонимы и фирменные названия технологии см. на
http://ru.wikipedia.org/wiki/CEC )
В модуле достаточно гибкие настройки.
По дефолту модуль настроен на отдачу команд в юникс сокет (как это сделано в веб пульте, IpodCIG.cgi)
- Пример конфига: юникс сокет | +
...
[translate]
target = {
# target type: 0=file, 1=unix socket, 2=command
type = 1
# target path. If type=0|1 path to file, if type=2 it's command string
path = "/tmp/CGI_request"
# data packet mode: 0=hex, 1=string
mode = 1
}
ucp_commands = {
# Sequences can be used if separated by a comma (but _NO_ spaces!)
0x00 = "select" ; Select -> Ok
0x01 = "up" ; Up
0x02 = "down" ; Down
0x03 = "left" ; Left
0x04 = "right" ; Right
...
Можно также настроить отдачу команд в файл.
- Пример конфига: отдача в irfake (коды пульта Asus O!Play) | +
...
[translate]
target = {
# target type: 0=file, 1=unix socket, 2=command
type = 0
# target path. If type=0|1 path to file, if type=2 it's command string
path = "/sys/devices/platform/VenusIR/fakekey"
# data packet mode: 0=hex, 1=string
mode = 1
}
ucp_commands = {
# Sequences can be used if separated by a comma (but _NO_ spaces!)
0x00 = 0xa25d686c ; Select -> Ok
0x01 = 0xa15e686c ; Up
0x02 = 0xa35c686c ; Down
0x03 = 0xa758686c ; Left
0x04 = 0xa05f686c ; Right
...
- Пример конфига: отдача в модуль Capture TV (консольные команды) | +
...
[translate]
target = {
# target type: 0=file, 1=unix socket, 2=command
type = 0
# target path. If type=0|1 path to file, if type=2 it's command string
path = "/tmp/ir"
# data packet mode: 0=hex, 1=string
mode = 1
}
ucp_commands = {
# Sequences can be used if separated by a comma (but _NO_ spaces!)
0x00 = " " ; Select -> Ok
0x01 = "W" ; Up
0x02 = "X" ; Down
0x03 = "A" ; Left
0x04 = "D" ; Right
...
Подобным образом настраивается СЕС для оригинальных прошивок для xTreamer, только команды будут другие.
- Скрипт из прошивки xpro270, отвечающий за посылку команд | +
- Code: Select all
if ($_POST['power']){
exec("echo -n O > /tmp/ir");
}else if ($_POST['subt']){
exec("echo -n '!s ' > /tmp/ir");
}else if ($_POST['home']){
exec("echo -n '!' > /tmp/ir");
}else if ($_POST['1']){
exec("echo -n a > /tmp/ir");
}else if ($_POST['2']){
exec("echo -n e > /tmp/ir");
}else if ($_POST['3']){
exec("echo -n d > /tmp/ir");
}else if ($_POST['4']){
exec("echo -n z > /tmp/ir");
}else if ($_POST['5']){
exec("echo -n g > /tmp/ir");
}else if ($_POST['6']){
exec("echo -n m > /tmp/ir");
}else if ($_POST['7']){
exec("echo -n s > /tmp/ir");
}else if ($_POST['8']){
exec("echo -n f > /tmp/ir");
}else if ($_POST['9']){
exec("echo -n t > /tmp/ir");
}else if ($_POST['info']){
exec("echo -n i > /tmp/ir");
}else if ($_POST['0']){
exec("echo -n v > /tmp/ir");
}else if ($_POST['return']){
exec("echo -n r > /tmp/ir");
}else if ($_POST['up']){
exec("echo -n k > /tmp/ir");
}else if ($_POST['left']){
exec("echo -n h > /tmp/ir");
}else if ($_POST['enter']){
exec("echo -n ' ' > /tmp/ir");
}else if ($_POST['right']){
exec("echo -n l > /tmp/ir");
}else if ($_POST['down']){
exec("echo -n j > /tmp/ir");
}else if ($_POST['play_pause']){
exec("echo -n p > /tmp/ir");
}else if ($_POST['stop']){
exec("echo -n S > /tmp/ir");
}else if ($_POST['pgup']){
exec("echo -n '{' > /tmp/ir");
}else if ($_POST['pgdn']){
exec("echo -n '}' > /tmp/ir");
}else if ($_POST['FF']){
exec("echo -n '>' > /tmp/ir");
}else if ($_POST['FB']){
exec("echo -n '<' > /tmp/ir");
}else if ($_POST['vol_up']){
exec("echo -n '+' > /tmp/ir");
}else if ($_POST['vol_down']){
exec("echo -n '-' > /tmp/ir");
}else if ($_POST['audio']){
exec("echo -n A > /tmp/ir");
}else if ($_POST['a-b']){
exec("echo -n '@' > /tmp/ir");
}else if ($_POST['repeat']){
exec("echo -n '&' > /tmp/ir");
}else if ($_POST['shufl']){
exec('echo -n u > /tmp/ir');
}else if ($_POST['mute']){
exec("echo -n M > /tmp/ir");
}else if ($_POST['subtitle']){
exec("echo -n T > /tmp/ir");
}else if ($_POST['sync_left']){
exec("echo -n '.' > /tmp/ir");
}else if ($_POST['sync_right']){
exec("echo -n '/' > /tmp/ir");
}else {
$command=$_POST['command'];
$fp=fopen('/tmp/netkey.data', 'w');
fwrite($fp, $command);
fclose($fp);
exec("echo -n r > /tmp/ir");
}
Возможно также настроить вызов внешней программы для отправки команд.
- Пример конфига: внешняя программа | +
...
[translate]
target = {
# target type: 0=file, 1=unix socket, 2=command
type = 2
# target path. If type=0|1 path to file, if type=2 it's command string
path = "echo '%s' > /tmp/ir"
# data packet mode: 0=hex, 1=string
mode = 1
}
ucp_commands = {
# Sequences can be used if separated by a comma (but _NO_ spaces!)
0x00 = " " ; Select -> Ok
0x01 = "W" ; Up
0x02 = "X" ; Down
0x03 = "A" ; Left
0x04 = "D" ; Right
...
- Список кодов CEC команд | +
User Control Codes
0x00 Select 0x35 Display Information 0x55 Initial Configuration
0x01 Up 0x36 Help 0x56 - 0x5F Reserved
0x02 Down 0x37 Page Up 0x60 Play Function
0x03 Left 0x38 Page Down 0x61 Pause-Play Function
0x04 Right 0x39 - 0x3F Reserved 0x62 Record Function
0x05 Right-Up 0x40 Power 0x63 Pause-Record Function
0x06 Right-Down 0x41 Volume Up 0x64 Stop Function
0x07 Left-Up 0x42 Volume Down 0x65 Mute Function
0x08 Left-Down 0x43 Mute 0x66 Restore Volume Function
0x09 Root Menu 0x44 Play 0x67 Tune Function
0x0A Setup Menu 0x45 Stop 0x68 Select Media Function
0x0B Contents Menu 0x46 Pause 0x69 Select A/V Input Function
0x0C Favorite Menu 0x47 Record 0x6A Select Audio Input Function
0x0D Exit 0x48 Rewind 0x6B Power Toggle Function
0x0E - 0x1F Reserved 0x49 Fast forward 0x6C Power Off Function
0x20 - 0x29 Numbers 0-9 0x4A Eject 0x6D Power On Function
0x2A Dot 0x4B Forward 0x6E – 0x70 Reserved
0x2B Enter 0x4C Backward 0x71 F1 (Blue)
0x2C Clear 0x4D Stop-Record 0x72 F2 (Red)
0x2D - 0x2E Reserved 0x4E Pause-Record 0x73 F3 (Green)
0x2F Next Favorite 0x4F Reserved 0x74 F4 (Yellow)
0x30 Channel Up 0x50 Angle 0x75 F5
0x31 Channel Down 0x51 Sub picture 0x76 Data – see Note 3
0x32 Previous Channel 0x52 Video on Demand 0x77 – 0xFF Reserved
0x33 Sound Select 0x53 Electronic Program Guide
0x34 Input Select 0x54 Timer Programming
Список сокетных и консольных команд DvdPlayer можно посмотреть на
http://sites.google.com/site/farvoice/commands