ÚVOD K VÝVOJI APLIKACÍ PRO SYMBIAN OS
připravil Karel Pechanec [
[email protected]]
Co je Symbian OS? Moderní operační systém pro novou generaci mobilních telefonů vzešel z uznávaného systému EPOC Poskytuje standardní API a framework pro vývojáře nativních aplikací pro mobilní telefony Zajišťuje aplikacím bezpečný přístup ke všem I/O funkcím telefonu (display, klávesnice, paměť, GSM,SMS,...) Systém vyvíjí a podporuje sdružení výrobců mobilních telefonů - Symbian (Sony Ericsson, Nokia, Siemens, Samsung...)
Součastná situace Verze 7 Mobilní telefony s podporou SymbianOS Ericsson R380 Smartphone (v5.0 - první telefon) Nokia Communicator ( v6.0 Crystal SDK) Nokia 7650 (v6.1 Series60 SDK) Ericsson P800 (v7 UIQ SDK) Nokia 3650 (v7 Series 60)
Co nabízí Symbian OS vývojáři? vývoj nativních aplikací pro mobilní telefon v C/C++ přináší standart - definuje API, datové typy, třídy a knihovny přístup ke všem vlastnostem a informacím na telefonu kontakty, zprávy, kalendář, hovory... networking - TCP/IP, HTTP,POP3,SMTP GSM/GPRS phoning - hlasový&datový přenos,WAP, SMS, EMS, MMS communication - Infrared, bluetooth, serial port multimedia support - podpora pro audio,video a zpracování grafiky a obrázků rozšiřitelné UI - klávesnice, ovládání aplikace, menu,... popora Javy - PersonalJava 3.0, JVM a JavaPhone 1.0 API SDK od výrobce
Symbian OS mobilní telefon architektura „klasického počítače“ ARM RISC 32bit procesor, MMU,Cache System-On-Chip architektura ( timer, řadič, UART seriový port...) Periferní zařízení telefonu (LCD, keyboard, Audio, pamět ROM/RAM,flash, infrared...) výrobce zajišťuje portaci Symbian OS na svůj telefon k hardware přistupuje přímo kernel a ovladač
Symbian OS aplikace
Nokia Series 60 phone Series60 definuje UI a funkční nabídku pro telefony Nokia (7650, 3650) Symbian OS je funkčně portován a rozšířen o podporu Series60 telefonů Symbian Series 60 SDK je plnohodnotné prostředí na vývoj Symbian OS aplikací pro Nokia7650
+ Symbian = OS
+
Series60
Series60 SDK obsahuje Symbian OS API v6.1 gcc kompilátor aplikací a resources pro platformu ARMI a WINS (pro testování) dll a lib knihovny pro ARMI a WINS (emulator) nástroje a perl scripty pro tvorbu Makefile (bldmake, abld,...) nástroje pro integraci do prostředí MS Visual C++ 6.0 nástroje pro tvorbu základní struktury aplikace (MEAD) nástroj pro tvorbu instalačních balíčků SIS (makesis) nástroj pro konverzi bitmap BMP na MBM (bmconv) emulátor Series60 telefonu pro platformu WINS (EPOC)
Architektura OS
Subsystem BASE Obsahuje základní součásti sytému jako je kernel, ovladače a knihovny. Definuje následující typy, třídy a API: základní datové typy (numerické, znakové, logické),pole, seznamy, řetězce,... funkce a třídy pro práci s poli a řetězci funkce, typy a třídy pro práci s časem funkce pro práci se speciálními soubory (resources) funkce a třídy pro práci se soubory a pamětí matematické funkce funkce pro práci s thready C Standart Library
BASE - základní datové typy definovány v <e32def.h> Numerické (celočíselné): TInt, TInt32 (long int), TInt16 (short int), TInt8 (signed int) Numerické (real): TReal, TReal64 (double) , TReal32 (float) - práce s desetinou čárkou podle normy IEEE754
Znakové: TText, TText8(unsigned char), TText16 (signed char) Logické: TBool (int) - nabývá hodnoty ETrue, EFalse)
BASE - řetězce I v Symbian OS jsou označovány jako „Descriptors“ 8bit nebo 16bit (Unicode)
Base - řetězce II dva základní abstraktní typy: TDes (modificable) a TDesC (non-modificable) TDes může být typu: TBuf (stack buffer) - obsahuje data, která můžou být měněna, délka je známa v době kompilace
maximální
TPtr (pointer) - odkazuje se na nějaký buffer.
TDesC odvozené obsahují funkce pouze pro čtení a přístup ke znakům, nelze měnit jejich obsah. TBufC (constant stack buffer) - obsahuje data, ktera jsou známa v době překladu, a nemůže být změněn. TPtrC (pointer to constant)
Subsystem GRAPHICS obsahuje API pro klasické „deskové kreslení oken, fontů a obrázků obsahuje rozhraní Window Server Client API, pro přístup, vykreslování, a práci s okny Definuje následující typy, třídy a API: třídy pro přístup ke grafickému zařízení a kreslící ploše (CGraphicsDevice a CGraphicsContext) třídy pro práci s bitmapami (CBitmapContext, CFbsBitmap) třídy pro práci s fonty a psaní (CFont,...) třídy a funkce pro podporu low-level grafických akcí a animací (bit bliting, offscreen bitmapy,...)
Application Framework I definuje strukturu aplikace a vzájemné vztahy uvnitř mezi aplikací, daty, grafickým výstupem a UI model „document-view“ používá se pro vytvoření základní struktury aplikace
Application Framework II Životní cyklus aplikace s použitím AF: • Operační systém po spuštění aplikace volá funkci EXPORT_C CApaApplication* NewApplication(), která vytváří instanci třídy CEikApplication. • Při inicializaci třídy se volá virtuální funkce CreateDocumentL() která vytváří a vrací dokument aplikace. • Vytvořený dokument při své inicializaci volá virtuální funkci CreateAppUiL(), která vytváří a vrací UI dokumentu CEikAppUi(). • Instance UI obsahuje třídy pohledů (views) odvozené od základní třídy CCoeControl. • Instance CCoeControl obsahuje virtuální funkci Draw(const TRect& aRect) const, kterou systém volá při každém požadavku na překleslení pohledu (např. funkcí DrawNow(). • Běžící instance UI dává pokyn k ukončení aplikace voláním funkce Exit(),dochází k volání destruktorů jednotlivých částí frameworku.
Application Framework III CEikApplication (CAknApplication) zapouzdřuje inicializaci aplikace a low-level objekty, vytváří hlavní aplikační thread slouží jako zdroj „dokumentu“
CEikDocument (CAknDocument) pro file-based aplikace poskytuje rozhraní mezi UI a fyzickým souborem obsahuje instanci UI
CEikAppUi (CAknAppUi) základní handler pro uživatelský vstup a akce nad aplikací (zkrz toolbar, menu, pop-up menu, klávesové zkratky,...) aplikace může mít pouze jedno UI, ale více pohledů
CCoeControl základní třída pro všechny grafické prvky (okna, dialogy, pohledy, tlačítka, editboxy, listboxy, popisky,...) může být použit jako základní pohled aplikace
Application Engines používají se pro přístup k základním datům a aplikacím které jsou součástí telefonu CContactDatabase zajišťuje přístup k databázi kontaktů, vyhledávání, přidávání kontaktů i popisků. CContactItem představuje jeden kontakt, CContactItemField jednotlivý popisek agenda (kalendář a plánovač)
COMMS Infrastructure obsahuje framework a systémové služby pro přístup a práci se síťovým rozhraním a internetem CommDb - systémové rozhraní pro práci s komunikačními protokoly(IAP,ISP, GPRS, modem, WAP,proxies). CCommsDatabase NifMan - poskytuje funkce pro základní práci se sítí (navazování spojení IAP,ISP, routovaní,...). Plug-in architektura zajišťuje přidávání jednotlivých funkční modulů (např. Generic Agent pro DialUp připojení ) Sockets Client - obsahuje klientskou podporu pro EPOC sockety (obdoba BSD), TCP/IP protokol a IrDA sokety (dále viz networking) Sockets Server - obsahuje funkce pro vytváření síťových služeb (TCP/IP server, IrDA server...)
Networking Generic Agent - zajišťuje dial-up připojení k ISP (nahrazuje NetDial). TCP/IP - přístupné přes rozhraní RSocket DNS - přístupné přes rozhraní RHostResolver IP adresa - typ TInetAddr použití v client/server internetových aplikacích
WAP Stack I podpora WAP 1.1 (protokoly WSP, WTP, WDP) EPOC Wap server je označení rozhraní s přístupem k Wap funkcím telefonu. (RWAPServ) WSP (Wireless Session Protocol) je přístupný pomocí rozhraní RWSPCLConn (RWSCLConn::Open()) WDP (Wireless Datagram Protocol) přístupný pomocí rozhraní RWDPConn(RWDPConn::Open(), Send(), Recv()) použití ve wap browserech, pro předávaní dat přes wap,atp.
WAP Stack II RWAPServ ecpocws; //connect to epoc wap server epocws.Connect(); ... _LIT8(wapserver,"http://wap.oskarmobil.cz"); TPort port=80; //standart http port RWDPConn wdpconn; //openning wap session with wapserver wdpconn.Open(epocws,wapserver,port,TBearer::EAll,Efalse); ... TDesC8<255> sendbuff=_L8("GET http://wap.oskarmobil.cz/index.wml HTTP/1.1"); //send HTML request wdpconn.Send(sendbuff); //start time counting - multithreading ... TRequestStatus status; TDesC8<255> recvbuff; //receive HTML response wdpconn.Recv(wapserver,port,recvbuff,status); //stop time counting ... //analysing time, status and recvbuff... ...
Serial ports & Infra Red I podpora IrDA (Infrared Data Association) serial portů a IrDA socketů k infrared se přistupuje přes EPOC Serial Port (RComm) a EPOC COMM Server (RCommSrv) s modulem IrCOMM (ovladač ircomm.csy) používá se ke komunikaci s PC nebo jiným zařízením
Infra Red II LIT8(KTxtIRCOMM,"IRCOMM"); _LIT8(KTxt0,"IrCOMM::0"); TInt ret; TRequestStatus stat; RCommServ commserv; // // CONNECT TO COMMSERV // commserv.Connect(); // // LOAD IRCOMM.CSY // if (commserv.LoadCommModule(KTxtIRCOMM) ==KErrNone) { // OPEN IrCOMM SERIAL PORT // RComm ircomm; ret = ircomm.Open(cs,KTxt0,ECommExclusive); //SEND HELLO TO PC _LIT8(KTxtData,"hello PC!\f"); ircomm.Write(stat,KTxtData); User::WaitForRequest(stat);}
Messaging podpora pro práci s SMS, EMS, MMS podpora pro odesílání a příjem emailů (SMTP,POP3, IMAP)
Message type module (MTM) zajišťuje prácí s low-level rozhraním (GSM/GPRS, TCP/IP,...) MTM moduly: Fax, IMAP4, POP3, SMTP, SMS CBaseServerMtm zajišťuje přenos daného typu zprávy přes odpovídající protokol CBaseMtmUi zajišťuje jednoduchý přístup na GUI telefonu pro práci se zvoleným typem zprávy
Message Server (MSV) zajišťuje přístup ke zprávám a komunikaci s MTM CMsvSession zajišťuje přístup a vytvoření session s MSV CMsvStore zajišťuje přístup k systémovému souboru se zprávami a přístup k jednotlivým položkám CMsvEntry obsahuje funkce pro manipulaci se zprávou TMsvEntry - struktura pro popis zprávy 3 typy message aplikací:message aware, inter-process, fullfeatured
Messaging II
Telephony I EPOC Telephony (ETel) zajišťuje přístup k funkcím klasickému „telefonu“ - umožňuje vytáčet a přijímat telefoní hovory, analyzovat je, atp. Root Session (RTelServer) - navazuje spojení s ETel serverem a vytváří session RPhone - rozhraní pro přístup k informacím „telefonu“ a jeho funkcím RLine - presentuje telefoní linku (1-n) RCall - presentuje „volání (hovor) na lince“ (0-n). Rozhraní pro ovládání hovoru - zvednutí/položení sluchátka, informace o délce hovorů, atp. TSY moduly - ovladače pro ruzné typy a funkce telefonů
Telephony II
Architektura OS: Review
Series60 SDK obsahuje Symbian OS API v6.1 gcc kompilátor aplikací a resources pro platformu ARMI a WINS (pro testování) dll a lib knihovny pro ARMI a WINS (emulator) nástroje a perl scripty pro tvorbu Makefile (bldmake, abld,...) nástroje pro integraci do prostředí MS Visual C++ nástroje pro tvorbu základní struktury aplikace (MEAD) nástroj pro tvorbu instalačních balíčků SIS (makesis) nástroj pro konverzi bitmap BMP na MBM (bmconv) emulátor Series60 telefonu pro platformu WINS
Instalace SDK http://www.forum.nokia.com/tools nastavení systémové proměnné EPOCROOT = \Symbian\6.1\Series60\ PATH = %PATH%; C:\Symbian\6.1\Shared\epoc32\gcc\bin;C:\Symbian\6. 1\Shared\epoc32\tools instalace „AppWizardu“ - Visual C++ modulu pro rychlé vytvoření základní kostry aplikace (aplikačního frameworku) copy C:\Symbian\6.1\Series60\Series60Tools\ApplicationWizard\* C:\Program Files\Microsoft VisualStudio\Common\MSDev98\*
Důležité adresáře EPOCROOT .\epoc32\build\ - obsahuje makefiles a project files aplikace .\epoc32\include - obsahuje hlavičkové soubory .\epoc32\release - obsahuje image systému a zkompilované verze aplikací pro různé platformy (ARMI, WINS) .\Epoc32\Release\ARMI - obsahuje zkompilované binárky aplikací pro ARMI .\epoc32\release\wins\UDEB\Z - obsahuje „c disk“ emulátoru .\epoc32Ex, .\Series60Ex - obsahuje vzorové aplikace SymbianOS v6.1 kompatibilní ..\shared\Epoc32\gcc, ..\shared\epoc32\tools - obsahuje C++ kompilátor a nástroje pro tvorbu aplikací
Symbian OS aplikace
Typy projektových souborů ./group/myFirst.MMP - definuje projekt, co a kam se má zkompilovat, definuje INCLUDE adresáře, SOURCE zdrojové soubory - může definovat MBM bitmapy které se mají vytvořit a AIF soubor ./data/myFirst.RSS, ./data/*.RSS
- zdrojový soubor resources - definuje menu, popup menu, status bar, dialogy, popisky, textové konstanty - může definovat AIF soubor (název aplikace, ikony, atp.) ./include/*.HRH
- hlavičkové soubory pro resources ./include/*.LOC
- definice řetězců pro lokalizaci ./install/MyFirst.PKG
- definuje instalační balíček SIS - jak, co a kam se má nainstalovat
Build process
Tvorba instalací pro tvorbu instalačních SIS balíčků se používá utilita makesis # makesis myFirst.pkg
definice aplikace v souborech *.PKG - určení co a kam se má nainstalovat instalaci lze podepsat a ověřit digitálním podpisem SIS soubor lze instalovat z PC i přímo z mobilního telefonu &jazyk #{„Nazev¨_aplikace"},(APPLICATION_UID), VERSION,SUBVERSION,SUBVERSION (0x101F6F88), 0, 0, 0, {"Series60ProductID"} "local_file1" - “!:\destination_file1“ "local_file2" - “!:\destination_file2“ ...
Důležité odkazy http://www.symbian.com - oficiální stránka sdružení symbian http://www3.symbian.com/faq.nsf - symbian developer network, praktické zkušenosti vývojářů http://www.forum.nokia.com/ - stránky věnované produktům Nokia