background image

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Sławomir Jaros 

 
 
 
 

praca dyplomowa magisterska ( inżynierska ) 

 

Praktyczne podejście do problemu Home 

Automation 

– Zastosowanie jako urządzeń 

sterujących popularnych telefonów wyposażonych 

w OS Symbian. 

 

 

 
 
 
 
 
 
 

 

 

Promotor: 
Dr inż. Michał Morawski 
 
 
Dyplomant: 
Sławomir Jaros 
nr albumu 116696 

 
 
 
 
 
 

Łódź, 17.09.2007 r. 

 
 

background image

 

SPIS TREŚCI 

 
Wykaz skrótów ..................................................................................................................4 
Wykaz rysunków ...............................................................................................................6 
Wykaz tabel .......................................................................................................................7

 

 

WSTĘP ......................................................................................................................8 

1.1 

Idea Inteligentnego Budynku ..............................................................................8 

1.2 

Definicja Inteligentnego Budynku ......................................................................9 

1.3 

Historia powstania i ewaluacja Inteligentnego Budynku ...................................10 

Cel i zakres pracy .....................................................................................................11 

Inteligentny Budynek ...............................................................................................12 

3.1 

Inteligentny Budynek – zastosowanie ...............................................................12 

3.2 

Sieci domowe w kontekście Inteligentnego Budynku........................................15 

3.3 

Podział sieci domowych ze względy na użyte medium. ....................................16 

3.3.1 

Sieci z nowym okablowaniem...................................................................16 

3.3.2 

Sieci bez nowego okablowania .................................................................18 

3.3.3 

Sieci bezprzewodowe................................................................................23 

3.3.3.1 

IrDA .....................................................................................................23 

3.3.3.2 

HomeRF ...............................................................................................27 

3.3.3.3 

ZigBee (IEEE 802.15.4)........................................................................28 

3.3.3.4 

Bluetooth ..............................................................................................31 

Symbian – system operacyjny ..................................................................................37 

4.1 

Informacja ogólne.............................................................................................37 

4.2 

Dlaczego Symbian? ..........................................................................................38 

4.3 

Interfejsy w Symbianie .....................................................................................38 

4.4 

SDK i dostępne IDE pod Symbiana ..................................................................39 

4.5 

Podstawy Symbiana (różnice pomiędzy Symbianem a C++).............................40 

4.5.1 

Podstawowe typy danych ..........................................................................40 

4.5.2 

Nazewnictwo klas.....................................................................................41 

4.5.3 

Łańcuchy tekstowe i deskryptory ..............................................................42 

4.5.4 

Mechanizm opuszczeń (Leaves)................................................................44 

Projekt .....................................................................................................................45 

5.1 

Idea projektu ....................................................................................................45 

5.2 

Budowa projektu ..............................................................................................46 

5.2.1 

Aplikacja na telefon komórkowy ..............................................................47 

5.2.1.1 

Budowa i elementy składające się na aplikację......................................47 

5.2.1.2 

Struktura katalogów projektu ................................................................48 

5.2.1.3 

Podział aplikacji na podstawowe pliki...................................................49 

5.2.1.4 

Rodzaje plików w projekcie ..................................................................50 

5.2.1.5 

System identyfikatorów UID.................................................................51 

5.2.1.6 

Zasada działania aplikacji .....................................................................52 

5.2.1.7 

Bezpieczeństwo ....................................................................................55 

5.2.1.8 

Identyfikator UUID...............................................................................56 

5.2.1.9 

Protokoły wyszukiwania usług ..............................................................57 

5.2.2 

Aplikacja na PC ........................................................................................59 

5.2.3 

Aplikacja na Game Board .........................................................................61 

5.2.4 

Profile zastosowań Bluetooth....................................................................63 

5.2.5 

Instrukcja obsługi......................................................................................65 

5.2.5.1 

Wymagania sprzętowe ..........................................................................65 

background image

 

5.2.5.2 

Instalacja...............................................................................................65 

5.2.5.3 

Opis szczegółowy .................................................................................66 

5.3 

Standardy  Bluetooth na komputery PC ............................................................67 

5.4 

Dlaczego C++ ..................................................................................................68 

Dalsze kierunki rozwoju...........................................................................................68 

Wnioski i podsumowanie .........................................................................................70

 

 
BIBLIOGRAFIA .............................................................................................................72 
Dodatek A .......................................................................................................................75 

Zawartość nośnika CD-ROM .......................................................................................75 

Dodatek B........................................................................................................................76 

Raport skrócony wygenerowany przez System Antyplagiatowy Plagiat.pl, za pomocą 
witryny http://plagiat.pl................................................................................................76 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

background image

 

Wykaz skrótów 

 

HVAC - heating, ventilation and air conditioning 

EIBG - European Intelligent Building Group 

IrDA - Infrared Data Association 

VFIR - Very Fast Infrared 

FIR - Fast Infrared 

SIR - Serial Infrared 

AIr - Advanced Infrared. 

HomeRF - Home Radio Frequency 

HomePNA - Home PhoneLine Alliance 

CEBus - Customer Electronic Bus 

RF - Radio Frequency 

PLC - PowerLine Communication 

EIB - European Installation Bus 

EIBA - European Installation BUS Association 

CRC - Cyclic Redundancy Check 

IrLAP - Infrared Link Access Protocol 

IrLMP - Infrared Link Management Protocol 

IAS - Intention Access Service 

IrOBEX - Object Exchange Protocol 

IrLAN - Local Area Network 

IrMC - Infrared Mobile Communications 

IrTran-P -  Infrared Transfer Picture 

SWAP - Shared Wireless Access Protocol 

CSMA/CA - Carrier Sense Multiple Access/Collision Avoidance

 

PDA - Personal Digital Assistant 

CSMA/CA - Carrier Sense Multiple Access With Collision Avoidance 

MAC - Medium Access Control 

TDMA - Time Division Multiple Access 

ADS - Asynchronous Data Service 

PADS - Priority Asynchronous Data Service 

DSSS - Direct Sequence Spread Spectrum 

SSCS - Service-Specific Convergence Sublayer 

background image

 

LLC - Link Layer Control 

LR - WPAN - Low-Rate Wireless Personal Area Networks 

IG - Special Interest Group 

ISM - Industrial Scientific Medical 

TDD - Time Division Duplex 

CRC - Cyclic Redundancy Check 

HCI - Host Control Interface 

TCS - Telephony Control Specification 

RFCOMM – Serial Port Emulation 

SDP - Service Discovery Protocol     

IDE - Integrated Development Environment 

SDK - Software Development Kit 

AIF - Application Information File 

MIME - Multipurpose Internet Mail Extension 

MBM - Multi Bitmap 

UID - Unique Identification Number  

URL - Uniform Resource Locator  

UUID - Universally Unique Identifier 

SLM - Salutation Manager 

SLP2 - Service Location Protocol, Version 2 

SSDP - Simple Service Discovery Protocol 

PDP - Pervasive Discovery Protocol 

SSDS - Secure Service Discovery Service  

PDU - Protocol Data Unit 

SDDB - Service Discovery Database 

SPP - Serial Port Profile  

GCC - GNU Compiler Collection 

PIN - Personal Identification Number 

DAC - Device Access Code 

GOEP - Generic Object Exchange Profile 

FTP - File Transfer Profile 

OPP - Object Push Profile 

SP - Synchronization Profile 

 

background image

 

Wykaz rysunków 

 

1. Schemat ideowy Inteligentnego Budynku 

2 Schemat przedstawiający podsystemy Inteligentnego Budynku 

3. Wykaz technologii dla sieci domowych 

4. Przekrój przewodu komunikacyjnego w EIB 

5.Możliwe topologie w EIB 

6. Idea sieci HomePNA 

7. Prędkości transmisji w porównaniu z odległościami w IrDA i Bluetooth 

8. Stos protokołów IrDA 

9. Specyfikacja HomeRF 

10. Ulokowanie kanałów standardu 802.15.4. 

11. Stos protokołów ZigBee 

12. Topologie sieci ZigBee 

13. Rozmieszczenie kanałów w systemie Bluetooth 

14. Pikosieć: Jedno urządzenie Master (M) i cztery urządzenia Slave (S) 

15. Dwie pikosieci mogą występować na jednym obszarze, nie zakłócając się nawzajem. 

16. Pikosieci mogą tworzyć sieci rozproszone (scatternet). 

17. Stos protokołów Bluetooth 

18. Typy deskryptorów w Symbianie 

19. Idea projektu 

20. Budowa typowej aplikacji na Symbian OS 

21. Proces powstawania pliku SIS 

22. Wymiana klucza 

23. Protokoły uczestniczące w transakcji SDP 

24. LPC2104 Color LCD Game Board 

25. Wariant rozbudowy projektu 

 

 

 

 

 

background image

 

Wykaz tabel 

 

Tab.1 Podstawowe parametry standardu ZigBee 

Tab.2 Przepustowość kanałów transmisyjnych 

Tab.3. Środowiska programistyczne pod Symbian OS (IDE) 

Tab.4. Podstawowe typy danych w systemie Symbian 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

background image

 

1

  WSTĘ

1.1

  Idea Inteligentnego Budynku 

 

 

Coraz  częściej  usłyszeć  można  o  zastosowaniach  nowoczesnej  technologii  w 

różnych  dziedzinach  przemysłu.  Bardzo  szybko  rozwijająca  się  technika  pozwala 

zastosować innowacyjne technologie w budynkach, w których, na co dzień przebywamy. 

Poprawia to komfort codziennego życia, nasze bezpieczeństwo a także daje to oszczędność 

w  eksploatacji.  Jeszcze  kilkanaście  lat  temu  instalacja  pozwalająca  na  inteligentne 

sterowanie  urządzeniami  znajdującymi  się  w  budynku  była  mało  realna.  Obecnie 

tradycyjne  rozwiązania  powoli  zostają  wypychane  przez  standardy  umożliwiające 

inteligentne sterowanie budynkiem (rozdz. 2). 

Wyobraźmy sobie sytuację, jak po trudach codziennej pracy wracamy do domu. Po 

wejściu,  włącza  się  przyjemne  oświetlenie,  włącza  się  muzyka,  film  lub  jakiś  inny 

stosowany  program  TV  dostosowany  do  naszego  gustu.  Temperatura  w  całym  domu 

wyregulowana jest na optymalną wartość, odpowiadającą wszystkim mieszkańcom domu. 

Nie  jest  ani  za  zimno  ani  za  gorąco.  Zasiadając  przy  telewizorze  w  naszym  ulubionym 

salonie,  nie  musimy  martwić  się  o  to,  że  poziom  natężenia  światła  jest  niezadowalający, 

wystarczy jedno naciśnięcie przycisku „tryb wieczorowy” na pilocie, komórce lub innym 

urządzeniu  sterującym  lub  nawet  jedno  słowo  żeby  włączyć  wcześniej  zdefiniowaną 

wartość  natężenia  światła  powodując  natychmiastową  zmianę  klimatu  w  pokoju.  Żaluzje 

okienne przysłonią się automatycznie w zależności od nasłonecznienia pokoju [3, 4].  

W  dzisiejszych  czasach  mało  kto  ma  czas  na  pielęgnację  własnego  ogródka,  a  w 

szczególności  na  jego  codzienne  podlewanie.  Nie  musimy  się  już  o  to  martwić,  gdyż  w 

zależności od panujących warunków pogodowych, dom sam o to zadba.  

Wychodząc z domu, przekręcając klucz w naszych drzwiach automatycznie włącza 

się  system  alarmowy,  opuszczają  się  rolety  w  oknach,  obniża  się  temperatura  w 

poszczególnych  pokojach,  niezgaszone  lampy  same  się  wyłączają,  sprzęt  AGD  i  RTV 

zostaje automatycznie wyłączony [4]. Oprócz wygody, tego typu czynności pozwalają nam 

zaoszczędzić znaczną ilość energii, co nie jest wcale bez znaczenia w dzisiejszych czasach.  

Te wszystkie zautomatyzowane czynności to właśnie idea Inteligentnego Domu. 

 

background image

 

 

Rys.1 Schemat ideowy Inteligentnego Budynku  [

http://dqm.pl/_img/inteligentny_bud.jpg] 

 

1.2

  Definicja Inteligentnego Budynku 

 

Inteligentny budynek (również inteligentny domsystem zarządzania budynkiem) – jest 

określeniem  wysoko  zaawansowanego  technicznie  budynku.  Zdefiniowanie  samego 

pojęcia nie jest rzeczą prostą i spotkać można wiele określeń. [2].Według EIBG Budynek 

Inteligentny  to  budynek,  który  maksymalizuje  efektywność  osób  go  wykorzystujących  i 

pozwala  efektywnie  zarządzać  zasobami  przy  minimalnych  kosztach  [2].  Według  innej 

definicji  Budynek  Inteligentny  posiada  zdolność  adaptacji  do  nowej  technologii  i 

zmieniających  się  potrzeb  organizacji  jego  użytkowników  [2].  Jeszcze  inni  uważają,  że 

Inteligentny Budynek to taki, w którym można kontrolować cały budynek za pomocą kilku 

przycisków lub pilota. 

Uogólniając  temat  definicji  Inteligentnego  Budynku  uważam,  że  Inteligentne  Budynki 

powinny mieć następujące cechy: 

 

•  Integracja systemów teletechnicznych w budynku 

•  Centralny system zarządzania i nadzoru 

•  Kanał komunikacyjny umożliwiający sterowanie urządzeniami w budynku 

background image

 

10 

•  Efektywne  zarządzanie  przestrzenią  budynku  w  celu  minimalizacji  kosztów 

eksploatacji 

 

1.3

  Historia powstania i ewaluacja Inteligentnego Budynku  

 

  

Zagadnienie    sterowania  różnymi  urządzeniami  zarówno  w  danym  pomieszczeniu 

jak  i  jego  otoczeniu  jest  znane  od  dawna  [2].  Sam  pomysł  Inteligentnych  Budynków 

wywodzi się ze Stanów Zjednoczonych. Początki rozwoju przypadają na wczesne lata 70-

te.  W  tym  okresie  poddano  elektronicznym  udoskonaleniom  systemy  ogrzewania, 

wentylacji i klimatyzacji (ang. HVAC) oraz systemy oświetleniowe. Głównymi powodami 

tych zmian były względy ekonomiczne, tj. konieczność ograniczenia zużycia energii oraz 

usprawnienie obsługi nowo powstających, coraz to większych biurowców [2].  

Sprecyzowane pojecie Inteligentnego Budynku pojawiło się 10 lat później, w latach 

80-tych,  gdzie  nastąpiła  stopniowa  automatyzacja  różnych  systemów,  tj.  system  kontroli 

dostępu,  system  przeciwpożarowy,  system  sterowania  windami  itp.[2].  Zaczęto 

intensywnie  myśleć  nad  koordynacją  działania  elementów  poszczególnych  systemów. 

Sukcesywna  integracja  różnych  technologii  w  latach  90-tych  doprowadziła  do  powstania 

współczesnych  Budynków  Inteligentnych.  Obecnie  wszystkie  systemy  w  budynku  mają 

strukturę  sieciową.  Trzeba  powiedzieć  o  tym,  że  niektóre  systemy  bywają  celowo 

rozdzielone,  jednak  są  kontrolowane  przez  jeden  centralny  punkt,  aby  ułatwić  ich 

współdziałanie. Przykładami takich systemów zajmę się w rozdziale 3.  

 

 

 

 

 

 

 

 

 

 

 

 

background image

 

11 

2

  Cel i zakres pracy 

 

Cel  pracy  można  podzielić  na  dwie  części.  Część  pierwsza  to  poznanie  systemu 

operacyjnego 

Symbian 

OS, 

który 

obok  Windows 

Mobile 

jest  najbardziej 

rozpowszechnionym  systemem  operacyjnym  na  telefony  komórkowe.    Precyzując  ten 

rozległy  temat,  celem  jest  zapoznanie  ze  sposobami  tworzenia  i  uruchamiania 

oprogramowania  na  tym  systemie.  Druga  część  polega  na  wykorzystaniu  napisanego 

oprogramowania do sterowania urządzeniami w oparciu 

o protokół 802.15.1 (Bluetooth). 

 

Zakres  pracy  obejmuje  opisanie  zasady  tworzenia  aplikacji  komunikacyjnych  dla  OS 

Symbian,  zapoznanie  się  z  protokołem  Bluetooth,  oraz  opracowanie  protokołu  wymiany 

informacji  pomiędzy  różnego  typu  urządzeniami  wyposażonymi  w  interfejs  Bluetooth  ze 

szczególnym uwzględnieniem problemów niezawodności i bezpieczeństwa transmisji, ale 

także wygody użytkownika systemu. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

background image

 

12 

 

3

  Inteligentny Budynek 

3.1

  Inteligentny Budynek – zastosowanie 

 

Można  budować  całe  systemy  złożone  z  przeróżnych  sensorów,  czujników.  Oczywiście 

można to wszystko usystematyzować, w poszczególne podsystemy, które w krótki sposób 

postaram się scharakteryzować. 

 

 

 

Rys.2 Schemat przedstawiający podsystemy Inteligentnego Budynku 

[http://www.mikroenergetyka.com.pl/images/systemy/eib2.jpg]

 

 

Do najbardziej popularnych podsystemów zalicza się:  

 

•  System sterowania ogrzewaniem 

 

Zastosowanie  takiego  systemu  jest  dosyć  oczywiste.  Jego  zadaniem  jest  odpowiednia 

reakcja na zbyt niską lub zbyt wysoką temperaturę panującą w danym pomieszczeniu. 

Polega  to  na  podgrzewaniu  względnie  obniżaniu  temperatury  poszczególnych  pokoi 

background image

 

13 

[6]. Nie trudno wyobrazić sobie sytuację gdzie dwa pokoje usytuowane są w różnych 

częściach  domu,  jeden  od  wschodu  słońca,  a  drugi  od  zachodu.  Wydawałoby  się,  że 

temperatura  w  tych  pomieszczeniach  musi  być  różna,  uzależniona  od  położenia  tych 

pokoi.  Wcale  nie  musi  tak  być,  gdyż  taki  system  zadba  o  to,  aby  temperatura  we 

wszystkich pokojach była taka sama, dostosowana do naszych wymagań. [4] 

 

•  System sterowania oświetleniem 

 

We  wstępie  mojej  pracy  wspomniałem  o  tym  systemie,  który  jest  odpowiedzialny  za 

automatyczną regulację oświetlenia zgodną z upodobaniami mieszkańców. Najprostsze 

systemy tego typu umożliwiają zaprogramowanie kilku nastrojów oświetleniowych w 

poszczególnych  pomieszczeniach  [6].  Zaawansowane  systemy  umożliwiają  jeszcze 

bardziej  fantazyjne  rozwiązania  [5].  Możemy  zaprogramować  ściemnianie  lamp,  tak 

ż

eby w określonych godzinach wieczorowych światło na korytarzu nie oślepiało nas.  

Często  zdarza  się,  że  wracając  z  zakupów,  wchodząc  do  domu  mamy  zajęte  ręce. 

Otwierając  zamek  w  drzwiach,  system  automatycznie  wykryje  naszą  obecność  i 

podejmie  stosowną  decyzję  o  włączeniu  światła  w  pokoju,  w  którym  się  znaleźliśmy 

[5][6].  

 

•  System symulacji obecności 

 

Jest  to  jeden  z  najbardziej  popularnych  sposobów  wykorzystania  systemu 

inteligentnego domu [6]. Wyjeżdżając na zasłużony wakacyjny wypoczynek, nasz dom 

staje  się  potencjalnym  celem  dla  złodzieja.  Posiadanie  takiego  systemu  zmniejsza 

ryzyko  „nieproszonych”  gości.  Wystarczy,  że  odpowiedni  moduł  systemu  nagrywa 

poczynania  domowników  przez  pewien  okres  czasu  i  odtwarza  nagrane  czynności 

symulując  obecność  w  budynku  (chodzi  głównie  o  zapalanie  i  gaszenie  światła  w 

poszczególnych  pomieszczeniach,  włączanie  muzyki)  [6].  Bardziej  wyrafinowane 

systemy  wykorzystują  do  tego  celu  większość  urządzeń  zintegrowanych  z  systemem, 

tj.  telewizora,  telefonu,  lub  innych  podsystemów,  które  skutecznie  mogą  odstraszyć 

włamywacza [6]. 

 

 

 

background image

 

14 

•  System alarmowy 

 

Pożar,  powódź  i  inne  żywioły  są  największymi  zagrożeniami  dla  budynku  a  przede 

wszystkim  dla  ludzi  tam  przebywających.  Nie  można  też  zapomnieć  o  wrogu,  jakim 

jest  włamywacz.  Wczesne  wykrycie  zagrożenia  i  możliwość  zapobiegnięciu 

niebezpieczeństwa  jest  podstawowym  celem  takiego  systemu  [6].  Dzięki  czujnikom  i 

detektorom takim, jak chociażby detektor ruchu możliwa jest reakcja systemu na próby 

włamania  [10].  Reakcje  systemu  mogą  być  bardzo  różne  [9],  od  włączenia  alarmu, 

który  sygnałem  dźwiękowym  zwróci  uwagę  osób  trzecich,  po  automatyczne 

poinformowanie policji o zaistniałych okolicznościach. Bardzo często taki system jest 

połączony z innymi systemami, tj. systemem kamer, który może okazać się kluczowym 

zagadnieniem  dla  policji,  czy  systemem  przeciwpożarowym,  który  w  kilku  zdaniach 

omawiam poniżej.  

 

•  System przeciwpożarowy 

 

Tak  jak  wspomniałem  wcześniej,  jest  on  istotnym  systemem  z  punktu  widzenia 

systemu alarmowego, gdyż bardzo często jest on uruchamiany za jego pośrednictwem.  

Zadaniem  tego  podsystemu  jest  oczywiście  ochrona  budynku  przed  pożarem  wraz  z 

jego mieszkańcami. Taki system najczęściej składa się z dwóch części: sieci czujników 

temperatury  i  dymu  oraz  bezpośredniej  sieci  przeciwpożarowej,  czyli  sieci  różnego 

typu spryskiwaczy [9] [10].  

 

•  System kontroli dostępu 

 

Jeden  z  bardziej  skomplikowanych  systemów.  Ma  zastosowanie  przede  wszystkim  w 

biurowcach i jest oparty najczęściej o system personalizacji. Osoba z grupy osób, która 

ma  dostęp  do  wybranego  budynku  chcąc  wejść  do  niego  musi  być  rozpoznana  przez 

system  personalizacji,  który  w  następstwie  informuje  system  kontroli,  że  dana  osoba 

ma prawo wejścia do budynku.  

Wspomniany  system  personalizacji  zajmuje  się  dostosowywaniem  wymagań 

poszczególnych  osób  w  inteligentnych  budynkach.  Idea  jest  taka,  żeby  osoby 

znajdujące się w grupie objętej dostępem do budynku, mające różne upodobania miały 

background image

 

15 

możliwość  zdefiniowania  systemu  tak  żeby  funkcje  systemu  realizowane 

automatycznie odpowiadały ich wymaganiom. [10] 

 

•  System pogodowy 

 

System,  na  który  składa  się  szereg  czujników,  które  decydują  o  zamknięciu  okien  na 

wypadek  deszczu.  Czujniki  takie  mogą  również  spowodować  przejście  na  niezależne 

zasilanie podczas burzy. 

 

Powyżej  wymieniłem  tylko  podstawowe  podsystemy,  które  wchodzą  w  skład  systemu 

zarządzania budynkiem. Trzeba mieć świadomość, że podobnych podsystemów jest bardzo 

wiele [6]. 

 

3.2

  Sieci domowe w kontekście Inteligentnego Budynku 

 

Całkiem  nie  dawno  temat  sieci  domowych  nie  cieszył  się  tak  dużą  popularnością  jak 

dzisiaj.  Na  skutek  bardzo  szybkiego  rozwoju  Inteligentnego  Budynku,  zainteresowanie 

sieciami  domowymi  diametralnie  wzrosło.  Termin  „Sieć  Domowa„(  Home  Network) 

wygląda  dosyć  niewinnie,  w  rzeczywistości  można  powiedzieć,  że jest  to  sieć  składająca 

się  z  wielu  komputerów  i  urządzeń  peryferyjnych,  które  połączone  są  ze  sobą  istniejącą 

instalacją  telefoniczną  i  elektryczną  lub  bezprzewodową.  [11].  W  odniesieniu  do 

Inteligentnego  domu,  sieci  domowe  można  podzielić  na  dwie  podsieci:  komputerowe 

(HomePNA, HomeRF, inne) i sieci sterujące urządzeniami peryferyjnymi (EIB, X10, PLC, 

Lonworks,  CEBus,  Echonet,  technologie  bezprzewodowe).  Oczywiście  obie  te  podsieci 

muszą umieć „rozmawiać” ze sobą. 

 

background image

 

16 

 

 

Rys3. Wykaz technologii dla sieci domowych [11] 

3.3

  Podział sieci domowych ze względy na użyte medium. 

3.3.1

  Sieci z nowym okablowaniem 

•  Ethernet 10Base-T 

•  HAVi (Home Audio Video interoperability) 

•  EIB (European Installation Bus)    

•  USB (Universal Serial Bus)  

•  Protokół IEEE 1394 (Fireware) 

 

Ethernet 

 

Najważniejszą z tych sieci jest oczywiście sieć Ethernet. Zalety takiej sieci są powszechnie 

znane,  czyli  niezawodność  i  szybkość  przesyłania  danych.  Dużą  wadą,  hamującą  rozwój 

tej sieci jest konieczność dodatkowego okablowania oraz dosyć duży stopień komplikacji 

[7]. Nie będę opisywał tego protokołu, gdyż jest on powszechnie znany i informacje o nim 

są ogólnie dostępne. 

 

HAVi 

 

Komunikacja  wszystkich  urządzeń  w  tej  sieci  odbywa  się  za  pośrednictwem  jednego 

urządzenia  sterującego.  Nośnikiem  sprzęgającym  jest  IEEE  1394.  Dużą  zaletą  jest  to,  że 

background image

 

17 

HAVi  może  operować  na urządzeniach  od  różnych  producentów [19].  System z  definicji 

ma  być  bardzo  łatwy  w  obsłudze  i  dlatego,  kiedy  zostanie  dołączone  jakieś  nowe 

urządzenie,  takie  jak  faks,  czy  drukarka,  to  system  sam  je  skonfiguruje.  Więcej  na  ten 

temat można dowiedzieć się ze strony internetowej 

http://havi.org

.  

 

EIB 

 

Opracowany 

został 

przez 

czołowych 

europejskich 

producentów 

systemów 

elektroinstalacyjnych w 1990 roku [21]. W Polsce pojawił się 6 lat później. Instalacja EIB 

pozwala  na  swobodne  zarządzanie  budynkiem,  czyli  służy  do  szeroko  rozumianego 

sterowania  urządzeniami  elektrycznymi  stosowanymi  w  budownictwie  [21].  Jest  ona 

bardzo  konkurencyjną  instalacją  dla  klasycznej  instalacji  elektrycznej.  Tradycyjne 

elementy sterownicze zostały zastąpione urządzeniami wykonanymi w technice cyfrowej, 

które potrafią wymieniać informacje za pomocą jednego, łączącego wszystkie urządzenia 

elektryczne  przewodu  magistralnego.  Przekrój  takiego  przewodu  przedstawia  rysunek 

numer 4. Jest to dwuparowa skrętka o przekroju żyły 0,8mm, zasilanej napięciem stałym 

24  V.  Do  transmisji  wykorzystywana  jest  tylko  jedna  para  przewodów,  druga  służy  jako 

rezerwa. 

 

 

Rys.4 Przekrój przewodu komunikacyjnego w EIB 

[http://www.e-instalacje.pl/artykul_zdjecia/instabus_art3.jpg]

 

 

 Z  punktu  widzenia  bezpieczeństwa,  wielką  zaletą  jest  fakt,  iż  przez  ten  przewód  płynie 

bezpieczne  napięcie  24V.  Napięcie  230  V  owszem  występuję,  jednak  doprowadzone  jest  

tylko i bezpośrednio do odbiorników prądu (gniazdka elektryczne itp.) [22].   

 

background image

 

18 

W krajach Unii Europejskiej EIB jest jednym z najszybciej rozwijających się standardów 

automatyki.  Szacuje  się,  że  70%  nowo  budowanych  budynków  w  Niemczech  będzie 

posiadało system EIB [21].  

 

Sieć komunikacyjna, EIB jest siecią typu „peer to peer”, w której może funkcjonować do 

57375  urządzeń  [21].  Wszystkie  te  urządzenia  mają  równe  prawa  dostępu  do  medium 

komunikacyjnego. Wynika to bezpośrednio z protokołu CSMA/CA [20].  

Możliwe  topologie  EIB  przedstawia  rysunek  numer  5.  Więcej  informacji  na  temat  EIB 

można dowiedzieć się ze strony internetowej 

http://eib.org

.  

 

 

Rys 5. Możliwe topologie w EIB 

[http://upload.wikimedia.org/wikipedia/commons/b/b4/Topologia_eib.png] 

 

3.3.2

  Sieci bez nowego okablowania  

 

•  HomePNA  (Home  PhoneLine  Alliance)  -  standardy  sieci  oparte  na  skrętce  

telefonicznej;  

•  PLC (PowerLine Communication) – sieć szerokopasmowa oparta na zewnętrznym 

okablowaniu energoelektrycznym 

•  PLC  (PowerLine  Communication)  –  sieć  wąskopasmowa  oparta  na  wewnętrznym 

okablowaniu  elektroenergetycznym.  Do  najczęstszych  protokołów  własnych 

background image

 

19 

należą: 

X10, 

CEBus, 

Lonworks, 

PLT, 

PLUG-IN, 

Echonet.  

 

Do  tej  grupy  zaliczają  się  sieci  oparte  o już  istniejące  okablowanie elektroenergetyczne i 

telefoniczne na skrętce UTP.  

 

HomePNA 

   

Jest  to  sieć,  w  której  urządzenia  połączone  są  za  pomocą  skrętki  telefonicznej.  Obecnie 

przepływność  sieci  wynosi  100  Mb/s.  Specjalne  konsorcjum  o  tej  samej  nazwie,  co 

protokół zajmuje się standaryzacją tego typu systemów sieciowych. Do grupy założycieli 

należą największe firmy na świecie z branży IT, tj.:3COM, IBM, INEL, Hewlett-Packard i 

wiele innych [11]. Obecnie sieć obsługuje do 25 urządzeń. Poniżej przedstawiam rysunek, 

obrazujący idee takiej sieci. 

 

 

 

 

Rys 6. Idea sieci HomePNA 

[http://www.domotica.nl/images/standaard-homepna.jpg]

 

 

Więcej  na  temat  tego  standardu  można  dowiedzieć  się  na  stronie  internetowej 

http://homepna.org

 

PLC 

 

Komunikacja  w  tej  sieci  oparta  jest  o  linie  elektroenergetyczne.  Rozróżnić  można  dwa 

rodzaje takich sieci: szerokopasmową i wąskopasmową. Mnie w szczególności interesuje 

background image

 

20 

sieć 

wąskopasmowa, 

która 

korzysta 

jedynie 

domowego 

okablowania 

elektroenergetycznego, które służy do komunikacji urządzeń elektrycznych. Urządzenia w 

takiej  sieci  działają  w  oparciu  o  różne  standardy  (protokoły).  Postaram  się  wymienić  te 

najbardziej popularne i mające przyszłość i w kilku zdaniach je omówić [11]. 

 

X10 

 

Protokół ten znany jest już od około 25 lat i z założenia przeznaczony jest do sterowania 

urządzeniami  domowymi,  tj.:  oświetleniem,  czy  ogrzewaniem  i  wentylacją  [11,  13]. 

Największą  popularność  zyskał  w  USA,  jednak  technologia  X10  zaczyna  się  też  cieszyć 

dużą popularnością na innych kontynentach [13]. Ważną rzeczą jest to, aby jak największa 

ilość  urządzeń  przeznaczonych  dla  Inteligentnych  Budynków  umiało  obsługiwać  ten 

protokół.  Obliczono,  że  na  rynku  światowym  jest  już  ponad  10  milionów  urządzeń 

obsługujących  ten  protokół.  Rozbudowa  takiej  sieci  jest  rzeczą  niebywale  prostą,  gdyż 

wymaga  jedynie  włączenia  nowego  urządzenia  do  jakiegoś  gniazdka  prądowego  lub 

zamontowania go na szynie DIN (takiej jak przy bezpiecznikach) [13]. Transmisja danych 

cyfrowych  przez  przewody  instalacji  elektrycznej  odbywa  się  przy  użyciu  modulacji 

amplitudowej.  Dane  przesyłane  są  w  specjalnych  ramkach  po  detekcji  przejścia  napięcia 

przemiennego przez zero [13]. Więcej informacji na temat X10 znaleźć można na witrynie 

http://www.cotse.com/dlf/man/x10/index.htm

  

.  

LonWorks 

 

Jeden  z  bardziej  wyrafinowanych  protokołów  komunikacyjnych.  Standard  ten  jest  silnie 

wspierany przez największe koncerny w USA, a także w Europie. Technologia LonWorks 

umożliwia  łączenie  różnorodnych  urządzeń  nie  tylko  po  przewodach  zasilających. 

Kanałem komunikacyjnym równie dobrze może być skrętka telefoniczna, fale radiowe czy 

podczerwień  [15].  Komunikacja jest  odporna  na  zakłócenia  dzięki  specjalnym  systemom 

kontroli  błędów,  które  są  wbudowane w  urządzenia  obsługujące  ten  standard.  Jak  podaje 

Echelon  (firma  zajmująca  się  tym  protokołem),  w  skład  systemu  może  wchodzić 

maksymalnie  32  tysiące  urządzeń  [15].  Wąskopasmowe  urządzenia  PLC  pracujące  w 

omawianym  systemie  składają  się  typowo  z  kilku  komponentów:  zasilacza, 

mikroprocesora,  transceivera,  oraz  elementu  sprzęgającego  sygnał  danych  z  siecią 

background image

 

21 

energetyczną.  Więcej  informacji  na  ten  temat  można  znaleźć  na  witrynie 

http://www.echelon.com/developers/lonworks/faq.htm

.  

 

CEBus i PLUG-IN 

 

Urządzenia    produkowane  przez  firmę  Intellon,  która  promuje  system  CEBus  posiadają 

układ nadawczo-odbiorczy oraz mikrokontroler. Szybkość transmisji dochodzi do 10kb/s z 

wykorzystaniem    techniki  rozpraszania  widma  [11].  Jest  to  otwarty  standard,  który 

zapewnia  specyfikację  oddzielnej  warstwy  fizycznej  dla  komunikacji  liniami 

elektroenergetycznymi,  światłowodami,  skrętkami,  podczerwienią  oraz  RF  [13]. 

Specyfikacja definiuje wspólną składnię komend, dzięki której następuje komunikacja (jest 

to tzw. język CAL, ang. Common Application Language) [13]. Więcej informacji na temat 

tego protokołu znaleźć można na stronie internetowej firmy Intellon ( 

http://intellon.com

 ).  

Protokół  PLUG-IN  w  pełni  odnosi  się  do  warstwowego  modelu  OSI.  Zostały  w  nim 

zdefiniowane  wszystkie  warstwy  oprócz  sesji  i  prezentacji  [11].  Protokół  PLUG-IN  jest 

podobny  do  CEBus.  Różnica  jest  taka,  że  Intelogis  (firma  upowszechniająca  PLUG-IN) 

promuje model klient/serwer, a nie model „peer to peer” [17]. Dużą wadą obu standardów 

(w porównaniu do standardu X10) jest wysoka cena urządzeń obsługujących te standardy.  

 

ECHONET 

 

Echonet  wywodzi  się  z  Japonii  i  jest  jedną  z  najnowszych  technologii  sieci  domowych. 

Oprócz  obsługi  linii  energetycznych,  specyfikacja  umożliwia  wykorzystanie  łączy 

bezprzewodowych  a  także  łączy  IrDA  [11].  Patrząc  na  ten  protokół  z  punktu  widzenia 

modelu OSI, warstwę fizyczną sieci można rozszerzać na inne media, chociażby takie jak 

Bluetooth  –  oczywiście  przez  dodanie  odpowiednich  sterowników.  Echonet  cechuje 

otwarta architektura. Producenci mogą więc dodawać własne usługi. Więcej na ten temat 

można dowiedzieć się ze strony internetowej 

http://www.echonet.org

 

Współczesne standardy PLC 

 

Obecnie  standardami  PLC  zajmuje  się  kilka  organizacji  na  świecie.  Na  kontynencie 

europejskim  najważniejszą  jest  Open  PLC  European  Research  Alliance  (OPERA),  która 

częściowo  finansowana  jest  przez  Komisję  Europejską  [16].  Produkty  oparte  na 

background image

 

22 

specyfikacji  tego  standardu  będą  w  stanie  przesłać  dane  z  prędkością  200  Mb/s  [16]. 

Więcej informacji na jego temat można znaleźć na 

www.ist-opera.org

Inne gremium standaryzacyjne, Home Plug Alliance  zajmuje się specyfikacją HomePlug 

AV,  która  teoretycznie  oferuje  transfer  do  200  Mb/s  (podobnie  jak  OPERA),  lecz  w 

praktyce  jest  trochę  inaczej.  W  rzeczywistości  sieć  oparta  o  ten  standard  umożliwia 

przesyłanie  danych  z  prędkością  rzędu  14  Mb/s  (HomePlug  1.1)  i  85  Mb/s  (HomePlug 

Highspeed)  [18].  Specyfikacja  opisuje  HD-PLC,  która  umożliwia  prędkość  przesyłania 

danych  na  poziomie  170  Mb/s,  lecz  na  razie  jest  to  rozwiązanie  czysto  teoretyczne. 

Również teoretyczna jest  możliwość podłączenie 253 adapterów maszyn, gdyż producenci 

nie  zalecają  wykorzystywania  więcej  niż  dziesięciu  jednocześnie  [18].  Jednak  istotną 

rzeczą  jest  to,  iż  nowy  standard  zapewnia  szyfrowanie  transmitowanych  danych  [16]. 

Zainteresowanie  standardem  jest  dosyć  duże,  gdyż  można  zaobserwować  powiększającą 

się  listę  certyfikowanych  przez  HomePlug  Alliance  urządzeń.  Niestety  zdecydowana 

większość  produktów  przeznaczona  jest  na  rynek  amerykański,  gdzie  napięcie  w 

instalacjach  elektrycznych  wynosi  110V.  Warto  również  zauważyć,  że  specyfikacja 

opisująca  ten  standard  nie  jest  ujawniona.  Więcej  informacji  można  znaleźć  na  firmowej 

stronie  internetowej  firmy  dostarczającej  układy  scalone  dla  urządzeń  zgodnych  z  tym 

standardem 

http://intellon.com

.   

 

Oprócz  OPERY  i  HomePlug  dwie  grupy  producentów  zawiązały  współpracę  w  celu 

stworzenia  standardu  PLC.  Pierwszą  jest  United  Powerline  Association  (w  skład  której 

wchodzi  m.in.  Ascom),  oraz  CE-Powerline  Communications  Alliance  (w  skład  której 

wchodzą m.in. Panasonic i Sony).  

 

Wspomniana przeze mnie firma Ascom posiada swój własny system PLC (ASCOM PLC), 

który  składa  się  z  systemów  zewnątrzbudynkowego  (outdoor)  i  wewnątrzbudynkowego 

(indoor).  Mnie  interesuje  ten  drugi.  System  wewnątrzbudynkowy  rozsyła  sygnał  do 

wszystkich  gniazdek  w  budynku.  Umożliwia  przesyłanie  danych  przez  sieć  energetyczną  

niskiego  napięcia  z  szybkością  4,5  Mb/s  [17].  Producent  podaje  jednak,  że  praktyczna 

wartość  tego  parametru  to  3  Mbit/s.  Urządzenie  końcowe  podłączone  do  gniazdka  to 

samokonfigurujący  się  adapter  z  wbudowanymi  interfejsami  10Base-T  i  USB  [17]. 

Adapter  może  również  posiadać  złącze  telefoniczne  a/b,  dzięki  któremu  możliwe  jest 

podłączenie telefonu analogowego. System umożliwia także stworzenie sieci domowej, do 

której  dostęp  jest  zapewniony  z  każdego  gniazdka  elektrycznego  w  budynku  [17]. 

background image

 

23 

Omawiany system charakteryzuje się ograniczonym zasięgiem, co oznacza, iż długość linii 

dystrybucyjnej pomiędzy stacją transformatorową a budynkiem odbiorcy energii nie może 

przekroczyć  350  m,  a  długość  przewodów  domowej  instalacji  elektrycznej  łączącej 

urządzenia  w  sieć  lokalną  nie  powinna  być  większa  niż  70  m  [17].  Więcej  informacji 

można się dowiedzieć ze strony internetowej 

http://ascom.com

.  

 

Największą  konkurencją  dla  systemu  oferowanego  przez  firmę  Ascom  jest  rozwiązanie 

PLUS  (Power  Line  Ultimate  System)  izraelskiej  firmy  Main.net.  Niestety  producent  nie 

podaje  dokładnych  parametrów  technicznych  produkowanych  urządzeń.  Maksymalna 

szybkość transmisji oferowana przez system nie przekracza 2,5 Mbit/s [14]. Na szczególną 

uwagę  zasługuje  internetowy  terminal  HotPLUS,  który  po  podłączeniu  do  dowolnego 

gniazdka  zasilającego  w  budynku  umożliwia  dostęp  do  różnorodnych  usług,  takich  jak: 

poczta  elektroniczna,  wideo-konferencje,  oraz  telefonia  pakietowa  [14].  Szczegółowe 

informacje  na  jego  temat  można  znaleźć  na  stronie  internetowej  firmy  MainNet 

Communications 

http://www.mainnet-plc.com

.  

 

 

Podsumowując  bardzo  rozległy  temat  jakim  jest    PLC,  warto  zauważyć  że  

problemem PLC nie jest brak standardów, lecz paradoksalnie ich nadmiar. W przyszłości 

może  powstanie  jedna,  ale  za  to  dopracowana  specyfikacja,  która  ułatwi  rozwój  tego 

standardu.  

 

3.3.3

  Sieci bezprzewodowe 

•  IrDA 

•  HomeRF 

•  ZigBee 

•  Bluetooth 

 

3.3.3.1

  IrDA 

 

Jest  protokołem  transmisji  cyfrowych  w  podczerwieni,  który  powstanie  zawdzięcza 

normalizacji dotyczącej pilotów do telewizorów  i magnetowidów. Protokół ten jest silnie 

wspierany  przez  największe  firmy  na  świecie.  Na  razie  IrDA  zapewnia  transmisję  typu 

background image

 

24 

punkt-punkt  na  odległość  ok.  1  m  w  zakresie  falowym  850-900  nm.  [23].  Osiągane 

prędkości  przepływu  danych  dochodzą  do  16  Mb/s,  ale  kąt  transmisji  nie  może 

przekroczyć  30°  [23].  Prędkość  transmisji  jest  ściśle  związana  z  odległością 

komunikujących  się  urządzeń.  Wystarczy  że  odległość  tą  zwiększymy  do  5  m,  wówczas 

szybkości transmisji spadnie do 75 kb/s. Dobrze ilustruje to rysunek numer 7 [23]. Patrząc 

na  ten  rysunek  można  zauważyć:  IrDA-Data,  IrDA-Control  oraz  AIr.  Są  to  standardy 

komunikacji  za  pośrednictwem  fal  podczerwonych.  IrDA  DATA  przeznaczony  jest  dla 

transmisji danych (VFIR, FIR, SIR) [23], IrDa Control obejmuje aspekty sterowania a AIr 

jest jeszcze na etapie rozwoju. 

 

 

Rys. 7 Prędkości transmisji w porównaniu z  odległościami w IrDa i Bluetooth [12] 

 

Architektura  tego  standardu  składa  się  z  kilku  protokołów  i  pokazuje  to  rysunek  nr.8. 

Protokoły  te  podzielone  są  na  warstwy  spełniające  wiele  funkcji.  A  warstwy  można  

podzielić na 3 podgrupy [11]:  

- protokoły implementowane obowiązkowo 

- protokoły opcjonalne 

- protokoły multimedialne 

 

background image

 

25 

 

Rys. 8 Stos protokołów IrDA [12] 

 

W skład pierwszej podgrupy (protokołów obowiązkowych) wchodzą: 

 

•  Warstwa  fizyczna  (Physical  Layer)  -  tutaj  następuje  kodowanie  danych, 

synchronizacja ramek, oraz sprawdzanie bitu nadmiarowości CRC [12]. 

 

•  IrLAP  -  jest  to  protokół  dostępu  do  łącza  i  odpowiada  za  niezawodny  transfer 

danych.  Jej  zadaniem  jest  m.in.  zawiadamianie  warstw  wyższych  o  zaistniałych 

problemach,  tj.  przerwanie  wiązki  światła  itp.  Jeśli  taka  sytuacja  ma  miejsce 

wówczas  użytkownik  może  otrzymać  stosowny  komunikat  informujący  o 

problemie.    Trzeba  nadmienić  że  wszystko  to  odbywa  się  bez  przerwania 

połączenia i utraty transmitowanych danych [12]. 

 

•  IrLMP  -  protokół  zarządzania  łączem,  który  odpowiada  za  multipleksowanie 

usług i aplikacji [12]. 

 

• IAS - protokół dostępu do informacji [12]. 

 

 

 

background image

 

26 

Zastosowanie  protokołów  opcjonalnych  zależy  od  konkretnej  aplikacji.  Do  tej  podgrupy 

należą [12]: 

 

•  IrTTP  -  protokół  transportowy,  pełni  bardzo  ważną  funkcję,  gdyż  zapewnia 

sterowanie strumieniem w kanale. Funkcja ta jest często rekomendowana dla wielu 

aplikacji. 

 

•  IrOBEX  -  ułatwia  transfer  plików  oraz  innych  obiektów  danych.  protokół  ten 

określa zasady wymiany obiektów (pliki, wszelkiego rodzaju informacje sterujące) 

pomiędzy  stacjami  (komputery  klasy  PC,  urządzenia  telekomunikacyjne,  sprzęt 

gospodarstwa domowego, itp.) 

 

  

• IrCOMM -  jego zadaniem jest emulowanie portów szeregowych i równoległych. 

 

• IrLAN - określa zasady współpracy z sieciami lokalnymi (zapewnia urządzeniom, 

przykładowo  notebookom,  dostęp  do  sieci  lokalnej  za  pośrednictwem 

podczerwieni).

 

 

Protokoły multimedialne zaliczające się do grupy protokołów opcjonalnych to: 

 

•  IrMC  -  jego  zadaniem  jest  określenie  zasad  współpracy  ze  sprzętem 

telekomunikacyjnym (telefony komórkowe, itp.) 

 

 

• IrTran-P - określa zasady przesyłu i reprezentacji obrazów cyfrowych. 

 

Dodając  protokół  warstwy  aplikacyjnej    w  bardzo  łatwy  sposób  mamy  możliwość 

uzyskania  dodatkowej  usługi  [23].  Ponadto  standard  ten  cechuje  możliwość  zwiększania 

szybkości 

w  następnych  wersjach,  nie  tracąc  jednocześnie  kompatybilności  ze  starszymi.  Poprzez 

implementowanie  tylko  niektórych  wybranych  protokołów  (z  puli  protokołów 

opcjonalnych)  możemy  uzyskać  pewnego  rodzaju  oszczędność  (przykładowo  aparaty 

cyfrowe z IrDA nie musza implementować protokołu dostępu do sieci LAN ) [12].

 

 

background image

 

27 

3.3.3.2

  HomeRF 

 

Protokół  ten  wyróżnia  się  tym  z  pośród  innych,  że  równocześnie  zapewnia: 

szerokopasmowy  dostęp  do  Internetu,  współdzieli  zasoby,  wiele  sesji  strumieni 

medialnych a także kilka wysokiej jakości połączeń głosowych [12]. Dobrze to uwidacznia 

rysunek numer 9, gdzie przedstawiłem stos protokołów.  

 

 

   Rys. 9 Specyfikacja HomeRF [12] 

 

Urządzenia    HomeRF  operują  w  globalnie  otwartym  paśmie  2,4  GHz,  czyli  w  takim 

samym  co  Bluetooth  i  kuchenki  mikrofalowe  [12].  Stosują  technologię  skoków  po 

częstotliwościach - od 50 do 100 skoków na sekundę. Problem utraty pakietów wiąże się z 

interferencjami  wywołanymi  przez  inne  urządzenia  działające  w  tym  samym  paśmie  lub 

inne sieci bezprzewodowe [12]. 

W HomeRF zaimplementowano kilka mechanizmów które zwalczają ten problem. Pakiety 

z danymi podlegają ADS [24], czyli mechanizmowi pozwalającemu uniknąć kolizji. Jeśli 

węzeł  nie  otrzyma  potwierdzenia  odbioru  pakietu,  wówczas  przed  próbą  powtórnego 

wysłania pakietu odczeka jakiś zadany okres czasu, odpowiadający pewnej liczbie szczelin 

czasowych.  Innym  mechanizmem  który  został  zaimplementowany  w  HomeRF  jest 

mechanizm  o  nazwie    PADS  [24].  Jest  to  metoda  która  pozwala  przypisać  konkretnym 

pakietom  priorytet  dostępu  do  kanału  komunikacyjnego  (mechanizm  przydatny  np.  w 

sesjach wideo).  

 

background image

 

28 

Kilka  informacji  o  stosie  protokołów  HomeRF.  Za  szybkość  przesyłania  danych 

odpowiada  oczywiście  warstwa  fizyczna.  Warstwa  wyższa  (czyli  MAC)  odpowiada  za 

bezpieczeństwo, oraz definiuje typy obsługi danych (np. video) [12]. 

Trzeba  wspomnieć  o  najważniejszym  protokole,  który  został  zdefiniowany  w  HomeRF, 

czyli  o  SWAP  [24]  (umiejscowiony  w  warstwie  MAC).  Umożliwia  on  przenoszenie 

zarówno  głosu  jak  i  danych.  Interaktywne  transakcje  głosowe  wykorzystują  TDMA, 

natomiast  transakcje  asynchroniczne  (usługi  bezpołączeniowe,  używane  typowo  w  ruchu 

TCP/IP) wymagają CSMA/CA [24]. W porównaniu z Ethernetem, można powiedzieć, że 

HomeRF  jest  jego  przeciwieństwem  ponieważ  używa  dwóch  oddzielnych  protokołów 

dostępu do medium. 

Wybiegając  w  przyszłość,  zagrożeniem  z  punktu  widzenia  firm  które  są  mocno 

związane  z  rozwojem  tego  standardu    są  technologie  HomePNA  i  PLC.  Kto  zwycięży, 

dowiemy się w niedalekiej przyszłości. 

 

3.3.3.3

  ZigBee (IEEE 802.15.4) 

 

Promocją tego standardu zajmuje się grupa ZigBee Alliance, do której należą największe 

firmy zajmujące się oprogramowaniem i produkcją sprzętu elektronicznego. Najważniejszą 

cechą  tego  standardu,  którą  należy  wymienić  w  pierwszej  kolejności  jest  niski  pobór 

energii  urządzeń  które  się  ze  sobą  komunikują.  Inną  zaletą  jest  prostota  budowy  sieci 

opartej o ZigBee [25].  

Urządzenia  pracujące  w  takiej  sieci  działają  w  zakresach  częstotliwości  które  nie 

wymagają pozwolenia [26]. Dobrze to obrazuje rysunek numer 10. 

 

background image

 

29 

 

Rys. 10 Ulokowanie kanałów standardu 802.15.4. [25] 

 

We wszystkich 27 kanałach komunikacyjnych wykorzystuje się proste rozpraszanie widma 

DSSS [26].  

Pozostałe parametry tego standardu pokazuje tabela numer 1 

 

Pasmo 

868/915 MHz (11 kanałów), 2,4 GHz (16 kanałów) 

Zasięg 

10-30 m 

Opóźnienie 

15 ms 

Adresowanie 

8 lub 64 bity 

Dostęp do kanału 

CSMA-CA  

Przepływność 

868 MHz: 20kb/s; 915 MHz: 40kb/s; 2,4 GHz: 250kb/s 

Temperatura pracy 

Od -40 do 85˚C 

Tab.1 Podstawowe parametry standardu ZigBee 

 

Stos protokołów w ZigBee przedstawia rysunek na następnej stronie. 

background image

 

30 

 

     Rys.11 Stos protokołów ZigBee [25] 

 

Na  uwagę  zasługuje  jedynie  warstwa  łącza  danych,  w  której  znajduje  się  specjalna 

podwarstwa  zbieżności  SSCS  [26]  odpowiedzialna  za  współpracę  z    logiczną  kontrolą 

łącza  zgodną  z  802.2.  SSCS  zapewnia  kompatybilność  pomiędzy  różnymi 

implementacjami LLC. 

ZigBee  przewidział  w  swojej  specyfikacji  specjalny  tryb  pracy  dla  aplikacji  które 

wymagają  małych, stałych  opóźnień. Wówczas ustalony  „koordynator” koordynuje  pracę 

urządzeń  mu  podległych.  Realizuje  to  poprzez  wysyłanie  w  odpowiednim  czasie 

specjalnych  ramek  kontrolnych.  Odstęp  między  nimi  może  wynosić  od  15  ms  do  245  s. 

Dostęp  do  szczelin  czasowych  w  których  można  coś  wysłać  odbywa  się  na  zasadzie 

rywalizacji,  lecz  urządzenie  koordynujące  ma  możliwość  przypisania  szczeliny  czasowej   

urządzeniu,  które  wymagać  będzie    określonego  pasma  i  opóźnienia  [25].  Który 

mechanizm  zostanie  użyty,  zależy  od  topologii  sieci.  Możliwe  topologie  przedstawia 

rysunek numer12. 

 

 

Rys.12 Topologie sieci ZigBee [25] 

background image

 

31 

 

Obecnie  ZigBee  jest  silną  konkurencją  dla  standardu  X10  czy  LonWorks,  które  w  dużej 

mierze  ograniczone  są  przez  kable.  Największym  rywalem  jest  jednak  Bluetooth,  który 

opisuję szerzej w następnym podrozdziale. Dużą zaletą ZigBee w odniesieniu do Bluetooth 

jest  zasięg  między  węzłami,  który  jest    rzędu  ok.  100m.  Inną  pozytywną  cechą  tego 

standardu jest  to, że urządzenia pracujące w standardzie Bluetooth muszą być ładowane co 

kilka lub kilkanaście dni. ZigBee przewyższa pod tym względem Bluetooth, uwzględniono 

w  nim  bardzo  niski  pobór  mocy  (urządzenia  korzystające  z  pary  baterii  AAA  mogą 

wytrzymać  nawet  2  lata)  [25].  Wynika  to  z    charakteru  transmisji  (urządzenie  wysyłają 

informacje  tylko  wtedy  kiedy  wymaga  tego  aplikacja  –  dostęp  do  kanału  jest  więc  tylko 

chwilowy). 

 

3.3.3.4

  Bluetooth 

 

Technologia  ta  jest  pomysłem  inżynierów  szwedzkiej  firmy  Ericsson.  Prowadząc 

kilkuletnie  badania  nad komunikacją  bezprzewodową,    zaprosili oni  do  współpracy  kilka 

innych firm. Firmy te założyły w 1998 roku grupę Bluetooth Special Interest Group (SIG), 

która funkcjonuje do tej pory i zajmuje się rozwijaniem tej technologii [12].  

System Bluetooth pracuje na częstotliwości 2,4 GHz, w jednym z trzech pasm ISM. Pasma 

ISM zostały udostępnione na całym świecie systemom radiowym o małej mocy. Pasma te 

w większości państw nie są licencjonowane.  

 

 

Rys.13 Rozmieszczenie kanałów w systemie Bluetooth  

 

Jak widać z powyższego rysunku, kanał radiowy zajmuje 1 MHz, a liczba kanałów wynosi 

79. Dopuszczalne odchylenie od  częstotliwości nośnej nie może być większe ani mniejsze 

od 75 kHz [27].  

background image

 

32 

Twórcy  systemu  Bluetooth  ze  względu  na  różnego  rodzaju  zakłócenia  generowane  przez 

urządzenia  działające  w  tym  samym  paśmie  zastosowali  technikę  rozpraszania  widma 

sygnału  z  pseudolosowym  przeskokiem  częstotliwości.  Liczba  skoków  w  ciągu  sekundy 

wynosi  1600.  Różnica  między  częstotliwościami  po  skokach  jest  całkowitą  krotnością  1 

MHz. Sens działania mechanizmu jest taki, że nadajnik nie pracuje na jednej częstotliwości 

– zmienia ją z odpowiednią częstotliwością zgodnie z pewną sekwencją skoków. W bardzo 

podobny  sposób  pracuje  odbiornik,  który  nie  dostraja  się  do  stałej  jednej  częstotliwości 

lecz zmienia ją ze znaną sekwencją [27]. Z punktu widzenia bezpieczeństwa, rozwiązanie 

to  wydaje  się  być  interesujące,  gdyż  odbiornik  który  nie  będzie  znał  odpowiedniej 

sekwencji  nie  będzie  mógł  odebrać  przesyłanego  sygnału  Ale  czy  jest  to  mechanizm 

wystarczający?  Na  to  pytanie  odpowiem  w  dalszej  części  pracy.  Sekwencja  przeskoków 

jest  unikalna  w  obrębie  jednej  sieci  i  określona  przez  BD_ADDR  (adres  ten  jest 

odpowiednikiem  adresu  MAC  elementów  sieci  LAN)  [27].Z  liczby  przeskoków 

częstotliwości  w  ciągu  jednej  sekundy  można  wyliczyć  czas  pracy  jednej  szczeliny 

czasowej  równej  625us  [27].  Urządzenia  typu  Master  przesyłają  pakiety  w  parzystych 

szczelinach czasowych, natomiast urządzenia typu Slave zarezerwowane mają nieparzyste 

szczeliny czasowe.  

Kilka  słów  o  urządzeniach  typu  Master  (urządzenia  nadrzędne)  i  typu  Slave 

(urządzenia podrzędne). Zgodnie ze specyfikacją każde urządzenie w sieci Bluetooth może 

pełnić  dowolną  z  tych  ról  [27].  Oczywiście  są  pewne  zasady  co  do  tego.  Załóżmy,  że 

mamy  pikosieć  składającą  się  z:  urządzenia  typu  Master  jakim  może  być  przykładowo 

komputer i urządzenia typu Slave jakim może być klawiatura. Do istniejącej sieci chcemy 

dołączyć  mysz.  Podłączając  ją  do  zasilania,  automatycznie  powodujemy  utworzenie 

tymczasowej nowej pikosieci, w której urządzeniem Master staje się to nowo przyłączone 

urządzenie. W tym momencie następuje realizacja procedury PAGE, która inicjowana jest 

zawsze  przez  urządzenie  Master  [27].  Nadajnik  (mysz)  nie  wie  na  jakiej  sekwencji 

kanałów  będzie  mógł  odbierać  dane  odbiornik,  ponieważ  ich  zegary  nie  są  jeszcze  

zsynchronizowane.  Dlatego  następuje  wysyłanie  16  identycznych  ciągów  wiadomości 

(tzw.  kodów  DAC)  na  16  różnych  częstotliwościach,  słuchając  w  przerwach  czy  nie 

nadchodzi odpowiedź. Jeśli nie otrzyma odpowiedzi wchodzi w stan uśpienia na 1,28 s. Po 

tym czasie wysyła wiadomości na kolejnych 16 częstotliwościach [27]. Czyli maksymalny 

czas  po  którym  nastąpi  komunikacja  to  2,56  s.  Aby  odbiornik  (komputer)  poprawnie 

zinterpretował  wiadomość,  co  1,28  s.  wykonuje  procedurę  PAGE  SCAN  (co  pewien 

określony  czas  urządzenie  nasłuchuje  na  jednym  z  32  kanałów  nadejścia  swojego  kodu 

background image

 

33 

DAC). Po odbiorze własnego kodu DAC urządzenie (odbiornik) przechodzi w tryb PAGE 

RESPONSE,  czyli  pakiety  potwierdzające,  przesyłane  są  na  tej  samej  częstotliwości  na 

której zostały odebrane (bo nie ma jeszcze synchronizacji zegarów). Dopiero po odebraniu 

kodu  DAC,  wysłaniu  potwierdzenia,  otrzymaniu  pakietu  FHS

1

,  wysłaniu  kolejnego 

potwierdzenia,  następuje  synchronizacja  zegarów  [27].  Należy  zauważyć,  iż  komputer  w 

tej sytuacji pełni zarówno rolę Master (gdyż jest połączony z klawiaturą) i na krótko rolę 

Slave (dla myszy). Przyłączanie się nowych urządzeń do komputera, nie powoduje żadnej 

przerwy w istniejącym połączeniu pomiędzy komputerem a klawiaturą. Po synchronizacji 

zegarów, mysz przechodzi w stan w którym pełni rolę urządzenia Slave [27]. 

W momencie gdy mamy zestawione już połączenie, po opisanej powyżej operacji, każde 

kolejne  urządzenie  dołączając  się  do  połączonych  urządzeń  staje  się  urządzeniem  typu 

Slave tworząc tym samym pikosieć z jednym elementem nadrzędnym [27]. 

 

 

Rys.14 Pikosieć: Jedno urządzenie Master (M) i cztery urządzenia Slave (S) 

 

Pikosieć tworzona jest tylko wtedy, gdy istnieje potrzeba komunikacji między 

urządzeniami i wówczas gdy taka   potrzeba zostaje zaspokojona, pikosieć przestaje 

istnieć.  Dzięki  mechanizmowi  przeskoków  po  częstotliwościach  możliwa  jest  sytuacja  w 

której na jednym obszarze będą współistnieć dwie lub więcej pikosieci [27]. 

 

                                                 

1

 Pakiet FHS - służy do synchronizowaniu zegarów i przekazania sekwencji przeskoków po kanałach 

background image

 

34 

 

Rys.15 Dwie pikosieci mogą występować na jednym obszarze, nie zakłócając się 

nawzajem. 

 

Może się jeszcze zdarzyć sytuacja w której urządzenie w jednej pikosieci pełni rolę master 

a  w  drugiej  pikosieci  rolę  Slave.  Wówczas  mamy  do  czynienia  z  połączeniem  dwóch 

pikosieci w sieć zwaną scatternetem (siecią rozproszoną) [27]. 

 

 

Rys.16 Pikosieci mogą tworzyć sieci rozproszone (scatternet). 

 

Są dwa rodzaje połączeń w systemie Bluetooth, które można podzielić na: 

•  SCO (Synchronous Connection Oriented) – protokół transmisji dźwięku 

•  ACL (Asynchronous Connectionless Links) – protokół transmisji danych 

Transmisja dźwięku różni się od transmisji danych tym, że jest synchroniczna, jej pakiety 

nie  zawierają  CRC  i  nie  są  retransmitowane  [27].  Pasmo  podstawowe  Bluetooth  jest  w 

background image

 

35 

stanie  równocześnie  obsługiwać  jedno  łącze  asynchroniczne  dla  transmisji  danych  i  do 

trzech  synchronicznych  dla  transmisji  głosu  (połączenia  mogą  być  zestawione  z  tym 

samym lub różnymi urządzeniami Slave) [27]. 

 

 

 
SCO 

 
ACL 

asynchroniczna 

 

Transmisja 

 

synchroniczna 

symetryczna 

asymetryczna 

 

Połączenie 

 

Do 3 równoległych kanałów po 

64 kb/s w każdą stronę 

 

433  kb/s  w  każdą 

stronę 

721  kb/s  w  jedną 

stronę  i  57,6  kb/s 

w drugą. 

Tab.2 Przepustowość kanałów transmisyjnych 

Specyfikacja Bluetooth dzieli urządzenia na trzy klasy:  

• 

Klasa 1 - 100 mW, zasięg 100m  

• 

Klasa 2 - 2,5 mW, zasięg 10m  

• 

Klasa 3 - 1 mW, zasięg 1m  

Większość urządzeń należy do klasy 2 lub 3.  

Stos protokołów przedstawia poniższy rysunek. 

 

Rys.17 Stos protokołów Bluetooth 

background image

 

36 

Jak widać na powyższym rysunku  stos protokołów można podzielić na 3 grupy: 

•  Grupa protokołów transportowych 

Zadaniem  tej  grupy  protokołów  jest  zestawienie  fizycznych  i  logicznych  połączeń 

między  urządzeniami,  umożliwiają  również  wzajemną  lokalizację.  W  skład  tej  grupy 

wchodzą:  protokoły  radiowe,  protokoły  pasma  podstawowego,  menedżera  połączeń, 

kontrolera hosta i połączenia logicznego, a także HCI (interfejs kontrolera hosta) [8]. 

•  Grupa protokołów pośredniczących 

Protokoły z tej grupy umożliwiają poprawną współpracę urządzeń Bluetooth z innymi 

standardami  przemysłowymi.  W  skład  tej  grupy  wchodzą:  protokół  emulujący  port 

szeregowy  (RFCOMM),  protokół  poszukiwania  usług  (SDP),  protokół  sterowania 

telefonem (TCS) [8]. 

•  Grupa aplikacji (oprogramowanie) 

Jest  to  grupa,  która  nie  ukazała  się  w  specyfikacji.  SIG  nie  zajmuje  się  tymi 

protokołami [8]. 

 

Celem  pracy  nie  jest  dogłębne  przedstawienie  protokołu  jakim  jest  Bluetooth,  jednak  z 

uwagi  na  to  że  jest  ważną  częścią  mojego  projektu,  wchodzącego  w  zakres  tej  pracy, 

wiedza  na  temat  protokołów  pośredniczących  wydaje  się  niezbędna  w  celu  dogłębnego 

zrozumienia  zasady  działania  całej  aplikacji.  W  części  poświęconej  praktycznej  części 

pracy  staram  się  omówić  najważniejsze  aspekty  związane  z  tymi  protokołami,  jednak 

szczegółowe  informacje  na  ten  temat  można  znaleźć  w  oficjalnej  specyfikacji  Bluetooth 

[27]. 

 

 

 

 

 

 

 

 

 

 

background image

 

37 

4

  Symbian – system operacyjny 

4.1

  Informacja ogólne 

 

Każdy,  nawet  najprostszy  model  telefonu  komórkowego  posiada  system  operacyjny.  Im 

bardziej  zaawansowana  konstrukcja,  tym  bardziej  rozbudowany  system.  Telefon 

komórkowy  można  porównywać  w  pewien  sposób  do  komputera.  Posiada  wyświetlacz, 

klawiaturę, pamięć, procesor. Zazwyczaj wszystko to rozmieszczone jest na kilku układach 

scalonych. Aby wszystko ze sobą współgrało niezbędny jest system operacyjny [30].  

Większość  systemów  na  telefon  komórkowy  ma  zasadniczą  wadę,  otóż  aplikacje 

przeznaczone  dla  jednego  modelu  nie  działają  na  innym.  Istniejący  problem  zmusił 

producentów  telefonów  do  opracowania  uniwersalnego  systemu  na  który  zostanie 

napisanych  wiele  aplikacji  i  w  ten  sposób  telefony  zyskają  na  popularności  [30]. 

Pierwszym  takim  systemem  jest  Palm  OS.  Niestety  telefony  wyposażone  w  ten  system 

straciły  na  „użyteczności”,  gdyż  przestały  być  intuicyjne  w  obsłudze,  korzystanie  z  nich 

przypomina obsługę komputera. W chwili obecnej system ten jest używany zasadniczo na 

palmtopach (mały, przenośny komputer osobisty, w skrócie PDA) [30].  

W  2000  roku  na  rynku  pojawił  się  pierwszy  model  telefonu  komórkowego  z  systemem 

Symbian 5.0 [30]. Rok później pojawił się już telefon z systemem Symbian 6.0, jednak o 

kompatybilności  obu  systemów  nie  było  mowy.  Dopiero  w  następnych  modelach  z 

Symbianem można docenić przenośność aplikacji pomiędzy różnymi komórkami [30]. W 

tej  chwili  na  rynku  jest  już  kilka  wersji  tego  najpopularniejszego  systemu  operacyjnego 

przeznaczonego  w  głównej  mierze  na  telefony  komórkowe  (ma  zastosowanie  również  w 

PDA)  [29].  Omawiam  je  w  następnym  podrozdziale.  Od  powstania  Symbiana  sprzedano 

już  ponad  126  milionów  aparatów  w  niego  wyposażonych  i  z  każdym  dniem  ta  liczba 

rośnie [29].  Ze strony Microsoftu odpowiedzią na Symbiana był i jest do tej pory system 

Pocket PC: Phone Edition, jednak nie znalazł większego uznania gdyż podobnie jak Palm 

OS  jest  mało  intuicyjny.  Następca  tego  systemu,  mowa  o  systemie  z  rodziny  Windows 

Mobile  jest  już  godnym  konkurentem  Symbiana.  Jednak  nie  będę  zajmował  się 

omawianiem  tego  systemu  z  uwagi  na  to,  iż  nie  wchodzi  on  w  zakres  mojej  pracy. 

Informacje  na  jego  temat  można  znaleźć  na  oficjalnej  stronie  Microsoftu 

http://microsoft.com

.  

 

background image

 

38 

4.2

  Dlaczego Symbian? 

 

Można  zadać  pytanie  dlaczego  w  swojej  aplikacji  użyłem  telefonu  komórkowego  z 

systemem  operacyjnym  Symbian  OS?  Nim  odpowiem  na  to  pytanie  pozwolę  sobie 

zauważyć,  iż  inne  systemy  są  równie  dobre  z  punktu  widzenia  funkcjonowania  telefonu 

komórkowego  jako  urządzenia  sterującego  innymi  urządzeniami  w  Inteligentnym 

Budynku.  Windows  Mobile  jest  rozwiązaniem  alternatywnym.  Silnie  wspieranym  przez 

Microsoft i kreowanym na lidera systemów operacyjnych wśród telefonów komórkowych 

w przyszłości. Za Symbianem przemawiają jednak pewne liczby. Otóż warto wiedzieć, że 

w  pierwszym  kwartale  2007  roku  sprzedano  15.9  milionów  telefonów  z  Symbianem 

(wzrost o 35.9% w stosunku do pierwszego kwartału 2006) [29]. Obecnie dostępnych jest 

ponad  7478  różnego  rodzaju  programów  dla  tego  systemu  operacyjnego  [29].  Na  chwilę 

obecną  istnieje  już  55  różnych  modeli  telefonów  opartych  na  Symbianie.  System  ten 

dominuje  na  rynku  telefonów  inteligentnych  mając  70%  udziałów,  Linux  ma  20%  a 

Microsoft i Palm OS tylko 10% [29]. 

 

4.3

  Interfejsy w Symbianie 

 

Symbian OS dostarczany jest przez producenta z podstawowym interfejsem użytkownika. 

Producenci  telefonów  zmieniają  go  mniej  lub  bardziej  modyfikując.  W  ten  sposób 

powstały następujące wersje tego systemu [31]:  

•  S60 (dostarcza najwięcej swoistych cech i rozwiązań spośród wszystkich rodzajów 

interfejsów) 

o

  S60 1 edycji (obecna w najstarszych modelach telefonów z Symbianem) 

o

  S60 2 edycji 

o

  S60 3 edycji (używana w najnowszym modelach Noki) 

•  UIQ  (przeznaczony  dla  urządzeń  z  dużym  ekranem  dotykowym,  obsługiwanym 

przy użyciu rysika) 

o

  UIQ 2 edycji 

  UIQ 2.0 (system wykorzystany w części praktycznej) 

  UIQ 2.1 

o

  UIQ 3 edycji 

  UIQ 3.0 

background image

 

39 

  UIQ 3.1 

•  Series80 (urządzenia typu Communicator) – aktualnie nierozwijany 

•  Series90 (tablety internetowe) – aktualnie nierozwijany 

•  NTT DoCoMo's MOAP – dostępny tylko w Japonii 

 

4.4

  SDK i dostępne IDE pod Symbiana 

 

SDK  to  zestaw  narzędzi,  plików  danych,  programów,  które  pozwalają  na  tworzenie 

oprogramowania.  Dla  różnych  wersji  Symbiana  jak  i  dla  różnych  wersji  interfejsu 

użytkownika  istnieją  różne,  osobne  SDK  [29].  Do  poprawnego  działania  każde  SDK 

potrzebuje: 

•  Active Perl 

•  JRE 

W większości dostępnych wersjach instalacyjnych zawiera w sobie potrzebne komponenty. 

Każde  SDK  zawiera  również  emulator  systemu  operacyjnego  Symbian.  Emulator  jest 

kompilacją  całego  systemu  operacyjnego  Symbian  dla  Windows.  Większość  funkcji 

korzystających bezpośrednio z zasobów udostępnianych przez telefon zostało zastąpionych 

analogicznymi  funkcjami  z  Windows.  Napisałem  większość,  gdyż  obsługa  Bluetooth  czy 

IrDA jest niestety pominięta. 

Aby  generować  kod  wykonywalny  programu  który  chcemy  uruchomić  na  komórce, 

potrzebny  jest  oczywiście  kompilator.  W  przypadku  Symbiana  kod  wykonywalny  na 

telefon  kompilowany  jest  przez  darmowy  gcc. Warto  jeszcze  powiedzieć o  tym,  że  SDK 

dostarczane  jest  w  kilku  wersjach  w  zależności  jaki  kompilator  został  użyty  do 

skompilowania emulatora [29]: 

•  WINS – kod jest generowany przez Microsoft Visual Studio 

•  WINSCW – kod jest generowany przez Code Warriora  

Stworzenie całego projektu od samego początku byłoby rzeczą bardzo pracochłonną [31]. 

Z pomocą programistom przychodzą narzędzia do ich automatycznego generowania. Samo 

SDK  nie  dostarcza  tzw.  wizardów,  które  potrafią  tworzyć  aplikacje.  Jednak  praktycznie 

każde  narzędzie  IDE,  na  którym  można  kompilować  kod  dla  Symbiana  potrafi  

ekspresowo  stworzyć  aplikację,  która  może  być  punktem  wyjścia  dla  naszego  programu 

[31]. Wszystkie dostępne IDE wymieniam w tabeli numer 3. 

 

background image

 

40 

Środowisko 

Komercyjny 

Debugowanie na telefonie 

Microsoft  Visual  C++  (6.0, 

7.0, 2005) 

TAK 

NIE 

Microsoft Windows SDK 

NIE 

NIE 

CodeWarrior 

for 

SymbianOS 

TAK 

TAK w wersji Professional i 

OEM 

Carbide C++  Express 

NIE 

NIE 

Borland C++ Builder X 

TAK/darmowy w wersji 1.5 

NIE 

Tab3.  Środowiska programistyczne pod Symbiana (IDE) 

 

4.5

  Podstawy Symbiana (różnice pomiędzy Symbianem a C++) 

 
Nie  ulega  wątpliwości,  że  programowanie  w  C++  pod  Symbianem  jest  podobne  do 

programowania w C++ pod inne systemy jak np. Windows [31]. Oczywiście różnice są i 

staram się je pokazać w następnych podrozdziałach. 

 

4.5.1

  Podstawowe typy danych 

 
W  trochę  zmienionej  formie  istnieją  int,  long  czy  real.  Zabieg  taki  ma  na  celu  uchronić 

programistę  przed  różnymi  kompilatorami.  Pisząc  programy  na  Symbiana  zamiast 

klasycznych  typów  danych,  tj.:  int,  char  używa  się  TInt,  TChar,  itp.,  typy  które  są 

zdefiniowane w standardowych plikach nagłówkowych Symbiana [1]. 

Podstawowe typy, to: 

• 

sized - znany jest ich dokładny rozmiar (np. TInt8) 

• 

unsized - nieznany jest ich dokładny rozmiar (np. TInt) 

Prawdziwe  wielkości  typów  określanych  jako  unsized  mogą  zmieniać  się  zależnie  od 

kompilatora,  wówczas  gdy  te  określane  jako  sized  prawa  takiego  nie  mają  [31].  Typy 

signed  mają  liczbę  bitów  w  nazwie,  dzięki  temu  w  łatwy  sposób  można  je 

zidentyfikować[1]. Warto wiedzieć o typie TBool którego wartościami mogą być: ETrue i 

EFalse.  Wszystkie typy danych umieściłem w tabeli numer 5 [1]. 

 

 

 

background image

 

41 

Nazwa:                       Typ:                                          Rozmiar:         

 TInt 

 Integer 

 przynajmniej 32 bity 

 TUint 

 Unsigned integer 

 przynajmniej 32 bity 

 TInt8 

 Integer 

 8 bitów 

 TInt16 

 Integer 

 16 bitów 

 TInt32 

 Integer 

 32 bity 

 TUInt16 

 Unsigned Integer 

 16 bitów 

 TUInt32 

 Unsigned Integer 

 32 bity 

 TReal 

 Real 

 przynajmniej 64 bity 

 TReal32 

 Real 

 przynajmniej 32 bity 

 TReal64 

 Real 

 przynajmniej 64 bity 

 TRealX 

 Real 

 rozszerzona precyzja 

 TText 

 Character 

 przynajmniej 16 bitów (unicode) 

 TText8 

 Character 

 przynajmniej 8 bitów (ascii) 

 TText16 

 Character 

 przynajmniej 16 bitów 

 TChar 

 Character 

 przynajmniej 32 bity (extended 
unicode ) 

 TBool 

 ETrue lub EFalse 

 32 bity 

 TAny 

 Używane jako TAny* 

  

Tab.4 Podstawowe typy danych w systemie Symbian 

 

4.5.2

  Nazewnictwo klas 

 
Konwencja  nazw,  czyli  tak  na  prawdę  system  przedrostków    jest  ważnym  elementem 

całego systemu. Dzięki temu, w bardzo łatwy sposób można dowiedzieć się jakie funkcje 

pełni  obiekt  danej  klasy  [1].  Pierwsze  litery  w  nazwach  klas  wskazują  podstawowe  jej 

własności. Ze względu na ten podział można rozróżnić następujące typy klas: 

•  Klasy T. Są to proste klasy nieposiadające ani konstruktora ani destruktora. Pamięć 

dla  obiektów  tych  klas  jest  alokowana  na  stosie.  Przykładami  takich  klas  są: 

TDesC,  TPoint,  TFileName  [1].  Podczas  programowania  dla  Symbiana  obiekty 

tych klas pojawiają się niemal na każdym kroku. 

•  Klasy  C.  Każda  taka  klasa  dziedziczy  z  CBase  i  obiekt  tej  klasy  zawsze  jest 

alokowany  na  stercie.  Klasy  C  posiadają  zarówno  konstruktor  jak  i  destruktor. 

Konstruktor  z  klasy  nadrzędnej  (klasy  CBase)  dba  o  to,  by  wszystkie  pola 

znajdujące  się  w  klasie  odpowiednio  wyzerować  [1].  Przykładami  tej  klasy  są: 

CConsoleBase, CActive, CBase. 

background image

 

42 

•  Klasy  R.  Obiekty  tej  klasy  mają  dostęp  do  zewnętrznych  zasobów,  tj.:  plików, 

gniazd sieciowych, itp. Zazwyczaj wykorzystywane są w aplikacjach typu Klient-

Serwer, jednak nie jest to regułą [1]. Zazwyczaj posiadają funkcje: 

o

  przydzielające pamięć (Open(), Create(), Allocate(), itp.) 

o

  zwalniające pamięć (Close(), Destroy(), Free(), itp.) 

Przykładami tej klasy są: RFile, RTimer, RWriteStream. 

•  Klasy  M.  Klasy  abstrakcyjne,  które  posiadają  jedynie  metody  wirtualne.  Ich 

implementacja pojawia się dopiero w klasach z niej dziedziczących [1]. Przykłady 

takich klas to: MGraphicsDevice-Map, MEikMenuObserver. 

 

Warto  jeszcze  wiedzieć,  że  obowiązują  również  konwencje  w  nazewnictwie  nazw 

obiektów [1]. 

•  E – używany przy typach wyliczeniowych (np. Eteru, EFalse, EMonday, itp.) 

•  K - Używany przy stałych (np. KErrNone, KMaxFileName) 

•  i – Zmienne jako pola w klasach 

•  a – Zmienne deklarowane jako argumenty w funkcjach. 

   

4.5.3

  Łańcuchy tekstowe i deskryptory 

 
Można powiedzieć że jest to specjalność Symbiana. Jednak niestety nie jest to takie proste 

jak  w  C,  gdyż  wszystko  wygląda  o  wiele  bardziej  skomplikowanie.  Wyróżnić  można  5 

typów deskryptorów: 

•  TBuf 

•  TBufC 

•  TPtr 

•  TPtrC 

•  HBufC 

 

Jak widać niektóre nazwy zakończone są literą C, otóż oznacza to, że taki deskryptor jest 

stały, o określonej stałej długości i wszystkie jego funkcje są typu const (ang. constans).  

Dane  przechowywane  przez  jakikolwiek  deskryptor  mogą  znajdować  się  we  wszelkich 

możliwych rodzajach pamięci (ROM, RAM, stos, sterta) [31]. 

background image

 

43 

•  TBuf  i  TBufC  -  patrząc  na  te  deskryptory  z  perspektywy  języka  C,  można 

powiedzieć,  że  są  to  tak  naprawdę  tablice  stringów  (łańcuchy  tekstowe).  W 

nomenklaturze „symbianowej” mówi się o nich, że są to deskryptory bufora. Dane 

stanowią część obiektu deskryptora, który umieszczony jest na stosie. Jak widać na 

rysunku  numer  18,  długość  tych  tablic  ustawia  się  za  pomocą  specyficznych 

„widełek”.  

TBufC<5> helloStack(„hello”); 

Tak jak pisałem wcześniej, na takim obiekcie można wywołać jedynie funkcje typu 

const. Jeśli mielibyśmy następującą definicję: 

TBuf<5> helloWorld(„hello”); 

,wówczas  taki  bufor  jest  modyfikowalną  tablicą  stringów,  gdzie  można  bez 

problemów modyfikować tekst (np. metodą Append()). 

•  HBufC  są  to  deskryptory  sterty,  dane  stanowią  część  obiektu  deskryptora,  który 

umieszczony jest na stercie.  

•  TPtr i TPtrC to deskryptory wskaźnika, gdzie obiekt deskryptora oddzielony jest od 

danych. [1]. Rysunek numer 18 przedstawia hierarchie możliwych deskryptorów w 

Symbianie. 

 

 

Rys18. Typy deskryptorów w Symbianie 

background image

 

44 

 

TDesC i Des są klasami abstrakcyjnymi. Z tego względu mogą zostać wykorzystane tylko 

jako  argumenty  funkcji,  których  celem  są  dowolne  działania  na  łańcuchach  tekstowych 

bądź  innych  danych  [31].  Wszystkie  deskryptory  posiadają  kilka  odmian  (TDesC8, 

TDesC16,  TBuf8,  TBuf16,  TDes8,  TDes16,  itp.).  Liczba  w  nazwie  informuje  o  tym  ilu 

bitowymi danymi może operować dany deskryptor [1, 31].  

 

4.5.4

  Mechanizm opuszczeń (Leaves) 

 
Jest to jeden z najważniejszych mechanizmów Symbiana. Litera L na końcu nazwy funkcji 

informuje,  że  dana  funkcja  może  zgłosić  opuszczenie  W  większości  współczesnych 

języków programowania istnieje możliwość obsłużenia błędów (tak jak się to dzieje np. w 

Javie, gdzie obsługa błędów odbywa się za pomocą konstrukcji try-catch) lub przekazania 

ich  na  wyższy  poziom  hierarchii  wywołań  [34].  W  Symbianie  jest  to  rozwiązane  przez 

konstrukcję  Leave-Trap  (w  wolnym  tłumaczeniu,  opuszczenie-złapanie).  Opuszczenie 

(symbianowy  odpowiednik  wyjątku)  może  się  zdarzyć  w  wielu  sytuacjach.  Dobrym 

przykładem może być brak pamięci na załadowanie grafiki lub nie znalezienie potrzebnego 

pliku  [34].  Najczęściej  nie  obsługuje  się  własnoręcznie błędu, gdyż  przekazuje  się  go  po 

prostu  systemowi,  który  wyświetli  stosowny  komunikat  [1].  Jednak  można 

zaimplementować  odpowiednią  obsługę  błędu  za  pomocą  stosownej  pułapki  (instrukcji 

TRAP).  Wówczas  gdy  wyrzucamy  wyjątek,  sterowanie  programu  przechodzi  do  miejsca 

„najbliższego TRAPa” [31]. Czyli można to nazwać złapaniem wyjątku. W tym momencie 

wywoływane są destruktory obiektów, których wskaźniki odłożone są na Cleanup Stacku

2

 

(oczywiście  tylko  tych  obiektów,  które  stworzyliśmy  po  wejściu  do  TRAP)  [31].  Jeżeli 

wskaźnika  obiektu,  który  zaalokował  pamięć,  nie  ma  na  tym  stosie,  nie  mamy  już 

możliwości usunięcia tego obiektu w żaden sposób i w tym momencie pamięć zajmowana 

przez ten obiekt jest tracona (czyli mamy do czynienia z klasycznym wyciekiem pamięci) 

[31]. Aby przeciwdziałać takim wyciekom pamięci, wskaźnik nowo utworzonego obiektu 

powinno się odkładać na Cleanup Stacku [31]. 

Mechanizm opuszczania jest o tyle ważny, że firma Symbian stworzyła bardzo przydatny 

program  sprawdzający,  czy  konwencja  nazewnictwa  jest  przestrzegana  w  plikach 

                                                 

2

 Cleanup Stack - stos wskaźników do obiektów. Więcej na jego temat można znaleźć w literaturze [1]. 

background image

 

45 

ź

ródłowych projektu [34]. Nazwa tego narzędzia to LeaveScan i jest nawet wbudowane w 

niektóre wersje SDK. 

 

5

  Projekt 

5.1

  Idea projektu 

 

Idea całego projektu oparta jest o komunikację pomiędzy urządzeniami znajdującymi się w 

budynku  przy  wykorzystaniu  protokołu  Bluetooth.  W  moim  przypadku  jest  to  telefon 

komórkowy, komputer PC i urządzenie LPC2104 Color LCD Game Board. Równie dobrze 

mogłyby  to  być  inne  urządzenia,  jednak  z  uwagi  na  posiadanie  wyżej  wymienionych 

urządzeń zdecydowałem się na skorzystanie właśnie z nich. 

Celem  pracy  było  skonstruowanie  takiego  systemu,  w  którym  człowiek  posiadający 

„klucz”  (  w  moim  projekcie  jest  to  telefon  komórkowy  )  będzie  mógł  sterować  innymi 

urządzeniami  w  budynku.  Bardzo  ważną  rzeczą  jest  to,  iż  użytkownik  mając  telefon 

komórkowy,  po  wejściu  w  zasięg  Bluetootha  konkretnego  urządzenia  nawiąże  z  nim 

automatycznie połączenie i wysyłając stosowne polecenia zrealizuje z góry przypisane mu 

zadanie.  Natomiast  jeśli  opuści  zasięg  danego  urządzenia,  urządzenie  również  musi 

zareagować w pewien ustalony sposób. Cała ta operacja ma się odbyć bez ingerencji osoby 

posiadającej klucz. Można sobie wyobrazić sytuację, w której podjeżdżamy samochodem 

do  swojego  domu,  a  dokładniej  pod  bramę  swojej  posesji  i  bez  jakiejkolwiek  reakcji  z 

naszej  strony  brama  otwiera  się.  Po  wjechaniu  samochodem,  opuszczeniu  garażu,  brama 

automatycznie  ma  się  zamknąć.  Oczywiście  warto  sobie  zadać  pytanie  na  jakiej  zasadzie 

brama  nas  słucha,  czy  każdy  może  otworzyć  i  zamknąć  naszą  bramę.  Na  to  pytanie 

odpowiem w dalszej części pracy, gdyż jest to bardzo ważny aspekt patrząc na to z punktu 

widzenia  bezpieczeństwa  (rozdz.  5.2.1.7).    Idea  całego  projektu  jest  więc    bardzo 

przejrzysta. Wszystkie komunikujące się urządzenia posiadają Bluetootha, dzięki któremu 

następuje wymiana danych. Całe zagadnienie dobrze ilustruje rysunek numer 19. 

 

background image

 

46 

 

Rys.19 Idea projektu [11] 

 

5.2

  Budowa projektu 

 

Projekt  powinien  składać  się  z  3  odrębnych  aplikacji.  Jeden  napisany  na  telefon 

komórkowy z systemem Symbian 7.0 z interfejsem UIQ 2.0. Drugi napisany na komputer 

klasy  PC.  A  trzeci  zaimplementowany  na  LPC2104  Color  LCD  Game  Board.  Niestety 

musiałem  zrezygnować  z  wdrożenia  Game  Board’a  do  działającej  sieci  urządzeń. 

Powodem  była  niekompatybilność  stosów  Bluetooth  dla  tego  urządzenia  i  telefonu 

komórkowego.  Sytuacja  z  którą  się  zetknąłem  jest  dosyć  skomplikowana.  Otóż  istnieją 

dwie procedury zapytań o serwisy (przypomnę tylko że łącząc się z urządzeniem Bluetooth 

tak  naprawdę  łączymy  się  z  jakimś  serwisem  dostępnym  na  tym  urządzeniu)  [39].  Jedna 

procedura  to  SDP_ServiceSearchAttributeRequest,  a  druga  SDP_ServiceSearchRequest 

[39]. Problem polega na tym, iż urządzenie Game Board umie obsługiwać tylko pierwsze 

zapytanie,  czyli  SDP_ServiceSearchAttributeRequest.  Niestety  telefon  komórkowy 

wykorzystuje  drugą  procedurę  do  odszukania  serwisu  i  w  ten  sposób  dochodzi  do  braku 

kompatybilności.  Problem  można  by  było    rozwiązać  używając  innego  modelu  telefonu 

komórkowego  (przynajmniej  wszystko  na  to  wskazuje), jednak  nie  zdecydowałem  się na 

taki krok, gdyż wiązałoby się to z dosyć dużym nakładem finansowym. 

background image

 

47 

 

5.2.1

  Aplikacja na telefon komórkowy 

5.2.1.1

  Budowa i elementy składające się na aplikację 

 

Jeśli  chodzi  o  budowę  napisanej  przeze  mnie  aplikacji  to  jest  ona  zgodna  z  wszelkimi 

zasadami  które  obowiązują  w tworzeniu  tego  typu  programów i  dlatego na  podstawie tej 

aplikacji omówię jednocześnie budowę typowych aplikacji na system operacyjny Symbian 

OS. Na poniższym rysunku prezentuję budowę takiej właśnie aplikacji, połączenia między 

jej elementami, oraz przepływ informacji. 

  

 

Rys.20 Budowa typowej aplikacji na Symbian OS 

 

Podstawowe elementy składające się na aplikację niezależnie od używanej wersji SDK są 

widoczne na rysunku numer 20 i są następujące: 

•  Aplikacja – jest to podstawowy element, który pozwala na wykorzystanie biblioteki 

Uikon.  Zawiera  również  interfejs  do  plików  z  zasobami,  oraz  tworzy  dokument. 

Klasa  aplikacji  dziedziczy  z  klasy  CQikApplication.  (Dla  programu  pisanego  pod 

telefon  komórkowy  z  interfejsem  S60,  klasa  ta  powinna  dziedziczyć  z  klasy 

CAknApplication

) [1] 

•  Dokument – jest to pośrednia warstwa pomiędzy kontrolerem i modelem a plikiem, 

z  którego  korzysta  model.  Dokument  tworzy  kontroler  aplikacji  (APP  UI).  Klasa 

dokumentu  dziedziczy  z  CQikDocument  (dla  S60  dziedziczyłaby  z  klasy 

background image

 

48 

CAknDocument

). Tak naprawdę dokument wykorzystywany jest tylko do tworzenia 

kontrolera. Dzieje się tak w wypadku gdy aplikacja nie zapisuje i odczytuje danych 

z systemu plików [31]. 

•  Kontroler (APP UI) – jest to element który obsługuje wszystkie sprawy związane z 

interfejsem użytkownika, takie jak: menu, paski narzędziowe, kończenie aplikacji, 

itp. Kontroler odpowiedzialny jest za obsługę komend wysyłanych z menu, a także 

za  współpracę  z  serwerem okien [31]. Kontroler  dziedziczy  po  klasie  CQikAppUi 

(dla S60 byłaby to klasa CAknAppUi).   

•  Model  – jest  to  klasa  która  odpowiedzialna jest za  mechanizm  działania aplikacji. 

Model  powinien  być  tworzony  przez  dokument,  a  kontroler  i  widok  aplikacji 

powinny mieć do niego bezpośredni dostęp (poprzez referencję lub wskaźnik).  

•  Widok  –  odpowiada  za prezentację  danych dla  użytkownika  oprogramowania [1]. 

Widok  prezentuje  specyficzne  ujęcie  danych  w  modelu  i  posiada  bezpośredni 

dostęp  do  modelu,  żeby  wizualizować  dane  w  nim  zawarte.  (Aplikacja  może 

posiadać  wiele  widoków,  przykładowo  kalendarz  ma  widok  tygodnia,  miesiąca, 

roku.)  Klasa  widoku  dziedziczy  bezpośrednio  po  klasie  CCoeControl.  (W 

przypadku S60 byłaby to klasa CAknView). 

 

5.2.1.2

  Struktura katalogów projektu 

 

Po  utworzeniu  nowego  projektu,  w  określonym  przez  użytkownika  miejscu  na  dysku 

tworzy  się  struktura  katalogów  charakterystyczna  dla  projektów  Symbiana.  W  zależności 

od użytego wizarda ta struktura może się nieznacznie różnić. Zarówno moja struktura jak i 

standardowa struktura aplikacji składa się z następujących katalogów [1, 31]: 

•  Group - tutaj znajdują się najważniejsze pliki wchodzące w skład całego projektu. 

Są  to:  plik  MMP  określający  zawartość  projektu  (.mmp),  plik  RRS  z  zasobami 

(.rss), oraz plik definicji komponentów (bld.inf)    

•  Inc - w tym katalogu znajdują się wszystkie pliki nagłówkowe aplikacji (.h), pliki z 

typami  numerycznymi  projektu  (.hrh),  pliki  definiujące  kody  Panic  codes  (.pan), 

oraz  plik adresów  dla  plików  binarnych  dla  komponentów interfejsu  użytkownika 

(generowany automatycznie - .rsg)  

•  Src - tutaj znajdują się wszystkie pliki źródłowe projektu (.cpp) 

background image

 

49 

•  Sis  -  w  tym  katalogu  znajduje  się  plik  .pkg  określający  wersję  instalacyjną 

programu na telefon, służący do tworzenia pliku instalacyjnego dla aplikacji (.sis) 

 

5.2.1.3

  Podział aplikacji na podstawowe pliki  

 

Każda  aplikacja  dla  systemu  operacyjnego  Symbian,  z  punktu  widzenia    podziału  na 

podstawowe pliki składa się z [1, 31]:  

•  Plik APP – w pliku tym znajduje się skompilowany kod aplikacji, jest to biblioteka 

polimorficzna udostępniająca tylko jedną funkcję tworzącą instancję aplikacji. Jest 

to  niezbędny  plik  do  działania  całej  aplikacji  [1].  Warto  wiedzieć,  że  po 

skompilowaniu  całego  projektu  w  CodeWarrior  plik  ten  jest  tworzony  w 

specyficznym miejscu na dysku. Ścieżka katalogu w którym tworzone są pliki tego 

typu 

jest 

następująca:  

C:\Symbian\UIQ_70\epoc32\release\armi\urel\CLIENTBT.APP

  

•  Plik RSC – zadaniem tego pliku jest dostarczanie informacji o zasobach w trakcie 

działania  aplikacji.  Chodzi  o  to,  żeby  podczas  działania  programu  nie  ładować 

wszystkich zasobów do pamięci, a tylko te które są aktualnie potrzebne [31]. W ten 

sposób następuje oszczędność pamięci, gdyż niezbędne zasoby są „doładowywane” 

wtedy,  gdy  są  potrzebne.  Plik  ten zawiera  wszystkie  zasoby  związane  z  językiem 

aplikacji  (definicje  komponentów  interfejsu,  napisy  używane  w  programie,  itp.) 

Bardzo  dużą  zaletą tego pliku jest fakt, że  można  go  podmienić bez  konieczności 

ponownej  kompilacji  całej  aplikacji  [31].  Można  więc  zrobić  kilka  plików  z 

różnymi  wersjami  językowymi  i  podczas  uruchomienia  programu  ładować 

odpowiedni język (w zależności od wyboru użytkownika). Plik ten jest niezbędny 

do działania całej aplikacji. Ścieżka katalogu w którym tworzony jest taki plik jest 

następująca: 

C:\Symbian\UIQ_70\epoc32\data\z\system\APPS\CLIENTBT\ClientBT.RSC

 

•  Plik AIF – służy do przetrzymywania podstawowych informacji o aplikacji takich 

jak ikony, obsługiwane typy MIME, itp. 

•  Plik  MBM  –  przechowuje  dowolną  ilość  ikon,  które  podczas  działania  programu 

mogą  zostać  załadowane  i  wyświetlone  w  postaci  zwykłych  obrazków  czy 

przycisków. 

 

background image

 

50 

5.2.1.4

  Rodzaje plików w projekcie 

 

Rodzaje plików w projekcie są następujące: 

•  plik  MMP,  który  określa  zawartość  projektu.  Definiuje  on  typ  projektu  (aplikacja 

wykonywalna,  biblioteka  itp.),  plik  z  zasobami,  pliki  z  kodem  C++,  użyte 

biblioteki,  język,  ścieżki  systemowe,  ścieżki  do  plików  nagłówkowych,  itp.. 

Określa  także  identyfikator  aplikacji  (UID),  o  którym  więcej  pisze  w  rozdziale 

5.2.1.5. W mojej aplikacji plik ten nosi nazwę ClientBT.mmp.  

•  Plik Bld.inf – definiuje komponenty wchodzące w skład projektu. Wszystkie pliki 

MMP, które wchodzą w skład aplikacji  są wymienione w tym pliku [31]. W moim 

przypadku  jest  to  tylko  jeden  plik.  W  pliku  tym  powinny  być  również    wpisy  z 

nazwami  używanych  bibliotek  dynamicznych  (plików  DLL),  jeżeli  takich 

używamy  [1].  Z  punktu  widzenia  budowania  aplikacji,  a  także  budowania  pliku 

instalacyjnego plik ten jest niezbędny. 

•  Plik  RSS  –  jest  to  plik  zasobów  aplikacji.  Tutaj  zdefiniowane  i  umieszczone  są 

wszystkie  definicje  komponentów  użytkownika  (menu,  dialogi,  itp.).  Aplikacja 

używa  tego  pliku  do  zbudowania  aktualnie  wymaganego  komponentu  podczas 

działania programu. 

•  Plik  HRH  -    zawiera  typy  numeryczne  wykorzystywane  w  aplikacji.  Mówiąc 

bardziej  „obrazowo”,  to  tutaj  zdefiniowane  są  typy  numeryczne  m.in.  dla  opcji  z 

menu. 

•  Pliki CPP i H – pliki źródłowe projektu. 

 

Omawiając  wszystkie  pliki  nie  można  zapomnieć  o  pliku  instalacyjnym,  o  którym  już 

wcześniej  wspomniałem. Jest  to plik  który  umożliwia  zainstalowanie  aplikacji  na telefon 

komórkowy. 

 

background image

 

51 

 

Rys.21 Proces powstawania pliku SIS 

[http://developer.uiq.com/devlib/uiq_30/SDKDocumentation/sdl/N10012/3-building.html] 

 

Do  utworzenia  pliku  instalacyjnego  niezbędny  jest  plik  PKG,  w  którym  definiuje  się 

przede  wszystkim  ścieżki  źródłowe  jak  i  docelowe  dla  pliku  APP  i  RSC.  Mając  dobrze 

zdefiniowany  taki  plik,  używając  programu  MakeSIS.exe  wbudowany  w  każde  SDK 

otrzymujemy  niepodpisany  plik  instalacyjny.  Na  tym  etapie  można  już  poprzestać,  gdyż 

telefony  komórkowe  wyposażone  w  Symbian  7.0  i  starsze  nie  wymagają  podpisywania 

tych plików. Niestety telefony z Symbianem nowszym od 7.0 wymagają tej operacji. 

 

5.2.1.5

  System identyfikatorów UID 

 

Każdy  plik  wykonywany  w  systemie  Symbian  OS  jest  identyfikowany  przez  dwa 

identyfikatory (są  to  liczby  32  bitowe  bez  znaku),  które  dokładnie identyfikują  dany  plik 

[1].  Pierwszy  identyfikator  określa  typ  pliku  i  przykładowo  dla  wszystkich  tzw.  GUI 

aplikacji jest on określony liczbą 0x100039ce. Drugi powinien być nabyty bezpośrednio od 

firmy  Symbian.  Można  to  zrobić  a  nawet  trzeba  wysyłając  maila  na  adres 

uid@symbiandevnet.com

  o  tytule  „UID  request”,  w  treści  podając  ile  chce  się  nabyć 

identyfikatorów [1]. Ja jednak skorzystałem z eksperymentalnych identyfikatorów, które są 

udostępnione  przez  Symbiana.  Ich  zakres  wynosi  od  0x01000000  do  0x0fffffff.    To 

pozwala  Symbianowi  na  odróżnienie  plików  powiązanych  z  tą  daną  aplikacją  od  plików 

skojarzonych z inną aplikacją [1]. 

background image

 

52 

5.2.1.6

  Zasada działania aplikacji 

 

Aby móc zagłębić się w szczegóły implementacyjne zarówno po stronie klienta (aplikacja 

na telefonie komórkowy) jak i serwera (aplikacja na komputerze PC) trzeba zaznajomić się 

dosyć szczegółowo z protokołem Bluetooth. 

Jak  powszechnie  wiadomo  w  aplikacjach  klient  –  serwer,  klient  żąda  od  serwera 

wykonania pewnych usług. Mówiąc o usługach, trzeba wprowadzić bardzo ważne pojęcie 

jakim jest serwis, słowo którego używałem wcześniej, a w specyfikacji Bluetooth pojawia 

się  niemal  od  samego  początku.  Najkrócej  mówiąc  serwis  jest  usługą  realizowaną  przez 

serwer. 

 

Pierwszą  rzeczą  jaką  należy  poruszyć  omawiając  moją  aplikację  pod  Symbianem  pod 

względem implementacji jest nawiązanie połączenia pomiędzy dwoma urządzeniami. Nim 

nastąpi połączenie, wcześniej realizowanych jest kilka bardzo ważnych zadań.  

Podstawowe  działania  klienta  zmierzające  do  nawiązania  połączenia  z  serwerem  można 

podzielić na: 

•  Odszukanie  urządzenia  z  którym  klient  chce  nawiązać  połączenie  (Device 

Discovery)  

•  Odszukanie serwisów działających na znalezionym urządzeniu (Service Discovery) 

•  Pobranie URL serwisu 

 

Odszukanie  urządzenia  jest  o  tyle  ułatwione,  iż  znam  wszystkie  urządzenia  z  którymi 

mogę  i  mam  możliwość  nawiązania  połączenia.  Dlatego  w  swojej  aplikacji  używam 

specjalnej struktury (TBTDevAddr tabDevices []), która zawiera adresy MAC urządzeń z 

którymi  mogę  się  połączyć.  Do  odszukiwania  serwisów  na  zdalnym  urządzeniu  używam 

obiektu  klasy  CSdpAgent.  Obiekt  ten  można  nazwać  agentem,  który  wykorzystuje  do 

wyszukania  serwisów  Service  Discovery  Protocol  (SDP),  który  omawiam  w  rozdziale 

5.2.1.8. Zgodnie z profilem zastosowań SDP, aplikacja wyszukująca usługi na urządzeniu 

zdalnym powinna obsługiwać trzy rodzaje zapytań o usługi: 

•  Szukanie usług należących do danej klasy usług, 

•  Szukanie usług o podanych atrybutach, 

•  Przeszukiwanie dostępnych usług. 

 

background image

 

53 

Skorzystałem z pierwszej funkcjonalności jaką daje profil zastosowań SDP, czyli szukanie 

usług należących do danej klasy usług. 

Obiekt  CSdpAgent  posiada  wiele  różnorodnych  funkcji.  Chcę  wspomnieć  tylko  o  dwóch 

które  z  punktu  widzenia  uruchomienia  całego  mechanizmu  szukania  serwisów  są 

kluczowe.  Jedna  z  nich  to  SetRecordFilterL(  CSdpSearchPattern  pattern  ),  która  to 

właśnie  ma  możliwość  ustawienia  klasy  usługi  którą  chcemy  znaleźć  [35].  W  mojej 

aplikacji  klasa  usługi  którą  szukam  to  „Serial  Port”  (Dlaczego  akurat  takiego  serwisu 

szukam  piszę  w  rozdziale  5.2.4).  Każda  taka  klasa ma  przypisaną  16  bitową  liczbę  (tzw. 

UUID o którym szerzej napiszę w rozdziale 5.2.1.7), Dla ścisłości, usługa Serial Port jest 

określona  przez  liczbę  0x1101.    Drugą  funkcją  jest    NextRecordRequestL(),  która  jest 

asynchroniczną funkcją inicjalizującą szukanie (można powiedzieć że zwraca „uchwyt” do 

serwisu)  [35].  Po  ukończeniu  tej  funkcji,  zostaje  wywołany  ciąg  innych  funkcji,  które 

doprowadzają  do  stanu  w  którym  telefon  komórkowy  albo  nawiąże  połączenie  z 

urządzeniem  peryferyjnym  albo  nie.  Jak  wygląda  kwestia  związana  z  bezpieczeństwem 

nawiązywania połączenia? Otóż oparłem się o znany i zaimplementowany już mechanizm 

„parowania”  urządzeń  (Bluetooth  Pairing).  Aplikacja  jest  napisana  w  ten  sposób,  że 

parowanie  urządzeń  wymusza  serwer,  który  może  pracować  w  3  trybach  zabezpieczeń 

(niskim, średnim i wysokim), ale o tym piszę szerzej w rozdziale poświęconym aplikacji 

serwera  (rozdział  5.2.2).  Wspomnę  tylko,  iż  uruchamiając  serwer  należy  włączyć  średni 

tryb  zabezpieczenia,  którego  zadaniem  jest  wymuszanie  wymiany  tego  samego  klucza 

hasła po obydwu stronach połączenia jeśli dwa urządzenia są łączone po raz pierwszy lub 

jeśli  występuje  brak  zaufanych  relacji  pomiędzy  dwoma  urządzenia.  Po  tej  wymianie 

klucze haseł nie będą już wymagane do dalszej komunikacji pomiędzy urządzeniami. 

  

background image

 

54 

 

Rys.22 Wymiana klucza po stronie klienta 

 

Przyjmując  że  operacja  nawiązania  połączenia  powiodła  się,  wówczas  automatycznie 

zostaje  wysłane  określone  polecenie  do  zdalnego  urządzenia.  Po  poprawnym  wysłaniu 

tego  polecenia  i  odebraniu  potwierdzenia,  połączenie  zostaje  zakończone.  Dzieje  się  tak, 

gdyż musi być możliwość łączenia się z innymi urządzeniami, które znajdą się w zasięgu 

naszego „klucza”. Po udanym nawiązaniu połączenia i wysłaniu stosownego komunikatu, 

nie  można  skorzystać  z  sytuacji,  w  której  połączenie  byłoby  utrzymywane  w  sposób 

„sztuczny”  (np.  za  pomocą  mechanizmu  znanego  jako  „keep-alive”),  co  byłoby  z  jednej 

strony  bardzo  wygodne,  gdyż  po  automatycznym  wysłaniu  jednego  komunikatu,  byłaby 

możliwość  wysyłania  innych.  Jednak  w  takiej  sytuacji  byłby  ogromny  problem  z 

obsłużeniem  więcej  niż  jednego  urządzenia  znajdującego  się  w  zasięgu  użytkownika 

posiadającego  „klucz”.  Z  założenia  wynika,  że  w  pomieszczeniu  może  znajdować  się 

większa  ilość  urządzeń  peryferyjnych  i  dlatego  zdecydowałem  się  na  wariant  z 

każdorazowym  wykonywaniem  funkcji  „Disconnect”,  aby  umożliwić  poprawną  pracę 

całego systemu.  

Można sobie zadać pytanie, co nastąpi jeśli będziemy przebywać w otoczeniu aktywnego 

urządzenia  Bluetooth  przez  dłuższy  okres  czasu.  Czy  polecenie  zostanie  wysłane  bliżej 

nieokreśloną  ilość  razy?  Odpowiedzią  jest  oczywiście  nie.  Aplikacja  sprawdza  czy 

polecenie  zostało  już  wysłane  w  czasie  przebywania  w  zasięgu  danego  urządzenia.  Jeśli 

tak,  wówczas  następuje  wysyłanie  komunikatów  informujących  o  tym,  że  polecenie 

zostało  wykonane  i  ponowny  komunikat  zostanie  wysłany  tylko  wtedy  gdy  opuścimy 

background image

 

55 

zasięg  działania  tego  urządzenia  i  z  powrotem  się  w  nim  pojawimy.  Jeśli  urządzenie 

sterujące  opuści  zasięg  urządzenia  z  którym  miało  połączenie  i  wymieniało  komunikaty, 

wówczas  następuje  powiadomienie  o  tym  po  stronie  urządzenia  aktywnego 

(peryferyjnego). .  

 

5.2.1.7

  Bezpieczeństwo 

 
W  opisie  idei  projektu,  wspomniałem  o  kwestii  bezpieczeństwa  związanej  z  działaniem 

aplikacji przeznaczonej na telefon komórkowy, obsługującej otwieranie bramy garażowej. 

Otwieraniem  bramy  zajmuje  się aplikacja  na  komputerze  PC.  Pytanie,  które  zadałem  we  

wstępnej  części  rozdziału  5.1  brzmi,  czy  każdy  może  otworzyć  moją  bramę  do  garażu 

(korzystając z urządzenia z Bluetooth). Oczywiście nie każdy może otworzyć bramę. Aby 

móc  dokonać  takiej  operacji,  po  pierwsze  zdalne  urządzenie  musi  znać  format  polecenia 

(pisze  o  nim  w  rozdziale  5.2.2),  a  po  drugie  zdalne  urządzeni  musi  być  „sparowane”  z 

komputerem  PC.  Na  czym  polega  ta  operacja?  Proces  „sparowania”  polega  na 

wygenerowaniu  klucza  inicjalizacyjnego  i  użyciu  go  do  uwierzytelnienia  urządzeń. 

Rezultatem jest utworzenie dla nich stałego klucza połączenia. Klucz ten generowany jest 

poprzez  wprowadzenie  w  obu  urządzeniach  kodu  PIN,  który  z  kolei  generuje  klucz 

tymczasowy.  (Ani  klucze  ani  PIN  nie  są  przesyłane  drogą  radiową  w  formie  otwartego 

tekstu). Wygenerowane w ten sposób klucze tymczasowe muszą być sobie równe [27]. 

Pisząc  ten  projekt  założyłem  że  jeśli  dwa  urządzenia  nawiązują  ze  sobą  po  raz  pierwszy 

połączenie,  wówczas  wymuszana  jest  wspomniana  operacja  „sparowania”.  Z  opisu 

wynika,  że  wiąże  się  to  z  manualnym  wpisaniem  hasła  zarówno  po  stronie  klienta  jak  i 

serwera. I tak właśnie się dzieje. 

Zdaję sobie sprawę z tego, że zabezpieczenie na poziomie „sparowania” urządzeń 

komunikujących się nie jest jakimś wyrafinowanym rozwiązaniem i w rzeczywistości dla 

osoby  próbującej  złamać  klucz  „sparowania”  nie  jest  rzeczą  trudną  złamanie  takiego 

klucza.  Używając  ogólnie  dostępnego  oprogramowania  pod  nazwą  BTCrack,  złamanie 

najdłuższego klucza to kwestia kilkudziesięciu sekund. Wspomniany program opiera się na 

brutalnym  ataku,  analizując  przechwycone  pakiety.  Dla  celów  demonstrujących  szybkie 

łamanie klucza, program można ściągnąć ze strony 

http://nruns.com/_en/security_tools.php

 

  Dlatego też, chcąc w lepszy sposób zabezpieczyć się przed atakami, nadmieniam 

w jaki sposób można lepiej to zrobić, zabezpieczając komunikację. Otóż rozwiązaniem jest 

background image

 

56 

dodanie  szyfrowania  na  poziomie  protokołu  komunikacyjnego.  Szyfrowanie  ,  które  w 

znaczący  sposób  poprawi  bezpieczeństwo  komunikacji  może  opierać  się  o  znane 

algorytmy szyfrowania, takie jak MD5, czy SHA2. 

Warto  byłoby  wymusić  uwierzytelnianie,  które    mogłoby  dokonywać  się  przy 

każdorazowym  przesyłaniu  komunikatów,  przykładowo  mogłaby  być  wykonywana  taka 

operacja: 

 

LOGIN + MAC address klienta  

  MD5      -- -- -- -- -- -- -- --  KLIENT 

 

Klient  posiadając  bazę  loginów,  odszyfrowując  komunikat,  dopuszczałaby  do 

wymiany danych lub nie. Taki sposób zapewniłby znacznie lepszą ochronę niż mechanizm 

„sparowania” urządzeń. 

 

5.2.1.8

  Identyfikator UUID 

 

Celem było stworzenie takiego identyfikatora, który mógłby jednoznacznie identyfikować 

informację  w  systemach  rozproszonych,  bez  używania  centralnej  bazy  danych 

umożliwiających  ich  przechowywanie.  Cel  został  osiągnięty  wprowadzając  standard 

uniwersalnie  unikatowego  identyfikatora  jakim  jest  UUID,  który  jest  128  bitową 

pseudolosową  liczbą  [37].  Oczywiście  od  razu  powstało  wiele  algorytmów  generowania 

tych  liczb.  Prawdopodobieństwo  wygenerowania  dwóch  takich  samych  identyfikatorów 

jest bliskie zeru, pozwolono zredukować go do 32-cyfrowej liczby szesnastkowej gdyż jest 

to wystarczająco długa liczba by nie pozwolić na dwa takie same identyfikatory [37].   

Zaistniała potrzeba zarezerwowania pewnej liczby identyfikatorów na potrzeby Bluetooth 

SDP,  SIG  (o  której  pisałem  w  rozdziale  o  Bluetooth)  postanowiła  zdefiniować  krótsze 

UUID  aby  ułatwić  urządzeniom  używanie  identyfikatorów  często  używanych  usług  [37]. 

Wobec tego powstały identyfikatory 16- i 32-bitowe UUID. Oczywiście z krótkich UUID 

można wyliczyć długie, 32-bitowe.  

 

 

 

background image

 

57 

5.2.1.9

  Protokoły wyszukiwania usług 

 

Powstało  wiele  protokołów  wyszukiwania  usług.  Różnią  się  między  sobą,  gdyż  są 

przeznaczone  do  stosowania  w  różnych  urządzeniach  i  w  różnych  środowiskach. 

Najpopularniejsze protokoły są następujące: 

•  SLP2 (Service Location Protocol, Version 2) – jest to najpowszechniejszy protokół 

wyszukiwania  usług.  Jest  w  stanie  obsłużyć  bardzo  rozbudowane  sieci  dzięki 

zastosowaniu  katalogu  usług  [36].  Aplikacja  poszukująca  usług  nazywana  jest 

„User Agent”, dostawcą usług jest „Service Agent”, a „Direktory Agent” pełni rolę 

katalogu usług [36]. W niedużych sieciach można pominąć katalog usług, wówczas 

zapytanie  od  „User  Agent’a”  wysyłane  jest  multicastowo  do  wszystkich  „Service 

Agent’ów”.  Jednak  jeśli  „User  Agent”  ma  świadomość  istnienia  w  sieci  katalogu 

usług, wtedy zapytanie wysyła tylko do „Direktory Agent’a” (unicast) [36]. Więcej 

na temat tego protokołu można dowiedzieć się ze strony 

www.openslp.org

•  Jini  –  technologia,  która  jest  rozszerzeniem  języka  Java  na  systemy  rozproszone. 

Każde  urządzenie  działające  w  tym  środowisku  umie  interpretować  kod  Java. 

Nawet jeśli nie potrafi, wówczas ma swojego Proxy, który zrobi to za niego [38]. 

Więcej o tym protokole można dowiedzieć się ze strony 

www.jini.org

 

•  Salutation  –  można  powiedzieć  że  jest  to  mechanizm  wykrywania  i  uzyskiwania 

dostępu do usług w dużych sieciach o zróżnicowanym medium. W tej technologii 

występuje  pośrednik  między  klientem  a  usługą,  tzw.  Salutation  Manager  (SLM) 

[33]. Każdy klient chcący skorzystać z jakiejkolwiek usługi musi wysłać zapytanie 

do lokalnego SLM (najczęściej znajduje się on fizycznie na tej samej maszynie co 

klient)  Ten  po  konsultacjach  z  innymi  wysyła  wynik  do  klienta.  Po  uzyskaniu 

odpowiedzi mówiącej o dostępności danej usługi, klient może zażądać wykonania 

usługi  za  pomocą  SLM  [33].  Może  się  zdarzyć,  iż  lokalny  SLM  nie  będzie 

dysponował wymaganą przez klienta usługą. Wtedy SLM komunikuje się z innymi 

SLM’ami  [33].  Salutation  można  porównać  z  Jini,  gdyż  jest  bardzo  podobny  w 

sposobie działania. Jest jednak bardziej uniwersalny. Więcej informacji na stronie  

http://www.salutation.org

 

•  SSDP-UPnP  (Simple  Service  Discovery  Protocol)  –  służy  do  automatycznego 

wykrywania,  konfiguracji  i  kontroli  usług  w  niedużych  sieciach  LAN  [32].  Po 

nazwie  można  dojść,  że  jest  to  protokół  dosyć  prosty.  Zrezygnowano  z  katalogu 

background image

 

58 

usług,  skorzystano  z  multicast’u.  W  ten  sposób  system  wykrywania  usług  nie 

wymaga  konfiguracji.  W  jaki  sposób  klient  może  dowiedzieć  się  o  istniejącej 

usłudze?  Otóż  na  dwa  sposoby.  Pierwszy  to  bierne  nasłuchiwanie,  które  tutaj  ma 

sens, gdyż aktywne usługi rozsyłają   swoje ogłoszenia. Znaleziony serwis zostaje 

zapisany  w  lokalnej  bazie  danych  [32].  Drugi  sposób  polega  na  wysyłaniu 

multicast’owego  zapytania  (zapytanie  do  wszystkich).  Urządzenie  posiadające 

stosowny serwis, odpowiada na zapytanie [32]. Więcej na stronie 

http://upnp.org

   

•  PDP  (Pervasive  Discovery  Protocol)  –  protokół  skupiający  się  na  decentralizacji 

mechanizmu  wyszukiwania  usług.  Więcej  informacji  na  ten  temat  na  stronie 

http://www.it.uc3m.es/~celeste/papers/pdp_aamas2002.pdf

 

•  DEAPspace  –  opiera  się  o  rozgłaszanie  broadcast’owe  informacji  o  usługach  w 

całej sieci. 

•  SSDS  -  (Secure  Service  Discovery  Service).  Zawiera    metody  uwierzytelniania  i 

wymiany kluczy na potrzeby wykrywania usług. Więcej informacji znaleźć można 

na 

http://ninja.cs.berkeley.edu/dist/papers/sds-mobicom.pdf

 

•  SDP  –  jest  to  protokół  z  którego  skorzystałem  w  swoim  projekcie.  Największą 

zaletą  tego  protokołu,  która  przemówiła  za  tym  aby  z  niego  skorzystać  jest 

niewątpliwie  fakt,  iż  jest  on  zaimplementowany  we  wszystkich  urządzeniach 

wykorzystujących  technologię  Bluetooth.  Pisząc  aplikacje,  miałem  na  uwadze 

uniwersalność programów, które z założenia mają działać na jak największej ilości 

urządzeń.  Obecność  klienta  lub  serwera  SDP  w  urządzeniach  z  Bluetooth  jest 

obowiązkowa.  Dostawca  usługi  musi  mieć  funkcjonalność  serwera  SDP,  a  klient 

usługi  klienta  SDP  [27].  Trzeba  pamiętać,  że  funkcja  klienta  i  serwera  SDP  jest 

niezależna od tego, które urządzenie jest w danym połączeniu urządzeniem Master, 

a które Slave [27]. Transakcję SDP bardzo dobrze obrazuje obrazek numer 23. 

 

background image

 

59 

 

Rys 23. Protokoły uczestniczące w transakcji SDP 

[

www.bluetooth.org/spec/] 

 

Po  wywołaniu  żądania  zapytania  o  usługę,  następuje  wygenerowanie  PDU  przez 

klienta SDP, który przekazywany jest niższym warstwom. Każde zapytanie i każda 

odpowiedź  składa  się  z  jednego  PDU.    Przez  interfejs  radiowy,  odpowiednio 

zapakowany wysyłany jest do urządzenia zdalnego, gdzie po dekapsulacji i scalaniu 

trafia do serwera SDP. Serwer posiada swoistą bazę danych o usługach (SDDB), na 

jej podstawie generuje odpowiedź, która wraca do klienta SDP [27]. 

 

5.2.2

  Aplikacja na PC 

 

Aplikacja  na  komputerze  klasy  PC  pełni  rolę  serwera.  W  dużej  części  oparta  jest  o 

oprogramowanie  dostarczane  wraz  z  urządzeniem  Bluetooth  ze  stosem  protokołów 

BlueSoleil.  Po  instalacji  oprogramowania  BlueSoleil  mamy  dostęp  do  API,  z  którego 

można  korzystać  w  swoich  aplikacjach.  Dzięki  temu  moja  aplikacja  może  wykonywać 

podstawowe  operacje,  typu:  start  serwis,  stop  serwis,  itp.  4  pliki  zostały  dostarczone 

projektantom  i  programistom  w  celu  kompilowania,  linkowania i  uruchamiania  aplikacji: 

plik DLL btfunc.dll, biblioteka btfunc.lib i dwa pliki nagłówkowe bt_ui.hbt_def.h

•  btfunc.dll  –  implementacja  API  do  Bluetooth.  W  momencie  instalacji  BlueSoleil, 

biblioteka ta jest instalowana w systemie Windows 

background image

 

60 

•  btfunc.lib  –  zawiera  adresy  funkcji,  biblioteka  którą  trzeba  dołączyć  do  pisanego 

programu 

•  bt_ui.h – plik nagłówkowy w którym zdefiniowane są stałe, struktury 

•  bt_def.h – plik nagłówkowy w którym zdefiniowane są typedef’y i klasy Bluetooth 

 

Aplikacja oferuje 3 poziomy zabezpieczeń połączenia pomiędzy urządzeniami: 

•  Niski  -  brak  zabezpieczenia.  Procedury  zabezpieczenia  nie  są  wymagane  dla 

połączeń.  Inne  urządzenia  mają  swobodny  dostęp  do  serwera  bez  konieczności 

wprowadzania klucza hasła.   

•  Średni - uwierzytelnianie lub autoryzacja są wymagane przy dostępie do  

określonej usługi przez inne urządzenia. Jeśli dwa urządzenia nawiązują ze sobą po 

raz pierwszy połączenie, wówczas taki tryb wymusza wymianę tego samego klucza 

hasła między nimi. 

•  Wysoki – wymuszone zabezpieczenie. Jeśli mamy uruchomiony ten tryb, wówczas 

uwierzytelnianie  jest  wymagane  przy  każdym  inicjowaniu  połączenia  pomiędzy 

dwoma  urządzeniami  z  obsługą  Bluetooth.  Do  dokończenia  procesu 

uwierzytelniania wymagane jest dostarczenie klucza hasła obydwu stronom. 

 

 Skoro aplikacja ta pełni rolę serwera, to musi być na niej uruchomiony co najmniej jeden 

serwis  (w  moim  przypadku  jest  to  „Serial  Port”),  który  nasłuchuje  na  połączenia 

przychodzące od innych urządzeń. Każde przychodzące połączenie obsługiwane jest przez 

nowy  wątek.  Aby  serwis  spełniał  założone  przeze  mnie  zadanie,  przed  jego 

uruchomieniem  należy  zarejestrować  funkcję  CallBack()  (z  dostępnych  poleceń  wybrać 

należy  cyfrę  10),  która  w  pośredni  sposób  odpowiada  za  zdarzenia  związane  z 

nadchodzącymi ze zdalnych urządzeń „poleceniami”. 

Wszystkie  możliwe  polecenia  które  mogą  napłynąć  od  zdalnych  urządzeń  są  oczywiście 

znane  i  odpowiednio  zdefiniowane  w  aplikacji.  Przyjąłem  zasadę,  iż  każde  polecenie 

składa  się  z  3  liter,  które  są  w  pełni  wystarczające  aby  zdefiniować  wszystkie  potrzebne 

zadania.  Polecenia  mogą  być  dłuższe,  jednak  trzeba  pamiętać,  że  identyfikacja  następuje 

po  3  ostatnich  literach.  Oprócz  tego,  każde  poprawne  polecenie  musi  się  kończyć 

sekwencją  „AT\r”.  Każdorazowe  prawidłowe  przetworzenie  odpowiedniego  polecenia 

wymusza na aplikacji wysyłanie stosownego potwierdzenia. 

background image

 

61 

Dla celów pokazowych komunikaty będące poleceniami użytkownika, serwer realizuje w 

postaci głosowych zadań, które w łatwy sposób mogą być modyfikowane, w zależności od 

potrzeb. 

 

5.2.3

  Aplikacja na Game Board 

 

Tak jak pisałem wcześniej, nie udało się wdrożyć tego urządzenia do działającego systemu 

„inteligentnych urządzeń”. Istotę problemu opisałem w rozdziale 5.2. Jednak urządzenie to 

jest o tyle ciekawe, że warto przedstawić jego istotne cechy. 

W rzeczywistości Game Board to nic innego jak mikrokontroler. Jego najważniejsze cechy 

są następujące [40]: 

•  posiada 128 kB pamięci Flash i 16 SRAM  

•  130 x 130 pixel kolorowy wyświetlacz  LCD 

•  Obecność  Bluetootha  opartego  o  Philips  BGB203-S06  z  zaimplementowanym 

profilem SPP, czyli Serial Port  

•  5-cio funkcyjny joystick odpowiedzialny za interakcje z użytkownikiem.  

•  Zasilany przez USB 

•  Wymiary mikrokontrolera to 90x90mm. 

 

 

Rys.24 LPC2104 Color LCD Game Board [40] 

 

background image

 

62 

W  jaki  sposób  połączyć  się  z  urządzeniem  przez  USB?  Przede  wszystkim  trzeba 

zainstalować  stosowne  sterowniki,  gdyż  po  podłączeniu  urządzenia  do  komputera  PC  za 

pomocą  wspomnianego  USB,  komputer  prosi  o  sterowniki.  Po  prawidłowym 

zainstalowaniu tych sterowników, tworzony jest COM port służący do komunikacji (USB 

Serial Port) [40]. Ustawienia dla tego portu są następujące:  

- szybkość transmisji  115200 b/s 

- bity danych 8 

- brak parzystości 

- bity stopu 1 

- brak sterowania przepływem 

Zauważyć można że są to standardowe ustawienia portu, którym łączymy się z routerami. 

Przydzielony numer portu powinien mieścić się w zakresie od 1 do 5 [40], ponieważ tego 

wymaga  Philips  FLASH  Utility  program,  którego  używałem  do  wgrywania 

oprogramowania.  Alternatywnym  programem  do  rozmieszczania  oprogramowania  jest 

lpc21isp  dostarczany  z  biblioteką  LPC2xxx-gcc-newlib-v2_3_0_0.  Przewagą  pierwszego 

programu  jest  bardzo  przyjazny  interfejs  graficzny,  który  w  prosty  sposób  umożliwia 

przesłanie napisanego oprogramowania na urządzenie. W tym momencie należy poruszyć 

temat  związany  ze  zworkami,  które  są  obecne  na  urządzeniu.  Jest  to  bardzo  istotne 

zagadnienie,  ponieważ  wspomniane  zworki  muszą  znajdować  się  w  odpowiednim 

ustawieniu aby umożliwić wgrywanie nowego oprogramowania. Jednak nie będę się nimi 

szczegółowo  zajmował,  ponieważ  informacje  na  ten  temat  znaleźć  można  w  literaturze  

[44, 45].  

Mówiąc o wgrywaniu gotowych aplikacji, trzeba powiedzieć w jaki sposób powstaje plik, 

który można przesłać do mikrokontrolera. Plik ma określony format, jest to plik HEX. Aby 

móc skompilować napisany przez siebie program niezbędne jest odpowiednie środowisko 

wraz  z    kompilatorem  (GCC),  który  to  umożliwi  [41].    Środowisko  to  jest  oczywiście 

dostarczane przez producenta i dostępne na stronie 

www.EmbeddedArtists.com

Bardzo ważne zadanie pełni plik makefile. Określa parametry kompilowania i linkowania, 

a  także  jakie  pliki  wchodzą  w  skład  programu,  jakie  biblioteki,  jaki  będzie  wynik 

kompilacji  (jakiego  typu  będzie  plik  wynikowy),  itp..  Ponieważ  modelów 

mikrokontrolerów  jest  bardzo  dużo  na  rynku,  to  w  pliku  tym  określa  się  również  model 

mikrokontrolera  na  jaki  kompilujemy  program  [41].  Jeśli  chodzi  o  Bluetootha,  to  trzeba 

pamiętać  o  włączeniu  aktywnego  trybu,  który  powoduje  możliwość  wykrycia  naszego 

urządzenia przez innych.   

background image

 

63 

 

Do  uruchomiania  serwisu  nasłuchującego  na  przychodzące  połączenia,  użyłem 

Hyper Terminala i następującego polecenia: 

AT+BTSRV=<Port>, “<Service Name>” 

Powyższe  polecenie  wystarcza  do  tego,  aby  serwis  zaczął  nasłuchiwać.  Wracając  do 

problemu  z  którym  zetknąłem  się  podczas  implementacji  projektu  i  o  którym  pisałem  w 

rozdziale  5.2,  warto  zauważyć,  że  komunikacja  pomiędzy  mikrokontrolerem  a 

komputerem PC doszła do skutku. Niestety taka opcja była mało zadawalająca ze względu 

na założone cele, w których klientem poszukującym serwisu miał być telefon komórkowy. 

Więcej informacji o tym urządzeniu można znaleźć na stronie 

www.EmbeddedArtists.com

.  

 

5.2.4

  Profile zastosowań Bluetooth 

 

Profile  są  bardzo  istotnym  zagadnieniem  w  standardzie  Bluetooth  od  których  w  dużej 

mierze  zależy  dalszy  rozwój  tej  technologii.  Ich celem jest  zapewnienie  kompatybilności 

pomiędzy  aplikacjami  i  urządzeniami  pochodzącymi  od  różnych  producentów  [8]. 

Najogólniej, profile można podzielić na 4 grupy [8]: 

•  Profile ogólne 

•  Profile portu szeregowego 

•  Profile telefonii 

•  Profile pracy sieciowej 

 

Do profili ogólnych zalicza się profil ogólnego dostępu (GAP – Generic Access Profile) , 

który jest podstawą dla wszystkich pozostałych profili i jest obecny w  każdym urządzeniu 

wyposażonym  w  Bluetooth  [8].  Drugim  profilem  ogólnym  jest  profil  aplikacji 

wyszukiwania  usług  (SDPAM  –  Service  Discovery  Application  Protocol).  Profil  GAP 

określa jednakowe zasady korzystania z protokołów transportowych dla wszystkich profili, 

określa  funkcję,  które  są  obowiązkowe  dla  wszystkich  urządzeń  Bluetooth.  Natomiast 

profil SDPAM  tworzy zasady korzystania z protokołu SDP [8]. 

 

Do  rodziny  profilu  portu  szeregowego,  z  którego  bezpośrednio  korzystałem  w  swoim 

projekcie, zalicza się następujące profile [8]: 

•  Profil portu szeregowego (SPP) 

•  Profil ogólnej wymiany obiektów (GOEP) 

background image

 

64 

•  Profil transferu plików (FTP) 

•  Profil wypychania obiektów (OPP) 

•  Profil synchronizacji danych (SP) 

 

Ze  względu  na  założenie  w  którym  napisane  przeze  mnie  aplikacje  mają  działać  na  jak 

największej ilości urządzeń, skorzystanie z profilu SPP wydaje się oczywiste, gdyż jest on 

najczęściej  implementowanym  profilem  [8].  Pozwala  na  zestawienie  wirtualnego  portu 

szeregowego  pomiędzy  dwoma  urządzeniami  Bluetooth.  Profil  ten  odwołuje  się 

bezpośrednio  do  protokołu  RFCOMM,  co  nie  jest  w  cale  bez  znaczenia.  Przewagą 

RFCOMM  nad  innymi  protokołami  pośredniczącymi  jest  fakt,  iż  w  urządzeniu 

posiadającym  Bluetooth  jest  on  zaimplementowany  zawsze,  natomiast  inne  tego  typu 

protokoły niekoniecznie [8]. 

Trzeba  pamiętać,  że  do  ustanowienia  bezprzewodowego  połączenia  szeregowego,  oprócz 

wszystkich protokółów transportowych do warstwy L2CAP włącznie (rysunek numer 17) 

potrzebne  są  2  protokoły  pośredniczące:  wspomniany  RFCOMM  i  SDP.  Więcej  na  ten 

temat można dowiedzieć się ze specyfikacji Bluetooth i z literatury [8]. 

Chcę  zauważyć,  że  inne  profile,  niektóre  o  wiele  bardziej  wyrafinowane  byłyby  również 

dobre,  jednak  z  uwagi  na  fakt,  iż  urządzenie  wyposażone  w  Bluetooth  nie  musi  ich 

posiadać, tracą trochę na użyteczności. 

Nie  będę  opisywał  pozostałych  profili,  gdyż  zajęłoby  to  wiele  stron,  a  nie  to  jest  celem 

pracy.  

Wszystkie opisy dostępnych profili znajdują się w literaturze [8]. 

 

Aby uzupełnić rodziny profili, wspomnę jeszcze o profilach telefonii i pracy sieciowej, w 

skład pierwszej grupy wchodzą [8]: 

•  Profil telefonii bezprzewodowej 

•  Profil Interkomu 

•  Profil zestawu słuchawkowego  

 

Do rodziny profili pracy sieciowej zalicza się [8]: 

•  Profil pracy sieciowej z połączeniem komutowanym 

•  Profil dostępu do LAN 

•  Profil faksu 

background image

 

65 

 

5.2.5

  Instrukcja obsługi 

5.2.5.1

  Wymagania sprzętowe 

 

•  Telefon komórkowy z systemem Symbian 7.0 z interfejsem UIQ 2.0 

•  Komputer PC: 

o

  Procesor: Intel Celeron/ Pentium III/ Pentium IV; AMD Duron/ Athlon 

o

  System operacyjny: Microsoft Windows 98 SE/ME/2000/XP 

o

  Pamięć RAM: co najmniej 32MB 

o

  Wolne miejsce na dysku: 11,5MB 

•  Bluetooth USB Dongle z API BlueSoleil 

 

5.2.5.2

  Instalacja 

 

•  Instalacja aplikacji na komputerze PC 

 

Mając  w  napędzie  CD-ROM  płytkę  CD  dołączoną  wraz  z  tą  pracą,  należy 

podłączyć  Bluetooth  USB  Dongle.  Automatycznie  zostanie  wykryty  nowy  sprzęt, 

system  operacyjny  Windows  poprosi  nas  o  zainstalowanie  sterowników,  które 

dostępne są w katalogu SterownikiBlueSoleil. Po ukończeniu instalacji, program w 

katalogu AplikacjaNaPc\EXE jest gotowy do uruchomienia. 

 

•  Instalacja aplikacji na telefonie komórkowym z Symbianem 

 

Instalacja  napisanej  przeze  mnie  aplikacji  może  przebiegać  na  różne  sposoby. 

Przedstawię najłatwiejszy, ten z którego sam korzystałem. Otóż wystarczy przegrać 

plik instalacyjny SIS do pamięci telefonu (plik instalacyjny znajduje się w  katalogu 

AplikacjaNaTelKom\SIS

).  Można  to  zrobić  za  pośrednictwem  karty  SD,  w  którą 

wyposażonych  jest  większość  telefonów  (np.  Motorola  A920,  A925),  lub 

nawiązując połączenie Bluetooth z telefonem komórkowym i przesyłając stosowny 

plik.  Sama  instalacja  jest  trywialna,  wymaga  jedynie  kilkukrotnego  kliknięcia 

„OK”. Po ukończonej instalacji, program jest gotowy do uruchomienia.  

background image

 

66 

5.2.5.3

  Opis szczegółowy 

 

•  Aplikacja na komputerze PC 

 

Po  uruchomieniu  aplikacji,  na  ekranie  pojawia  się  główne  „menu”,  które  zawiera 

numerowane  akcje.  Do  poprawnego  działania  wymagane  jest  włączenie 

SDK_BtRegisterCallBack

, czyli akcja numer 10 (jest to funkcja która odpowiada za 

zdarzenia).  Następnie  trzeba  podać  na  jakie  zdarzenia  ma  reagować,  więc  należy 

podać  EVENT_CONNECTION_STATUS  (akcja  numer  3).  Aby  wyjść  z  tego 

poziomu  i  wrócić  do  głównego  „menu”  należy  podać  w  linii  poleceń  „-1”.  Po  tej 

operacji  pozostaje  tylko  uruchomienie  serwisu  nasłuchującego  na  połączenia,  co 

czyni akcja 12 (SDK_BtStartSPPExService). 

Po  tych  czynnościach  aplikacja  czeka  na  pojawienie  się  w  zasięgu  Bluetooth 

urządzenia zdefiniowanego w pliku BlueSoleilClient.ini. W pliku tym znajduje się 

MAC  adres  urządzenia  posiadającego  dostęp  do  wysłania  stosownych 

komunikatów.  Po  pojawieniu  się  danego  urządzenia  w  zasięgu,  aplikacja  na 

komputerze PC stosownym komunikatem głosowym powiadamia o tym zdarzeniu. 

Tak samo dzieje się w przypadku, gdy dane urządzenie opuszcza zasięg,  

 

•  Aplikacja na telefonie komórkowym 

 

Po  uruchomieniu  aplikacji,  z  „menu”  górnego  należy  wybrać  polecenie 

„Commands”,  a  następnie  z  rozwijanej  listy  poleceń  „Start”.  Niestety  dostępne 

urządzenia z którymi telefon komórkowy może nawiązać komunikację są zapisane w 

postaci  struktury  w  pliku  źródłowym  aplikacji  (w  pliku  ClientBT_MsgClient.cpp). 

Aby zmienić MAC adresy tych urządzeń, trzeba przekompilować cały projekt. Aby 

zatrzymać  działanie  aplikacji,  trzeba  wybrać  z  „menu”  polecenie  „Stop”.  Zasadę 

działania aplikacji opisuję w rozdziale 5.2.1.6. 

 

 

 

 

background image

 

67 

5.3

  Standardy  Bluetooth na komputery PC 

 

Na rynku jest kilka standardów Bluetooth, są to: 

 

•  JSR  82    +  Java  API.  Specyfikacja  standaryzująca  zbiór  wywołań  API,  które 

pozwalają na wykorzystanie Bluetootha w aplikacjach napisanych w Javie. Link do 

strony  z  której  można  ściągnąć  niezbędne  biblioteki  wraz  ze  specyfikacją  to 

http://jcp.org/aboutJava/communityprocess/mrel/jsr082/index.html

 

 

•  Widcomm  ,  obecnie  Broadcom  .  Są  dwie  wersje  SDK:  jedna  do  pisania  pod  PC 

(Windows 98, ME, 2000, XP), druga na Windows Mobile Pocket PC (wspierane są 

HP,  iPAQ's,  Dell,  Axim,  X30,  X50,  Acer,  n50,  n300,  Asus,  A636,  A716,  A730, 

Windows Mobile Pocket PC ze zintegrowanym Bluetooth). Link do tego standardu 

jest następujący  

http://www.broadcom.com/products/bluetooth_sdk.php

 

 

•  Toshiba, SDK dostępne na stronie 

http://aps.toshiba-tro.de/bluetooth/

 

Wspierane  platformy  to:  Win  95A,  Win  95B,  Win  98,  Win  98SE,  Win  ME,  Win 

NT 4.0, Win 2K, Win XP, Win Server 2K3, Win Vista. Informacje na temat tego 

standardu 

można 

uzyskać 

ze 

strony 

http://aps.toshiba-

tro.de/bluetooth/redirect.php?page=pages/faq.html

 

 
 

•  Microsoft Bluetooth i jego API, które zawiera niezbędne biblioteki. Windows 

zapewnia dwa sposoby dostępu do Bluetooth: 

 

 

 

- poprzez użycie Windows Sockets Interface 

 

 

 

- zarządzanie urządzeniem bezpośrednio, bez użycia Sockets 

 

•  BlueSoleil (w kilku zdaniach opisuje jego API w rozdziale 5.2.2) 

 

Wszystkie wymienione standardy rozwijane są w bardzo szybkim tempie. Niestety bardzo 

często  nie  są  ze  sobą  kompatybilne,  o  czym  mogłem  się  przekonać.  Stwarza  to  wiele 

problemów z ich używaniem. Do swojego projektu wybrałem standard BlueSoleil. Decyzje 

mogę  umotywować  tylko  tym,  iż  chciałem  zapoznać  się  z  implementacją  podstawowych 

funkcji w standardzie innym niż Microsoft.  

 

background image

 

68 

5.4

  Dlaczego C++ 

 

W  porównaniu  z  Javą,  zaletą  C++  jest  pełny,  niskopoziomowy  dostęp  do  urządzenia, 

możliwość bezpośredniego dostępu do wielu funkcji telefonu., oraz znacznie szybsza praca 

aplikacji.  Java  uznawana  jest  za  technologię  wolną  i  „zasobożerną”,  co  w  przypadku 

urządzeń  o  ograniczonej  mocy  obliczeniowej  i  małej  pamięci  jest  poważnym 

zastrzeżeniem. 

Jeśli  aplikacja  pisana  przeze  mnie  miałaby  charakter  jakiejś  gry  czy  innej  podobnej  tego 

typu  aplikacji,  wówczas  Java  byłaby  równie  dobra  co  język  C++.  Jednak  do  tworzenia 

złożonych  i  bardziej  zaawansowanych  aplikacji  (aplikacja  wykorzystująca  Bluetooth 

należy do takiej grupy programów), znacznie lepiej skorzystać z C++ [34].  

 

6

  Dalsze kierunki rozwoju 

 

Przedstawiony  i  zrealizowany  przeze  mnie  projekt  posiada  jedynie  podstawowe 

elementy wchodzące w skład  Inteligentnego Budynku. Proponowany jest dalszy rozwój w 

celu  zwiększenia  złożoności  systemu  i  doprowadzeniu  do  stanu  w  którym  liczba 

„inteligentnych”  urządzeń  wzrośnie.  Należy  dążyć  do  implementacji  rzeczywistych 

wymogów stawianych przed tego typu systemami.   

Jest  wiele  kierunków,  w  których  projekt  może  się  rozwinąć.  Oprócz  dodania  innych 

urządzeń, które w znaczący sposób rozszerzą projekt, można spróbować zmienić schemat 

ideowy  projektu,  o  który  opiera  się  cały  system.  Do  istniejącej  sieci  można  dodać  punkt 

centralny  –  jednostkę,  która  będzie  zarządzała  wszystkimi  urządzeniami  peryferyjnymi, 

które byłyby w takim wypadku podrzędnymi w stosunku do punktu centralnego. Dobrym 

kandydatem  urządzenia  centralnego  spełniającego  wszystkie  potrzebne  funkcje  mógłby 

być komputer klasy PC z Bluetooth’em. Wtedy „klucz”, telefon komórkowy łączyłby się 

tylko  z  jednostką  centralną,  która  zajmowała  by  się  realizacją    zleconych  mu  zadań 

poprzez przesyłanie komunikatów do odpowiednich urządzeń.  

 

background image

 

69 

 

Rys.25 Wariant rozbudowy projektu 

 

Takie  rozwiązanie  miałoby  jedną  dużą  zaletę.  Proces  polegający  na  zweryfikowaniu 

tożsamości  osoby  (tzw.  uwierzytelnienie)  posiadającej  telefon  komórkowy  i  próbującej 

nawiązać  połączenie  z  którymkolwiek  urządzeniem  byłby  o  tyle  prosty,  iż  wymagałby 

zaimplementowania go jedynie na dwóch urządzeniach: telefonie komórkowym i jednostce 

centralnej.  Niestety  należało  by  się  zastanowić  nad  wadami  takiego  rozwiązania.  Jedną z 

takich wad jest niewątpliwie to, iż w sieci będzie istniała jednostka centralna, która w razie 

jakichkolwiek problemów technicznych unieruchomi całą sieć. 

 

Aplikacja  na  telefon  komórkowy  z  system  Symbian  OS  stwarza  ogromne 

możliwości rozwoju. Napisana przeze mnie aplikacja polega na automatycznym wysyłaniu 

stosownego polecenia do zdalnego urządzenia, w momencie pojawienia się w jego zasięgu. 

Jednak może zajść potrzeba, gdzie użytkownik będzie chciał po wysłaniu tego polecenia, 

wysłać  inne  (przykładem  może  być  telewizor,  który  włączy  się  po  naszym  wejściu  do 

mieszkania,  lecz  przykładowo  domownik  chciałby  mieć  możliwość  zmiany  kanałów). 

Aplikacja uwzględnia przyszłe takie potrzeby, jest napisana w taki sposób, aby umożliwić 

w przyszłości zaimplementowanie tej funkcjonalności.    

 

background image

 

70 

7

  Wnioski i podsumowanie 

 

Cel  który  postawiłem  sobie  na  samym  początku  został  osiągnięty.  W  ramach  mojej 

pracy  powstał  system  Inteligentnego  Budynku.  Urządzeniem  sterującym  jest  telefon 

komórkowy  z  systemem  Symbian  OS.  Komputery  klasy  PC  wraz  z  mikrokontrolerem 

pełnią  rolę  urządzeń  peryferyjnych,  wykonujących  wcześniej  skonfigurowane  zadania. 

Oczywiście  mam  świadomość  że  w  rzeczywistości  Inteligentne  Budynki  składają  się  z 

większej  ilości  aktywnych  urządzeń.  Są  to  systemy  bardzo  rozbudowane,  ich  topologie 

bardzo często przybierają różną postać – w zależności od zastosowań.  

Zasadniczym  celem  pracy  było  zapoznanie  się  ze  sposobami  tworzenia  i 

uruchamiania  oprogramowania  dla  OS  Symbian.  Do  tworzenia  oprogramowania  na 

Symbian  OS  powstało wiele  środowisk  programistycznych,  tzw.  IDE,  których  celem jest 

ułatwienie  pisania  aplikacji  pod  ten  system.  Mimo  wszystko,  tworzenie  nawet  prostych 

aplikacji przysparza wielu kłopotów, o czym mogłem się przekonać. 

Dużą  przeszkodą  w  pisaniu  programów  na  Symbian  OS  jest  brak  dobrej 

dokumentacji. Wsparcie techniczne dla tego systemu operacyjnego jest nieporównywalnie 

mniejsze  od  innych  systemów  operacyjnych,  takich  jak  Windows  czy  Linux.  Skalę 

problemu  można  zaobserwować  przeglądając  oferty  księgarni  publicznych  a  także 

księgarni internetowych. Na polskim rynku nie ma jeszcze ani jednej książki omawiającej 

system operacyjny Symbian.  

Jednym  z  najtrudniejszych  wyzwań  w  tej  pracy  było  napisanie  oprogramowania 

przeznaczonego na telefon komórkowy, służącego do sterowania innymi urządzeniami. W 

tym celu niezbędną rzeczą było dogłębne poznanie protokołu Bluetooth. Jak wspominałem 

we  wcześniejszych  rozdziałach,  protokół  ten  rozwija  się  bardzo  szybko.  Niestety  nie  jest 

on jeszcze doskonały, o czym świadczą istniejące „dziury”, które często wykorzystywane 

są przez liczne ataki. 

W 2005 roku opracowano już nawet mechanizm łamania PINu, o który oparty jest proces 

„parowania” urządzeń przed rozpoczęciem transmisji. 

Do najczęstszych ataków wykorzystujących luki w specyfikacji Bluetooth należą: 

 

•  BlueJack  –  wysyłanie  wiadomości  do  widocznych  urządzeń będących  w  zasięgu, 

rozsyłanie SPAMu, wirusów. 

•  BlueSmack – atak typu Dos, bazujący na wysyłaniu wiadomości protokołu L2CAP 

z żądaniem odpowiedzi (echo request) 

background image

 

71 

•  BlueBump  –  umożliwia  połączenie  z  telefonem  ofiary  bez  jej  wiedzy  jeśli 

wcześniej  istniało  uwierzytelnione  połączenie.  Jego  działanie  polega  na 

manipulacji przechowywaniem klucza połączenia (link key). 

 

Wobec  tego  można  sobie  zadać  pytanie  dlaczego  zdecydowałem  się  użyć  Bluetootha, 

skoro  jest  tak  dużo  zagrożeń  związanych  z  komunikacją  opartą  o  ten  protokół.  W  tym 

miejscu warto zastanowić się nad tym, czy chcemy mieć komunikację z urządzeniami za 

pomocą  jakiegokolwiek  okablowania,  czy  też  drogą  radiowa  będzie  odpowiedniejsza 

(bezpieczeństwo  i  uciążliwe  kable,  czy  wygoda  i  ryzyko  związane  z  narażaniem  się  na 

różne  ataki  ).  W  grupie  protokołów  radiowych  Bluetooth  wydaje  się  rozwiązaniem 

najlepszym  patrząc  z  punktu  widzenia  zastosowania  w  Inteligentnym  Budynku  i  nie  bez 

znaczenia  jest  to,  iż  protokół  ten  jest  bardzo  intensywnie  rozwijany.  Grupa  SIG  stara  się 

zwalczać wszelkie problemy, myślę że w ciągu kilku lat uda im się opracować algorytmy, 

które wykluczą wszelkiego rodzaju ataki. 

W  przyszłości  na  podstawie  mojej  aplikacji  może  powstać  bardzo  duży  system, 

który  umożliwi  sterowanie  wieloma  urządzeniami.  Kod  programu  sterującego  innymi 

urządzeniami jest napisany zgodnie z konwencją pisania programów pod Symbian OS, co 

powinno ułatwić rozwój aplikacji. 

Podsumowując cały temat związany z Inteligentnym Budynkiem, po zapoznaniu się 

z  różnymi  technologiami  umożliwiającymi  realizację  praktyczną,  z  całą  pewnością  mogę 

stwierdzić, że jest to zagadnienie o które w przyszłości opierać się będzie budownictwo na 

całym świecie. Zaawansowane systemy kontrolujące niemal wszystko, co jest związane z 

budynkiem będą codziennością. 

  

 

 

 

 

 

 

 

 

background image

 

72 

BIBLIOGRAFIA 
 

[1] 

Richard Harrisom, „Symbian OS C++ for Mobile Phones”, John Wiley & Sons Ltd 

2003 

[2] 

Rafał  Fabich,  Rafał  Fetorków,  strona  zrealizowana  w  ramach  przedmiotu 

"Środowisko telekomunikacyjne sieci komputerowych", 

http://fedik.republika.pl

 

[3] 

SMARTech, Zastosowania Inteligentnego Budynku, 

http://poradnik.smartech.pl/

  

[4] 

Soft-Net, Zastosowania Inteligentnego Budynku, 

http://www.soft-net.com.pl 

[5] 

Piotr Zwierzchowski, „Oświetlenie w inteligentnych budynkach”, 2005 

http://www.steruj.pl/index2.php?option=com_content&do_pdf=1&id=6

 

[6] 

Mariusz Szepietowski „Porównanie systemów inteligentnego domu - część I, II i 

III„

, 2007 

http://budujemydom.pl/component/option,com_content/task,specialblogcategory/ac

t,view/id,1358/Itemid,45/

 

[7] 

Krzysztof Nowicki, „Ethernet - sieci, mechanizmy”, wyd. Infotech 2006 

[8]  

Brent A. Miller, Chatschink Bisdikian, Ph. D., “Uwolnij się od kabli - Bluetooth”

Helion, Gliwice 2003 

[9] 

Bzowski Remigiusz, Cerankowski Łukasz, „System zabezpieczenia w inteligentnym 

domu”

, Elbląg 2005 

http://www.elektrycy.cba.pl/nauka/informatykawelektroenergetyce/System_zabezpi

eczenia_w_inteligentrnym_budynku.pdf 

[10]   Jerzy Mikulik, „Budynek inteligentny. Tom II. Podstawowe systemy bezpieczeństwa 

w budynkach inteligentnych”

, wyd. Politechniki Śląska 2005. 

[11]   A. Janikowski „Sieci domowe cz.1”, 2001, 

http://www.networld.pl/artykuly/9289.html

 

[12]   A. Janikowski “Sieci domowe cz. IV - Sieci bezprzewodowe”

http://www.networld.pl/artykuly/21058.html

 

[13]   A. Janikowski, „PLC - prąd i dane w jednym gniazdku“, Networld – wydanie 

specjalne, nr 1/2002     

[14] 

MainNet Communications Ltd, „BPL / PLC Technology Overview”, 2007, 

http://www.mainnet-plc.com/mainnet/home/page.aspx?id=1

 

[15]   S. Chemishkian, „Building Smart Services for Smart Home”, Networked 

Appliances, 2002. Proceedings. IEEE 4th International Workshop on, 2002. 

background image

 

73 

[16]   Przemysław Pawełczak, Krzysztof Jakubik „Co nowego w PLC?”, 2006 

http://cyfrowydom.idg.pl/artykuly/51611.html

 

 

 

[17]   Ascom Poland Sp. z o.o., opis techniczny systemu ASCOM PLC,  

http://networld.pl/suplementy/urzadzenia/ascom.html#charakt

              

[18] 

Krzysztof Pietrzak, „Sieci HomePlug”, 2006, 

http

://cyfrowydom.idg.pl/artykuly/50188.html

             

[19]   Andrzej Janikowski, “Sieci domowe”, 2002, 

http://wireless.idg.pl/artykuly/24453.html

 

[20] 

XinWang, Georgios B. Giannakis, “CSMA/CCA: A Modified CSMA/CA Protocol 

Mitigating the Fairness Problem for IEEE 802.11 DCF”

,  

http://www.hindawi.com/GetArticle.aspx?doi=10.1155/WCN/2006/39604&e=REF 

[21] 

Małgorzata Szafarz, „Inteligentny budynek”, 2006, 

http://nowebiuro.pl/biuro/kategorie/artykuly/Inteligentny;budynek-12,12129.html

 

[22] 

Wojciech Wiśniewski, „Zasady działania systemu EIB”

http://eib.pl/?60320401

 

[23] 

IrDA 

Specifications, 

http://www.irda.org/displaycommon.cfm?an=1&subarticlenbr=7

 

[24]   The  HomeRF  Technical  Committee,  “HomeRF  2.0  Specification  Revision  2.01”

2002, 

http://palowireless.com/homerf/homerfspec.asp

 

[25]   Marcin Suszkiewicz,  “ZigBee - sieci energooszczędne”, 2004,  

http://www.idg.pl/artykuly/45542.html 

[26]   ZigBee Alliance, ZigBee Specification Document 053474r13, 2006, 

http://www.zigbee.org/en/spec_download/download_request.asp 

[27]   Bluetooth Specification Version 2.1 + EDR [vol 0], 2007, 

http://www.bluetooth.com/Bluetooth/Learn/Technology/Specifications/ 

[28]   Philips, “UM_1SPP BGB203 BT 2.0 Serial Port Profile Module User’s Guide”

2005 

[29]   Oficjalna strona Symbian OS, 

http://www.symbian.com

  

[30] 

Cezary Kramp, „Systemy także w komórkach”, 2004 

http://www.pcworld.pl/artykuly/44802.html 

[31] 

Portal poświęcony systemowi operacyjnemu Symbian, 

http://www.symbianos.pl

 

[32] 

 

IETF Internet Draft – “Simple Service Discovery Protocol/1.0”

www.upnp.org

 

[33] 

 

Choonhwa Lee and Sumi Helal “Protocols for Service Discovery in Dynamic and 

Mobile Networks”

, 2002 Nova Science Publishers, Inc, 

http://www.harris.cise.ufl.edu/projects/publications/servicediscovery.pdf

 

background image

 

74 

[34] 

Andreas Jakl, „Pierwsze kroki w C++ dla Symbian OS”, Software 2.0, 5/2005 

[35] 

Michael J. Jipping, “Symbian OS - Communications Programming”, published by 

John Wiley & Sons 2004, ISBN 0-470-88430-2 

[36]   Network  Working  Group,  “RFC  2608  -  Service  Location  Protocol,  Version  2”, 

1999 

www.faqs.org/rfcs/rfc2608.html

 

[37] 

International 

Telecommunication 

Union, 

“What 

is 

UUID?”

http://www.itu.int/ITU-T/asn1/uuid.html

 

[38] 

Sun Microsystems, White Paper, “Jini Architectural Overview”

www.sun.com/software/jini/whitepapers/architecture.pdf

 

[39] 

Alan Berkema, “Minimal Basic Printing Profile Requirements for a Sender”, 2002, 

http://www.bluetooth.com/NR/rdonlyres/497756B8-1066-48D6-99EC-

0363D879FC27/0/Minimal_BPP_Reqs_For_Sender.pdf

 

[40] 

Embedded Artists AB, “LPC2104 Color LCD Game Board User’s Guide”, 2006, 

http://.EmbeddedArtists.com

 

[41] 

Embedded Artists AB, “QuickStart Program Development User’s Guide”, 2005, 

http://.EmbeddedArtists.com

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

background image

 

75 

Dodatek A 

Zawartość nośnika CD-ROM 

 

Aplikacja na telefon komórkowy – załączone oprogramowanie jest w dwóch wersjach:   

•  programu wykonywalnego w postaci pliku SIS (AplikacjaNaTelKom\SIS) 

•  plików źródłowych całej aplikacji (katalog AplikacjaNaTelKom\Sources) 

 

Aplikacja na PC – załączone w dwóch wersjach: 

•  program wykonywalny w postaci pliku EXE (AplikacjaNaPc\EXE) 

•  program w postaci plików źródłowych (AplikacjaNaPc\Sources) 

 
Praca mgr – tekst pracy w dwóch wersjach: 

•  plik PDF (TekstPracyMgr\PDF) 

•  plik DOC (TekstPracyMgr\DOC) 

 

SDK + Sterowniki do Bluetooth BlueSoleil 

•  Katalog SDKiSterownikiBlueSoleil 

 

Materiały elektroniczne 

•  Katalog Materiały elektroniczne 

 

Użyte rysunki  

•  Katalog Rysunki do pracy 

 

Raporty autentyczności pracy 

•  Katalog Pelny raport Systemu antyplagiatowyego Plagiat.pl 

•  Katalog Skrócony raport Systemu antyplagiatowego Plagiat.pl 

 

Instalacja CodeWarrior + SDK (wersja 15 dniowa) 

•  Katalog CodeWarrior + SDK 

 

LPC Game Board – sterowniki + programy 

•  Katalog LPC 

 

background image

 

76 

Dodatek B 

Raport skrócony wygenerowany przez System Antyplagiatowy Plagiat.pl, za 

pomocą witryny 

http://plagiat.pl

 

 

 

 

background image

 

77 

 

 

 

 

 

 

 

background image

 

78 

 

 

 
 
 

 

 
 
 
 
 

background image

 

79