IS-637
IS-637 je původní označení standardu, který popisuje formát SMS v CDMA sítích. Organizace 3GPP2 jej vydává pod názvem C.S0015, verze z listopadu 2012 nese název C.S0015-C v1.0.

Kapitola 3 dokumentu C.S0015-C popisuje formát PDU, které se přenáší mezi mobilním telefonem a MSC. Mezi jednotlivými MSC a mezi MSC a MC se zprávy přenášejí jako parametry MAP protokolu, popsané v X.S0004; kapitola 4 C.S0015-C platí pro přenos SMS celou mobilní sítí mezi telefonem a MC

Průchod SMS zprávy mobilní sítí 
V IS-41 sítích není cesta SM tak jednoduchá jako v GSM sítích:

Z MO mobilu je zpráva zaslána do Serving MSC, odtud může být poslána přes několik Tandem MSC až dorazí do Anchor MSC. Pro posílání MO zprávy mezi
MSC se používá operace SMSDeliveryBackward. Teprve Anchor MSC pošle zprávu do střediska textových zpráv, které se v ANSI
standardech anglicky nazývá Message Center (MC), pomocí operace SMSDeliveryPointToPoint. Zpráva pak může být poslána do druhého MC pomocí SMSDeliveryPointToPoint. Odtud další operací SMSDeliveryPointToPoint Anchor MSC. Z něho přes případná Tandem MSC operací SMSDeliveryForward až do Serving MSC. A teprve z něj do MT mobilu.

Pokud má být zpráva doručena mobilnímu zařízení, použije MC zprávu SMSRequest pro získání adresy, na kterou má zprávu poslat (routing address). Žádost obvykle obsahuje MobileDirectoryNumber příjemce, ve staré verzi standardu však bylo uvedeno, že zpráva musí obsahovat MIN, které nemá MC kde získat.

V dokumentech se pro žádosti (INVOKE) používají zkratky psané velkými písmeny (např. SMDPP), pro odpovědi (RETURN RESULT) zkratky psané malými písmeny (smdpp).

Zatímco v GSM sítích prochází standardně zpráva pouze střediskem krátkých textových zpráv odesilatele, a možnost, aby zpráva procházela i SMS centrem příjemce zprávy byla doplněna dodatečně a stále vypadá jako přílepek, IS-41 umožňuje v MO zprávě v IS-41 parametru SMS_OriginationRestrictions určit, zda má být zpráva poslána na SMS centrum odesilatele (), nebo přímo na SMS centrum příjemce (). Při indirect routing (který je doporučován) zpráva prochází i SMS centrem příjemce. Pro dopravu zpráv mezi SMS centry při indirect routingu se často používá protokol SMPP.

MAP parametry týkající se SMS mají následující BER (ASN.1) kódy:

Hodnoty SMS_AcessDeniedReason 
Hodnoty SMS_AcessDeniedReason (ve Wiresharku použít filtr frame contains 9F:81:18:01:xx):

Postponed může mít následující důvod:

 MS-based SME unreachable
 SME is not currently available
 MS receiver is off
 MS-based SME is busy

Hodnoty SMS_CauseCode 

Pokud pokus o přenos SM skončil chybou, vrátí příjemce TCAP response package obsahující Return Result pro příslušnou MAP zprávu (např. SMSDeliveryPointToPoint) obsahující na MAP úrovni parametr SMS_CauseCode, který nabývá následujících hodnot (ve Wiresharku použít filtr frame contains 9F:81:19:01:xx):

Postup při doručování CDMA SMS zpráv 
SMSC vyšle TCAP package queryWithPerm obsahující komponentu invokeLast s operation code 2359 (SMSRequest). Starší standardy až po N.S0005-0 v1.0 uvádějí, že SMSRequest INVOKE musí obsahovat MobileIdentificationNumber. MC však nemá žádnou možnost, jak tuto hodnotu získat, což po zavedení Mobile Number Portability (kdy MIN se nemusí rovnat MDN) vedlo k různým krkolomným řešením používajícím nestandardizované dotazy na různé databáze. X.S0004-540-E v2.0 již připouští, aby SMSRequest INVOKE posílaný z MC na HLR obsahoval MSID (tj. MIN nebo IMSI) nebo MobileDirectoryNumber, které je známé z SMS_OriginalDestinationAddress nebo obdobné adresy při použití jiného protokolu než CDMA pro submit původní zprávy.

HLR vrátí odpověď v TCAP package response se stejným identifier, jaký měl dotaz, obsahující komponentu returnResultLast, ve které je electronicSerialNumber a adresu anchor MSC příjemce v parametru sms-Address; v USA sms-Address obvykle obsahuje PC a SSN.

SMSC pak vyšle TCAP package queryWithPerm obsahující komponentu invokeLast s operation code 2357 (SMSDeliveryPointtoPoint) obsahující získané electronicSerialNumber, původní mobileIdentificationNumber na SCCP adresu vrácenou jako sms-Address (např. PC + SSN).

Na což bude odpovězeno pomocí TCAP package response obsahující komponentu returnResultLast; pokud operace skončila úspěchem, bývá MAP prázdný (tvořený pouze tagem F2 a oktetem obsahujícím délku s hodnotou 0), může však obsahovat i SMS_BearerData; pokud operace selhala, obsahuje SMS_CauseCode s číslem chyby.

Další operace, která se týká SMSC, je (2358) SMSNotification, kterou posílá HLR nebo MSC na MC nebo OTAF. Tato operace slouží k oznámení, že stav MS týkající se schopnosti přijímat SMS se změnil.

Typy zpráv 
Rozlišují se následující typy SMS zpráv:

Jednotlivé teleservisy podporují následující typy zpráv:

Pojmenování teleservisů je poněkud rozkolísané; další teleservisy (včetně historických TDMA) jsou uvedeny v X.S0004-550 v části SMS_TeleserviceIdentifier.

Subparametry Bearer Data 
V závislosti na teleservisu a typu zprávy obsahuje parametr Bearer Data následující parametry (M = povinný subparametr, O = nepovinný subparametr):

Každý subparametr začíná osmibitovým polem SUBPARAMETER_ID, které obsahuje číslo subparametru, a osmibitovým polem SUBPARAM_LEN, který obsahuje délku subparametru (bez polí SUBPARAMETER_ID a SUBPARAM_LEN) v oktetech. Pak následují další pole závislá na konkrétním subparametru, jak je popsáno dále. Jednotlivá pole nemusí být tvořena celistvými oktety, každému poli je přidělen buď pevný počet bitů, nebo lze jeho délku odvodit z hodnot jiných polí a hodnoty SUBPARAM_LEN. Bity jsou polím přidělovány v tom pořadí, v jakém jsou pole uvedena v tabulkách, vždy od nejvyšších bitů, takže například pole MESSAGE_ENCODING subparametru User Data zabírá pět horních bitů v bytu následujícím za SUBPARAM_LEN; ve zbývajících třech nejnižších bitech jsou tři horní bity následujícího pole MESSAGE_TYPE nebo NUM_FIELDS, zatímco spodních pět bitů pole je umístěno v horních pěti bitech následující bytu. Celý subparametr je vždy doplněn na celistvý počet bytů polem RESERVED, které musí být tvořeno nulovými bity.

Message Identifier 

Subparametr Message Identifier je jediný povinný subparametr u všech typů zpráv a teleservisů. Umožňuje rozlišit typ zprávy, odhalovat duplicitní zprávy, a pro WEMT teleservis obsahuje informaci, zda zpráva obsahuje UDH.

CDMA telefony by měly duplicitní doručené zprávy zahazovat (C.S0015-C část 4.3.1.6). Pro odhalení duplicitních zpráv by měl telefon u vybraných teleservisů (podporujících unikátní identifikaci zpráv) používat následující pole:

 Message identifier
 Originating Address
 Originating Subaddress
 Message Center Time Stamp

Jedinou výslovně uvedenou výjimkou je teleservis WAP, u kterého všechny segmenty segmentované části mají mít stejné MESSAGE_ID, protože duplicitní segmenty lze odhalit pomocí pole SEGMENT_NUMBER.

Nastavování MESSAGE_ID podle C.S0015-C kap. 4.3.1.5 Setting of Message Identifier Field:

Hodnota v MESSAGE_ID poli subparametru Message Identifier slouží k identifikaci odesílaných SMS zpráv.

Pokud zpráva používá WAP Teleservis, mobilní stanice použije pro nastavení hodnoty pole
MESSAGE_ID postup uvedený v části 6.5.3 dokumentu "WAP-259-WDP-20010614-a".

Jinak mobilní stanice použije hodnotu MESSAGE_ID o jedničku větší než v předchozí zprávě.
Po svém spuštění by měla mobilní stanice vybrat hodnotu MESSAGE_ID pro první zprávu tak, aby se minimalizovala pravděpodobnost použití stejné hodnoty MESSAGE_ID v následujících zprávách SMS Submit.

Ve WAP-259-WDP-20010614-a se píše:

6.5.3. Use of MESSAGE_ID Field

Při posílání WDP datagramu v IS-637 SMS zprávě, MUSÍ odesílající koncový bod IS-637 nastavit hodnotu pole MESSAGE_ID subparametru Message Identifier takto:

 Pokud SMS zpráva obsahuje první segment prvního WDP datagramu po (opětovném) startu koncového bodu IS-637, koncový bod MUSÍ nastavit MESSAGE_ID na náhodnou hodnotu v intervalu 0 - 65535.
 Jinak MUSÍ koncový bod pro první segment WDP datagramu použít hodnotu o jedničku větší než v předchozím odeslaném WDP datagramu (modulo 65536).
 MC, ve kterém zpráva v protokolu IS-637 končí, MŮŽE jako MESSAGE_ID použít referenční číslo zprávy získané z protokolu rozhraní short message entity. Lze například použít ‘sar_msg_ref_num’ z [WDPWCMPAdapt]. Pokud není dostupné žádné referenční číslo, MC MUSÍ nastavit hodnotu MESSAGE_ID podle pravidel uvedených v této části dokumentu.

Praktické zkušenosti ukazují, že není vhodné používat MESSAGE_ID s hodnotou 0.

User Data 
Struktura subparametru User Data:

Možné hodnoty pro kódování zprávy (MESSAGE_ENCODING) jsou popsány v C.R1001:

Jednotlivé znaky v poli CHARi jsou ukládány podle pravidel popsaných výše, jako kdyby se jednalo o samostatná pole. Velmi komplikované je ukládání znaků v sedmibitovém kódování ASCII nebo IA5, v případě, že zpráva obsahuje UDH (User data Header). UDH je uloženo jako by se jednalo o osmibitová data (tzn. horní tři bity jednoho bytu UDH ve spodních třech bitech jednoho bytu subparametru a spodních pět bitů v horních pěti bitech následující bytu subparametru). Pak následuje 0-6 nulových bitů, které zarovnávají délku UDH na celistvý počet septetů, za nimiž následují sedmice bitů jednotlivých znaků textu. Celý subparametr je pak doplněn 0-7 nulovými bity na celistvý počet oktetů. V případě kódování UNICODE obsahuje pole NUM_FIELDS počet šestnáctibitových položek v CHARi. Pokud v tomto případě obsahuje zpráva UDH liché délky, je za poslední znak přidáno 8 nulových bitů, které doplňují CHARi na sudý počet bytů.

Nejkomplikovanější je struktura CHARi při použití kódování GSM 7bit default alphabet s UDH. V tomto případě je UDH spojeno se zbytkem textu stejným způsobem jako v případě GSM pole TP-UD, doplněno na celistvý počet oktetů a pak umístěno do CHARi. Při vytváření TP-UD se na rozdíl od polí v CDMA subparametrech přidělují bity od nejnižších.

WAP teleservis používá vždy MSG_ENCODING=0. Wireless Application Protocol rozlišuje protokoly WDP a WCMP. Protokol WDP je obdobou internetového UDP. WCMP se používá pro služební funkce a je obdobou internetového protokolu ICMP. Pro WAP WDP má pole CHARi subparametru User Data následující strukturu:

Pro WAP WCMP pole začíná CHARi jednobytovým polem MSG_TYPE s hodnotou 1, za ním následují WCMP data (WCMP_MESSAGE). Pole NUM_FIELDS obsahuje počet oktetů WCMP_MESSAGE zvětšený o 1 pro MSG_TYPE.

User Response Code 
User Response Code se používá ve zprávách SMS User Acknowledgment Message, které se posílají jako odpověď na doručenou zprávu. Subparametr má následující strukturu:

Message Center Time Stamp 
Struktura subparametru Message Centre Time Stamp:

Všechna pole data a času obsahují dvě čtyřbitová BCD čísla. Na rozdíl od adres jsou ve vyšším půlbytu desítky, v nižším půlbytu jednotky.
Např. rok 1996 bude v poli YEAR reprezentován binárním číslem ‘10010110’.

Subparametr Message Center Time Stamp může být obsažen v SMS zprávách zaslaných z Message Centra (MC). Pokud má účastník nakonfigurováno, že se má používat UTC SMS timestamp režim, čas v tomto subparametru bude UTC. Jinak by měl být čas v tomto subparametru nastaven na čas, který se má uživateli zobrazovat na displeji mobilního telefonu. Viz kapitola 3.4.29 dokumentu 3GPP2 C.S0023-D v2.0 pro mobilní stanice vybavené R-UIM.

Validity Period 
Doba platnosti zprávy. Platnost zprávy je omezena globálním nastavením MC. Existují 2 subparametry; v subparametru se SUBPARAMETER_ID 4 je doba platnosti zadána absolutním časem pomocí stejných polí jako u Message Center Time Stamp; v subparametru se SUBPARAMETER_ID 5 je doba platnosti zadána relativně a subparametr má následující strukturu:

Deferred Delivery Time 
Čas, do kdy se má odložit doručení zprávy; podobně jako u Validity Period lze použít buď subparametr udávající absolutní čas (SUBPARAMETER_ID 6) nebo relativní čas (SUBPARAMETER_ID 7).

Priority Indicator 
Struktura subparametru Priority Indicator:

Hodnoty pole PRIORITY:

Privacy Indicator 
Struktura subparametru Privacy Indicator:

Hodnoty pole PRIVACY:

Reply Option 
Struktura subparametru Reply Option:

Number of Messages 
Number of Messages je subparametr číslo 00001011 = 0x0B = 11 Bearer Data.
Je to počet zpráv uložených ve Voice Mail System. Do paketu se ukládá jako BCD číslo (max. 99); horní půlbyte obsahuje desítky, spodní jednotky.
cdma_add_number_of_messages z položky b_bd_number_of_messages. Podle C.S0015-C je Number of Messages povinné pro SMS Deliver pro teleservis VMN,
volitelné pro SMS Deliver pro teleservis WPT, WEMT a WMT. Nezaměňovat s MAP parametrem SMS_MessageCount (SMSMSGCNT), který má podobný význam jako More Messages to Send v GSM.

Alert on Message Delivery 
Struktura subparametru Alert on Message Delivery:

Hodnoty pole ALERT_PRIORITY:

Language Indicator 
Struktura subparametru Language Indicator:

Kódy jazyků jsou následující:

Call-Back Number 
Call-Back Number je jediná adresa (telefonní číslo), která se vyskytuje v parametru Bearer Data; všechny ostatní adresy jsou IS-41. Struktura subparametru Call-Back Number je popsána v IS-637/C.S0015:

Zpravidla se používá DIGIT_MODE=0. Zajímavé je, že DIGIT_MODE=1 znamená, že pro CHARi je použito sedmibitové kódování ASCII, ale pro jednotlivé znaky jsou použity osmice bitů. Hodnoty většiny polí jsou popsány v C.S0005:

Hodnoty číslic v DTMF režimu se liší od GSM číslic! Toto kódování se při přenosu zpráv pomocí IS-41 používá pouze pro Call-Back Number – IS-41 adresy SMS_OriginalOriginatingAddress a SMS_OriginalDestinationAddress používají jiné kódování!

Message Display Mode 
Struktura subparametru Message Display Mode:

Hodnoty MSG_DISPLAY_MODE:

Message Status 

Struktura subparametru Message Status:

Hodnoty MSG_STATUS_CODE jsou podle následující tabulky:

TP-Failure Cause 
Struktura subparametru TP-Failure Cause:

Hodnoty pole VALUE jsou shodná s hodnotami parametru TP Failure Cause (TP FCS) podle dokumentu 3GPP TS 23.040:

Enhanced VMN 
Používáno pro teleservis VMN sloužící k zasílání zpráv o obsahu hlasové schránky.

Odkazy

Reference 

CDMA Standard