HAL - Аппаратный абстрактный слой
Метаданные
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);
Некоторые примеры получения атрибутов устройства
- Получение всех атрибутов устройства
-
TInt numHalEntries;
HAL::SEntry* halEntries;
HAL::GetAll(numHalEntries, halEntries);
-
- Получение значения одного конкретного атрибута - в данном случае объема ОЗУ (байт).
-
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


(no comments yet)