Aşağıdaki bölümlerde, donanım soyutlama katmanı (HAL) ile nasıl çalışabileceğiniz ve uygulanmasına yardımcı olabilir.
Yayın radyo HAL arayüzü
Broadcast radyo HAL'si, aşağıdakileri yapabilmek için donanım düzeyinde veri yapıları ve arayüzleri sağlar: AM/FM ve DAB radyosu gibi radyo anonslarını uygulama.
HIDL 2.0 ve AIDL arayüzleri
Radyo HAL yayınında, aşağıdaki bölümlerde açıklanan arayüzler kullanılır.
DuyuruDinleyici
IAnnouncementListener
, duyuru dinleyicisi için geri arama arayüzüdür.
Duyuru almak için radyo HAL yayınında kaydedilebilir. Arayüz şu özelliklere sahiptir:
yöntemleri:
DuyuruDinleyici | ||
---|---|---|
Açıklama: Duyuru listesinde her seferinde çağrılır değiştirildi. | ||
HIDL 2.0 | oneway onListUpdated(vec<Announcement> announcements) |
|
AIDL | oneway void onListUpdated(in Announcement[] announcements) |
Kapanış tanıtıcısı
ICloseHandle
,
etkin bir arayüze sahip.
Kapanış tanıtıcısı | ||
---|---|---|
Açıklama: Herkese açık kullanıcı adını kapatın. | ||
HIDL 2.0 | close() |
|
AIDL | void close() |
ITunerCallback
ITunerCallback
, yayın radyosu HAL'si tarafından şuna çağrılan geri çağırma arayüzüdür:
HAL istemci hizmetlerine güncelleme gönderebilirsiniz.
ITunerCallback | ||
---|---|---|
Açıklama: Ayarlama işlemi sırasında HAL tarafından çağrıldı (hassas ayar yapma, arama (AIDL'de) veya tarama (HIDL'de) ve adım başarılı olduğunda), eşzamansız olarak başarısız olur. | ||
HIDL 2.0 | oneway onCurrentProgramInfoChanged(ProgramInfo info) |
|
AIDL | void onCurrentProgramInfoChanged(in ProgramInfo info) |
|
Açıklama: Ayarlayın, arayın (AIDL'de) veya tarayın (HIDL'de) veya adım başarılı olur. | ||
HIDL 2.0 | oneway onTuneFailed(Result result, ProgramSelector selector) |
|
AIDL | void onTuneFailed(in Result result, in ProgramSelector selector) |
|
Açıklama: Ayarlayın, arayın (AIDL'de) veya tarayın (HIDL'de) veya adım başarılı olur. | ||
HIDL 2.0 | oneway onCurrentProgramInfoChanged(ProgramInfo info) |
|
AIDL | void onCurrentProgramInfoChanged(in ProgramInfo info) |
|
Açıklama: Program listesi güncellendiğinde çağrılır; "the" her parçanın boyutu 500 kiB ile sınırlı olmalıdır. | ||
HIDL 2.0 | oneway onProgramListUpdated(ProgramListChunk chunk) |
|
AIDL | oneway onProgramListUpdated(ProgramListChunk chunk) |
|
Açıklama: Anten bağlandığında veya bağlantı kesildi. | ||
HIDL 2.0 | oneway onAntennaStateChange(bool connected) |
|
AIDL | void onCurrentProgramInfoChanged(in ProgramInfo info) |
|
Açıklama: Tedarikçi firmaya özel parametre aşağıdaki durumlarda çağrılır:
değerler HAL'de dahili olarak güncellenir (çağrıdan sonra çağırmayın)
setParameters ) ekleyebilirsiniz. |
||
HIDL 2.0 | oneway onParametersUpdated(vec<VendorKeyValue> parameters) |
|
AIDL | void onParametersUpdated(in VendorKeyValue[] parameters) |
|
Açıklama: AIDL'deki yenilikler. Yapılandırma işareti şu olduğunda çağrılır:
HAL içinde dahili olarak güncellenir (
setConfigFlag , HAL istemcisi tarafından arandıktan sonra çağrıldı). |
||
HIDL 2.0 | Geçerli değil. | |
AIDL | void onConfigFlagUpdated(in ConfigFlag flag, in boolean value) |
IYayınRadyosu
IBroadcastRadio
, radyo HAL yayını için birincil arayüzdür. HIDL'de
2.0 HAL, arama işlemleri için tarayıcının ITunerSession
arayüzünü kullanın. Ancak,
aynı anda en fazla bir kanal ayarlayıcı etkin olmalıdır (her yayın radyo HAL örneğinin yalnızca bir tarayıcısı olması koşuluyla)
çipi).
ITunerSession
, AIDL arayüzlerinden kaldırıldı ve arayüzleri şuraya taşındı:
IBroadcastRadio
.
IYayınRadyosu | ||
---|---|---|
Açıklama: Bir modülün açıklamasını ve özellikler. | ||
HIDL 2.0 | getProperties() generates (Properties properties) |
|
AIDL | Properties getProperties() |
|
Açıklama: Mevcut veya olası ÖÖ/FM'yi getirir Bölge yapılandırması. | ||
HIDL 2.0 | getAmFmRegionConfig(bool full) generates (Result result, AmFmRegionConfig
config) |
|
AIDL | AmFmRegionConfig getAmFmRegionConfig(bool full) |
|
Açıklama: Geçerli DAB bölgesini getirir yapılandırma. | ||
HIDL 2.0 | getDabRegionConfig() generates (Result result, vec<DabTableEntry>
config) |
|
AIDL | DabTableEntry[] getDabRegionConfig() |
|
Açıklama: Radyo modülü önbelleğinden bir görüntü alır. AIDL'de resim boyutu 1 MB'tan küçük olmalıdır (bağlayıcı işlem tamponu üzerindeki sabit sınır nedeniyle) | ||
HIDL 2.0 | getImage(uint32_t id) generates (vec<uint8_t> image) |
|
AIDL | byte[] getImage(in int id) |
|
Açıklama: Duyuru dinleyicisini kaydeder. | ||
HIDL 2.0 | registerAnnouncementListener(vec<AnnouncementType>
enabled,IAnnouncementListener listener) generates (Result result, ICloseHandle
closeHandle) |
|
AIDL | ICloseHandle registerAnnouncementListener(in IAnnouncementListener listener, in
AnnouncementType[] enabled) |
|
Açıklama:
|
||
HIDL 2.0 | openSession(ITunerCallback callback) oluşturur
(Result result, ITunerSession session) |
|
AIDL | void setTunerCallback(in ITunerCallback callback) |
|
Açıklama:
|
||
HIDL 2.0 | close() |
|
AIDL | unsetTunerCallback() |
|
Açıklama: Belirli bir programa ayarlar. | ||
HIDL 2.0 | tune(ProgramSelector program) generates (Result result) |
|
AIDL | void tune(in ProgramSelector program) |
|
Açıklama: Bir sonraki geçerli programı
air. AIDL'de karışıklık olmaması için
scan , seek olarak yeniden adlandırıldı.
|
||
HIDL 2.0 | scan(bool directionUp, bool skipSubChannel) generates (Result result) |
|
AIDL | void seek(in boolean directionUp, in boolean skipSubChannel) |
|
Açıklama: Bitişik kanala giden adımlar görevli olabilir. | ||
HIDL 2.0 | step(bool directionUp) generates (Result result) |
|
AIDL | void step(in boolean directionUp) |
|
Açıklama: Beklemedeki ayar, tarama (HIDL'de) veya sarma işlemlerini iptal eder (AIDL'de) veya adım işlemleri. | ||
HIDL 2.0 | cancel() |
|
AIDL | void cancel() |
|
Açıklama: Program listesine bir filtre uygular ve
program listesi güncellemelerini göndermeye başladığında
onProgramListUpdated geri arama. |
||
HIDL 2.0 | startProgramListUpdates(ProgramFilter filter) generates (Result result) |
|
AIDL | void startProgramListUpdates(in ProgramFilter filter) |
|
Açıklama: Program listesi güncellemelerinin gönderilmesini durdurur. | ||
HIDL 2.0 | stopProgramListUpdates() |
|
AIDL | void stopProgramListUpdates() |
|
Açıklama: Belirli bir öğenin geçerli ayarını getirir yapılandırma işaretini kullanın. | ||
HIDL 2.0 | isConfigFlagSet(ConfigFlag flag) generates (Result result, bool value) |
|
AIDL | boolean isConfigFlagSet(in ConfigFlag flag) |
|
Açıklama: Belirtilen yapılandırma işaretini ayarlar. | ||
HIDL 2.0 | setConfigFlag(ConfigFlag flag, bool value) generates (Result result) |
|
AIDL | void setConfigFlag(in ConfigFlag flag, boolean value) |
|
Açıklama: Tedarikçi firmaya özel parametre değerlerini ayarlar. | ||
HIDL 2.0 | setParameters(vec<VendorKeyValue> parameters)
oluşturur, (vec<VendorKeyValue> results) |
|
AIDL | VendorKeyValue[] setParameters(in VendorKeyValue[] parameters) |
|
Açıklama: Tedarikçi firmaya özel parametre değerlerini alır. | ||
HIDL 2.0 | getParameters(vec<string> keys) generates (vec<VendorKeyValue>
parameters) |
|
AIDL | VendorKeyValue[] getParameters(in String[] keys) |
Arayüz açıklamaları
Eşzamansız davranış
Her ayarlama işlemi (örneğin ince ayar yapma, tarama (HIDL'de) veya arama (AIDL'de) ve adım) çok zaman alabilir ve iş parçacığının uzun süre engellenmemesi gerekiyorsa, işlem Zaman alan işlemleri daha sonra gerçekleşecek şekilde planlamak ve hızlı bir şekilde durum veya sonuç döndürmek için kullanılır. Ayrıntılı olarak her işlemde şunları yapmalıdır:
- Bekleyen tüm ayarlama işlemlerini iptal et.
- Yöntem girişlerine ve akort aracı.
- Ayarlama görevini planlayın ve
Result
cihazını (HIDL'de) iade edin veyastatus
(AIDL'de) hemen.Result
veyastatus
OK
ise kanal ayarlayıcı geri çağırması İnce ayar sırasındatuneFailed
veyacurrentProgramInfoChanged
çağrılmalıdır görev başarısız olduysa (örneğin, zaman aşımı nedeniyle) veya tamamlandıysa.
Benzer şekilde, startProgramListUpdates
zaman alan bir görevin de
ve kısa sürede bir durum ya da sonuç döndürmek için program listesini güncellemektir. Yöntem
önce beklemedeki güncelleme isteklerini iptal eder, ardından güncelleme görevini planlar ve
yardımcı olur.
Yarış durumu
İnce ayar işlemlerinin (ör. ince ayar yapma, tarama (HIDL'de) veya sarma) işleminin eşzamansız davranışı nedeniyle
(AIDL'de) ve adım) içeriyorsa işlemi iptal etme ve ayarlama arasında bir yarış koşulu vardır
anlamına gelir. cancel
, HAL bir ayarlama işlemini tamamladıktan sonra ve önce
geri arama tamamlanır, iptal göz ardı edilebilir ve geri arama tamamlanıp alınır
gerçekleştirebilirsiniz.
Benzer şekilde, stopProgramListUpdates
HAL bir programı tamamladıktan sonra çağrılırsa
onCurrentProgramInfoChanged
geri çağırması tamamlanmadan önce
stopProgramListUpdates
yoksayılabilir ve geri arama tamamlanır.
Veri boyutu sınırı
Bağlayıcı işlem tamponu üzerinde kesin bir sınır olduğundan bazı arayüzler için veri limiti kullanılabilecek tüm yöntemlere ek olarak AIDL HAL'de açıklığa kavuşturulmuştur.
getImage
, görüntünün 1 MB'tan az döndürülmesini gerektiriyor.onProgramListUpdate
, her birchunk
değerinin 500 kiB'tan küçük olmasını gerektirir. Daha büyük program listeleri, HAL uygulamasına göre birden fazla parçaya bölünüp birden fazla geri arama.
AIDL HAL veri yapılarındaki değişiklikler
Arayüzlerdeki değişikliklere ek olarak, bu değişiklikler veri yapılarına da uygulandı AIDL'den yararlanan radyo AIDL HAL yayınında tanımlanmıştır.
Constant
sıralaması AIDL'den kaldırılır veIBroadcastRadio
. Bu arada,ANTENNA_DISCONNECTED_TIMEOUT_MS
yeniden adlandırıldı Hedef:ANTENNA_STATE_CHANGE_TIMEOUT_MS
. Yeni değerTUNER_TIMEOUT_MS
eklendi. Tüm ayarlama, sarma ve adım işlemleri bu süre içinde tamamlanmalıdır.- Enum
RDS
veDeemphasis
, AIDL'de kaldırılır ve const int olarak tanımlanırAmFmRegionConfig
içinde. Buna karşılık olarak hemfmDeemphasis
hem deProgramInfo
içindekifmRds
, int olarak bildirildi. Bu, şunun küçük bir hesaplama sonucudur: tıklayın. Bu sıradaD50
veD75
şu şekilde yeniden adlandırıldı: SırasıylaDEEMPHASIS_D50
veDEEMPHASIS_D75
. - Enum
ProgramInfoFlags
, AIDL'den kaldırılır ve şurada const int olarak tanımlanır:FLAG_
ön ekine sahipProgramInfo
eklendi. Bunun üzerine,ProgramInfo
içindekiinfoFlags
öğesi, int olarak tanımlandı. Bu, biraz hesaplama sonucudur. görebilirsiniz.TUNED
, daha iyi tanımlamak içinFLAG_TUNABLE
olarak yeniden adlandırıldı istasyonun ayarlanabildiği tanımıdır. AmFmBandRange
bölgesindescanSpacing
şu şekilde yeniden adlandırıldı:scan
, AIDL'deseek
olarak yeniden adlandırıldığı içinseekSpacing
.- AIDL'de birlik kavramı ortaya çıktığı için,
MetadataKey
ve HIDL HAL'de tanımlananMetadata
artık kullanılmıyor. Bir AIDL birliğiMetadata
AIDL HAL'de tanımlanmıştır. Daha önceMetadataKey
içinde yer alan her numaralandırma değeri artık Tanımlarına bağlı olarak dize veya int türünü içerenMetadata
.