Базы данныхИнтернетКомпьютерыОперационные системыПрограммированиеСетиСвязьРазное
Поиск по сайту:
Подпишись на рассылку:

Назад в раздел

Выше, дальше, сильнее.

div.main {margin-left: 20pt; margin-right: 20pt}

С.Кадаков
sgerr@clubpro.spb.ru
Выше, дальше, сильнее. Это все про SMS?

Предыдущую статью следует считать некоей точкой в повествовании об SMS. Была еще мысль сделать -- небольшой на пару статей -- обзор остальных протоколов, но потом я от нее отказался по двум причинам. Во-первых, такой обзор получиться бы мог весьма скомканным. А во-вторых, работа с различными протоколами, _по_сути_, одинакова (бес, как известно, в деталях :). Думается, что ознакомившись с предыдущими статьями, читатель сможет построить клиента, способного отсылать и принимать _текстовые_ короткие сообщения по спецификациям любого протокола. Что же дальше? Хороший вопрос, и не менее хороший ответ: а, собственно, дальше и начнется рассмотрение технологий используемых в _современных_ сервисах. Я имею ввиду технологии EMS/MMS, принимающие статус отраслевых стандартов, и корпоративные технологии доставки rich media контента на мобильные устройства, то есть то, что относится к так называемым сетям 3G. Но сначала, для того, чтобы "закруглить тему" поговорим еще немного о тексте.

Кодировка.

Часто (точнее -- всегда) недостаточно передавать только латинский текст, да и передача собственно "иностранных" сообщений, содержащих специальные символы требует некоторых дополнительных усилий. Таким образом вполне закономерно теперь поговорить о кодировке текста в сообщениях.

Видимо не секрет для читателей, уже разбиравшихся с протоколами SMS, что в мобильной сети сообщения большей частью передаются в так называемой кодировке GSM. Это семибитная кодировка -- каждый передаваемый символ предатавляется 7-ю старшими битами октета, младший бит относится уже к следующему символу. В следующем октете "отсекаются" уже два бита, и так далее, до тех пор, пока на 8-м октете символы опять не выровняются на границе. Не Бог весть какое сжатие, но позволяет сэкономить каждый восьмой октет, или, другими словами, впихнуть в 140 октетов пресловутые 160 символов. Приведем таблицу кодировки GSM (в сравнении с IA5):


Кодировка GSM.

Выбор кодировки осуществляется полем data_coding в submit_sm, о котором писано уже парой статей выше. Таким образом, при выборе кодировки 0x0, (SMSC default alphabet) можно надеятся, что центр воспримет текст сообщения именно в стандартной кодировке GSM.

Вообще говоря кодировке сообщений посвящен документ GSM 03.38, в котором возможные значания параметра data_coding (DCS -- data coding scheme) рассмотрены весьма подробно. Посмотрим и мы на них, так как этим параметром регулируется еще одна вещь: так называемый класс сообщения.

Класс сообщения.

Класс сообщения является своего рода "указанием" для принимающей стороны (SME, или мобильного терминала), как с этим сообщением поступить (в основном это, разумеется, относится к Mobile Terminated -- MT -- "предназначенным для мобильного устройства" сообщениям). Приняв сообщение, устройство может поступить с ним следующим образом:
Немедленно отобразить. (Class 0) Записать в память устройства. (Class 1) Записать в память SIM-карты. (Class 2) Передать на терминальное устройство. (Class 3)
Сообщения класса 3 описаны в GSM TS 07.05 и здесь мы не будем на них останавливаться. С остальными классами, надеюсь, все ясно без комментариев. Можно только добавить, что сообщения 0-го класса называются также "Flash messages" и могут быть потеряны сразу же после прочтения.

Спецификация DCS.

А теперь приведем, наконец, описание DCS из GSM 03.38. Биты 7..4 (Coding Group Bits) Значение битов 3..0
00xx

Если бит 5 не установлен, то текст считается не сжатым, в противном случае используется стандартное сжатие GSM (в GSM 03.38 не описано).

Если бит 4 не установлен, считается, что биты 1 и 0 не несут смысловой нагрузки и зарезервированы, в противном случае биты 1 и 0 указывают на класс сообщения: Бит 1 Бит 0 Значение
0 0 Class 0
0 1 Class 1
1 0 Class 2
1 1 Class 3

Биты 3 и 2 указывают на алфавит: Бит 3 Бит 2 Значение
0 0 Default alphabet (7 bit)
0 1 8 bit
1 0 UCS 2 (16 bit) -- Unicode
1 1 Зарезервировано

Частный случай DCS = 0x0 -- 0000 0000(bin) -- означает Default alphabet с неуказанным классом.
0100..1011 Зарезервировано
1100,1101,1110 Эти группы используются, когда, наряду с передачей текста, пользователя необходимо уведомить о том, что на его адрес получены сообщения других типов (Message Waiting Indication group), напрмер сообщения Voice Mail, FAX, E-Mail или сообщение другого типа. Аппарат может уведомить пользователя с помощью иконки на экране (индикатора) или другим способом. При этом: Группа 1100 предписывает аппарату просто изменить состояние индикатора, не сохраняя при этом собственно текст SM Группа 1101 предписывает изменить состояние индикатора и сохранить текст SM. Текст имеет кодировку Default alphabet. Группа 1101 предписывает изменить состояние индикатора и сохранить текст SM. Текст имеет кодировку UCS2 -- Unicode.
Бит 3 при этом может принимать значения: 0 - отключить индикатор 1 - включить индикатор
Биты 1 и 0 указывают на тип ожидающего сообщения: Бит 1 Бит 0 Значение
0 0 Voice Mail
0 1 FAX
1 0 E-Mail
1 1 Другое
1111 Бит 3 не используется и устанавливается в 0.
Бит 2 указывает кодировку и может принимать значения: 0 - Default alphabet. 0 - 8 bit.
Биты 1 и 0 указывают на класс сообщения. Бит 1 Бит 0 Значение
0 0 Class 0
0 1 Class 1
1 0 Class 2
1 1 Class 3
Принимая во внимание вышесказанное приведем примеры: для передачи Flash сообщения, содержащего русское "Привет от Иванова!" нужно использовать DCS = 0x18, а для передачи двоичных данных (напрмер -- тех же картинок и мелодий) используется DCS=0xF5.

Заключение.

Вот мы и подошли вплотную к передаче rich media. Следующая статья будет посвящена передаче мелодий, логотипов, графики (точнее, с нее начнется обсуждение этих вопросов). Это еще не совсем 3G, но уже и не просто текст. Оставайтесь с нами!




  • Главная
  • Новости
  • Новинки
  • Скрипты
  • Форум
  • Ссылки
  • О сайте




  • Emanual.ru – это сайт, посвящённый всем значимым событиям в IT-индустрии: новейшие разработки, уникальные методы и горячие новости! Тонны информации, полезной как для обычных пользователей, так и для самых продвинутых программистов! Интересные обсуждения на актуальные темы и огромная аудитория, которая может быть интересна широкому кругу рекламодателей. У нас вы узнаете всё о компьютерах, базах данных, операционных системах, сетях, инфраструктурах, связях и программированию на популярных языках!
     Copyright © 2001-2024
    Реклама на сайте