Güç yönetimi

Android, araca özel güç yönetimini desteklemek için CarPowerManagementService hizmeti ve CarPowerManager arayüzü sağlar.

Durum geçişleri, Araç Ana Kontrol Ünitesi (VMCU) tarafından tetiklenir. VMCU ile iletişim kurmak için entegratörlerin çeşitli bileşenleri uygulaması gerekir. Entegratörler, Araç Donanımı Soyutlama Katmanı (VHAL) ve çekirdek uygulamasıyla entegrasyondan sorumludur. Ayrıca entegrasyon uzmanları, uyandırma kaynaklarını devre dışı bırakmaktan ve kapatmaların süresiz olarak ertelenmemesini sağlamaktan da sorumludur.

Terminoloji

Bu belgede aşağıdaki terimler kullanılmaktadır:

uygulama işlemcisi (AP)
Çip üzerinde sistemin (SoC) bir parçasıdır.
Kapsamlı Destek Paketi (BSP)
Donanıma özel başlatma donanım yazılımını ve yerleştirilmiş bir işletim sisteminin belirli bir donanım ortamında (anakart) çalışmasına olanak tanıyan cihaz sürücülerini içeren, yerleştirilmiş işletim sistemiyle entegre yazılım katmanı.
CarPowerManager (CPM)
Uygulamaların güç durumu değişikliklerine kaydolması için bir API sunar.
CarPowerManagementService (CPMS)
Güç durumu geçişlerini koordine eder, güç durumu kontrolü için VHAL ile arayüz oluşturur ve askıya alma ve kapatma için son çağrıları yapar.
CarPowerPolicyDaemon (CPPD)
Güç politikalarını yönetir ve yerel işlemlerin güç politikası dinleyicilerini kaydetmesi için AIDL arayüzlerini kullanıma sunar.
genel amaçlı giriş veya çıkış (GPIO)
Genel amaçlı kullanım için dijital sinyal pimi.
donanım soyutlama katmanı (HAL)
Donanım işlevlerine erişmek için diğer tüm üst düzey modüllerin etkileşimde bulunması gereken bir yazılım katmanı.
hazırda bekletme
Diske Askıya Alma (S2D/S4) olarak da bilinir. Çip, S4 güç moduna (hazırda bekleme) alınır ve RAM içeriği kalıcı olmayan bir ortama (ör. flash veya disk) yazılır. Ardından tüm sistem kapatılır.
medya işlemcisi (MP)
Çip üzerinde sistem (SoC) başlıklı makaleyi inceleyin.
güç yönetimi entegre devresi (PMIC)
Ana makine sisteminin güç gereksinimlerini yönetmek için kullanılan çip.
çip üzerinde sistem (SoC)
AAOS'u çalıştıran ana işlemci. Genellikle Intel, MediaTek, Nvidia, Qualcomm, Renesas ve Texas Instruments gibi üreticiler tarafından sağlanır.
suspend
RAM'e askıya alma (S2R veya STR) olarak da bilinir. SoC, S3 güç moduna alınır ve RAM açık kalırken CPU kapatılır.
Araç HAL'si (VHAL)
Araç ağıyla arayüz oluşturmak için kullanılan Android API. Bu modülün yazılmasından 1. Katman iş ortağı veya OEM sorumludur. Araç ağı herhangi bir fiziksel katmanı (ör. CAN, LIN, MOST ve Ethernet) kullanabilir. VHAL, AAOS'un araçla etkileşim kurabilmesi için bu araç ağını soyutlar.
Araç Arayüzü İşlemcisi (VIP)
Araç MCU'sunu inceleyin.
Araç Ana Kontrol Ünitesi (VMCU)
Araç ağı ile SoC arasındaki arayüzü sağlayan mikro denetleyici. SoC, USB, UART, SPI ve GPIO sinyalleri aracılığıyla VMCU ile iletişim kurar.

Sistem tasarımı

Bu bölümde, AAOS'nin uygulama işlemcisinin güç durumunu nasıl temsil ettiği ve hangi modüllerin güç yönetim sistemini uyguladığı açıklanmaktadır. Bu materyalde, bu modüllerin birlikte nasıl çalıştığı ve durum geçişlerinin genellikle nasıl gerçekleştiği de açıklanmaktadır.

Aracın güç durumu makinesi

AAOS, AP'nin güç durumunu temsil etmek için durum makinesi kullanır. Durum makinesi, aşağıda gösterilen durumları sağlar:

Aracın güç durumu makinesi

Şekil 1. Aracın güç durumu makinesi.

En yaygın geçişler mavi renkle vurgulanır. Eyaletler ve yaygın geçişler şunlardır:

  • RAM'e askıya alma. Araç ve SoC kapalıdır. Kod yürütülmüyordur. SoC RAM'e güç sağlanmaya devam eder.
  • VHAL'nin gelmesini bekleyin. Sürücü, araçla etkileşime girdiğinde (ör. bir kapıyı açarak) VMCU, SoC'ye güç uygular. AAOS, askıya alma modundan RAM'e devam eder ve VHAL ile koordinasyonun beklendiği VHAL'yi Bekle moduna girer.
  • Açık VHAL, AAOS'a Açık durumuna geçmesini söyler. Bu durumda, AAOS tamamen çalışır ve sürücüyle etkileşim kurar.
  • Kapatmaya Hazırlanma Sürücü sürüşü bitirdiğinde VHAL, AAOS'a Kapatmaya Hazırlanma moduna girmesini söyler. Bu durumda ekran ve ses kapalıdır ve AAOS sürücüyle etkileşimde bulunmaz. Android sistemi çalışmaya devam eder ve uygulamaları ve Android sistemini güncellemek için ücretsizdir. Güncellemeler tamamlandığında Android sistemi, VHAL'in bitmesini bekler.
  • VHAL'nin tamamlanmasını bekleyin. Bu noktada AAOS, VHAL'ye kapatılmaya hazır olduğunu bildirir. VMCU'nun SoC'yi derin uyku moduna alması ve uygulama işlemcisinin gücünü kesmesi beklenir. Ardından AAOS, askıya alıp RAM'e alma durumunda olur ancak kod yürütülmez.

Güç yönetimi modülleri

Güç yönetim sistemi şu modüllerden oluşur:

Modül adı Açıklama
CarPowerManager Java veya C++ API'si.
CarPowerManagementService Güç durumu geçişlerini koordine eder ve güç politikası yönetimini CarPowerPolicyDaemon'a devreder.
CarPowerPolicyDaemon Güç politikalarını yönetir ve yerel güç politikası istemcileriyle iletişim kurar.
Araç HAL'si VMCU ile arayüz oluşturma.
Çekirdek RAM'e veya diske askıya alma uygulaması.

Derin uyku/hazırda bekleme özelliği (Android'i RAM/diske askıya alma) çekirdekte uygulanır. Bu özellik, kullanıcı alanına /sys/power/state konumunda bulunan özel bir dosya olarak sunulur. AAOS, bu dosyaya mem veya disk yazılarak askıya alınır.

CPMS, güç durumunu diğer hizmetler ve HAL'lerle koordine eder. CPMS, yukarıda açıklanan durum makinesini uygular ve bir güç durumu geçişi gerçekleştiğinde her gözlemciye bildirim gönderir. Bu hizmet, donanıma mesaj göndermek için VHAL'yi de kullanır.

CPPD, güç politikaları için doğruluk kaynağıdır. Cihazın kullanım ömrü boyunca güç politikalarını yönetir ve CPMS, VHAL ve diğer yerel dinleyicileri güç politikası değişiklikleri konusunda bilgilendirir. CPMS, güç politikası değişikliği isteklerini CPPD'ye devreder.

CPMS, AP_POWER_STATE_REQ ve AP_POWER_STATE_REPORT gibi güç durumuyla ilgili VHAL özelliklerini okuyup yazarak VMCU ile iletişim kurar. Uygulamalar, güç durumu değişikliklerini izlemek için CPM'de tanımlanan arayüzü kullanabilir. Bu arayüz, uygulamaların güç politikası dinleyicilerini kaydetmesine de olanak tanır. Bu Java API'si @SystemApi ve @hide ile açıklama eklenmiş olduğundan yalnızca ayrıcalıklı uygulamalar tarafından kullanılabilir. Bu modüller, uygulamalar ve hizmetler arasındaki ilişki aşağıda gösterilmiştir:

Güç bileşenleri referans şeması

Şekil 2. Güç bileşenleri referans şeması.

Mesaj sırası

Önceki bölümde, güç yönetim sistemini oluşturan modüller açıklanmıştır. Bu bölümde, modüllerin ve uygulamaların nasıl iletişim kurduğunu açıklamak için enter deep sleep (derin uykuya gir) ve exit deep sleep (derin uykudan çık) örnekleri kullanılmaktadır:

Derin uykuya girme

Derin uyku yalnızca VMCU tarafından başlatılabilir. Derin uyku başlatıldıktan sonra VMCU, VHAL aracılığıyla CPMS'ye bir bildirim gönderir. CPMS, durumu SHUTDOWN PREPARE olarak değiştirir ve CPM tarafından sağlanan yeni bir durum kimliğiyle onStateChanged() yöntemini çağırarak bu durum geçişini tüm gözlemcilere (CPMS'yi izleyen uygulamalar ve hizmetler) yayınlar.

ÇMY, uygulamalar/hizmetler ile ÇMY'ler arasında aracılık yapar. Uygulamalar/hizmetler için onStateChanged() yöntemi, ÇMY'nin onStateChanged() yönteminde eşzamanlı olarak çağrılır. Çoğu uygulama ve hizmetin, bu çağrıdan döndürülmeden önce hazırlıklarını tamamlaması gerekir. Ayrıcalıklı hizmetlerin, PRE_SHUTDOWN_PREPARE, SUSPEND_ENTER, POST_SUSPEND_ENTER için döndürüldükten sonra hazırlıklarına eşzamansız olarak devam etmesine izin verilir. Bu durumda, ayrıcalıklı hizmetin hazırlığını tamamladığında sağlanan CompletablePowerStateChangeFuture nesnesinde complete() yöntemini çağırması gerekir. Eşzamansız hazırlığa SHUTDOWN_PREPARE için izin verilmediğini unutmayın. DEEP_SLEEP_ENTRY, VHAL'ye gönderilmeden önce ÇMY'ler, VHAL'ye kapatmayı erteleme isteklerini düzenli olarak gönderir.

Tüm BGBM nesneleri kapatma hazırlıklarını tamamladığında CPMS, VHAL'ye AP_POWER_STATE_REPORT gönderir. VHAL ise VMCU'ya AP'nin askıya alınmaya hazır olduğunu bildirir. CPMS, çekirdeği askıya alan askıya alma yöntemini de çağırır.

Yukarıda açıklanan sıra aşağıda gösterilmektedir:

Derin uykuya girme

Şekil 3. Derin uyku moduna girer.

CPM tarafından sağlanan programlama arayüzleri

Bu bölümde, sistem uygulamaları ve hizmetleri için CPM tarafından sağlanan Java API'si açıklanmaktadır. Bu API, sistem yazılımının şunları yapmasını sağlar:

  • AP'deki güç durumu değişikliklerini izleyin.
  • Güç politikaları uygulayabilirsiniz.

CPM tarafından sağlanan API'leri çağırmak için aşağıdaki adımları uygulayın:

  1. BGBM örneğini edinmek için Car API'yi çağırın.
  2. 1. adımda oluşturulan nesnede uygun yöntemi çağırın.

CarPowerManager nesnesi oluşturma

Bir BGBM nesnesi oluşturmak için Car nesnesinin getCarManager() yöntemini çağırın. Bu yöntem, BGBM nesneleri oluşturmak için kullanılan bir cephedir. BGBM nesnesi oluşturmak için android.car.Car.POWER_SERVICE öğesini bağımsız değişken olarak belirtin.

Car car = Car.createCar(this);
CarPowerManager powerManager =
  (CarPowerManager) car.getCarManager(android.car.Car.POWER_SERVICE);

CarPowerStateListener ve kayıt

Sistem uygulamaları ve hizmetleri, CarPowerManager.CarPowerStateListener uygulayarak güç durumu değişikliği bildirimleri alabilir. Bu arayüz, CPMS'nin güç durumu değiştiğinde çağrılan bir geri çağırma işlevi olan bir yöntemi tanımlar onStateChanged(). Aşağıdaki örnekte, arayüzü uygulayan yeni bir anonim sınıf tanımlanmaktadır:

private final CarPowerManager.CarPowerStateListener powerListener =
  new CarPowerManager.CarPowerStateListener () {
    @Override
     public void onStateChanged(int state) {
       Log.i(TAG, "onStateChanged() state = " + state);
     }
};

Bu dinleyici nesnesine güç durumu geçişini izlemesi talimatını vermek için yeni bir yürütme iş parçacığı oluşturun ve dinleyiciyi ve bu iş parçacığını CPM nesnesine kaydedin:

executor = new ThreadPerTaskExecutor();
powerManager.setListener(powerListener, executor);

Güç durumu değiştiğinde, dinleyici nesnesinin onStateChanged() yöntemi, yeni güç durumunu temsil eden bir değerle çağrılır. Gerçek değer ile güç durumu arasındaki ilişki CarPowerManager içinde tanımlanır ve aşağıdaki tabloda gösterilir:

Ad Açıklama
STATE_ON Açık durumunu girin. Sistem tamamen çalışır durumdadır.
STATE_SHUTDOWN_CANCELLED Kapatma işlemi iptal edilir ve güç durumu normal duruma döner.
STATE_SHUTDOWN_ENTER uygulamaların temizlenmesi ve kapatılmaya hazır olması beklenir.
STATE_POST_SHUTDOWN_ENTER Kapatma hazırlıkları tamamlandı ve VMCU kapatılmaya hazır. Kapatma durumuna girin.
STATE_PRE_SHUTDOWN_PREPARE Kapatma işlemi isteniyor ancak CPMS henüz işlemi başlatmadı. Ekran ve ses hala açık.
STATE_SHUTDOWN_PREPARE Bu süre zarfında Garaj Modu çalışabilir.
STATE_SUSPEND_ENTER uygulamaların temizlenmesi ve RAM'e askıya alma işlemine hazır olması beklenir.
STATE_POST_SUSPEND_ENTER RAM'e askıya alma hazırlıkları tamamlandı ve VMCU, RAM'e askıya alma işlemine hazır. Askıya alma durumuna girin.
STATE_SUSPEND_EXIT Askıya alma durumundan çıkma veya iptal edilen askıya alma işlemine devam etme
STATE_HIBERNATION_ENTER uygulamaların temizlenmesi ve hazırda bekletmeye alınmaya hazır olması beklenir.
STATE_POST_HIBERNATION_ENTER Hazırda bekletme hazırlıkları tamamlandı ve VMCU hazırda bekletmeye hazır. Hazırda bekletme durumuna girin.
STATE_HIBERNATION_EXIT Hazırda bekleme modundan çıkma veya iptal edilen hazırda bekleme moduna devam etme
STATE_WAIT_FOR_VHAL Sistem başlatılıyor ancak AÇIK duruma geçmeden önce VHAL ile iletişim kurulmasını bekliyor.

CarPowerStateListener kaydını kaldırma

BGBM'ye kaydedilen tüm dinleyici nesnelerinin kaydını silmek için clearListener yöntemini çağırın:

powerManager.clearListener();

Android uygulamanızda sistem entegrasyonu

Entegrasyon uzmanları aşağıdaki öğelerden sorumludur:

  • Android'i askıya almak için çekirdek arayüzünü uygulama.
  • VHAL işlevlerini kullanarak:
    • Askıya alma veya kapatma işleminin başlatılmasını arabadan Android'e yayma
    • Android'den arabaya kapatılmaya hazır mesajı gönderilir.
    • Linux çekirdek arayüzü üzerinden Android'i kapatma veya askıya alma işlemlerini başlatın.
  • Cihaz askıya alındığında tüm uyandırma kaynaklarının devre dışı olduğundan emin olun.
  • Uygulamaların, kapatma sürecini süresiz olarak ertelemeyecek kadar hızlı bir şekilde kapatıldığından emin olun.
  • BSP'nin, askıya alma veya hazırda bekletme işlemlerini engellememek için cihaz bileşenlerini güç politikasına göre açtığından (veya kapattığından) emin olun.

Çekirdek arayüzü: /sys/power/state

AAOS, bir uygulama veya hizmet /sys/power/state konumundaki bir dosyaya RAM'e askıya alma için mem ya da diske askıya alma için disk yazdığında cihazı askıya alma moduna geçirir. Entegratör, bu dosyayı izleyen ve Linux'u askıya alma güç durumuna geçiren bir işlev sağlamalıdır. Bu işlev, cihazın tamamen kapandığını VMCU'ya bildirmek için VMCU'ya bir GPIO gönderebilir. Entegratör, VHAL'in son mesajı VMCU'ya göndermesi ile sistemin askıya alma veya kapatma moduna girmesi arasındaki yarış durumlarını kaldırmaktan da sorumludur.

VHAL'nin sorumluluğu

VHAL, araç ağı ile Android arasında bir arayüz sağlar. VHAL:

  • Askıya alma veya kapatma işleminin başlatılmasını arabadan Android'e yayar.
  • Android'den arabaya kapatılmaya hazır mesajı gönderir.
  • Linux çekirdek arayüzü üzerinden Android'in kapatılmasını veya askıya alınmasını başlatır.

CPMS, VHAL'ye kapanmaya hazır olduğunu bildirdiğinde VHAL, VMCU'ya kapanmaya hazır mesajını gönderir. Genellikle UART, SPI ve USB gibi çip üzerindeki çevre birimleri mesajı iletir. Mesaj gönderildikten sonra CPMS, cihazı askıya almak veya kapatmak için çekirdek komutunu çağırır. Bunu yapmadan önce VHAL veya BSP, VMCU'ya cihazdan güç kaldırmanın güvenli olduğunu bildirmek için bir GPIO'yu değiştirebilir.

VHAL, VHAL üzerinden güç yönetimini kontrol eden aşağıdaki özellikleri desteklemelidir:

Ad Açıklama
AP_POWER_STATE_REPORT Android raporları, VehicleApPowerStateReport enum değerlerini kullanarak bu özellik ile VMCU'ya durum geçişlerini bildirir.
AP_POWER_STATE_REQ VMCU, Android'e VehicleApPowerStateReq enum değerlerini kullanarak farklı güç durumlarına geçmesini bildirmek için bu özelliği kullanır.

AP_POWER_STATE_REPORT

Android'in mevcut güç yönetimi durumunu bildirmek için bu özelliği kullanın. Bu özellik iki tam sayı içerir:

  • int32Values[0]: Geçerli durumun VehicleApPowerStateReport numaralandırması.
  • int32Values[1]: Erteleme, uyutma veya kapatma için milisaniye cinsinden süre. Bu değerin anlamı, ilk değere bağlıdır.

İlk değer aşağıdaki değerlerden birini alabilir. VehicleApPowerStateReport.aidl daha ayrıntılı açıklamalar içerir ve bunlar hardware/interfaces/automotive/vehicle/aidl/android/hardware/automotive/vehicle içinde saklanır.

Değer adı Açıklama İkinci değer
WAIT_FOR_VHAL AP başlatılıyor ve VHAL ile iletişim kurması gerekiyor.
DEEP_SLEEP_ENTRY AP, derin uyku durumuna giriyor. VMCU, ikinci değerde belirtilen sürenin ardından AP'yi tekrar açmalıdır. Ayarlanmalıdır
DEEP_SLEEP_EXIT AP, derin uyku durumundan çıkıyor.
HIBERNATION_ENTRY AP, hazırda bekleme durumuna giriyor. VMCU, ikinci değerde belirtilen sürenin ardından AP'yi tekrar açmalıdır. Ayarlanmalıdır
HIBERNATION_EXIT AP, hazırda bekleme durumundan çıkıyor.
SHUTDOWN_POSTPONE Android kapatılmaya hazır değil. VMCU, AP'yi kapatmadan önce ikinci değerde belirtilen süre kadar beklemelidir. Android, ek SHUTDOWN_POSTPONE raporları yayınlayarak ek erteleme isteyebilir. Ayarlanmalıdır
SHUTDOWN_PREPARE Android kapatılmaya hazırlanıyor. Ayarlanmalıdır
SHUTDOWN_START AP kapatılmaya hazır. VMCU, ikinci değerde belirtilen sürenin ardından AP'yi tekrar açmalıdır. (VMCU'nun zamanlanmış açma özelliğini desteklemesi gerekmez.) Ayarlanmalıdır
SHUTDOWN_CANCELLED Android, kapatılmaya hazırlanmayı durduruyor ve WAIT_FOR_VHAL'e geçiyor.
AÇIK Android normal şekilde çalışıyor.

Durum, VMCU aracılığıyla bağımsız olarak veya bir isteğe yanıt olarak ayarlanabilir.

AP_POWER_STATE_REQ

Bu özellik, VMCU tarafından Android'i farklı bir güç durumuna geçirmek için gönderilir ve iki tam sayı içerir:

  • int32Values[0]: Geçiş yapılacak yeni durumu temsil eden VehicleApPowerStateReq numaralandırma değeri.
  • int32Values[1]: VehicleApPowerStateShutdownParam numaralandırma değeri. Bu değer yalnızca SHUTDOWN_PREPARE mesajı için gönderilir ve içerdiği seçenekleri Android'e iletir.

İlk tam sayı değeri, Android'in geçiş yapacağı yeni durumu temsil eder. Anlamsal yapı VehicleApPowerStateReq.aidl içinde tanımlanır ve aşağıda verilmiştir:

Değer adı Açıklama
AÇIK AP tam olarak çalışmaya başlamalıdır.
SHUTDOWN_PREPARE AP, kapatılmaya hazırlanmalıdır. İkinci değer, AP'nin kapatmayı erteleyip erteleyemeyeceğini ve AP'nin kapanmayı mı yoksa derin uykuya girmeyi mi bekleyeceğini gösterir.
CANCEL_SHUTDOWN AP, kapatılmaya hazırlanmayı durdurmalı ve AÇILMAYA hazırlanmalıdır.
TAMAMLANDI AP artık kapatılacak veya askıya alınacak.

VehicleApPowerStateShutdownParam, VehicleApPowerStateShutdownParam.aidl içinde tanımlanır. Bu enum şu öğeleri içerir:

Değer adı Açıklama
CAN_SLEEP AP, tamamen kapanmak yerine derin uykuya geçebilir. Ertelemeye izin verilir.
CAN_HIBERNATE AP tamamen kapanmak yerine hazırda bekletme moduna girebilir. Ertelemeye izin verilir.
SHUTDOWN_ONLY AP kapatılmalıdır. Ertelemeye izin verilir. Derin uykuya izin verilmez.
SLEEP_IMMEDIATELY AP derin uykuya girebilir ancak hemen uyku moduna geçmeli veya kapatılmalıdır. Ertelemeye izin verilmez.
HIBERNATE_IMMEDIATELY AP, disk askıya alma moduna girebilir ancak hemen hazırda bekletme veya kapatma moduna geçmelidir. Ertelemeye izin verilmez.
SHUTDOWN_IMMEDIATELY AP hemen kapatılmalıdır. Ertelemeye izin verilmez. Derin uykuya izin verilmez.

Uyandırma kaynakları

Entegratör, cihaz askıya alma modundayken uygun uyandırma kaynaklarını devre dışı bırakmalıdır. Yaygın uyandırma kaynakları arasında kalp atışları, modem, kablosuz ve Bluetooth bulunur. Tek geçerli uyandırma kaynağı, SoC'yi uyandırmak için VMCU'dan gelen bir kesme olmalıdır. Bu, VMCU'nun uzaktan uyandırma etkinlikleri (ör. uzaktan motor çalıştırma) için modemi dinleyebildiğini varsayar. Bu işlev AP'ye gönderilirse modeme hizmet verecek başka bir uyandırma kaynağı eklenmelidir.

Uygulamalar

OEM'ler, uygulamaları hızlıca kapatılabilecek ve süreci süresiz olarak ertelemeyecek şekilde yazmaya özen göstermelidir.

Ek

Kaynak kodu ağacındaki dizinler

İçerik Dizin
CarPowerManager ile ilgili kod. packages/services/Car/car-lib/src/android/car/hardware/power
CarPowerManagementService vb. packages/services/Car/service/src/com/android/car/power
VHAL ile ilgili hizmetler (ör. VehicleHal ve HAlClient). packages/services/Car/service/src/com/android/car/hal
VHAL arayüzü ve özellik tanımları. hardware/interfaces/automotive/vehicle/aidl/android/hardware/automotive/vehicle/
CarPowerManager hakkında fikir edinmenizi sağlayacak örnek uygulama packages/services/Car/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink

Sınıf diyagramı

Bu sınıf diyagramı, güç yönetimi sistemindeki Java sınıflarını ve arayüzlerini gösterir:

Güç sınıfı diyagramı

Şekil 4. Güç sınıfı diyagramı.

Nesne ilişkisi

Şekil 5, hangi nesnelerin diğer nesnelere referans verdiğini gösterir. Bir kenar, kaynak nesnenin hedef nesneye referans içerdiği anlamına gelir. Örneğin, VehicleHAL, PropertyHalService nesnesine referans içerir.

Nesne referans şeması

Şekil 5. Nesne referans şeması.