Внешний машинный интерфейс ( EMI ), расширение универсального компьютерного протокола ( UCP ), — это протокол, который в основном используется для подключения к центрам обслуживания коротких сообщений (SMSC) для мобильных телефонов . Протокол был разработан CMG Wireless Data Solutions, теперь частью Mavenir .
Типичный обмен EMI/UCP выглядит следующим образом:
^B01/00045/O/30/66677789///1//////68656C6C6F/CE^C ^B01/00041/R/30/A//66677789:180594141236/F3^C
Начало пакета обозначается символом ^B (STX, hex 02), а конец — символом ^C (ETX, hex 03). Поля внутри пакета разделяются символами /.
Первые четыре поля образуют обязательный заголовок. Третье — тип операции (O — операция, R — результат), а четвертое — операция (здесь 30, «передача короткого сообщения»).
Последующие поля зависят от операции. В первой строке выше '66677789' — это адрес получателя ( номер телефона ), а '68656C6C6F' — это содержимое сообщения, в данном случае строка ASCII "hello". Вторая строка — это ответ с соответствующим номером ссылки транзакции, где 'A' указывает, что сообщение было успешно подтверждено SMSC, а к номеру телефона добавляется временная метка, указывающая время доставки.
Последнее поле — контрольная сумма , которая вычисляется простым суммированием всех байтов в пакете (включая слеши) и извлечением 8 наименее значимых бит из результата.
Полная спецификация доступна на форуме разработчиков сайта LogicaCMG, но требуется регистрация.
Двузначный номер ссылки транзакции означает, что субъект, отправляющий текстовые сообщения, может иметь только 100 невыполненных сообщений (за сеанс); это может ограничить производительность, но только в медленной сети и с неправильно настроенными приложениями на SMSC (например, один сеанс с числом окон больше 100). На практике это не оказывает никакого влияния на пропускную способность доставки.
Документация EMI UCP не определяет алфавит по умолчанию для буквенно-цифровых сообщений после декодирования из шестнадцатеричных цифр. (Она определяет алфавит IRA для закодированного сообщения, который совпадает с 7-битным ASCII, поскольку 0-9 и AZ являются инвариантными символами ). Соответствующий стандарт ETS 300 133-3 определяет алфавит GSM-7 , который охватывает больше языков, чем ASCII, заменяя непечатаемые управляющие коды дополнительными печатными символами. На практике используется алфавит GSM-7. Другие кодировки, такие как UCS-2 , можно отправлять с помощью прозрачного сообщения и указания схемы кодирования данных .