AT príkazy

Jednotlivé funkcie telefónu sa ovládajú zadávaním príslušných AT príkazov. Pre sieť GSM, európsky telekomunikačný a štandardizačný inštitút (ETSI) stanovil špecifické profily AT príkazov v norme (GSM 07.07). AT príkazy posielané do telefónu môžu byť zadávané v troch podobách:

a) test AT príkazu, (či telefón príkazu rozumie) je AT+ príkaz =? CR
b) načítanie nastavených hodnôt z telefónu AT+ príkaz ? CR
c) zápis dát alebo hodnôt do telefónu AT+ príkaz = parameter CR

Skratka AT je začiatok príkazu, doplníme podľa požadovaného povelu, sa zadáva iba v prípade, ak to požaduje príkaz pre nastavenie alebo zápis dát a je potvrdenie príkazu. Pri komunikácii z počítača je to ENTER a pri komunikácii z mikrokontroléra hodnota 0Dh.

Najjednoduchším AT príkazom je samotná dvojica znakov AT. Odpoveď mobilného telefónu na správne zadaný príkaz je OK. Zle zadané príkazy telefón ignoruje. Ak sú však v príkaze zadané nesprávne parametre, telefón odpovie ERROR. Pri tvorbe GSM komunikátora som využíval najmä AT príkazy pre prácu s textovými správami sms a telefónnym zoznamom.

Práca s telefónnym zoznamom

Čísla telefónneho zoznamu môžu byť uložené buď v pamäti telefónu alebo na SIM karte. GSM komunikátor vyberá jednotlivé telefónne čísla a texty pre odosielanie a prijímanie sms správ z telefónneho zoznamu na SIM karte. Túto vlastnosť som nastavil AT príkazom AT+CPBS="SM" .

Získanie čísla a textu z telefónneho zoznamu

Na získanie telefónneho čísla z telefónneho zoznamu GSM komunikátor používa AT príkaz AT+CPBR=1 (jednotka znamená, že sa má vyčítať telefónne číslo na pozícii 1. v telefónnom zozname). V odpovedi mobilného telefónu je číslo a meno uložené na danej pozícii.

at+cpbr=1
+CPBR: 1,"421904123456",145,"GSMkomunikator"

Práca s textovými správami SMS

SMS správy v telefóne sa delia do troch skupín. Každej skupine môže byť priradený niektorý z pamäťových priestorov. Počet a kapacita pamäťových priestorov sú však dané typom telefónu. Každej z troch skupín sú priradené určité operácie pre prácu s textovými správami. Prvej skupine sú priradené operácie na čítanie a mazanie správ. Druhá skupina obsahuje operácie zapisovania a odosielania správ. Do tretej skupiny sú ukladané prijaté správy. Pomocou AT príkazu AT+CPMS=? som zistil, že Ericsson A2618s má na výber zo štyroch druhov pamätí (ME,SM,PT,CT). Keďže prijatým správam sa dá priradiť len pamäť v mobilnom telefóne (ME), priradil som túto istú pamäť všetkým trom skupinám AT+CPMS="ME","ME","ME" .

Príjem textovej správy

Ak chceme aby nám telefón ohlásil prijatie novej správy musíme použiť AT príkaz AT+CNMI=3,1,0,0,0. Prijatie novej správy telefón oznámi v tvare +CMTI: "ME",2 (bola prijatá nová správa, je uložená v pamäti ME na 2. pozícii). Ak je na mieste pozície v telefónnom zozname číslo 0 jedná sa o prijatú flash sms. GSM komunikátor neustále čaká na prijatie tohto hlásenia od mobilného telefónu. Ak telefón toto hlásenie vyšle GSM komunikátor si vyžiada výpis prijatej správy pomocou AT príkazu AT+CMGL=0 . 0 znamená, že telefón vyšle len prijatú a neprečítanú správu, ktorá sa okamžite po vyslaní zmení na prečítanú. Týmto sa zabezpečí, že každá prijatá správa je telefónom odoslaná do GSM komunikátor len raz. Vo výpise správy je uvedený index pozície, na ktorej je sms uložená, typ správy ( prijatá neprećítaná, prijatá prečítaná, …), dĺžka PDU správy a samotný PDU správy. PDU (Protocol Data Unit) je reťazec párov hexadecimálnych číslic, v ktorom je zakódovaných niekoľko ďalších parametrov správy a jej text.

at+cmgl=0
+CMGL: 1,0,,24
0791249130330300240C9124914035168000004020607110804005416650DA04
OK

PDU prijatej sms má až na dĺžku niektorých polí pevnú štruktúru.

0791249130330300240C9124914035168000004020607110804005416650DA04

Reťazec začína špecifikáciou telefónneho čísla SMSC (Short Message Service Center) GSM operátora, od ktorého správa prišla. Prvý byt (07) vyjadruje, koľko ďalších bytov tvorí telefónne číslo SMSC. Druhý byt (91) vyjadruje, že číslo je v medzinárodnom formáte. V každom zo zostávajúcich bytov sú postupne kódované vždy dve cifry telefónneho čísla v opačnom poradí (24 91 30 33 03 00). Bity ďalšieho bytu PDU (24) majú význam podľa tabuľky:

7 (msb)0Nie je cesta pre odpoveď
60Dáta neobsahujú hlavičku
51Požiadavka správy o doručení
40Neobsadené
30Neobsadené
21V SMSC nie sú ďalšie správy
10PDU doručenej správy
0 (msb)0


V PDU ďalej nasleduje špecifikácia odosielateľa správy (0C 91 24 91 40 35 16 80). Špecifikácia telefónneho čísla je zostavená podľa podobných pravidiel ako špecifikácia telefónneho čísla SMSC, všetko je rovnaké, len prvý byt špecifikácie (0C) nevyjadruje počet bytov špecifikácie, ale počet cifier telefónneho čísla. Nasledujúce dva nulové byty v PDU vyjadrujú napr. to, že nie je použitý žiadny protokol vyššej vrstvy a že pre dáta je použitá sedembitová abeceda. Ďalšia šestica bytov (40 20 60 71 10 80) obsahuje registre rokov, mesiacov, dňa, hodiny, minúty a sekundy. Vyjadruje čas, kedy správa došla do SMSC. Ďalši byt (40) vyjadruje časové pásmo v jednotkách dlhých 15 min., tu teda 1 hod. Ďalší byt (05) je binárnym kódom dĺžky užívateľských dát, v tomto prípade 5 sedembitových kódovyných znakov. Posledná skupina bytov (41 66 50 DA 04) v štruktúre PDU sú užívateľské dáta - text sms.

Pre efektívne ukladanie textu zloženého zo sedembitových kódovaných znakov do osembitových bytov sa používa zvláštny spôsob pakovania, ktorý na maximálne 140 vymedzených bytov dovoľuje uložiť až 160 znakov textu. Prevod osembitových slov na sedembitové kódy znakov je na obr.1.

Obr. 1. Prevod osembitových slov na sedembitové kódy znakov


GSM komunikátor pri určovaní, či daná sms správa je oprávnená ovládať jeho výstupy postupuje nasledovne:

a) porovná telefónne číslo odosielateľa správy s telefónnym číslom, ktoré je uložené na prvej pozícii v telefónnom zozname (toto číslo je oprávnené aktivovať alebo deaktivovať výstupy GSM komunikátora )
b) porovná sa text prijatej sms s textom uloženým v telefónnom zozname od pozície 10 do 18 a podľa toho sa aktivuje alebo deaktivuje príslušný výstup GSM komunikátora.

Ak nie je splnená jedna alebo obidve tieto podmienky telefón sms správu ignoruje.

Odoslanie textovej správy

GSM komunikátor súčasne s kontrolovaním správy o prijatí novej sms správy kontroluje aj štyri nezávislé vstupy. Ak je niektorý zo vstupov aktivovaný, GSM komunikátor odošle sms správu na prednastavené telefónne číslo (číslo na 1. pozícii v telefónnom zozname) s prednastaveným textom (každý vstup má vlastný text, ktorý je uložený v telefónnom zozname v pozíciách 5,6,7,8). Pred odoslaním sms treba upraviť čislo prijímateľa a text sms získaný z telefónneho zoznamu, na tvar aký sa používa v PDU textovej správy (viď. Príjem textovej správy).

PDU odosielanej správy má však inú štruktúru ako PDU prijatej správy.

0011000C912491403516800000AA05416650DA04

Prvý byte správy na odoslanie (11) má štruktúru podľa tabuľky:

7 (msb)0Nepožaduje sa číslo SMSC pre odpoveď
60Dáta neobsahujú hlavičku
50Nepožadovaná správa o doručení
41Časová platnosť zrčená
30relatívne, číslom
20Neodmietať zdvojené správy
10PDU správa určená
0 (msb)1na odoslanie


Nasleduje nulový byte (00), ktorý vyjadruje, že prioritu správy prideľuje mobilný operátor. Je to nejaké poradové číslo, ktoré sa správam prideľuje. Potom je uvedená špecifikácia telefónneho čísla adresáta správy (0C 91 24 91 40 35 16 80). Je vytvorená podľa rovnakých pravidiel ako špecifikácia odosielateľa správy v PDU prijatej správy. Nasledujúci nulový byt (00) značí, že nie je použitý žiadny protokol vyššej vrstvy. Ďalší nulový byt (00) znamená okrem iného aj to, že sa používa sedembitové kódovanie znakov v texte správy a že sa jedná o správu určenú k uloženiu do telefónu. Keby na mieste tohto bytu bola zadaná napr. hodnota (10), jednalo by sa o tzv. správu triedy 0, teda po prijatí by bola ihneď a len zobrazená na displeji mobilného telefónu. Ďalšie byty (AA) vyjadrujú časovú platnosť správy, uvedenej hodnote zodpovedajú štyri dni. Iná doba platnosti sa dá zistiť z tabuľky:

HODNOTA BYTUČASOVÁ HODNOTAJEDNOTKA
0-143(x+1)*5minúta
144-16712+(x-143)*0.5hodina
168-196x-166deň
197-255x-192týždeň


Nasledujúci byte (05) vyjadruje dĺžku správy v počte znakov a potom nasleduje už len zakódovaný text správy. Pred PDU správy na odoslanie je ešte nutné vložiť špecifikáciu adresy SMSC. Na tomto mieste je vložený nulový byt (00), čo telefón pochopí tak, že použije telefónne číslo SMSC, ktoré má uložené v sebe.

Na odoslanie sms správ som použil AT príkaz AT+CMGS=N . N je počet bytov PDU. Ak má text sms získaný z telefónneho zoznamu menej ako 8 znakov, tieto sa doplnia medzerou. Vyriešil som to tak preto, aby počet bytov v PDU bol pri každej správe rovnaký, teda 22 bytov.
Po zadaní AT príkazu telefón odpovie znakom ">" a očakáva vloženie reťazca zloženého zo špecifikácie adresy SMSC a PDU odosielanej správy. Zadávaný reťazec sa ukončuje zadaním znakov 1A 0D 0A .

AT+CMGS=22
> 0011000C912491403516800000AA05416650DA041A0D0A

Kontrola stavu nabitia batérie

GSM komunikátor okrem kontroly prijatej sms správy a testovania vstupov kontroluje aj stav nabitia akumulátora mobilného telefónu. Táto kontrola sa robí pomocou AT príkazu AT+CBC. Telefón naň odpovie +CBC: 0,83 .
0 znamená, že batéria sa nedobíja (keby tam bola jednotka batéria sa dobíja). Číslo 83 vyjadruje stav nabitia akumulátora v percentách. GSM komunikátor začína baterku nabíjať ak je jej hodnota 69 %. Baterka sa nabíja z originálnej nabíjačky alebo zdroja s rovnakými parametrami. Nabíjanie je realizované cez relé.