Každý programátor aplikací pro PalmOS se někdy při své práci dostane do situace, kdy potřebuje ve své aplikaci zjistit něco o počítači, na kterém je aplikace spuštěna. Důvodem mohou být odlišné vlastnosti jednotlivých verzí operačního systému nebo snaha komunikovat s uživatelem v jazyce, který je nastaven jako standardní v paměti ROM. Jak tyto vlastnosti počítače zjistit?
Systémové vlastnosti
Operační systém PalmOS spravuje tabulku systémových vlastností. Z této tabulky můžeme zjistit všechny charakteristiky počítače, na kterém je aplikace spuštěna - od typu procesoru a verze operačního systému až po výrobce počítače a displeje. Součást operačního systému PalmOS, která tabulku systémových vlastností spravuje, se jmenuje manažer vlastností.
Vlastnost je 32-bitové číslo, které popisuje nějakou součást vašeho počítače nebo operačního systému, která je důležitá pro jiné programy. Vlastnost je charakterizována jednoznačnou identifikací tvůrce (anglicky Creator ID, 32-bitová konstanta vyjadřovaná často jako 4 písmena) a svým 16-bitovým číslem.
Libovolná aplikace může vlastnost publikovat (přidat do tabulky vlastností) a tak sdělit ostatním aplikacím, že mohou využívat zvláštní služby této aplikace. Některé vlastnosti však publikuje sám operační systém (jejich jednoznačná identifikace tvůrce má hodnotu sysFtrCreator) a tyto vlastnosti jsou nejzajímavější.
Vlastnost zjišťujeme voláním funkce FtrGet(), která je definována v souboru Features.h takto:
Err FtrGet(UInt32 creator, UInt16 featureNum, UInt32 *valueP)
Funkce FtrGet() vrací hodnotu 0, pokud byla vlastnost úspěšně vyzvednuta, nebo hodnotu ftrErrNoSuchFeature v případě neúspěchu.
Zjišťujeme-li systémové vlastnosti, předáme jako parametr creator hodnotu sysFtrCreator a na místě parametru featureNum hodnotu z následující tabulky (tabulka bude pokračovat v dalším článku):
Číslo systémové vlastnosti | Popis | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
sysFtrNumROMVersion (od verze 1.0) |
Verze operačního systému32bitové číslo popisující verzi operačního systému v paměti ROM ve tvaru 0xMMmmfsbbb, kde
Pro práci s touto hodnotou je v hlavičkovém souboru SystemMgr.h definováno několik maker, která usnadňují využívání této hodnoty. Všechna tato makra přebírají parametr, kterým je hodnota této systémové vlastnosti.
Podobně můžeme využít i makro sysMakeROMVersion(), kterému předáme požadované hodnoty hlavní a vedlejší verze operačního systému. Makro vrátí 32-bitovou hodnotu, popisující požadovanou verzi. Definice makra je: sysMakeROMVersion(major, minor, fix, stage, buildNum) Testovat, zda operační systém, ve kterém uživatel spouští naši aplikaci, můžeme takto:
nebo takto:
| ||||||||||||||
sysFtrNumProcessorID (od verze 2.0) |
Typ procesoruPrvním procesorem, který byl montován do počítačů Palm Pilot, byl typ MOTOROLA MC68328: člen úspěšné rodiny procesorů MC68000, která oživuje počítače Apple Macintosh (a historicky Atari ST, Commodore Amiga a další). Později byly počítače Palm Pilot osazovány novějším procesorem MOTOROLA MC68EZ328. Dnes již vývojáři společnosti 3Com, Inc. vážně uvažují o tom, že by v počítačích Palm Pilot byl pro zvýšení výkonu instalován některý z procesorů typu RISC, který by pro starší aplikace emuloval chování původních procesorů od Motoroly. Mezi oběma typy procesorů, které jsou instalovány v počítačích Palm Pilot a kompatibilních, jsou drobné odlišnosti, které se týkají zejména vnitřní architektury a některých hardwarových registrů. Pokud tedy píšete program, který využívá registry procesoru (technika nedoporučovaná vývojáři PalmOS, ale nezbytná například ke grafice ve stupních šedi, přehrávání WAV souborů nebo ovládání jednoduchého hardwaru), potřebujete znát, který procesor je v počítači instalován. Tato vlastnost zjišťuje typ procesoru, který je přítomen v počítači Palm Pilot nebo kompatibilním. Vrácená hodnota je 32-bitové číslo ve tvaru 0xMMMMrrrr, kde:
Pro zjištění typu procesoru se používá konstanta sysFtrNumProcessorMask, která slouží k oddělení bitů popisujících typ procesoru. Použití je následující:
Ve starších verzích PalmOS (1.0) nebyla tato systémová vlastnost definována. To nám ale nevadí, protože všechny počítače Palm Pilot, na kterých běží operační systém PalmOS 1.0, používají starší typ procesorů MC68328. | ||||||||||||||
sysFtrNumBacklight (od verze 1.0) |
Podsvícení32bitová hodnota, která je vrácena po dotazu na tuto vlastnost, nás informuje ve svém nejnižším bitu o tom, zda je v tomto modelu Palm Pilota nebo kompatibilního počítače možné používat podsvícení displeje. |
V příštím díle budeme pokračovat v tabulce s popisem vlastností systému a s příklady jejich použití. Zatím si uvedeme krátký program, včetně zdrojových textů, který po spuštění dotekem na ikoně zjistí typ procesoru instalovaného ve vašem počítači. Program je ke stažení zde.