This page was last modified 15:39, 23 June 2008.
HAL - Аппаратный абстрактный слой
From Forum Nokia Wiki
Перевод с английского, оригинальная статья находится здесь.
Hardware Abstraction Layer - Аппаратный абстрактный слой.
При разработке приложений под S60 имеется ряд API с помощью которых можно получить информацию о возможностях системы, создавать разделяемы данные для того чтобы состояние текущего приложения было доступно другим, подписываться на оповещение об изменениях состояния системы.
Такого рода API реализованы с помощью двух ключевых компонентов:
- Hardware Abstraction Layer (HAL, Аппаратный абстрактный слой)
- The System Agent Components
С помощью HAL очень просто получить различные атрибуты устройства, например:
- Производитель: производитель устройства, номера версий аппаратной и программной платформы.
- Процессор: архитектуру процессора, тактовую частоту, ABI
- Память: объем ОЗУ, объем свободной на данный момент ОЗУ, объем ПЗУ.
- Экран: разрешение экрана, глубину цвета.
- Различную информацию о клавиатуре
Объем API очень небольшой, всего три функции, все представлены в классе HAL:
static TInt Get(TAttribute anAttribute, TInt& aValue); static TInt Set(TAttribute anAttribute, TInt& aValue); static TInt GetAll(TInt& aNumEntries, SEntry*& aData);
Некоторые примеры получения атрибутов устройства
1) Получение всех атрибутов устройства
TInt numHalEntries; HAL::SEntry* halEntries; HAL::GetAll(numHalEntries, halEntries);
2) Получение значения одного конкретного атрибута - в данном случае объема ОЗУ (байт).
TInt ram; HAL::Get(HAL::EMemoryRAM, ram);
Некоторые примеры установки атрибутов устройства
TInt err = HAL::Set(HAL::ECaseSwitchDisplayOn, 1);
Если атрибут не поддерживает модификацию, в качестве результата выполнения будет возвращен стандартный код ошибки, обычно KErrNotSupported.
Класс HAL (hal.h) наследуется от HALData (hal_data.h), в котором содержится определение перечисления TAttribute.
Загаловочный файл: hal.h
Библиотека: hal.lib
| Related Discussions | ||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| [moved] Why SDK miss guide developers | aamitgupta | Tools and SDK Feedback | 9 | 2008-07-16 13:06 |
| user::TickCount() 's problem | cidhx | General Symbian C++ | 2 | 2004-01-03 08:26 |
| Getting firmware version. | kiranpuranik | General Symbian C++ | 5 | 2006-11-08 00:35 |
| Camer on N95: How do i know that the primary camera is closed?? | gmsk19 | Symbian Media (Graphics & Sounds) | 4 | 2008-06-09 15:14 |
| What is 6670 machine UID? | ppiggy | General Symbian C++ | 3 | 2004-11-15 05:29 |
