ˇ ´ UCEN ´I TECHNICKE ´ V BRNE ˇ VYSOKE BRNO UNIVERSITY OF TECHNOLOGY
ˇ ´ICH TECHNOLOGI´I FAKULTA INFORMACN ˇ ´ITACOV ˇ ´ ´ ´ U ˚ USTAV POC YCH SYSTEM FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER SYSTEMS
ˇ ´ ´ OVLADAC BLUETOOTH DALKOV Y
´ RSK ˇ ´ PRACE ´ BAKALA A BACHELOR’S THESIS
´ AUTOR PRACE AUTHOR
BRNO 2008
MARTIN KRATOCHV´IL
ˇ ´ UCEN ´I TECHNICKE ´ V BRNEˇ VYSOKE BRNO UNIVERSITY OF TECHNOLOGY
ˇ ´ICH TECHNOLOGI´I FAKULTA INFORMACN ˇ ´ITACOV ˇ ´ ´ ´ U ˚ USTAV POC YCH SYSTEM FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER SYSTEMS
ˇ ´ ´ OVLADAC BLUETOOTH DALKOV Y BLUETOOTH REMOTE CONTROLLER
´ RSK ˇ ´ PRACE ´ BAKALA A BACHELOR’S THESIS
´ AUTOR PRACE
MARTIN KRATOCHV´IL
AUTHOR
´ VEDOUC´I PRACE SUPERVISOR
BRNO 2008
ˇ Ing. JAROSLAV SKARVADA
Abstrakt C´ılem pr´ ace bylo vytvoˇren´ı univerz´aln´ıho syst´emu pro ovl´ad´an´ı poˇc´ıtaˇce d´alkov´ ym ovladaˇcem v podobˇe mobiln´ıho telefonu. Syst´em vyuˇz´ıv´a technologie Bluetooth pro bezdr´atovou komunikaci. Zamˇeˇruje se na snadnou rozˇsiˇritelnost a konfigurovatelnost, jednoduch´e pouˇzit´ı a n´ızkou energetickou spotˇrebu na stranˇe mobiln´ıho telefonu.
Kl´ıˇ cov´ a slova Bluetooth, server, GNU/Linux, BlueZ, MPD, klient, d´alkov´ y ovladaˇc, J2ME, mobiln´ı telefon
Abstract The goal of this thesis was to create an universal system for a remote computer control by a cellular phone. The system uses Bluetooth technology for wireless communication. It focuses on extensibility and ease of configuration, simple usage and low power requirement on the cellphone.
Keywords Bluetooth, server, GNU/Linux, BlueZ, MPD, client, remote controller, J2ME, cellular phone
Citace Martin Kratochv´ıl: Bluetooth d´ alkov´ y ovladaˇc, bakal´aˇrsk´a pr´ace, Brno, FIT VUT v Brnˇe, 2008
Bluetooth d´ alkov´ y ovladaˇ c Prohl´ aˇ sen´ı Prohlaˇsuji, ˇze jsem tuto bakal´ aˇrskou pr´aci vypracoval samostatnˇe pod veden´ım Ing. Jaroˇ slava Skarvady ....................... Martin Kratochv´ıl 13. kvˇetna 2008
Podˇ ekov´ an´ı ˇ Chtˇel bych podˇekovat vedouc´ımu pr´ace Ing. Jaroslavu Skarvadovi za jeho odbornou pomoc pˇri zpracov´ an´ı pr´ ace.
c Martin Kratochv´ıl, 2008.
Tato pr´ ace vznikla jako ˇskoln´ı d´ılo na Vysok´em uˇcen´ı technick´em v Brnˇe, Fakultˇe informaˇcn´ıch technologi´ı. Pr´ ace je chr´ anˇena autorsk´ym z´ akonem a jej´ı uˇzit´ı bez udˇelen´ı opr´ avnˇen´ı autorem je nez´ akonn´e, s v´yjimkou z´ akonem definovan´ych pˇr´ıpad˚ u.
Obsah ´ 1 Uvod
3
2 Bluetooth 2.1 Vlastnosti . . . . . 2.2 Protokoly . . . . . 2.2.1 HCI . . . . 2.2.2 L2CAP . . 2.2.3 BNET . . . 2.2.4 RFCOMM 2.2.5 SDP . . . . 2.2.6 OBEX . . . 2.3 Profily . . . . . . . 2.3.1 GAP . . . . 2.3.2 PAN . . . . 2.3.3 HID . . . . 2.3.4 SPP . . . . 2.3.5 DUN . . . . 2.3.6 OPP . . . .
. . . . . . . . . . . . . . .
4 4 5 5 5 5 5 6 6 6 6 6 7 7 7 7
. . . . . . . . . . . . .
8 8 9 9 9 9 10 10 10 10 10 10 11 11
4 Bluetooth a GNU/Linux 4.1 BlueZ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Affix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12 12 12
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
3 J2ME 3.1 Konfigurace . . . . . . . . . . . 3.1.1 CDC . . . . . . . . . . . 3.1.2 CLDC . . . . . . . . . . 3.2 Virtu´ aln´ı stroje . . . . . . . . . 3.2.1 KVM . . . . . . . . . . 3.2.2 CVM . . . . . . . . . . 3.3 Profily . . . . . . . . . . . . . . 3.3.1 Z´ akladn´ı profil . . . . . 3.3.2 Osobn´ı profil . . . . . . 3.3.3 RMI profil . . . . . . . . 3.3.4 MIDP . . . . . . . . . . 3.3.5 PDA profil . . . . . . . 3.3.6 Java API pro Bluetooth
. . . . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . .
1
. . . . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . .
5 N´ avrh syst´ emu 5.1 Vyuˇzit´ı . . . . . . . . . . . . . . . . . . . . . 5.2 Funkˇcnost . . . . . . . . . . . . . . . . . . . . 5.2.1 Ovl´ adac´ı obrazovky . . . . . . . . . . 5.3 Komunikaˇcn´ı protokol . . . . . . . . . . . . . 5.3.1 Z´ısk´ an´ı ovl´ adac´ıch obrazovek . . . . . 5.3.2 V´ ybˇer urˇcit´e ovl´ adac´ı obrazovky . . . 5.3.3 Pr´ ace s vybranou ovl´adac´ı obrazovkou 5.4 Konfiguraˇcn´ı soubory . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
13 13 13 14 14 14 14 15 16
6 Implementace syst´ emu 6.1 Klient . . . . . . . . . . . . . . . . . 6.1.1 J´ adro Bluetooth komunikace 6.1.2 Klientsk´ a aplikace . . . . . . 6.1.3 Podp˚ urn´e tˇr´ıdy . . . . . . . . 6.2 Server . . . . . . . . . . . . . . . . . 6.2.1 Spuˇstˇen´ı/ukonˇcen´ı aplikace . 6.2.2 Bluetooth . . . . . . . . . . . 6.2.3 Dispeˇcer . . . . . . . . . . . . 6.2.4 Konfiguraˇcn´ı soubory . . . . 6.2.5 Moduly . . . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
18 18 18 21 22 23 23 24 24 24 24
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
7 Z´ avˇ er
26
A Specifikace funkc´ı modul˚ u A.1 Modul MPD . . . . . . . . . . . . . . . . . . ˇ ıd´ıc´ı funkce . . . . . . . . . . . . . A.1.1 R´ A.1.2 Funkce pro z´ısk´ an´ı zpˇetn´e informace A.2 Modul XTE . . . . . . . . . . . . . . . . . . ˇ ıd´ıc´ı funkce . . . . . . . . . . . . . A.2.1 R´ A.2.2 Funkce pro z´ısk´ an´ı zpˇetn´e informace
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
28 28 28 28 29 29 29
B Ikony podporovan´ e klientem
30
C Obsah CD
31
2
Kapitola 1
´ Uvod T´ematem t´eto pr´ ace je vytvoˇren´ı univerz´aln´ıho syst´emu pro bezdr´atov´e ovl´ad´an´ı poˇc´ıtaˇce pomoc´ı mobiln´ıho telefonu za vyuˇzit´ı technologie Bluetooth. Navrˇzen´ y syst´em se zab´ yv´ a zejm´ena str´ ankou univerz´ alnosti (syst´em je jednoduˇse rozˇsiˇriteln´ y), velmi jednoduchou pouˇzitelnost´ı (syst´em je pˇripraven k pouˇzit´ı bˇehem velmi kr´atk´eho ˇcasu) a sn´ıˇzen´ım spotˇreby energie na stranˇe mobiln´ıho telefonu. Syst´em je moˇzn´e pouˇz´ıt na poˇc´ıtaˇc´ıch s operaˇcn´ım syst´emem GNU/Linux s d´ alkov´ ym ovladaˇcem, coˇz je libovoln´ y mobiln´ı telefon s podporou Javy pro mal´ a zaˇr´ızen´ı (J2ME) a s podporou Bluetooth (standard JSR-82). V kapitole 2 je rozebr´ ana technologie Bluetooth, jej´ı z´akladn´ı charakteristika, vlastnosti a protokoly, kter´e se v souvislosti s n´ı pouˇz´ıvaj´ı. Vyuˇzit´ı technologie Bluetooth je velmi ˇsirok´e, proto je zde uveden jen z´ akladn´ı pˇrehled. Dalˇs´ı technologi´ı vyuˇz´ıvanou syst´emem je technologie J2ME, kter´a je rozebr´ana ve 3. kapitole. Tuto technologii je moˇzn´e vyuˇz´ıt v ˇsirok´em spektru zaˇr´ızen´ı, proto je zde pops´ano z´akladn´ı rozdˇelen´ı do konfigurac´ı (v´ıce kapitola 3.1) a detailnˇejˇs´ı rozdˇelen´ı do profil˚ u (viz kapitola 3.3). V kapitole 4 je nast´ınˇen zp˚ usob vyuˇzit´ı technologie Bluetooth v operaˇcn´ım syst´emu GNU/Linux. Obsahem 5. kapitoly je n´ avrh syst´emu a hlavnˇe je zde navrˇzen vlastn´ı komunikaˇcn´ı protokol mezi d´ alkov´ ym ovladaˇcem a ovl´adan´ ym poˇc´ıtaˇcem (v´ıce kapitola 5.3). S t´ım souvis´ı i n´ avrh podoby konfiguraˇcn´ıch soubor˚ u pro definov´an´ı ovl´adac´ıch a ovl´adan´ ych prvk˚ u (podrobnosti v kapitole 5.4). V kapitole 6 je ve dvou ˇc´ astech pops´ana implementace syst´emu. Prvn´ı vysvˇetluje implementaci klienta (program urˇcen´ y pro mobiln´ı telefon) a druh´a implementaci serveru (program spuˇstˇen´ y na ovl´ adan´em poˇc´ıtaˇci a zajiˇst’uj´ıc´ı prov´adˇen´ı pˇr´ıkaz˚ u z d´alkov´eho ovladaˇce).
3
Kapitola 2
Bluetooth Bluetooth [1] je nov´ a technologie vyuˇz´ıvaj´ıc´ı r´adiov´eho spojen´ı s kr´atk´ ym dosahem k nahrazen´ı kabel˚ u propojuj´ıc´ıch r˚ uzn´ a zaˇr´ızen´ı (napˇr´ıklad osobn´ı poˇc´ıtaˇc, PDA, mobiln´ı telefon, tisk´arny a dalˇs´ı). Tato technologie je definov´ana standardem IEEE 802.15.1 [4]. Bluetooth patˇr´ı do skupiny s´ıt´ı WPAN (Wireless Personal Area Network ), coˇz jsou osobn´ı bezdr´ atov´e s´ıtˇe s mal´ ym dosahem. Tato technologie z´ıskala n´azev odvozen´ım od pˇrezd´ıvky d´ ansk´eho kr´ ale Haralda II, pˇrezd´ıvan´eho Modrozub“, u ´dajnˇe podle jeho velk´e ” z´aliby v bor˚ uvk´ ach a ostruˇzin´ ach. Harald d´ıky sv´ ym diplomatick´ ym schopnostem sjednotil skandin´ avsk´ y lid. Stejnˇe tak i tato nov´a technologie m´a slouˇzit k usnadnˇen´ı komunikace. Struktura technologie Bluetooth – rozhran´ı mezi hardwarem zaˇr´ızen´ı a jednotliv´ ymi aplikacemi je zobrazeno na obr´ azku 2.1. Aplikace a profily
H L A S
OBEX TCS
RFCOMM
SDP
L2CAP HCI
Link Manager Protocol Baseband Rádiové rozhraní
Obr´ azek 2.1: Bluetooth rozhran´ı
2.1
Vlastnosti
Mezi z´ akladn´ı vlastnosti Bluetooth patˇr´ı: • R´ adiov´ a komunikace v bezlicenˇcn´ım p´asmu ISM na frekvenci 2,4 GHz s vyuˇzit´ım metody rozprostˇren´eho spektra s pˇreskakov´an´ım kmitoˇct˚ u FHSS (Frequency Hopping Spread Spectrum), kdy r´ adiov´ y sign´al velmi rychle (1600-kr´at za sekundu) n´ahodnˇe pˇreskakuje mezi 79 jedno-MHz kan´aly. 4
• N´ızk´ a energetick´ a spotˇreba d´ıky n´ızk´emu vys´ılac´ımu v´ ykonu. • Teoretick´ a rychlost 1 Mbit/s (skuteˇcn´a propustnost dat se pohybuje okolo 720 kbit/s). • Podpora r˚ uzn´ ych pˇrenos˚ u, nejen datov´ ych, ale i hlasov´ ych. Kaˇzd´e Bluetooth zaˇr´ızen´ı spad´ a do jedn´e z n´asleduj´ıc´ıch v´ ykonnostn´ıch kategori´ı. Kategorie Class 1 Class 2 Class 3
2.2
Maxim´ aln´ı povolen´ y vyz´aˇren´ y v´ ykon 100 mW (20 dBm) 2,5 mW (4 dBm) 1 mW (0 dBm)
Dosah (pˇribliˇznˇe) 100 metr˚ u 10 metr˚ u 1 metr
Protokoly
Bluetooth pouˇz´ıv´ a ˇradu r˚ uzn´ ych poˇc´ıtaˇcov´ ych protokol˚ u [6]. Kaˇzd´ y z tˇechto protokol˚ u poskytuje moˇznosti komunikace na r˚ uzn´e u ´rovni abstrakce, n´asleduje kr´atk´ y pˇrehled.
2.2.1
HCI
HCI (Host Controller Interface) je urˇcit´e rozhran´ı zajiˇst’uj´ıc´ı komunikaci niˇzˇs´ıch vrstev s vyˇsˇs´ımi.
2.2.2
L2CAP
L2CAP (Logical Link Control and Adaptation Protocol ) je protokol, kter´ y poskytuje jednotnou spr´ avu pˇrenosu ke skupinˇe jin´ ych Bluetooth zaˇr´ızen´ı. Zapouzdˇruje pakety do form´ atu vhodn´eho pro niˇzˇs´ı vrstvy a multiplexuje spojen´ı tak, aby mohlo b´ yt vyuˇz´ıv´ano v´ıce aplikacemi. Z´ akladn´ı vlastnosti L2CAP jsou: • Poskytuje vyˇsˇs´ım vrstv´ am spojovˇe a bezspojovˇe orientovan´e datov´e sluˇzby. • Maxim´ aln´ı velikost L2CAP paketu je 64 KB. • Kvalita sluˇzeb - monitorov´ an´ı prostˇredk˚ u pro zajiˇstˇen´ı parametr˚ u dohodnut´ ych pˇri nav´ az´ an´ı spojen´ı. • Pˇren´ aˇsen´ı dat mezi r˚ uzn´ ymi protokoly na vyˇsˇs´ıch vrstv´ach.
2.2.3
BNET
BNET (Bluetooth Network Emulation Protocol ) je vyuˇz´ıv´an v PAN profilech a slouˇz´ı k dopravˇe s´ıt’ov´ ych paket˚ u.
2.2.4
RFCOMM
RFCOMM (Radio Frequency Communication) protokol poskytuje emulaci s´eriov´eho portu pomoc´ı funkc´ı L2CAP protokolu. RFCOMM umoˇzn ˇuje aˇz 60 souˇcasn´ ych pˇripojen´ı Bluetooth zaˇr´ızen´ı. Protokol vych´ az´ı ze standardu ETSI TS 07.10.
5
2.2.5
SDP
SDP (Service Discovery Protocol ) je protokol, kter´ y umoˇzn ˇuje zjistit poskytovan´e sluˇzby, vˇcetnˇe jejich vlastnost´ı.
2.2.6
OBEX
OBEX (Object Exchange) je komunikaˇcn´ı protokol, kter´ y usnadˇ nuje v´ ymˇenu bin´arn´ıch soubor˚ u mezi zaˇr´ızen´ımi.
2.3
Profily
Profily slouˇz´ı k reprezentaci urˇcit´eho zp˚ usobu vyuˇzit´ı technologie Bluetooth tak, aby se pˇredeˇslo moˇzn´e nekompatibilitˇe vyv´ıjen´ ych program˚ u u Bluetooth zaˇr´ızen´ı od r˚ uzn´ ych v´ yrobc˚ u. Kaˇzd´e Bluetooth zaˇr´ızen´ı mus´ı umˇet interpretovat jednotliv´e profily, proto jsou urˇcit´a pravidla pro jejich specifikaci [5]. Jejich specifikace mus´ı zahrnovat: • Z´ avislosti na jin´ ych profilech. • N´ avrh form´ atu uˇzivatelsk´eho rozhran´ı. • Specifick´e ˇc´ asti vrstev Bluetooth protokolu pouˇzit´e v profilu. D´ale n´ asleduje pˇrehled nˇekolika Bluetooth profil˚ u a jejich hierarchie (obr´azek 2.2).
GAP SDAP
SPP
HCRP
GOEP
HID
DUN
HSP
PUSH
SYNC
FTP
Obr´ azek 2.2: Hierarchie vybran´ ych Bluetooth profil˚ u
2.3.1
GAP
GAP (Generic Access Profile) je z´akladn´ı profil pro vˇsechny ostatn´ı, aby se t´ım zajistila vˇseobecn´ a kompatibilita. Zajiˇst’uje napˇr´ıklad nav´az´an´ı spojen´ı.
2.3.2
PAN
PAN (Personal Area Networking Profile) popisuje, jak m˚ uˇzou dvˇe nebo v´ıce zaˇr´ızen´ı s ’ podporou Bluetooth vytvoˇrit ad-hoc s´ıt a jak pomoc´ı stejn´eho mechanismu m˚ uˇze b´ yt pˇristupov´ ano ke vzd´ alen´e s´ıti pˇres pˇr´ıstupov´ y bod.
6
2.3.3
HID
HID (Human Interface Device Profile) poskytuje podporu pro zaˇr´ızen´ı jako jsou kl´avesnice, myˇsi, joysticky a dalˇs´ı. Je navrˇzen na poskytov´an´ı spojen´ı s n´ızk´ ym zpoˇzdˇen´ım a s n´ızk´ ymi energetick´ ymi poˇzadavky. Bluetooth HID vych´az´ı z HID protokolu definovan´eho pro USB, coˇz zvyˇsuje kompatibilitu v r˚ uzn´ ych operaˇcn´ıch syst´emech. Zaˇr´ızen´ı podporuj´ıc´ı USB HID podporuje i Bluetooth HID.
2.3.4
SPP
SPP (Serial Port Profile) pouˇz´ıv´ a RFCOMM protokol. Emuluje s´eriovou linku, a tak poskytuje jednoduchou bezdr´ atovou implementaci n´ahrady za existuj´ıc´ı RS-232 s´eriovou komunikaˇcn´ı linku. Poskytuje z´ aklad pro dalˇs´ı profily (DUN, FAX, HSP, AVRCP).
2.3.5
DUN
DUN (Dial-Up Networking Profile) je profil, kter´ y poskytuje standardn´ı pˇr´ıstup k Internetu a jin´ ym vyt´ aˇcen´ ym sluˇzb´ am pˇres Bluetooth. Sc´en´aˇr moˇzn´eho pouˇzit´ı je napˇr´ıklad pˇr´ıstup k Internetu na notebooku vyt´ aˇcen´ ym spojen´ım bezdr´atovˇe pˇres mobiln´ı telefon.
2.3.6
OPP
OPP (Object Push Profile) je z´ akladn´ı profil pro pos´ıl´an´ı objekt˚ u“ jako jsou obr´azky, ” elektronick´e vizitky a dalˇs´ı. OPP pouˇz´ıv´a API z profilu OBEX. Pˇrenos je vˇzdy iniciov´ an odes´ılatelem (klient) a ne pˇr´ıjemcem (server).
7
Kapitola 3
J2ME Java 2 Micro Edition (J2ME) je verze produktu Java pro mal´a zaˇr´ızen´ı, jak´ ymi jsou napˇr´ıklad mobiln´ı telefony, osobn´ı digit´aln´ı asistenti (PDA), pagery a dalˇs´ı [2]. V´ yvoj J2ME zajiˇst’uje projekt JCP (Java Community Process). JCP umoˇzn ˇuje kaˇzd´emu pod´ılet se na tomto v´ yvoji. Struktura J2ME je zobrazena na obr´azku 3.1. J2ME definuje tyto komponenty: • Java virtu´ aln´ı stroje pro r˚ uzn´a zaˇr´ızen´ı s odliˇsn´ ymi n´aroky. • API a knihovny spustiteln´e na kaˇzd´em virtu´aln´ım stroji, zvan´e konfigurace a profily. • N´ astroje pro v´ yvoj a nastaven´ı zaˇr´ızen´ı.
RMI Osobní Bluetooth API
MIDP PDA
Základní
CLDC
CDC
KVM
CVM
}}
Profily
Konfigurace
}
Virtuální stroje
Hostující operační systém Obr´ azek 3.1: Z´akladn´ı ˇclenˇen´ı J2ME
Velmi d˚ uleˇzit´e je rozliˇsovat mezi konfigurac´ı a profilem, n´asleduje vysvˇetlen´ı pojm˚ u.
3.1
Konfigurace
Mal´a zaˇr´ızen´ı se liˇs´ı sv´ ymi funkcemi a vlastnostmi, pˇresto pouˇz´ıvaj´ı podobn´e procesory a maj´ı podobn´e mnoˇzstv´ı pamˇeti. Proto vznikly konfigurace. Konfigurace slouˇz´ı ke ˇclenˇen´ı jednotliv´ ych zaˇr´ızen´ı na z´ akladˇe dostupn´e pamˇeti a v´ ykonu procesoru. Z tˇechto informac´ı konfigurace zjist´ı, co vˇsechno je zaˇr´ızen´ım podporov´ano, knihovny jazyka Java, API a rysy Java virtu´ aln´ıho stroje. Existuj´ı dvˇe standardn´ı konfigurace CLDC (Connected Limited Device Configuration) a CDC (Connected Device Configuration). 8
3.1.1
CDC
CDC (standard JSR-36) je konfigurace urˇcena pro relativnˇe v´ ykonn´a zaˇr´ızen´ı, s moˇznost´ı pˇripojen´ı k s´ıti [8]. Patˇr´ı sem zaˇr´ızen´ı jako navigaˇcn´ı syst´emy pro vozidla, dom´ac´ı spotˇrebiˇce a dalˇs´ı. CDC pouˇz´ıv´ a verzi Java virtu´aln´ıho stroje podobn´eho tomu, kter´ y se pouˇz´ıv´ a u J2SE (Java 2 Standard Edition), rozd´ıl je v pamˇeti a zobrazovac´ıch schopnostech zaˇr´ızen´ı. Poˇzadavky na CDC zaˇr´ızen´ı dle ofici´aln´ı specifikace J2ME jsou: • Minim´ alnˇe 512 KB pamˇeti ROM. • Minim´ alnˇe 256 KB pamˇeti RAM. • Pˇripojen´ı k nˇejak´emu typu s´ıtˇe. • Podpora kompletn´ı implementace Java virtu´aln´ıho stroje. • Uˇzivatelsk´e rozhran´ı s r˚ uzn´ ym stupnˇem propracovanosti.
3.1.2
CLDC
CLDC (standard JSR-30) je typ konfigurace obvyklejˇs´ı pro J2ME [9]. Je to konfigurace s mnohem menˇs´ımi poˇzadavky na zaˇr´ızen´ı. CLDC je urˇcena pro zaˇr´ızen´ı jako jsou PDA, osobn´ı organiz´ ator, mobiln´ı telefon a dalˇs´ı. Poˇzadavky pro J2ME CLDC podle ofici´aln´ı specifikace J2ME jsou: • 128 – 512 KB celkov´e pamˇeti, z toho m´enˇe neˇz 256 KB ROM/Flash a m´enˇe neˇz 256 KB RAM. Ve vˇetˇsinˇe pˇr´ıpad˚ u maj´ı zaˇr´ızen´ı v´ıce ROM pamˇeti neˇz RAM nebo Flash. • Omezen´ y zdroj energie, ˇcasto bateriov´e nap´ajen´ı. • Pˇripojen´ı k nˇejak´emu typu s´ıtˇe, ˇcasto s omezenou ˇs´ıˇrkou p´asma (9600 bps nebo m´enˇe). • R˚ uznˇe propracovan´e uˇzivatelsk´e rozhran´ı.
3.2
Virtu´ aln´ı stroje
Jak uˇz bylo zm´ınˇeno, kaˇzd´ a konfigurace stanovuje vlastn´ı skupinu podporovan´ ych rys˚ u Java virtu´aln´ıho stroje. To znamen´ a, ˇze pro kaˇzd´ y z nich je potˇreba jin´ y Java virtu´aln´ı stroj. Virtu´aln´ı stroj pro CLDC je KVM (Kilobyte Virtual Machine) a virtu´aln´ı stroj pro CDC je CVM (Compact Virtual Machine).
3.2.1
KVM
KVM je virtu´ aln´ı stroj vytvoˇren speci´alnˇe pro mal´a zaˇr´ızen´ı s omezen´ ymi zdroji. Pˇresto se jedn´ a o skuteˇcn´ y virtu´ aln´ı stroj podle specifikace pro virtu´aln´ı stroje Javy. Obsahuje specifick´e odchylky, nutn´e pro spr´avn´e fungovan´ı na mal´ ych zaˇr´ızen´ıch.
9
3.2.2
CVM
CVM je virtu´ aln´ı stroj vytvoˇren´ y pro vˇetˇs´ı zaˇr´ızen´ı, napˇr´ıklad ta, kter´a pouˇz´ıvaj´ı konfiguraci CDC. Podporuje vˇsechny rysy JVM (Java Virtual Machine).
3.3
Profily
Profil je vlastnˇe API (sada programov´ych rozhran´ı) tvoˇr´ıc´ı nadstavbu konfigurace. Poskytuje programu pˇr´ıstup ke specifick´ ym vlastnostem dan´eho zaˇr´ızen´ı. N´asleduje pˇrehled nˇekolika z´astupc˚ u profil˚ u pro obˇe konfigurace (CLDC, CDC). Profil˚ u je mnohem v´ıce, zde jsou uvedeny jen ty z´ akladn´ı a ty, kter´e se pˇr´ımo t´ ykaj´ı t´eto pr´ace.
3.3.1
Z´ akladn´ı profil
Z´akladn´ı profil (Foundation Profile) je v´az´an na CDC konfiguraci a slouˇz´ı jako z´aklad pro dalˇs´ı profily. Z´ akladn´ı profil nedefinuje ˇz´adn´e API pro uˇzivatelsk´e rozhran´ı, d˚ uvodem je typ zaˇr´ızen´ı, pro kter´e je CDC urˇceno (prim´arnˇe pro autonomn´ı zaˇr´ızen´ı jako jsou set-top boxy, TV apod.). Tato zaˇr´ızen´ı nejsou na pouˇzit´ı GUI tak fixov´ana.
3.3.2
Osobn´ı profil
Osobn´ı profil (Personal Profile) je rozˇs´ıˇren´ı Z´akladn´ıho profilu o grafick´e uˇzivatelsk´e rozhran´ı. Jedn´ a se o kompletn´ı prostˇred´ı s plnou podporou AWT (Abstract Window Toolkit). Tento profil je z´ avisl´ y na z´ akladn´ım profilu.
3.3.3
RMI profil
RMI profil (Remote Method Invocation) je dalˇs´ı rozˇs´ıˇren´ı Z´akladn´ıho profilu. Poskytuje prostˇred´ı pro vzd´ alen´e vol´ an´ı metod Javy kompatibiln´ı s RMI API ze standardn´ı edice Javy (J2SE) [11].
3.3.4
MIDP
MIDP (Mobile Information Device Profile) je profil poskytuj´ıc´ı API v zaˇr´ızen´ıch jako mobiln´ı telefony, tedy zaˇr´ızen´ıch s konfigurac´ı CLDC. Obsahuje tˇr´ıdy pro uˇzivatelsk´e rozhran´ı, pr´aci v s´ıti a trval´e ukl´ ad´ an´ı dat. Aplikac´ım pro tuto kategorii se ˇr´ık´a Midlet podle z´akladn´ı tˇr´ıdy profilu MIDP. Zaˇr´ızen´ı s MIDP mus´ı splˇ novat n´asleduj´ıc´ı parametry: • Velikost displeje minim´ alnˇe 96x54 pixel˚ u, 2 barvy. • Kl´ avesnice, pˇr´ıpadnˇe dotykov´a obrazovka. • Minim´ alnˇe 32 KB pamˇeti pro samotnou Javu. • Minim´ alnˇe 128 KB st´ al´e pamˇeti pro MIDP komponenty. • Minim´ alnˇe 8 KB st´ al´e pamˇeti pro ukl´ad´an´ı dat aplikac´ı. • Obousmˇern´e s´ıt’ov´e spojen´ı. Profil MIDP ˇreˇs´ı spr´ avu pr˚ ubˇehu aplikac´ı, uˇzivatelsk´e rozhran´ı, pˇripojitelnost k s´ıti a ukl´ad´an´ı dat v zaˇr´ızen´ı. 10
3.3.5
PDA profil
PDA profil, jak uˇz n´ azev napov´ıd´a, je rozˇs´ıˇren´ı urˇcen´e pro zaˇr´ızen´ı jako PDA, zaˇr´ızen´ı s vˇetˇs´ım displejem, definuje uˇzivatelsk´e rozhran´ı (podskupina AWT) a API pro ukl´ad´ an´ı dat v zaˇr´ızen´ı.
3.3.6
Java API pro Bluetooth
Bluetooth je rozˇsiˇruj´ıc´ım prostˇredkem pro bezdr´atov´e propojen´ı mal´ ych zaˇr´ızen´ı jako mobiln´ı telefony, pagery, atd. Specifikace Java API pro Bluetooth (JSR-82 [10]) je urˇcena pro konfiguraci CLDC a obsahuje podporu z´akladn´ıch Bluetooth protokol˚ u. Mezi tyto protokoly patˇr´ı napˇr´ıklad RFCOMM, OBEX a SDP. N´aroky na zaˇr´ızen´ı s tˇemito API jsou: • Minim´ alnˇe 512 KB celkov´e pamˇeti (bez pamˇet’ov´ ych n´arok˚ u samotn´e aplikace). • Bluetooth s´ıt’ov´e pˇripojen´ı.
11
Kapitola 4
Bluetooth a GNU/Linux Bluetooth rozhran´ı poskytuje implementaci sady protokol˚ u a n´astroj˚ u pro pouˇzit´ı v urˇcit´em operaˇcn´ım syst´emu. V tuto dobu jsou pro operaˇcn´ı syst´em GNU/Linux k dispozici dvˇe r˚ uzn´e implementace Bluetooth rozhran´ı: • BlueZ, kter´ y je obsaˇzen v ofici´aln´ım linuxov´em j´adˇre. • Affix, vyvinut´ y Nokia Research Center.
4.1
BlueZ
BlueZ je ofici´ aln´ı Bluetooth rozhran´ı pro GNU/Linux [7]. Je zamˇeˇren na implementaci Bluetooth bezdr´ atov´ ych standard˚ u specifick´ ych pro GNU/Linux. BlueZ byl p˚ uvodnˇe vyvinut spoleˇcnost´ı Qualcomm a je dostupn´ y v linuxov´em j´adˇre ve verzi 2.4.6 a vyˇsˇs´ı. BlueZ poskytuje podporu pro vˇsechny z´akladn´ı Bluetooth protokoly jako jsou L2CAP, SCO, RFCOMM, BNET, HIDP. Jedn´a se o kompletnˇe modul´arn´ı implementaci, kter´a podporuje v´ıce Bluetooth zaˇr´ızen´ı a z´aroveˇ n zajiˇst’uje opravdovou hardwarovou abstrakci, rozhran´ı pro standardn´ı sokety, atd. BlueZ je dostupn´ y pro mnoho r˚ uzn´ ych hardwarov´ ych architektur jako x86, AMD64, SPARC, PowerPC, ARM, Hitachi/Renesas SH processors, Motorola DragonBall, atd.
4.2
Affix
Affix je robustn´ı open-source Bluetooth rozhran´ı pro operaˇcn´ı syst´em GNU/Linux vyvinut´ y Nokia Reseach Center [3]. Podporovan´e Bluetooth protokoly jsou: HCI, L2CAP, RFCOMM, SDP, BNEP a profily: GAP, SDAP, SPP, GEOP, FTP, OPP, PAN, LAN, DUN, HID, FAX a BPP. Affix je implementov´ an v jazyce C. Je dostupn´ y pro nˇekolik hardwarov´ ych architektur jako jsou x86, SPARC, ARM, PowerPC, atd.
12
Kapitola 5
N´ avrh syst´ emu C´ılem t´eto pr´ ace je vytvoˇrit Bluetooth d´alkov´ y ovladaˇc. Jin´ ymi slovy syst´em pro ovl´ad´ an´ı poˇc´ıtaˇce pomoc´ı pˇrenosn´eho zaˇr´ızen´ı, napˇr. mobiln´ıho telefonu a to bezdr´atovˇe s vyuˇzit´ım technologie Bluetooth. Podobn´e aplikace jiˇz jistˇe existuj´ı, tento syst´em se ale snaˇz´ı ˇreˇsit nedostatky ostatn´ıch ˇreˇsen´ı, jako je napˇr´ıklad udrˇzov´an´ı Bluetooth spojen´ı po celou dobu komunikace. Technologie Bluetooth ˇcin´ı obrovsk´e energetick´e n´aroky na mobiln´ı zaˇr´ızen´ı, kter´a jsou nap´ ajena pouze z baterie. Proto se tento syst´em snaˇz´ı omezit spotˇrebu energie pˇreruˇsov´ an´ım Bluetooth spojen´ı, kdykoli nen´ı potˇreba. Dalˇs´ı rozd´ılem je moˇznost pˇripojen´ı v´ıce klient˚ u z´ aroveˇ n.
5.1
Vyuˇ zit´ı
Syst´em m˚ uˇze slouˇzit pˇri prezentac´ıch jako n´astroj pro pˇrep´ın´an´ı sn´ımk˚ u. M˚ uˇze slouˇzit tak´e k z´abavˇe, kdy ho vyuˇzijeme jako n´ahradu za d´alkov´ y ovladaˇc televizoru, DVD pˇrehr´avaˇce nebo Hi-Fi syst´emu. Nav´ıc oproti jmenovan´ ym zaˇr´ızen´ım m´a tu v´ yhodu, ˇze je univerz´aln´ı, tzn. pomoc´ı jednoho zaˇr´ızen´ı, kter´e je jednoduˇse konfigurovateln´e, je moˇzn´e ovl´adat libovoln´ y program na osobn´ım poˇc´ıtaˇci, a tak j´ım nahradit vˇsechny zmiˇ novan´e pˇr´ıstroje. Pomoc´ı plugin˚ u je moˇzn´e syst´em rozˇs´ıˇrit o ovl´ad´an´ı dalˇs´ı aplikace. Syst´em nav´ıc umoˇzn ˇuje obousmˇernou komunikaci, tu lze vyuˇz´ıt ke zpˇetn´e vazbˇe. Napˇr´ıklad ovl´ad´ame-li pˇrehr´avaˇc hudby a zv´ yˇs´ıme hlasitost, syst´em umoˇzn ˇuje zobrazit na displeji mobiln´ıho zaˇr´ızen´ı informaci o aktu´ aln´ım stavu hlasitosti.
5.2
Funkˇ cnost
Syst´em se skl´ ad´ a ze serverov´e ˇc´ asti, kter´a je spuˇstˇena na ovl´adan´em poˇc´ıtaˇci a prov´ ad´ı pˇr´ıkazy pˇrijat´e od d´ alkov´eho ovladaˇce“ (klientsk´e ˇc´asti, spuˇstˇen´e na mobiln´ım telefonu). ” Z´akladn´ımi poˇzadavky na klienta (mobiln´ı telefon) jsou podpora J2ME (Java edice pro mal´a zaˇr´ızen´ı) a standardu JSR-82 (Java Bluetooth API). J´adro syst´emu jako takov´e zajiˇst’uje pouze komunikaci a nezaj´ım´a se o to, jak´e aplikace a jak jsou ovl´ ad´ any. Od toho jsou zde pluginy, kter´e zajiˇst’uj´ı samotn´e ovl´ad´an´ı poˇc´ıtaˇce a aplikac´ı na nˇem. Vzhledem k rozd´ıl˚ um ovl´adac´ıch prvk˚ u na zaˇr´ızen´ıch od r˚ uzn´ ych v´ yrobc˚ u umoˇzn ˇuje syst´em v´ ybˇer z N tzv. ovl´adac´ıch obrazovek. Na kaˇzd´e obrazovce je moˇzno pos´ılat pˇr´ıkazy 12-ti kl´ avesami a to kl´ avesami s ˇc´ısly nula aˇz devˇet a znaky hvˇezdiˇcky a dvojit´eho kˇr´ıˇzku (to jsou z´ akladn´ı kl´ avesy, kter´ ymi jsou vybaveny vˇsechny mobiln´ı telefony).
13
5.2.1
Ovl´ adac´ı obrazovky
Ovl´adac´ı obrazovky slouˇz´ı k definov´an´ı, kter´a kl´avesa provede kter´ y pˇr´ıkaz s vyuˇzit´ım urˇcit´eho pluginu. Obrazovky se definuj´ı pomoc´ı konfiguraˇcn´ıch soubor˚ u a jsou uloˇzeny na serveru. Komunikaˇcn´ı protokol umoˇzn ˇuje jejich z´ısk´an´ı. Tak i klient, kter´ y se spojuje se serverem poprv´e, m´ a k dispozici informaci o tom, kter´e aplikace a jak m˚ uˇze ovl´adat.
5.3
Komunikaˇ cn´ı protokol
Komunikace prob´ıh´ a pomoc´ı textov´eho protokolu a to tak, ˇze klient vyˇsle poˇzadavek a server po zpracovan´ı generuje odpovˇed’. Komunikace se skl´ad´a z nˇekolika f´az´ı: • Z´ısk´ an´ı seznamu ovl´ adac´ıch obrazovek definovan´ ych na serveru. • V´ ybˇer urˇcit´e z nich. • Pr´ ace s vybranou ovl´ adac´ı obrazovkou. Je samozˇrejmˇe moˇzn´e kdykoli pˇrej´ıt zpˇet a vybrat jinou obrazovku nebo i jin´ y dostupn´ y server v okol´ı.
5.3.1
Z´ısk´ an´ı ovl´ adac´ıch obrazovek
Po pˇripojen´ı k serveru je nutn´e z´ıskat seznam ovl´adac´ıch obrazovek, abychom v˚ ubec vˇedˇeli, kter´e funkce n´ am server poskytuje. Kaˇzd´a ovl´adac´ı obrazovka je definov´ana pomoc´ı sv´eho jm´ena a nav´ıc je k dispozici i popisek, kter´ y je pˇr´ıvˇetivˇejˇs´ı pro uˇzivatele. Pˇri pˇripojen´ı k serveru klient poˇsle pˇr´ıkaz GET_SCREENS a server mu jako odpovˇed’ vygeneruje seznam obrazovek ve form´ atu: (jm´ eno ovl´ adac´ ı obrazovky):(popisek) Pokud je obrazovek v´ıce, jsou oddˇeleny znakem pro konec ˇr´adku (\n). Nejlepˇs´ı bude uk´azat to na pˇr´ıkladu. Klient: GET_SCREENS Server: mpd:Ovl´ ad´ an´ ı aplikace MPD\nmplayer:Ovl´ ad´ an´ ı aplikace MPlayer
5.3.2
V´ ybˇ er urˇ cit´ e ovl´ adac´ı obrazovky
Ted’, kdyˇz klient zn´ a seznam ovl´adac´ıch obrazovek, je potˇreba jeˇstˇe zjistit, co d´ıky nim m˚ uˇze pos´ılat za pˇr´ıkazy a jak´e zpˇetn´e informace z´ısk´avat. Tyto informace jsou vyˇz´ad´any vˇzdy pˇri v´ ybˇeru urˇcit´e ovl´ adac´ı obrazovky, tedy jsou z´ısk´any jen pro tu urˇcitou pr´ avˇe zvolenou ovl´ adac´ı obrazovku a to pˇr´ıkazem GET_SCREEN param, kde parametr param je jm´eno ovl´ adac´ı obrazovky. Jako odpovˇed’ na tento pˇr´ıkaz server generuje seznam definic´ı kl´aves a zpˇetn´ ych informac´ı oddˇelen´ ych znakem pro konec ˇr´adku (\n). Jednotliv´e definice maj´ı n´ asleduj´ıc´ı form´ at: key:(kl´ avesa na mobiln´ ım zaˇ r´ ızen´ ı):(popisek) text:(k´ od pluginu):(popisek):(obnovovac´ ı ˇ cas) progress:(k´ od pluginu):(popisek):(obnovovac´ ı ˇ cas) 14
Kl´ıˇcov´e slovo key s parametry kl´avesa na mobiln´ım zaˇr´ızen´ım (0-9, POUND, STAR) a popisek (text, kter´ y se zobraz´ı v n´apovˇedˇe na mobiln´ım zaˇr´ızen´ı) slouˇz´ı pro registraci obsluhy kl´ avesy. Kl´ıˇcov´e slovo text s parametry k´od pluginu (urˇcit´a funkce nˇekter´eho z modul˚ u), popisek a nakonec obnovovac´ı frekvence slouˇz´ı pro registraci textov´e zpˇetn´e informace. To sam´e plat´ı i pro progress, jen se jedn´a m´ısto textov´e o zpˇetnou informaci typu ukazatel pr˚ ubˇehu. Opˇet l´epe je to vidˇet na konkr´etn´ım pˇr´ıkladu. Klient: GET_SCREEN mpd Server: key:2:TOGGLE\n key:5:STOP\n text:song:N´ azev p´ ısniˇ cky:50\n progress:volume:Hlasitost:60 Podle t´eto odpovˇedi od serveru klient vygeneruje a zobraz´ı ovl´adac´ı obrazovku, na kter´e bude moˇzno stisknout kl´ avesy 2 a 5. Jak je vidˇet, klient v˚ ubec nev´ı, co stisk kl´aves provede na stranˇe serveru, tuto informaci m´a server uloˇzenou u sebe. Jedinou informac´ı, kterou m´ a klient k dispozici a tak´e jedinou potˇrebnou, je popisek akce tlaˇc´ıtka a to v podobˇe ˇciteln´e pro uˇzivatele nebo k´ od pro zobrazen´ı ikony m´ısto textu. D´ale se budou na obrazovce zobrazovat zpˇetn´e informace a to zpˇetn´ a textov´a informace s n´azvem p´ısniˇcky, kter´a se bude obnovovat kaˇzd´ ych 50 sekund a informace o hlasitosti, kter´a se zobraz´ı v podobˇe ukazatele pr˚ ubˇehu (viz obr´ azek 5.1), s obnovovac´ım intervalem jedn´e minuty.
Obr´ azek 5.1: Ukazatel pr˚ ubˇehu
5.3.3
Pr´ ace s vybranou ovl´ adac´ı obrazovkou
S vygenerovanou obrazovkou klient m˚ uˇze zaˇc´ıt vyuˇz´ıvat poskytnut´e sluˇzby. Tˇemi je zas´ıl´ an´ı pˇr´ıkaz˚ u pomoc´ı registrovan´ ych kl´ aves a poˇzadavk˚ u na zpˇetn´e informace. Pos´ıl´ an´ı pˇ r´ıkaz˚ u k ovl´ ad´ an´ı Pˇri stisku registrovan´e kl´ avesy klient generuje napˇr´ıklad n´asleduj´ıc´ı k´od pˇr´ıkazu. Klient: SEND mpd 2 Server: YES/NO Tento k´ od server interpretuje tak, ˇze byla stisknuta kl´avesa 2 na mobiln´ım zaˇr´ızen´ı, na ovl´adac´ı obrazovce mpd. Pot´e vykon´a pˇr´ısluˇsnou akci a generuje odpovˇed’ YES, pokud se akci podaˇrilo prov´est, jinak NO.
15
ˇ adosti o zpˇ Z´ etn´ e informace poskytovan´ e serverem ˇ adosti o zpˇetnou informaci jsou pos´ıl´any podle poˇzadovan´eho intervalu a maj´ı podobu Z´ uk´azanou na n´ asleduj´ıc´ım pˇr´ıkladu. Klient: Server: Klient: Server:
GET mpd volume volume 100 GET mpd album album Get A Grip
Poˇzadavek na zpˇetnou informaci zaˇc´ın´a kl´ıˇcov´ ym slovem GET a m´a dva parametry. Prvn´ım je jm´eno aktu´ alnˇe zvolen´e ovl´adac´ı obrazovky a druh´ ym kl´ıˇcov´e slovo urˇcuj´ıc´ı funkci ’ pro z´ısk´ an´ı poˇzadovan´e informace. Odpovˇed zaˇc´ın´a kl´ıˇcov´ ym slovem z´ısk´avan´e informace se z´ıskanou informac´ı jako parametrem. V prvn´ım pˇr´ıkladu je z´ısk´ av´ ana informace pro ovl´adac´ı obrazovku mpd a tou informac´ı je volume (hlasitost). Odpovˇed´ı je, ˇze hlasitost je 100. V druh´em pˇr´ıkladu je z´ısk´av´ana pro tu samou ovl´ adac´ı obrazovku informace o albu, ze kter´eho je aktu´alnˇe pˇrehr´avan´a p´ısniˇcka (album). Odpovˇed´ı je Get A Grip“. ”
5.4
Konfiguraˇ cn´ı soubory
Konfiguraˇcn´ı soubory slouˇz´ı k definov´an´ı podoby a funkce ovl´adac´ıch obrazovek. Jeden konfiguraˇcn´ı soubor pˇr´ısluˇs´ı k jedn´e ovl´adac´ı obrazovce. Mezi povinn´e poloˇzky patˇr´ı: • name - n´ azev ovl´ adac´ı obrazovky pro potˇreby identifikace • title - popisek ovl´ adac´ı obrazovky, ten je zobrazen na m´ıstech, kde uˇzivatel syst´emu pracuje s obrazovkami Pˇr´ıklad definice povinn´ ych poloˇzek v konfiguraˇcn´ım souboru ovl´adac´ı obrazovky. name:mpd title:Ovl´ ad´ an´ ı aplikace MPD Tyto poloˇzky jsou nezbytnˇe nutn´e, ale jen s nimi by ovl´adac´ı obrazovka nemˇela ˇz´adn´ y smysl, protoˇze by neposkytovala ˇz´adnou funkˇcnost. Proto je vhodn´e definovat nˇekter´e z nepovinn´ ych poloˇzek a tˇemi jsou: • key - pro definici kl´ avesy mobiln´ıho zaˇr´ızen´ı jako prvku pro proveden´ı urˇcit´e akce s ovl´ adan´ ym poˇc´ıtaˇcem • text - pro definici zpˇetn´e informace textov´eho typu • progress - pro definici zpˇetn´e informace typu ukazatel pr˚ ubˇehu Kaˇzd´a z tˇechto poloˇzek mus´ı b´ yt definovan´a dohodnut´ ym form´atem. key:mpd:5:stop:Zastavit
16
Tento z´ aznam pˇriˇrad´ı kl´ avese 5 na mobiln´ım zaˇr´ızen´ı funkci stop z modulu mpd a jako popisek na klientu bude zobrazen text Zastavit“. Tedy v obecn´em pˇr´ıpadˇe m´a definice tvar: ” kl´ıˇcov´e slovo key, modul, ze kter´eho se bude volat poˇzadovan´a funkce, kl´avesa na mobiln´ım zaˇr´ızen´ı (moˇzn´ a kl´ avesy jsou 0-9, POUND pro kˇr´ıˇzek a STAR pro hvˇezdiˇcku), volan´a funkce z pˇredt´ım definovan´eho modulu a nakonec popisek pro zobrazen´ı v klientsk´e aplikaci (m´ısto popisku m˚ uˇze b´ yt definov´ ano kl´ıˇcov´e slovo, kter´e klient interpretuje jako urˇcitou ikonu, kter´a vystihuje funkci kl´ avesy i bez textu, seznam podporovan´ ych ikon viz dodatek B). text:mpd:song::50 text:mpd:album:Album:100 Prvn´ı pˇr´ıklad definuje zobrazov´an´ı zpˇetn´e textov´e informace z´ıskan´e funkc´ı song z modulu mpd a s obnovovac´ı frekvenc´ı 50 sekund. Druh´ y je podobn´ y, ale definuje zobrazen´ı informace z´ıskan´e funkc´ı album ze stejn´eho modulu s obnovovac´ı frekvenc´ı 100 sekund. Nav´ıc bude pˇred touto informac´ı na klientu zobrazen identifikuj´ıc´ı text Album“. Definice zaˇc´ın´ a ” kl´ıˇcov´ ym slovem text, prvn´ı parametr je modul, ze kter´eho je funkce pro z´ısk´an´ı informace. Druh´ ym parametrem je samotn´ a funkce pro z´ısk´an´ı informace. Pot´e n´asleduje nepovinn´ y parametr s identifikuj´ıc´ım textem. Posledn´ım parametrem je obnovovac´ı frekvence. progress:mpd:volume::30 Tento pˇr´ıklad definuje zobrazen´ı zpˇetn´e informace typu ukazatel pr˚ ubˇehu. Zobrazovanou informac´ı je v´ ysledek z´ıskan´ y z funkce volume z modulu mpd, bez popisku s obnovovac´ı frekvenc´ı 30 sekund. Parametry jsou u ´plnˇe stejn´e jako u poloˇzky text.
17
Kapitola 6
Implementace syst´ emu 6.1
Klient
Klientsk´ a aplikace je implementov´ana v J2ME a je urˇcena pro provoz na mobiln´ım telefonu s podporou Java standardu JSR-82 (Java Bluetooth API). Skl´ad´a ze tˇr´ı bal´ıˇck˚ u a to z j´adra Bluetooth komunikace btcore, bal´ıˇcku se samotnou aplikac´ı btremote a bal´ıˇcku s pomocn´ ymi tˇr´ıdami support.
6.1.1
J´ adro Bluetooth komunikace Posluchač událostí
Komunikace s aplikací
Manažer
Událost
Odpojení po nečinnosti
Komunikátor Hledání serveru
Zpráva Rádiový přenos
Server
Odpověď
Obr´ azek 6.1: Blokov´e sch´ema j´adra Bluetooth komunikace
Aby s´ıt’ov´ a komunikace nezdrˇzovala pr´aci s uˇzivatelsk´ ym rozhran´ım, je jej´ı bˇeh oddˇelen do zvl´aˇstn´ıch vl´ aken. Proto je nutn´e nˇejak ˇr´ıdit synchronizaci mezi z´akladn´ım vl´aknem programu a vl´ akny pro s´ıt’ovou komunikaci. K tomu slouˇz´ı manaˇzer, tˇr´ıda BTManager. Kromˇe 18
ˇr´ızen´ı je tak´e d˚ uleˇzit´e z´ıskat informace od serveru v samotn´e aplikaci a to je moˇzn´e velmi jednoduˇse d´ıky tomu, ˇze btcore poskytuje rozhran´ı BTEventListener, kter´e obsahuje metody, jeˇz jsou vyvol´ any pˇri urˇcit´ ych ud´ alostech bˇehem komunikace. Na obr´azku 6.1 je zn´azornˇeno blokov´e sch´ema j´ adra Bluetooth komunikace. Manaˇ zer Manaˇzer tedy zajiˇst’uje komunikace se serverem. Slouˇz´ı jako rozhran´ı pro ovl´ad´an´ı s´ıt’ov´e komunikace ze samotn´e aplikace. Pˇri vytvoˇren´ı manaˇzeru jsou vytvoˇreny dvˇe dalˇs´ı vl´akna, jedno pro samotnou komunikaci, tˇr´ıda BTTransmitter a druh´e pro hled´an´ı okoln´ıch zaˇr´ızen´ı, tˇr´ıda BTDiscoverer. Jako ˇr´ıd´ıc´ı tˇr´ıda poskytuje manaˇzer pro kaˇzd´e z tˇechto vl´aken metody pro pr´aci s nimi. Jak jiˇz bylo zm´ınˇeno, pro z´ısk´avan´ı informac´ı od serveru je speci´aln´ı rozhran´ı. Ale k tomu, aby pˇr´ısluˇsn´ a tˇr´ıda mohla sluˇzby tohoto rozhran´ı vyuˇz´ıvat, mus´ı se zaregistrovat k poslechu tohoto rozhran´ı, k tomu poskytuje manaˇzer potˇrebn´e metody. Mimo ˇr´ızen´ı dalˇs´ıch vl´ aken manaˇzer tak´e umoˇzn ˇuje ovˇeˇren´ı, zda v˚ ubec dan´e zaˇr´ızen´ı podporuje Bluetooth tedy standard JSR-82. Rozhran´ı pro pˇ r´ıjem Bluetooth ud´ alost´ı Rozhran´ı BTEventListener poskytuje metody pro jednotn´ y zp˚ usob zjiˇst’ov´an´ı, ˇze nastala nˇejak´a Bluetooth ud´ alost. V pˇr´ıpadˇe, ˇze nastala Bluetooth ud´alost, jsou vˇsichni registrovan´ı posluchaˇci implementuj´ıc´ı toto rozhran´ı informov´an´ı vyvol´an´ım pˇr´ısluˇsn´e metody rozhran´ı BTEventListener. N´ asleduje seznam typ˚ u ud´alost´ı definovan´ ych t´ımto rozhran´ım: • Pˇrijet´ı zpr´ avy od serveru. ´ eˇsn´e odesl´ an´ı zpr´ avy serveru. • Uspˇ • Objeven´ı nov´eho okoln´ı zaˇr´ızen´ı. • Diagnostick´ a zpr´ ava. • Chybov´ a zpr´ ava. Bluetooth ud´ alost Kaˇzd´a Bluetooth ud´ alost nese informaci o sv´em typu pro zpracov´an´ı a textovou informaci s popisem pro uˇzivatele. To znamen´a napˇr´ıklad, kdyˇz nastane chyba, je generov´ana Bluetooth ud´ alost typu chyba s popisem, o jakou chybu se jedn´a. Bluetooth ud´alost je implementov´ ana ve tˇr´ıdˇe BTEvent. Vl´ akno pro hled´ an´ı okoln´ıch zaˇ r´ızen´ı Jako kaˇzd´e vl´ akno i toto bˇeˇz´ı nez´avisle na zbytku aplikace a jen kontroluje, zda nebyl vznesen poˇzadavek vyhledat okoln´ı zaˇr´ızen´ı. Pokud ano, spust´ı hled´an´ı. Informuje o kaˇzd´em nalezen´em zaˇr´ızen´ı generov´ an´ım Bluetooth ud´alosti a nakonec o tom, ˇze hled´an´ı skonˇcilo. Seznam nalezen´ ych zaˇr´ızen´ı je moˇzn´e z´ıskat pomoc´ı metod manaˇzeru.
19
Vl´ akno pro komunikace se serverem V tomto vl´ aknu prob´ıh´ a komunikace se serverem. Prob´ıh´a zde pr´ace s frontou zpr´av, coˇz je delik´atn´ı z´ aleˇzitost, jelikoˇz k jedn´e datov´e struktuˇre najednou pˇristupuje v´ıce vl´aken. Toto vl´akno z n´ı ˇcte zpr´ avy a pot´e je odes´ıl´a, zat´ımco jin´a vl´akna zapisuj´ı do fronty zpr´av nov´e zpr´avy k odesl´ an´ı. Pro zajiˇstˇen´ı korektn´ı pr´ace s frontou zpr´av existuje v Javˇe prostˇredek, kter´ y umoˇzn ˇuje synchronizaci a zamyk´an´ı kritick´ ych kus˚ u k´odu a t´ım je blok s kl´ıˇcov´ ym slovem synchronized. T´ım se zajist´ı zachov´an´ı konzistence dat a nedojde k jejich poˇskozen´ı nebo ztr´ atˇe. Ve frontˇe zpr´ av jsou tedy zpr´ avy k odesl´an´ı, ty jsou postupnˇe odes´ıl´any serveru. Vzhledem k tomu, ˇze se jedn´ a o bezdr´ atovou komunikaci, nelze spol´ehat na to, ˇze server je poˇr´ ad schopen zpr´ avy pˇrij´ımat. Nejprve se zjiˇst’uje, jestli je server pˇr´ıtomn´ y v dosahu a schopn´ y pˇrij´ımat (to je zjiˇstˇeno hled´ an´ım sluˇzby). Po nalezen´ı sluˇzby klient v´ı, ˇze m˚ uˇze pos´ılat data. Nejv´ıce energie je spotˇrebov´ av´ano, kdyˇz je nav´az´ano spojen´ı se serverem, proto se spojen´ı udrˇzuje jen na nezbytnˇe dlouhou dobu a pot´e je vˇzdy pˇreruˇseno. Pˇred posl´an´ım dalˇs´ı zpr´avy je nutn´e zjistit, zda je spojen´ı moment´alnˇe otevˇreno. Pokud ne, je automaticky znovu otevˇreno. Ted’ uˇz m˚ uˇze b´ yt zpr´ ava odesl´ana. S jej´ım odesl´an´ım je generov´ana Bluetooth ud´alost o u ´spˇeˇsn´em odesl´ an´ı zpr´ avy. V pˇr´ıpadˇe, ˇze doˇslo pˇri odes´ıl´an´ı zpr´avy k chybˇe, pokus´ı se klient poslat zpr´ avu znovu, to z toho d˚ uvodu, ˇze jak uˇz bylo ˇreˇceno, jde o bezdr´atov´ y pˇrenos a m˚ uˇze doch´ azet k chyb´ am. Pokus˚ u pro odesl´an´ı je definovan´ y poˇcet, informace o zb´ yvaj´ıc´ıch pokusech je uloˇzena u kaˇzd´e Bluetooth zpr´avy. Teprve aˇz v pˇr´ıpadˇe, ˇze se ani tak nepodaˇrilo zpr´ avu odeslat, je generov´ana chyba a pˇrech´az´ı se na dalˇs´ı zpr´avu. Po odesl´an´ı zpr´ avy se vyˇck´ av´ a na odpovˇed’, pˇri jej´ım pˇrijet´ı je generov´ana Bluetooth ud´alost o pˇrijet´ı zpr´ avy. Cel´ y mechanismus odes´ıl´an´ı zpr´av je zn´azornˇen na obr´azku 6.2. Odtranění zprávy Vytvoření události o chybě
Nové zprávy
Fronta zpráv Kotrola zprávy (zda jsou ještě pokusy pro odeslání )
Přijetí odpovědi
Odeslání zprávy
Hledaní služby/pří tomnosti serveru
Vytvoření připojení k serveru, pokud není
Obr´ azek 6.2: Pr˚ ubˇeh odes´ıl´an´ı zpr´avy
Odpojen´ı pˇ ri neˇ cinnosti Bˇehem tohoto vˇseho jeˇstˇe ale bˇeˇz´ı v dalˇs´ım vl´aknˇe speci´aln´ı poˇc´ıtadlo (tˇr´ıda BTTimeout), kter´e mˇeˇr´ı dobu pˇripojen´ı k serveru. Pˇri kaˇzd´em odeslan´ı zpr´avy je poˇc´ıtadlo vynulov´ano. V pˇr´ıpadˇe, ˇze napoˇc´ıt´ a do nastaven´eho ˇcasu, provede automatick´e zruˇsen´ı spojen´ı se serverem.
20
Bluetooth zpr´ ava Do fronty zpr´ av se vkl´ adaj´ı Bluetooth zpr´avy, tˇr´ıda BTMessage. Zpr´ava s sebou nese kromˇe samotn´e zpr´ avy (data, kter´ a maj´ı b´ yt pˇrenesena) jeˇstˇe informaci o tom, kter´emu serveru je zpr´ava urˇcena a taky informaci o poˇctu zb´ yvaj´ıc´ıch pokus˚ u pro odesl´an´ı zpr´avy.
6.1.2
Klientsk´ a aplikace
Samotn´ a aplikace pouze vyuˇz´ıv´ a funkc´ı j´adra Bluetooth komunikace pro komunikaci ze serverem a vytv´ aˇr´ı uˇzivatelsk´e rozhran´ı, d´ıky kter´emu je moˇzn´e aplikaci pouˇz´ıvat. Uˇzivatelsk´e rozhran´ı se skl´ ad´ a z nˇekolika formul´aˇr˚ u, n´asleduje jejich pˇrehled. ´ Uvodn´ ı formul´ aˇ r Tento formul´ aˇr slouˇz´ı pro vyhled´an´ı a v´ ybˇer serveru (obr´azek 6.3 vlevo). Je to prvn´ı formul´aˇr, kter´ y je zobrazen ihned po spuˇstˇen´ı aplikace. Na tomto formul´aˇri tedy lze ukonˇcit aplikace, pˇrej´ıt na formul´ aˇr s informacemi o aplikaci, spustit hled´an´ı serveru a potom se k vybran´emu serveru pˇripojit a t´ım pˇrej´ıt na formul´aˇr se seznamem ovl´adac´ıch obrazovek. Pˇri pˇripojen´ı k serveru je z´ aroveˇ n posl´an serveru poˇzadavek na z´ısk´an´ı seznamu ovl´adac´ıch obrazovek (viz kapitola 5.3.1).
Obr´ azek 6.3: Uk´azka formul´aˇr˚ u
Seznam ovl´ adac´ıch obrazovek Na tomto formul´ aˇri je zobrazen seznam ovl´adac´ıch obrazovek z´ıskan´ ych od serveru (obr´azek 6.3 vpravo). Je moˇzn´e pˇrej´ıt na vybranou ovl´adac´ı obrazovku nebo se vr´atit zpˇet na u ´vodn´ı formul´ aˇr a vybrat jin´ y server (eventu´alnˇe aplikaci ukonˇcit). Pˇri pˇrechodu na ovl´adac´ı obrazovku je od serveru vyˇz´ ad´ an obsah ovl´adac´ı obrazovky (viz kapitola 5.3.2).
21
Ovl´ adac´ı obrazovka Z informac´ı od serveru je sestavena ovl´adac´ı obrazovka, nejprve je nastaven titulek. Pot´e je zpracov´ an k´ od pˇrijat´ y od serveru. Podle tˇechto informac´ı jsou definov´any kl´avesy, kter´ ymi je moˇzno odes´ılat pˇr´ıkazy. V pˇr´ıpadˇe poˇzadavk˚ u na zpˇetn´e informace je ovl´adac´ı obrazovka rozdˇelena na dvˇe ˇc´ asti: zobrazen´ı n´apovˇedy k pos´ıl´an´ı pˇr´ıkaz˚ u pomoc´ı kl´aves (obr´azek 6.4 vlevo), to znamen´ a zobrazen´ı popisek nebo ikon k jednotliv´ ym definovan´ ym kl´aves´am a na ˇc´ast zobrazen´ı zpˇetn´ ych informac´ı (obr´azek 6.4 vpravo). Bez zpˇetn´ ych informac´ı je zobrazena jen prvn´ı ˇc´ ast. Mezi obˇema ˇc´astmi se pˇrep´ın´a tlaˇc´ıtkem. Zpˇetn´e informace jsou zobrazeny pod sebou v ˇc´ asti pro nˇe urˇcen´e.
Obr´ azek 6.4: Uk´ azka uˇzivatelsk´eho rozhran´ı ovl´adac´ı obrazovky
Pˇ rechody mezi formul´ aˇ ri V nˇekter´ ych pˇr´ıpadech je pˇri pˇrechodu mezi formul´aˇri pos´ıl´an poˇzadavek serveru a podle odpovˇedi je upraven formul´ aˇr. To m˚ uˇze nˇejakou dobu trvat, z toho d˚ uvodu se v tomto ˇcase zobraz´ı pˇrechodn´ y formul´ aˇr, na kter´em je zobrazen ukazatel pr˚ ubˇehu. Tento pˇrechodn´ y formul´ aˇr je implementov´ an tˇr´ıdou ProgressBarSwitch. Dalˇs´ı akce, kter´ a trv´ a delˇs´ı ˇcas, je hled´an´ı okoln´ıch zaˇr´ızen´ı. V tuto dobu je zobrazen podobn´ y pˇrechodn´ y formul´ aˇr jako v pˇredchoz´ım pˇr´ıpadˇe, tento je ale implementov´an ve tˇr´ıdˇe ProgressBarDiscoverer.
6.1.3
Podp˚ urn´ e tˇ r´ıdy
K usnadnˇen´ı implementace nˇekter´ ych ˇcasto opakovan´ ych konstrukc´ı slouˇz´ı podp˚ urn´e tˇr´ıdy v bal´ıˇcku support. V J2ME napˇr´ıklad chyb´ı implementace funkce pro rozdˇelen´ı ˇretˇezce pomoc´ı oddˇelovaˇce. Vzhledem k ˇcast´emu pouˇzit´ı pˇri zpracov´an´ı informac´ı od serveru je tato funkce implementov´ana ve tˇr´ıdˇe SString.
22
Dalˇs´ı uˇziteˇcnou tˇr´ıdou je tˇr´ıda GraphicsItems, ta m´a poskytovat funkce pro kreslen´ı standardizovan´ ych prvk˚ u na ovl´ adac´ı obrazovku. Prozat´ım je implementov´ana jedin´a funkce a to drawSlider pro vykreslen´ı ukazatele pr˚ ubˇehu (obr´azek 5.1). Zpracovan´e informace od serveru jsou ukl´ad´any do objekt˚ u, pro uloˇzen´ı zpˇetn´ ych informac´ı je vyuˇz´ıv´ ana tˇr´ıda Item. Tˇr´ıda RefreshTime implementuje poˇc´ıt´an´ı ˇcasu pro opˇetovn´e vyˇz´ad´an´ı zpˇetn´ ych informac´ı.
6.2
Server
Serverov´ a ˇc´ ast je implementov´ ana v jazyce C++. Je urˇcena pro operaˇcn´ı syst´em GNU/Linux. Vyuˇz´ıv´ a Bluetooth rozhran´ı BlueZ (viz kapitola 4.1). Slouˇz´ı jako spojovac´ı ˇcl´anek mezi poˇc´ıtaˇcem a d´ alkov´ ymi ovladaˇci v podobˇe mobiln´ıch telefon˚ u, tzn. podle pˇr´ıkaz˚ u od klient˚ u prov´ad´ı poˇzadovan´e akce, k samotn´emu ovl´ad´an´ı poˇc´ıtaˇce jsou jednotliv´e pluginy. Pluginy jsou zase spojovac´ı ˇcl´ anky mezi serverem a konkr´etn´ı ovl´adanou aplikac´ı na ovl´adan´em poˇc´ıtaˇci. Struktura serveru je zn´ azornˇena na obr´azku 6.5.
XTE
Další případný modul
Klient
MPD
Dispečer
Síťové rozhraní
Rádiový přenos
Obr´ azek 6.5: Blokov´e sch´ema serveru
6.2.1
Spuˇ stˇ en´ı/ukonˇ cen´ı aplikace
Serverov´ a ˇc´ ast bˇeˇz´ı dlouhou dobu jen v pohotovostn´ım stavu, kdy jen ˇcek´a na pˇripojen´ı a poˇzadavky klient˚ u, proto je vhodn´e ji spustit na pozad´ı“. Pokud tedy chceme spustit ” server v tomto reˇzimu, staˇc´ı server spustit s parametrem -d. To povede k syst´emov´emu vol´an´ı fork, kter´e vytvoˇr´ı nov´ y proces tak, ˇze rozdvoj´ı st´avaj´ıc´ı, p˚ uvodn´ı proces je ukonˇcen a nov´ y proces pak uˇz bˇeˇz´ı jako pˇr´ım´ y potomek procesu init (hlavn´ı proces v operaˇcn´ım syst´emu GNU/Linux), t´ım je doc´ıleno bˇehu na pozad´ı“. ” Jelikoˇz by nebyla ˇz´ adn´ a moˇznost, jak aplikaci ukonˇcit, pokud bˇeˇz´ı na pozad´ı“, je pˇri ” jej´ım spuˇstˇen´ı zaregistrov´ ana obsluha syst´emov´ ych sign´al˚ u, konkr´etnˇe sign´al˚ u SIGTERM a SIGINT. Po zasl´ an´ı tˇechto sign´ al˚ u aplikaci je pˇreruˇsena nekoneˇcn´a smyˇcka, ve kter´e doch´ az´ı k obsluze klient˚ u a aplikace je ukonˇcena.
23
6.2.2
Bluetooth
Rozhran´ı pro pr´ aci s Bluetooth pouˇzit´e v serverov´e ˇc´asti je BlueZ (viz kapitola 4.1). Aby klienti mohli komunikovat se serverovou ˇc´ast´ı, musej´ı se k n´ı b´ yt schopni nejprve pˇripojit. To je moˇzn´e d´ıky vyuˇzit´ı jednoho z Bluetooth protokol˚ u – SDP (viz kapitola 2.2.5). Pˇri inicializaci serverov´e ˇc´ asti je zaregistrov´ana Bluetooth sluˇzba s dohodnut´ ymi parametry, d´ıky nimˇz je zmiˇ novan´ ym protokolem sluˇzba dohledateln´a pro klienty. Pro samotnou s´ıt’ovou komunikaci syst´em pouˇz´ıv´a Bluetooth protokol RFCOMM (viz kapitola 2.2.4). Pr´ ace s t´ımto protokolem je t´emˇeˇr stejn´a jako s BSD sokety, tzn. komunikace prob´ıh´ a v rouˇre“ (soketu), jeden konec je v serveru a druh´ y u ´st´ı u klienta. Nejprve je ” vytvoˇren konec roury“ v serveru, tzv. hlavn´ı soket. Pot´e server zaˇcne poslouchat na tomto ” konci roury. K druh´emu konci se m˚ uˇze pˇripojit pˇr´ıpadn´ y klient, z toho vypl´ yv´a, ˇze pro kaˇzd´eho klienta potˇrebujeme zvl´ aˇstn´ı rouru. Hlavn´ı soket tedy slouˇz´ı k pˇripojov´an´ı nov´ ych klient˚ u, komunikace s kaˇzd´ ym klientem pak uˇz prob´ıh´a vlastn´ı vytvoˇrenou rourou. Abychom se vyhnuli nutnosti pouˇzit´ı implementace v´ıcevl´aknov´e aplikace, vyuˇz´ıv´a se speci´aln´ı funkce select, kter´ a dok´ aˇze sledovat zmˇeny na vˇsech soketech a v pˇr´ıpadˇe, ˇze ke zmˇenˇe dojde, zavolat obsluˇzn´e rutiny. V pˇr´ıpadˇe zmˇeny na hlavn´ım soketu pˇripoj´ı nov´eho klienta t´ım, ˇze je pro nˇej vytvoˇr´ı vlastn´ı soket. V pˇr´ıpadˇe, ˇze ke zmˇenˇe doˇslo na soketu urˇcit´eho klienta, je zjiˇstˇeno, o jak´eho klienta se jedn´a, a je pˇrijat jeho poˇzadavek. Tyto u ´daje jsou pˇred´any ˇr´ıd´ıc´ımu objektu, tzv. dispeˇceru, ten je zpracuje a vr´at´ı odpovˇed’. Ta je posl´eze odesl´ana klientu.
6.2.3
Dispeˇ cer
Dispeˇcer (tˇr´ıda Dispatcher) z u ´daj˚ u jemu pˇredan´ ych zpracuje poˇzadavek a vygeneruje pˇr´ısluˇsnou odpovˇed’. Z´ akladn´ı pˇr´ıkazy dispeˇcer zpracov´av´a s´am, ale v pˇr´ıpadˇe pˇr´ıkaz˚ u na ovl´ad´an´ı nebo poˇzadavku na zpˇetn´e informace mus´ı volat pˇr´ısluˇsn´e moduly, tzn. dispeˇcer zajiˇst’uje i pr´ aci s moduly. Kromˇe toho jeˇstˇe spravuje informace o ovl´adac´ıch obrazovk´ach.
6.2.4
Konfiguraˇ cn´ı soubory
Ovl´adac´ı obrazovky jsou definov´ any v konfiguraˇcn´ıch souborech, ty je tedy nutno naˇc´ıst a zpracovat (zajiˇst’uje tˇr´ıda Loader). Naˇcten´a data jsou uloˇzena v dispeˇceru, kde se s nimi d´ale pracuje.
6.2.5
Moduly
Moduly jsou objekty pro ovl´ ad´ an´ı urˇcit´e aplikace. Kaˇzd´ y modul mus´ı poskytovat moˇznost prov´est urˇcit´ y pˇr´ıkaz a z´ıskat poˇzadovanou informaci. Aby s nimi mohlo b´ yt pracov´ano obecnˇe, je kaˇzd´ y modul zdˇedˇen z tˇr´ıdy Plugin, ve kter´e jsou deklarov´any dvˇe virtu´aln´ı metody, kter´e to umoˇzn ˇuj´ı. Pro proveden´ı pˇr´ıkazu je to metoda process a pro z´ısk´ an´ı poˇzadovan´e zpˇetn´e informace metoda get. Kaˇzd´ y konkr´etn´ı modul m´a tedy vlastn´ı implementaci tˇechto metod. Xte Modul Xte (tˇr´ıda Xte) slouˇz´ı k simulov´an´ı stisk˚ u kl´aves na kl´avesnici poˇc´ıtaˇce. Vyuˇz´ıv´ a k tomu standardn´ı rozˇs´ıˇren´ı X serveru XTest. Ve svoj´ı implementaci metody process tedy podle zadan´eho parametru stiskne“ kl´avesu (moˇzn´e parametry viz dodatek A.2). Metoda ”
24
get vrac´ı vˇzdy ˇretˇezec FALSE znaˇc´ıc´ı, ˇze poˇzadovanou informaci nen´ı moˇzn´e z´ıskat. To proto, ˇze tento modul neumoˇzn ˇuje z´ısk´ avat ˇz´adn´e zpˇetn´e informace. Mpd Modul Mpd (tˇr´ıda Mpd) slouˇz´ı k ovl´ad´an´ı aplikace MPD (Music Player Deamon). Aplikace MPD je sama osobˇe serverov´ a aplikace, jej´ı ovl´ad´an´ı prob´ıh´a tak, ˇze klient, v tomto pˇr´ıpadˇe modul Mpd, se pˇripoj´ı k aplikaci pomoc´ı soket˚ u. K tomu je vyuˇzito knihovny libmpdclient, kter´a je volnˇe dostupn´ a. Ta zajiˇst’uje s´ıt’ov´e pˇripojen´ı k aplikaci MPD. Modul Mpd pak jen na z´akladˇe poˇzadavk˚ u ve dvou metod´ach urˇcen´ ych pro ˇr´ızen´ı zas´ıl´a poˇzadavky aplikaci MPD a odpovˇedi zpracuje (seznam parametr˚ u pro pr´aci s modulem Mpd viz dodatek A.1).
25
Kapitola 7
Z´ avˇ er V t´eto pr´ aci jsem se zab´ yval vytvoˇren´ım syst´emu pro d´alkov´e ovl´ad´an´ı poˇc´ıtaˇce s operaˇcn´ım syst´emem GNU/Linux pomoc´ı mobiln´ıho telefonu s podporou standardu JSR-82 (Bluetooth standard pro J2ME). Syst´em se zamˇeˇruje na minimalizov´an´ı spotˇreby energie na mobiln´ım telefonu t´ım, ˇze Bluetooth spojen´ı je udrˇzov´ano jen po nezbytnˇe nutnou dobu. Pˇri v´ yvoji tohoto syst´emu jsem se sezn´amil s mnoha modern´ımi technologiemi jako jsou Bluetooth a J2ME. To mˇe pˇresvˇedˇcilo o tom, ˇze je moˇzn´e tyto technologie vyuˇz´ıt k mnoha r˚ uzn´ ym u ´ˇcel˚ um. Syst´em je jiˇz v pouˇziteln´em stavu, ale i tak bych ho povaˇzoval jen jako z´aklad pro dalˇs´ı moˇzn´ y v´ yvoj. Mezi oblasti, kter´e tato pr´ace nepokr´ yv´a, patˇr´ı napˇr´ıklad bezpeˇcnost. V tomto ohledu by bylo moˇzn´e implementovat syst´em pr´av tak, ˇze by pˇr´ıstup k urˇcit´ ym ovl´adac´ım obrazovk´ am byl omezen´ y. Moˇzn´ a d˚ uleˇzitˇejˇs´ı by bylo implementovat syst´em autorizace, d´ıky nˇemuˇz by se pˇredeˇslo jeho zneuˇzit´ı. Z hlediska pouˇzitelnosti na jin´ ych mobiln´ıch telefonech by jistˇe bylo tˇreba testovat klientskou aplikaci na ˇsirok´em spektru mobiln´ıch telefon˚ u r˚ uzn´ ych v´ yrobc˚ u, jelikoˇz kaˇzd´ y mobiln´ı telefon, i kdyˇz by mˇel splˇ novat standard, m´a sv´e odliˇsnosti. Bˇehem pr´ace jsem mˇel pˇr´ıstup pouze k omezen´emu mnoˇzstv´ı pˇr´ıstroj˚ u. Tak´e by mohl b´ yt vylepˇsen syst´em vykreslov´ an´ı informac´ı na displeji mobiln´ıho telefonu (v pˇr´ıpadˇe textu ˇsirˇs´ıho, neˇz umoˇzn ˇuje zobrazit displej konkr´etn´ıho zaˇr´ızen´ı, vytvoˇrit napˇr´ıklad bˇeˇz´ıc´ı text“). ” Syst´em je navrˇzen tak, ˇze umoˇzn ˇuje snadnou rozˇsiˇritelnost implementac´ı nov´ ych modul˚ u, kter´e slouˇz´ı pro ovl´ ad´ an´ı r˚ uzn´ ych aplikac´ı. Souˇc´ast´ı t´eto pr´ace jsou dva moduly. Do budoucna by toto ˇc´ıslo mohlo znaˇcnˇe stoupnout a t´ım vyhovˇet poˇzadavk˚ um kaˇzd´eho uˇzivatele. Napˇr´ıklad modul na spouˇstˇen´ı jin´ ych aplikac´ı, d´ıky nˇemuˇz by se dal spustit i libovoln´ y skript, vytvoˇren´ y uˇzivatelem. Rozˇsiˇritelnost by ˇslo jeˇstˇe usnadnit implementac´ı naˇc´ıt´an´ı modul˚ u jako dynamick´ ych knihoven, t´ım by odpadla nutnost rekompilovat aplikaci pˇri pˇridan´ı nov´eho modulu.
26
Literatura [1] Dee Dee M. Bakker and Diane McMichael Gilster. Bluetooth End to End. John Wiley & Sons, Inc., New York, NY, USA, 2002. ISBN 07-645-4887-5. [2] Qusay H. Mahmoud. Nauˇcte se Java 2 Micro Edition. GRADA, 2002. ISBN 80-247-0444-7. [3] WWW str´ anky. Affix – Bluetooth rozhran´ı. http://research.nokia.com/research/projects/affix/index.html. [Online, pˇr´ıstupn´e 29.4.2008]. [4] WWW str´ anky. Bluetooth. http://en.wikipedia.org/wiki/Bluetooth. [Online, pˇr´ıstupn´e 29.4.2008]. [5] WWW str´ anky. Bluetooth profily. http://en.wikipedia.org/wiki/Bluetooth profile. [Online, pˇr´ıstupn´e 29.4.2008]. [6] WWW str´ anky. Bluetooth protokoly. http://en.wikipedia.org/wiki/Bluetooth protocols. [Online, pˇr´ıstupn´e 29.4.2008]. [7] WWW str´ anky. BlueZ – Bluetooth rozhran´ı. http://www.bluez.org. [Online, pˇr´ıstupn´e 29.4.2008]. [8] WWW str´ anky. Connected Device Configuration (JSR 36). http://www.jcp.org/en/jsr/detail?id=36. [Online, pˇr´ıstupn´e 29.4.2008]. [9] WWW str´ anky. Connected Limited Device Configuration (JSR 30). http://www.jcp.org/en/jsr/detail?id=30. [Online, pˇr´ıstupn´e 29.4.2008]. [10] WWW str´ anky. Java API pro Bluetooth. http://www.jcp.org/en/jsr/detail?id=82. [Online, pˇr´ıstupn´e 29.4.2008]. [11] WWW str´ anky. Remote Method Invocation (JSR 66). http://www.jcp.org/en/jsr/detail?id=66. [Online, pˇr´ıstupn´e 29.4.2008].
27
Dodatek A
Specifikace funkc´ı modul˚ u Kaˇzd´ y z modul˚ u m´ a sv´e specifick´e funkce, proto zde n´asleduje seznam funkc´ı pro z´ısk´ an´ı zpˇetn´e informace i pro ˇr´ıd´ıc´ı pˇr´ıkazy pro oba moduly jiˇz implementovan´e v syst´emu. Pouˇzit´ı ˇr´ıd´ıc´ı funkce v konfiguraˇcn´ım souboru je n´asleduj´ıc´ı: key:modul:kl´ avesa na mobiln´ ım zaˇ r´ ızen´ ı:ˇ r´ ıd´ ıc´ ı funkce:identifikuj´ ıc´ ı text
A.1
Modul MPD
Modul MPD slouˇz´ı k ovl´ ad´ an´ı aplikace Music Player Deamon (MPD).
A.1.1
ˇ ıd´ıc´ı funkce R´
• toggle – pokud je pˇrehr´ av´an´ı hudby zapnuto, provede pozastaven´ı, jinak spuˇstˇen´ı pˇrehr´ av´ an´ı. • pause – pozastav´ı pˇrehr´ av´ an´ı hudby. • play – spust´ı pˇrehr´ av´ an´ı hudby. • stop – zastav´ı pˇrehr´ av´ an´ı hudby. • next – pˇrepne pˇrehr´ av´ an´ı na dalˇs´ı p´ısniˇcku. • prev – pˇrepne pˇrehr´ av´ an´ı na pˇredchoz´ı p´ısniˇcku. • incVolume – zv´ yˇs´ı hlasitost. • decVolume – sn´ıˇz´ı hlasitost. • random – pokud je zapnuto pˇrehr´av´an´ı v n´ahodn´em poˇrad´ı, tak ho vypne, jinak zapne.
A.1.2
Funkce pro z´ısk´ an´ı zpˇ etn´ e informace
• song – z´ısk´ a n´ azev aktu´ alnˇe pˇrehr´avan´e p´ısniˇcky. • artist – z´ısk´ a autora aktu´ alnˇe pˇrehr´avan´e p´ısniˇcky. • album – z´ısk´ a album aktu´ alnˇe pˇrehr´avan´e p´ısniˇcky.
28
• state – z´ısk´ a aktu´ aln´ı stav pˇrehr´av´an´ı. • israndom – z´ısk´ a informaci o tom, zda je zapnuto n´ahodn´e pˇrehr´av´an´ı. • volume – z´ısk´ a aktu´ alnˇe nastavenou hlasitost v procentech. • progress – z´ısk´ a stav aktu´alnˇe pˇrehr´avan´e p´ısniˇcky v procentech.
A.2
Modul XTE
Modul XTE slouˇz´ı k simulov´ an´ı stisku kl´aves na kl´avesnici poˇc´ıtaˇce.
A.2.1
ˇ ıd´ıc´ı funkce R´
Jako ˇr´ıd´ıc´ı funkce m˚ uˇze b´ yt v tomto modulu pouˇzita vˇetˇsina znak˚ u, kter´e je moˇzn´e napsat na kl´avesnici, tzn. napˇr´ıklad. a b c A B C . ? ! 0 5 9 ( ) { } [ ] D´ale ˇr´ıd´ıc´ı kl´ avesy jako napˇr´ıklad. space Return Escape Backspace Left Right Up Down F5 Tab Delete Page_Up Page_Down Home End XF86AudioPlay XF86AudioPause
A.2.2
Funkce pro z´ısk´ an´ı zpˇ etn´ e informace
Tento modul ˇz´ adn´e takov´e funkce neposkytuje.
29
Dodatek B
Ikony podporovan´ e klientem Ikony definovan´e na klientu pro zobrazen´ı jako n´apovˇeda m´ısto textu. Prvn´ı sadou ikon jsou ikony pro ovl´ad´an´ı pˇrehr´avaˇce: PREV
REW
TOGGLE
STOP
FF
NEXT
Dalˇs´ı jsou ikony navigaˇcn´ıch ˇsipek: UP
DOWN
Ikony t´ ykaj´ıc´ı se hlasitosti: VOLUME
VOLUP
VOLDOWN
A nakonec dalˇs´ı ikony nezaˇrazen´e do ˇz´adn´e skupiny: FULLSCREEN
INFO
EJECT
ENTER
30
REPEAT
Dodatek C
Obsah CD Obsah pˇriloˇzen´eho CD je n´ asleduj´ıc´ı. • soubor bp.pdf – technick´ a zpr´ava ve form´atu PDF. • adres´ aˇr paper – zdrojov´e soubory technick´e zpr´avy (LATEX). • adres´ aˇr client – zdrojov´e texty klientsk´e ˇc´asti v J2ME. • adres´ aˇr server – zdrojov´e texty serverov´e ˇc´asti v C++. • adres´ aˇr doc/client – programov´a dokumentace klientsk´e ˇc´asti vygenerovan´a pomoc´ı aplikace Doxygen. Tituln´ı strana je v souboru index.html. • adres´ aˇr doc/server – programov´a dokumentace serverov´e ˇc´asti vygenerovan´a pomoc´ı aplikace Doxygen. Tituln´ı strana je v souboru index.html.
31