На сервере используем Gentoo Linux, к которому через USB-порт подключен телефон Neo Freerunner (Openmoko + SHR).
1. Убедимся, что ядро Linux собрано с опцией "Ethernet over USB". При выполнении dmesg будет выведены примерно такие сообщения: [ 3167.874749] udev[1339]: renamed network interface eth2 to eth4
[ 3187.500221] cdc_ether 4-2:1.0: eth4: unregister 'cdc_ether' usb-0000:00:1d.2-2, CDC Ethernet Device
eth4 Link encap:Ethernet HWaddr 00:1f:11:01:43:af
inet addr:192.168.7.14 Bcast:192.168.7.255 Mask:255.255.255.0
...
2. Ставим Apache и PHP, включая PHP-расширение SSH2, которое в дальнейшем пригодится.
3. Выбираем телефон на который можно поставить дистрибутив [[http://wiki.openmoko.org/wiki/SHR SHR]] (http://www.shr-project.org), в состав которого входит полезная консольная утилита mdbus2. В качестве телефона задействован Neo Freerunner, но подойдут и другие аппараты, [[http://wiki.shr-project.org/trac/wiki/Devices поддерживаемые]] в SHR (Nokia N900, Palm Pre, Pre Plus, Pre 2, HTC Desire, HTC Dream, HTC HD2, iPhone3G, Nexus One и т.п.)
4. Заливаем с Linux-машины на телефон прошивку:
dfu-util -d 1d50:5119 -a u-boot -R -D qi-ubi-s3c2442.udfu
dfu-util -d 1d50:5119 -a kernel -R -D uImage-2.6.39-r6-oe16-om-gta02-20111217193821.bin
dfu-util -d 1d50:5119 -a rootfs -R -D shr-image-om-gta02.ubi
5. Настраиваем соединение:
# cat /etc/hosts | grep 192
192.168.7.2 neo
# ssh neo
root@om-gta02:~# ifconfig usb0
usb0 Link encap:Ethernet HWaddr 00:1F:11:01:43:AE
inet addr:192.168.7.2 Bcast:192.168.7.255 Mask:255.255.255.0
...
6. Далее открываем консольную утилиту mdbus для диагностики и обмена данными. Нам потребуются сервисы USSD, SMS и VOICE.
USSD вызов:
ssh neo "mdbus2 -s org.freesmartphone.ogsmd /org/freesmartphone/GSM/Device org.freesmartphone.GSM.Network.SendUssdRequest '*102#'
VOICE вызов:
ssh root@neo "mdbus2 -s org.freesmartphone.ogsmd /org/freesmartphone/GSM/Device org.freesmartphone.GSM.Call.Initiate '+790XXXXXXX' 'voice'"
SMS вызов:
ssh neo "mdbus2 -s org.freesmartphone.ogsmd /org/freesmartphone/GSM/Device org.freesmartphone.GSM.SMS.SendTextMessage '+7903XXXXXXX' 'Hello world' '1'"
Ссылки по которым можно разобраться в работе mdbus:
http://wiki.openmoko.org/wiki/OpenmokoFramework/mdbus
http://docs.freesmartphone.org/
7. Создаём PHP-скрипт для выполнения звонка с использованием библиотеки SSH2:
<?php
$connection = ssh2_connect('neo', 22);
if (ssh2_auth_password($connection, 'root', '')) {
echo "Authentication Successful!\n";
} else {
die('Authentication Failed...');
}
$shell = ssh2_shell($connection,"bash");
$stream = ssh2_exec($connection, 'mdbus2 -s org.freesmartphone.ogsmd /org/freesmartphone/GSM/Device org.freesmartphone.GSM.Call.Initiate \'+7903XXXXXXX\' \'voice\'');
echo " SetMicrophoneMuted = 1 \n ";
$stream1 = ssh2_exec($connection, 'mdbus2 -s org.freesmartphone.frameworkd /org/freesmartphone/GSM/Device org.freesmartphone.GSM.Device.SetMicrophoneMuted \'1\'');
echo "$stream";
echo "calling to +7903xxxxxxx (POPOV DMITRY)";
echo " Sleep 10 sec \n ";
sleep(20);
echo " Release GSM call \n ";
$stream2=ssh2_exec($connection, 'mdbus2 -s org.freesmartphone.ogsmd /org/freesmartphone/GSM/Device org.freesmartphone.GSM.Call.ReleaseAll');
$output = stream_get_contents($stream);
echo "$output";
?>
URL:
Обсуждается: http://www.opennet.ru/tips/info/2659.shtml