воскресенье, 25 августа 2013 г.

Настройка смены полярности вместо callprogres и busydetect на аналоговых линиях.

Уже довольно давно передо мной стояла задача реализовать автоматизированную систему оповещения на базе asterisk. Для нормальной работы такой системы необходимы определенные условия. Одним из таких условий является однозначное определение факта подъема трубки на принимающей стороне. На аналоговых линиях астериск использует несколько алгоритмов для определения состояния звонка. Настройка callprogres и busydetect для интерфейса dahdi включает алгоритм определения звуковых сигнальных паттернов на линии для определения состояния звонка, этот метод очень популярен, практически все применяют именно его. Но, к сожалению, он не позволяет однозначно определить ровным счетом ничего, то есть нет никакой гарантии, что этот алгоритм не распознает определенную сигнализацию в определенных условиях, либо распознает ее слишком поздно, либо распознает ее там где ее не было. Еще одним недостатком этого подхода является необходимость точного описания паттернов для их обнаружения. Несмотря на то, что в России есть определенные стандарты сигнализации, не всегда операторы в точности их соблюдают, в первую очередь, эти сигналы предназначены для людей, а люди зачастую не предают значения небольшим отличиям в звуке длинного гудка ответа станции или его продолжительности.
Метод определения смены полярности разработан как раз для того, чтобы однозначно обозначить моменты, когда отвечающая сторона подняла трубку и положила ее. Я не буду здесь подробно описывать устройство этого типа сигнализации, информации на эту тему достаточно много в интернете, я сосредоточусь на описании настройки астериска для работы по этой системе и опишу некоторые нюансы.
Предположим в нашем распоряжении имеется сервер с установленным и работающим asterisk(версия 1.8) и настроенным интерфейсом dahdi(версия 2.4), одна, а возможно и несколько аналоговых плат с fxo портами соединенными с оператором. Первым делом необходимо выяснить поддерживает ли ваш оператор эту сигнализацию, а так же добиться от него ее включения на линии.
Проверить видит ли карта переполюсовку можно включив дебуг драйвера dahdi.
echo 1 > /sys/module/dahdi/parameters/debug
После этого действия можно совершить звонок и посмотреть dmesg.
[138842.534627] wctdm24xxp 0000:05:08.0: 4329602929 Polarity reversed (1 -> -1)
[138941.140486] wctdm24xxp 0000:05:08.0: 4329627581 Polarity reversed (-1 -> 1)
Для того, чтобы астериск начал реагировать на смену полярности, необходимо добавить следующие строчки в файл настройки каналов dahdi - chan_dahdi.conf :
answeronpolarityswitch = yes // определяем поднятие трубки при смене полряности
hanguponpolarityswitch = yes // определяем что трубку положили при смене полярности
И тут начинается самое интересное, дело в том, что настройки callprogres и busydetect начинают конфликтовать с настройками answeronpolarityswitch и hanguponpolarityswitch , то есть астериск начинает производить детект дозвона, поднятия трубки и разрыва соединения по всем разрешенным признакам и скорее всего 99% соединений будут разрываться сразу после поднятия трубки на другой стороне. Это означает, что пообщаться по телефону мы сможем только случайно :). Строки с настройками callprogres и busydetect необходимо закомментировать, а еще лучше явно указать запрет использования этих алгоритмов:
callprogres=no
busydetect=no
После всех выше перечисленных действий необходимо выгрузить и загрузить модуль chan_dahdi.so, для этого в консоли астериска набираем:
module unload chan_dahdi.so
module load chan_dahdi.so
К сожалению, использовать команду "module reload chan_dahdi.so" нельзя?! Хоть это и кажется странным и не логичным. "dahdi restart"?!
На сегодняшний день, смена полярности является единственным надежным методом сигнализации поднятия трубки и разрыва соединения для аналоговых линий. Так-же стоит обратить внимание на настройку сигнализации каналов dahdi, в этом примере я использую signalling=fxs_ks .

среда, 20 марта 2013 г.

StarCraft II: Heart of the Swarm! Лучшее что сделали Blizzard за последние годы.

От StarCraft II: Heart of the Swarm много я не ждал , и был практически уверен, что это очередной тухлый DLC, в котором в сотый раз будет перемалываться, притянутый за уши, сюжет и однообразные задания. Купил я его, можно сказать, по привычке :) и не пожалел.
На этот раз Blizzad действительно перешагнули через свою традиционную занудность и выдали 100% эпига.

Первое, что продавало меня это - массовость. Практически с самого начала появляется возможность управлять 200-юнитовыми армиями разъяренных зергов , и выглядит это просто восхитительно.

Второе, задания несколько отличаются по своему геймплею от всего, что я видел раньше в серии. Они стали динамичнее и веселее. Каждое задание уникально. Обучение и знакомство с новыми юнитами вплетено параллельно линии сюжета и происходит как-бы само собой.

Третье, сюжет средний, но впервые за всю историю серии, я могу сказать, что действительно понял о чем эта компания и что происходило с ее героями. Весь сюжет логичен и линия его простая и прямая. Авторы все таки смогли донести до меня, кто такие зерги и как устроено их сообщество. Рисуется альтернативная картина эволюции вида. Я даже порой ловил себя на мысли, что подобная форма жизни (с некоторыми оговорками) вполне могла бы  существовать где нибудь в нашей вселенной :) Кстати, думаю людям из гринписа(или тем кто против технократического пути), стоит поиграть. ;)

Четвертое, музыка! Впервые в игре Blizzard я услышал современную музыку, с качественным НОВЫМ звуком, для серии это настоящий прорыв! Были моменты, когда я прямо заслушивался. Я уж и не чаял, что близы вырвутся из своего занудянского ретро-оркестрового формата.

Пятое, дали погонять героя! Королева клинков жжот просто неподецки. Не то, что-бы это что-то прямо таки новое, но доставляет.

Шестое, юниты , они Новые! Они действительно новые и оригинальные. А мутации юнитов добавляют вариативности в геймплей.

Безусловно, все что делает Blizzard, это проекты высшей пробы, но в последнее время, они меня не радовали. Да я убил дьяблу(3), да я прошел Wings of Liberty, да я скрипя зубами докачался до 90 уровня в WoW. И все эти проекты, наверное, стоят, потраченных на них денег. И все они вроде бы хорошие, и качественные, но...
А Heart of the Swarm - это настоящая игра! Остается только надеяться, что этот свежий тренд Blizzard и дальше будет набирать обороты.

суббота, 16 февраля 2013 г.

Steam в Ubuntu 12.04 беглый взгляд

Не так давно Корпорация Valve объявила о выходе Steam для Linux, если честно , я отнесся к этой новости скептически... но все-таки свершилось! Я не принимал участие в закрытом бета- тестировании и не особо следил за развитием проекта, поэтому рассказывать о том, как проект мутировал со старта до официального релиза ,не буду.  Так или иначе, сейчас Steam для Linux доступен всем и у меня ,наконец ,до него "дошли руки". В Ubuntu 12.04 пакет Steam появился в репозитарии.
Итак, что же мы в итоге имеем, на моей машине установлен процессор core i5-2500 , 8 гигов RAM и видеоадаптер NVIDIA 650Ti. К сожалению, не все игры запустились с пол-оборота, были и те, что запускаться "не захотели", в частности Dwarfs!? и Titan Attacks, разбираться чего им не хватает, я не стал :).

Serious Sam 3: BFE и Anomaly Warzone Earch показали себя отлично, все работает четко, лагов нет.

Solar 2, Trine 2 и Bastion слегка притормаживают, самую малость, это практически незаметно. 

Сам Steam работает так же ме-е-едленно, как и под win, в этом плане прогресса у Valve нет :) 

Список игр для linux пока не велик, но и в нем можно найти несколько занимательных вещей. Буду  надеяться, что проект не стухнет.