Dancall má implementovány AT příkazy pro práci se SMS zprávami, tak jak předepisuje norma GSM 07.05 (ETS 300 58). Potíž je pouze v tom, že přístroj sám neobsahuje obvody rozhraní HW modemu, takže AT příkazy je třeba zadávat pomocí protokolu a řídící sběrnice C-BUS, kterou má telefon vyvedenu na systémový konektor. Na této jednodrátové sběrnici probíhá obousměrná komunikace z i do telefonu sériově, rychlostí 9600bps, s osmi datovými bity a jedním stopbitem a bez využití paritního zabezpečení. Úroveň H značí logickou jedničku, úroveň L logickou nulu a bytem s hodnotou 0xA5 se označuje přepnutí z jednoho směru komunikace na druhý. Tento byte vyšle na sběrnici vždy to zařízení, které končí svoji relaci, a dává ji tak k dispozici protistraně, od které očekává reakci. Komunikace samotná probíhá v paketech proměnlivé délky zabezpečených podélnou paritou, osmibitovým kontrolním součtem získaným logickou operací XOR přes všechny byte paketu. Tento kontrolní součet je vysílán jako poslední v paketu, za ním pak následuje už jen přepínací byte s hodnotou 0xA5. Jestliže tento kontrolní byte neodpovídá obsahu paketu, je paket příslušnou komunikující stranou jednoduše ignorován. A očekává-li některá z komunikujících stran odpověď, která z nějakého důvodu nepřichází, zopakuje poslední paket ještě dvakrát i s výše uvedeným přepínacím bytem 0xA5. Následující tabulka ukazuje, jak pakety s AT příkazy vyslanými do telefonu vypadají:
definice směru? |
definice směru? |
třída paketu? |
?? |
délka paketu-1 |
(ATpříkaz) |
kontrolní XOR |
0xA5 |
0x34 |
0x19 |
0x3c |
0x68 |
LENGHT |
DATA |
CHK SUM |
0xa5 |
0x34 |
0x19 |
0x3c |
0x68 |
0x0e |
0x00,0x41 0x54,0x2b 0x43,0x4d 0x47,0x4c 0x3d,0x22 0x41,0x4c 0x4c,0x22 0x0d
AT+CMGL=“ALL“ |
0x3d |
0xa5 |
Tam, kde je u popisky otazník ,si nejsme jisti významem, avšak po C-BUSu mohou putovat i pakety s jinou hlavičkou. Mohou obsahovat například údaje o kódu SIMlocku a podobně. Tyto pakety nesou v hlavičce na místě "třída paketu" jiné hodnoty. Pokud byste někdo experimentoval a našel další pakety a příkazy, dejte o sobě vědět a o vašich výsledcích přirozeně také.
Paket z telefonu do vnějšího zařízení vypadá velice podobně, pouze prvé dva byte jsou posílány v opačném pořadí a změní se hodnota u třetího byte v hlavičce:
definice směru? |
definice směru? |
třída paketu? |
?? |
délka datové části paketu-1 |
DATA (AT příkaz) |
kontrolní XOR |
0xA5 |
0x19 |
0x34 |
0x3e |
0x68 |
0x05 |
0x00,0x4f 0x4b,0x0d 0x0a,0x00
OK |
0x7d |
0xa5 |
Z tabulek je vidět, jak s C-BUSem zacházet. Pro posílání SMSek je dobré vědět, že Dancal neumí PDU mód, textovky budete tedy muset posílat v textovém módu. Stará se o to příkaz AT+CMGS="+420602123456"<0x0d>
Příkaz do telefonu poznámka Odpověď z telefonu AT+CSMS výběr služby SMS +CSMS: 1,1,0 AT+CMGF formát SMS (Daancall umí pouze textový formát) OK AT+CSCS=“GSM“ volba znakové stránky OK AT+CSCA SMS centrum OK AT+CSMP OK AT+CSDH OK AT+CNMI po příchodu SMS zprávy, je-li v AT+CNMI příslušně nastaveno OK +CMTI: „SM“ AT+CPMS nastavení preferované paměti pro záznam došlých SMS zpráv +CPMS „SM“,1,1,“SM“,1,10 OK AT+CMGL=”ALL” listování SMS zpráv +CMGL:1“STO UNSENT“,,““,,,0,25<0x0d,0x0a> <SMS> 0x0d,0x0a......... +CMGL:2......... ........... OK AT+CMGR=4 čte SMS na 4.pozici v příslušné paměti SMSzpráv +CMGR: „REC UNREAD“,,“97/04/07,12:08:06-00“,145,32,66,0,<0x0d,0x0a,<Mate novou hlasovou zpravu.....>> AT+CMGS SMS submit (odeslání SMS) +CSMS: <SMS ID> Někdo možná namítne, že tato tabulka není zcela v pořádku, a bude mít pravdu, ale naš ím cílem nebylo opisovat normu. Tu můžete najít na ETSI . Je v ní podrobný popis, jak s AT příkazy zacházet, jejich syntaxe a přesný výklad funkce. V tomto článku jsme se pokusili popsat komunikaci na sběrnici C-BUS; je ovšem třeba počítat s tím, že popis není vyčerpávající a nelze ho proto považovat za referenční dokument. Komunikaci jsme odposlechli, svoji roli při analýze sehrála také fantazie, zvláště při stavnovení sémantické stránky jednotlivých komponent komunikace, na pomoc jsme si vzali také obsah FLASH ROM telefonu, abychom příkazy ověřili, které vlastně jsou implementovány, případně která jejich část. S velkou pravděpodobností popisujeme podmnožinu paketů C-BUS, která úzce souvisí jen s implementací AT příkazů. Nenajdete zde tedy úplně všechny příkazy.