Migrate broadcast radio HAL from HIDL to AIDL
Radio HAL is migrated to AIDL by hidl2aidl tool, and the following changes are applied: - Result type is returned as service-specific error than normal return value since AIDL only allows one return value of primitive types. - Integer data types were changed to int, long and byte. - Constant enum was removed and replaced by constants defined in IBroadcastRadio. - Rds and Deemphasis enums were removed and defined as const in AmFmRegionConfig - MetadataKey was removed, and Metadata was defined as union. - ITunerSession:scan() was renamed to ITunerSession:seek(). - ITunerSession was removed and its methods were added to IBroadcastRadio. - Callback for config flag setting was added to ITunerCallback. - Callback and timeout behaviors are clarified. Bug: 170336130 Test: m -j Change-Id: Id1cdc5651037429ca07a4d4dc4682709cfc4949b
This commit is contained in:
parent
95468b09ba
commit
a8cebd5c8f
42 changed files with 2715 additions and 10 deletions
31
broadcastradio/aidl/Android.bp
Normal file
31
broadcastradio/aidl/Android.bp
Normal file
|
@ -0,0 +1,31 @@
|
|||
//
|
||||
// Copyright (C) 2022 The Android Open Source Project
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
aidl_interface {
|
||||
name: "android.hardware.broadcastradio",
|
||||
vendor_available: true,
|
||||
srcs: ["android/hardware/broadcastradio/*.aidl"],
|
||||
stability: "vintf",
|
||||
backend: {
|
||||
cpp: {
|
||||
enabled: false,
|
||||
},
|
||||
java: {
|
||||
sdk_version: "module_current",
|
||||
min_sdk_version: "Tiramisu",
|
||||
},
|
||||
},
|
||||
}
|
|
@ -0,0 +1,41 @@
|
|||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// This file is a snapshot of an AIDL file. Do not edit it manually. There are
|
||||
// two cases:
|
||||
// 1). this is a frozen version file - do not edit this in any case.
|
||||
// 2). this is a 'current' file. If you make a backwards compatible change to
|
||||
// the interface (from the latest frozen version), the build system will
|
||||
// prompt you to update this file with `m <name>-update-api`.
|
||||
//
|
||||
// You must not make a backward incompatible change to any AIDL file built
|
||||
// with the aidl_interface module type with versions property set. The module
|
||||
// type is used to build AIDL files in a way that they can be used across
|
||||
// independently updatable components of the system. If a device is shipped
|
||||
// with such a backward incompatible change, it has a high risk of breaking
|
||||
// later when a module using the interface is updated, e.g., Mainline modules.
|
||||
|
||||
package android.hardware.broadcastradio;
|
||||
@JavaDerive(equals=true, toString=true) @VintfStability
|
||||
parcelable AmFmBandRange {
|
||||
int lowerBound;
|
||||
int upperBound;
|
||||
int spacing;
|
||||
int seekSpacing;
|
||||
}
|
|
@ -0,0 +1,44 @@
|
|||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// This file is a snapshot of an AIDL file. Do not edit it manually. There are
|
||||
// two cases:
|
||||
// 1). this is a frozen version file - do not edit this in any case.
|
||||
// 2). this is a 'current' file. If you make a backwards compatible change to
|
||||
// the interface (from the latest frozen version), the build system will
|
||||
// prompt you to update this file with `m <name>-update-api`.
|
||||
//
|
||||
// You must not make a backward incompatible change to any AIDL file built
|
||||
// with the aidl_interface module type with versions property set. The module
|
||||
// type is used to build AIDL files in a way that they can be used across
|
||||
// independently updatable components of the system. If a device is shipped
|
||||
// with such a backward incompatible change, it has a high risk of breaking
|
||||
// later when a module using the interface is updated, e.g., Mainline modules.
|
||||
|
||||
package android.hardware.broadcastradio;
|
||||
@JavaDerive(equals=true, toString=true) @VintfStability
|
||||
parcelable AmFmRegionConfig {
|
||||
android.hardware.broadcastradio.AmFmBandRange[] ranges;
|
||||
int fmDeemphasis;
|
||||
int fmRds;
|
||||
const int DEEMPHASIS_D50 = 1;
|
||||
const int DEEMPHASIS_D75 = 2;
|
||||
const int RDS = 1;
|
||||
const int RBDS = 2;
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// This file is a snapshot of an AIDL file. Do not edit it manually. There are
|
||||
// two cases:
|
||||
// 1). this is a frozen version file - do not edit this in any case.
|
||||
// 2). this is a 'current' file. If you make a backwards compatible change to
|
||||
// the interface (from the latest frozen version), the build system will
|
||||
// prompt you to update this file with `m <name>-update-api`.
|
||||
//
|
||||
// You must not make a backward incompatible change to any AIDL file built
|
||||
// with the aidl_interface module type with versions property set. The module
|
||||
// type is used to build AIDL files in a way that they can be used across
|
||||
// independently updatable components of the system. If a device is shipped
|
||||
// with such a backward incompatible change, it has a high risk of breaking
|
||||
// later when a module using the interface is updated, e.g., Mainline modules.
|
||||
|
||||
package android.hardware.broadcastradio;
|
||||
@JavaDerive(equals=true, toString=true) @VintfStability
|
||||
parcelable Announcement {
|
||||
android.hardware.broadcastradio.ProgramSelector selector;
|
||||
android.hardware.broadcastradio.AnnouncementType type = android.hardware.broadcastradio.AnnouncementType.INVALID;
|
||||
android.hardware.broadcastradio.VendorKeyValue[] vendorInfo;
|
||||
}
|
|
@ -0,0 +1,46 @@
|
|||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// This file is a snapshot of an AIDL file. Do not edit it manually. There are
|
||||
// two cases:
|
||||
// 1). this is a frozen version file - do not edit this in any case.
|
||||
// 2). this is a 'current' file. If you make a backwards compatible change to
|
||||
// the interface (from the latest frozen version), the build system will
|
||||
// prompt you to update this file with `m <name>-update-api`.
|
||||
//
|
||||
// You must not make a backward incompatible change to any AIDL file built
|
||||
// with the aidl_interface module type with versions property set. The module
|
||||
// type is used to build AIDL files in a way that they can be used across
|
||||
// independently updatable components of the system. If a device is shipped
|
||||
// with such a backward incompatible change, it has a high risk of breaking
|
||||
// later when a module using the interface is updated, e.g., Mainline modules.
|
||||
|
||||
package android.hardware.broadcastradio;
|
||||
@Backing(type="byte") @JavaDerive(equals=true, toString=true) @VintfStability
|
||||
enum AnnouncementType {
|
||||
INVALID = 0,
|
||||
EMERGENCY = 1,
|
||||
WARNING = 2,
|
||||
TRAFFIC = 3,
|
||||
WEATHER = 4,
|
||||
NEWS = 5,
|
||||
EVENT = 6,
|
||||
SPORT = 7,
|
||||
MISC = 8,
|
||||
}
|
|
@ -0,0 +1,46 @@
|
|||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// This file is a snapshot of an AIDL file. Do not edit it manually. There are
|
||||
// two cases:
|
||||
// 1). this is a frozen version file - do not edit this in any case.
|
||||
// 2). this is a 'current' file. If you make a backwards compatible change to
|
||||
// the interface (from the latest frozen version), the build system will
|
||||
// prompt you to update this file with `m <name>-update-api`.
|
||||
//
|
||||
// You must not make a backward incompatible change to any AIDL file built
|
||||
// with the aidl_interface module type with versions property set. The module
|
||||
// type is used to build AIDL files in a way that they can be used across
|
||||
// independently updatable components of the system. If a device is shipped
|
||||
// with such a backward incompatible change, it has a high risk of breaking
|
||||
// later when a module using the interface is updated, e.g., Mainline modules.
|
||||
|
||||
package android.hardware.broadcastradio;
|
||||
@Backing(type="int") @JavaDerive(equals=true, toString=true) @VintfStability
|
||||
enum ConfigFlag {
|
||||
FORCE_MONO = 1,
|
||||
FORCE_ANALOG = 2,
|
||||
FORCE_DIGITAL = 3,
|
||||
RDS_AF = 4,
|
||||
RDS_REG = 5,
|
||||
DAB_DAB_LINKING = 6,
|
||||
DAB_FM_LINKING = 7,
|
||||
DAB_DAB_SOFT_LINKING = 8,
|
||||
DAB_FM_SOFT_LINKING = 9,
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// This file is a snapshot of an AIDL file. Do not edit it manually. There are
|
||||
// two cases:
|
||||
// 1). this is a frozen version file - do not edit this in any case.
|
||||
// 2). this is a 'current' file. If you make a backwards compatible change to
|
||||
// the interface (from the latest frozen version), the build system will
|
||||
// prompt you to update this file with `m <name>-update-api`.
|
||||
//
|
||||
// You must not make a backward incompatible change to any AIDL file built
|
||||
// with the aidl_interface module type with versions property set. The module
|
||||
// type is used to build AIDL files in a way that they can be used across
|
||||
// independently updatable components of the system. If a device is shipped
|
||||
// with such a backward incompatible change, it has a high risk of breaking
|
||||
// later when a module using the interface is updated, e.g., Mainline modules.
|
||||
|
||||
package android.hardware.broadcastradio;
|
||||
@JavaDerive(equals=true, toString=true) @VintfStability
|
||||
parcelable DabTableEntry {
|
||||
String label;
|
||||
int frequencyKhz;
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// This file is a snapshot of an AIDL file. Do not edit it manually. There are
|
||||
// two cases:
|
||||
// 1). this is a frozen version file - do not edit this in any case.
|
||||
// 2). this is a 'current' file. If you make a backwards compatible change to
|
||||
// the interface (from the latest frozen version), the build system will
|
||||
// prompt you to update this file with `m <name>-update-api`.
|
||||
//
|
||||
// You must not make a backward incompatible change to any AIDL file built
|
||||
// with the aidl_interface module type with versions property set. The module
|
||||
// type is used to build AIDL files in a way that they can be used across
|
||||
// independently updatable components of the system. If a device is shipped
|
||||
// with such a backward incompatible change, it has a high risk of breaking
|
||||
// later when a module using the interface is updated, e.g., Mainline modules.
|
||||
|
||||
package android.hardware.broadcastradio;
|
||||
@VintfStability
|
||||
interface IAnnouncementListener {
|
||||
oneway void onListUpdated(in android.hardware.broadcastradio.Announcement[] announcements);
|
||||
}
|
|
@ -0,0 +1,58 @@
|
|||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// This file is a snapshot of an AIDL file. Do not edit it manually. There are
|
||||
// two cases:
|
||||
// 1). this is a frozen version file - do not edit this in any case.
|
||||
// 2). this is a 'current' file. If you make a backwards compatible change to
|
||||
// the interface (from the latest frozen version), the build system will
|
||||
// prompt you to update this file with `m <name>-update-api`.
|
||||
//
|
||||
// You must not make a backward incompatible change to any AIDL file built
|
||||
// with the aidl_interface module type with versions property set. The module
|
||||
// type is used to build AIDL files in a way that they can be used across
|
||||
// independently updatable components of the system. If a device is shipped
|
||||
// with such a backward incompatible change, it has a high risk of breaking
|
||||
// later when a module using the interface is updated, e.g., Mainline modules.
|
||||
|
||||
package android.hardware.broadcastradio;
|
||||
@VintfStability
|
||||
interface IBroadcastRadio {
|
||||
android.hardware.broadcastradio.Properties getProperties();
|
||||
android.hardware.broadcastradio.AmFmRegionConfig getAmFmRegionConfig(in boolean full);
|
||||
android.hardware.broadcastradio.DabTableEntry[] getDabRegionConfig();
|
||||
void setTunerCallback(in android.hardware.broadcastradio.ITunerCallback callback);
|
||||
void unsetTunerCallback();
|
||||
void tune(in android.hardware.broadcastradio.ProgramSelector program);
|
||||
void seek(in boolean directionUp, in boolean skipSubChannel);
|
||||
void step(in boolean directionUp);
|
||||
void cancel();
|
||||
void startProgramListUpdates(in android.hardware.broadcastradio.ProgramFilter filter);
|
||||
void stopProgramListUpdates();
|
||||
boolean isConfigFlagSet(in android.hardware.broadcastradio.ConfigFlag flag);
|
||||
void setConfigFlag(in android.hardware.broadcastradio.ConfigFlag flag, in boolean value);
|
||||
android.hardware.broadcastradio.VendorKeyValue[] setParameters(in android.hardware.broadcastradio.VendorKeyValue[] parameters);
|
||||
android.hardware.broadcastradio.VendorKeyValue[] getParameters(in String[] keys);
|
||||
byte[] getImage(in int id);
|
||||
android.hardware.broadcastradio.ICloseHandle registerAnnouncementListener(in android.hardware.broadcastradio.IAnnouncementListener listener, in android.hardware.broadcastradio.AnnouncementType[] enabled);
|
||||
const int INVALID_IMAGE = 0;
|
||||
const int ANTENNA_STATE_CHANGE_TIMEOUT_MS = 100;
|
||||
const int LIST_COMPLETE_TIMEOUT_MS = 300000;
|
||||
const int TUNER_TIMEOUT_MS = 30000;
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// This file is a snapshot of an AIDL file. Do not edit it manually. There are
|
||||
// two cases:
|
||||
// 1). this is a frozen version file - do not edit this in any case.
|
||||
// 2). this is a 'current' file. If you make a backwards compatible change to
|
||||
// the interface (from the latest frozen version), the build system will
|
||||
// prompt you to update this file with `m <name>-update-api`.
|
||||
//
|
||||
// You must not make a backward incompatible change to any AIDL file built
|
||||
// with the aidl_interface module type with versions property set. The module
|
||||
// type is used to build AIDL files in a way that they can be used across
|
||||
// independently updatable components of the system. If a device is shipped
|
||||
// with such a backward incompatible change, it has a high risk of breaking
|
||||
// later when a module using the interface is updated, e.g., Mainline modules.
|
||||
|
||||
package android.hardware.broadcastradio;
|
||||
@VintfStability
|
||||
interface ICloseHandle {
|
||||
void close();
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// This file is a snapshot of an AIDL file. Do not edit it manually. There are
|
||||
// two cases:
|
||||
// 1). this is a frozen version file - do not edit this in any case.
|
||||
// 2). this is a 'current' file. If you make a backwards compatible change to
|
||||
// the interface (from the latest frozen version), the build system will
|
||||
// prompt you to update this file with `m <name>-update-api`.
|
||||
//
|
||||
// You must not make a backward incompatible change to any AIDL file built
|
||||
// with the aidl_interface module type with versions property set. The module
|
||||
// type is used to build AIDL files in a way that they can be used across
|
||||
// independently updatable components of the system. If a device is shipped
|
||||
// with such a backward incompatible change, it has a high risk of breaking
|
||||
// later when a module using the interface is updated, e.g., Mainline modules.
|
||||
|
||||
package android.hardware.broadcastradio;
|
||||
@VintfStability
|
||||
interface ITunerCallback {
|
||||
oneway void onTuneFailed(in android.hardware.broadcastradio.Result result, in android.hardware.broadcastradio.ProgramSelector selector);
|
||||
oneway void onCurrentProgramInfoChanged(in android.hardware.broadcastradio.ProgramInfo info);
|
||||
oneway void onProgramListUpdated(in android.hardware.broadcastradio.ProgramListChunk chunk);
|
||||
oneway void onAntennaStateChange(in boolean connected);
|
||||
oneway void onConfigFlagUpdated(in android.hardware.broadcastradio.ConfigFlag flag, in boolean value);
|
||||
oneway void onParametersUpdated(in android.hardware.broadcastradio.VendorKeyValue[] parameters);
|
||||
}
|
|
@ -0,0 +1,52 @@
|
|||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// This file is a snapshot of an AIDL file. Do not edit it manually. There are
|
||||
// two cases:
|
||||
// 1). this is a frozen version file - do not edit this in any case.
|
||||
// 2). this is a 'current' file. If you make a backwards compatible change to
|
||||
// the interface (from the latest frozen version), the build system will
|
||||
// prompt you to update this file with `m <name>-update-api`.
|
||||
//
|
||||
// You must not make a backward incompatible change to any AIDL file built
|
||||
// with the aidl_interface module type with versions property set. The module
|
||||
// type is used to build AIDL files in a way that they can be used across
|
||||
// independently updatable components of the system. If a device is shipped
|
||||
// with such a backward incompatible change, it has a high risk of breaking
|
||||
// later when a module using the interface is updated, e.g., Mainline modules.
|
||||
|
||||
package android.hardware.broadcastradio;
|
||||
@Backing(type="int") @JavaDerive(equals=true, toString=true) @VintfStability
|
||||
enum IdentifierType {
|
||||
VENDOR_START = 1000,
|
||||
VENDOR_END = 1999,
|
||||
INVALID = 0,
|
||||
AMFM_FREQUENCY_KHZ = 1,
|
||||
RDS_PI = 2,
|
||||
HD_STATION_ID_EXT = 3,
|
||||
HD_STATION_NAME = 4,
|
||||
DAB_SID_EXT = 5,
|
||||
DAB_ENSEMBLE = 6,
|
||||
DAB_SCID = 7,
|
||||
DAB_FREQUENCY_KHZ = 8,
|
||||
DRMO_SERVICE_ID = 9,
|
||||
DRMO_FREQUENCY_KHZ = 10,
|
||||
SXM_SERVICE_ID = 12,
|
||||
SXM_CHANNEL = 13,
|
||||
}
|
|
@ -0,0 +1,53 @@
|
|||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// This file is a snapshot of an AIDL file. Do not edit it manually. There are
|
||||
// two cases:
|
||||
// 1). this is a frozen version file - do not edit this in any case.
|
||||
// 2). this is a 'current' file. If you make a backwards compatible change to
|
||||
// the interface (from the latest frozen version), the build system will
|
||||
// prompt you to update this file with `m <name>-update-api`.
|
||||
//
|
||||
// You must not make a backward incompatible change to any AIDL file built
|
||||
// with the aidl_interface module type with versions property set. The module
|
||||
// type is used to build AIDL files in a way that they can be used across
|
||||
// independently updatable components of the system. If a device is shipped
|
||||
// with such a backward incompatible change, it has a high risk of breaking
|
||||
// later when a module using the interface is updated, e.g., Mainline modules.
|
||||
|
||||
package android.hardware.broadcastradio;
|
||||
@JavaDerive(equals=true, toString=true) @VintfStability
|
||||
union Metadata {
|
||||
String rdsPs;
|
||||
int rdsPty;
|
||||
int rbdsPty;
|
||||
String rdsRt;
|
||||
String songTitle;
|
||||
String songArtist;
|
||||
String songAlbum;
|
||||
int stationIcon;
|
||||
int albumArt;
|
||||
String programName;
|
||||
String dabEnsembleName;
|
||||
String dabEnsembleNameShort;
|
||||
String dabServiceName;
|
||||
String dabServiceNameShort;
|
||||
String dabComponentName;
|
||||
String dabComponentNameShort;
|
||||
}
|
|
@ -0,0 +1,41 @@
|
|||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// This file is a snapshot of an AIDL file. Do not edit it manually. There are
|
||||
// two cases:
|
||||
// 1). this is a frozen version file - do not edit this in any case.
|
||||
// 2). this is a 'current' file. If you make a backwards compatible change to
|
||||
// the interface (from the latest frozen version), the build system will
|
||||
// prompt you to update this file with `m <name>-update-api`.
|
||||
//
|
||||
// You must not make a backward incompatible change to any AIDL file built
|
||||
// with the aidl_interface module type with versions property set. The module
|
||||
// type is used to build AIDL files in a way that they can be used across
|
||||
// independently updatable components of the system. If a device is shipped
|
||||
// with such a backward incompatible change, it has a high risk of breaking
|
||||
// later when a module using the interface is updated, e.g., Mainline modules.
|
||||
|
||||
package android.hardware.broadcastradio;
|
||||
@JavaDerive(equals=true, toString=true) @VintfStability
|
||||
parcelable ProgramFilter {
|
||||
android.hardware.broadcastradio.IdentifierType[] identifierTypes;
|
||||
android.hardware.broadcastradio.ProgramIdentifier[] identifiers;
|
||||
boolean includeCategories;
|
||||
boolean excludeModifications;
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// This file is a snapshot of an AIDL file. Do not edit it manually. There are
|
||||
// two cases:
|
||||
// 1). this is a frozen version file - do not edit this in any case.
|
||||
// 2). this is a 'current' file. If you make a backwards compatible change to
|
||||
// the interface (from the latest frozen version), the build system will
|
||||
// prompt you to update this file with `m <name>-update-api`.
|
||||
//
|
||||
// You must not make a backward incompatible change to any AIDL file built
|
||||
// with the aidl_interface module type with versions property set. The module
|
||||
// type is used to build AIDL files in a way that they can be used across
|
||||
// independently updatable components of the system. If a device is shipped
|
||||
// with such a backward incompatible change, it has a high risk of breaking
|
||||
// later when a module using the interface is updated, e.g., Mainline modules.
|
||||
|
||||
package android.hardware.broadcastradio;
|
||||
@JavaDerive(equals=true, toString=true) @VintfStability
|
||||
parcelable ProgramIdentifier {
|
||||
android.hardware.broadcastradio.IdentifierType type = android.hardware.broadcastradio.IdentifierType.INVALID;
|
||||
long value;
|
||||
}
|
|
@ -0,0 +1,51 @@
|
|||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// This file is a snapshot of an AIDL file. Do not edit it manually. There are
|
||||
// two cases:
|
||||
// 1). this is a frozen version file - do not edit this in any case.
|
||||
// 2). this is a 'current' file. If you make a backwards compatible change to
|
||||
// the interface (from the latest frozen version), the build system will
|
||||
// prompt you to update this file with `m <name>-update-api`.
|
||||
//
|
||||
// You must not make a backward incompatible change to any AIDL file built
|
||||
// with the aidl_interface module type with versions property set. The module
|
||||
// type is used to build AIDL files in a way that they can be used across
|
||||
// independently updatable components of the system. If a device is shipped
|
||||
// with such a backward incompatible change, it has a high risk of breaking
|
||||
// later when a module using the interface is updated, e.g., Mainline modules.
|
||||
|
||||
package android.hardware.broadcastradio;
|
||||
@JavaDerive(equals=true, toString=true) @VintfStability
|
||||
parcelable ProgramInfo {
|
||||
android.hardware.broadcastradio.ProgramSelector selector;
|
||||
android.hardware.broadcastradio.ProgramIdentifier logicallyTunedTo;
|
||||
android.hardware.broadcastradio.ProgramIdentifier physicallyTunedTo;
|
||||
@nullable android.hardware.broadcastradio.ProgramIdentifier[] relatedContent;
|
||||
int infoFlags;
|
||||
int signalQuality;
|
||||
android.hardware.broadcastradio.Metadata[] metadata;
|
||||
android.hardware.broadcastradio.VendorKeyValue[] vendorInfo;
|
||||
const int FLAG_LIVE = 1;
|
||||
const int FLAG_MUTED = 2;
|
||||
const int FLAG_TRAFFIC_PROGRAM = 4;
|
||||
const int FLAG_TRAFFIC_ANNOUNCEMENT = 8;
|
||||
const int FLAG_TUNABLE = 16;
|
||||
const int FLAG_STEREO = 32;
|
||||
}
|
|
@ -0,0 +1,41 @@
|
|||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// This file is a snapshot of an AIDL file. Do not edit it manually. There are
|
||||
// two cases:
|
||||
// 1). this is a frozen version file - do not edit this in any case.
|
||||
// 2). this is a 'current' file. If you make a backwards compatible change to
|
||||
// the interface (from the latest frozen version), the build system will
|
||||
// prompt you to update this file with `m <name>-update-api`.
|
||||
//
|
||||
// You must not make a backward incompatible change to any AIDL file built
|
||||
// with the aidl_interface module type with versions property set. The module
|
||||
// type is used to build AIDL files in a way that they can be used across
|
||||
// independently updatable components of the system. If a device is shipped
|
||||
// with such a backward incompatible change, it has a high risk of breaking
|
||||
// later when a module using the interface is updated, e.g., Mainline modules.
|
||||
|
||||
package android.hardware.broadcastradio;
|
||||
@JavaDerive(equals=true, toString=true) @VintfStability
|
||||
parcelable ProgramListChunk {
|
||||
boolean purge;
|
||||
boolean complete;
|
||||
android.hardware.broadcastradio.ProgramInfo[] modified;
|
||||
@nullable android.hardware.broadcastradio.ProgramIdentifier[] removed;
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// This file is a snapshot of an AIDL file. Do not edit it manually. There are
|
||||
// two cases:
|
||||
// 1). this is a frozen version file - do not edit this in any case.
|
||||
// 2). this is a 'current' file. If you make a backwards compatible change to
|
||||
// the interface (from the latest frozen version), the build system will
|
||||
// prompt you to update this file with `m <name>-update-api`.
|
||||
//
|
||||
// You must not make a backward incompatible change to any AIDL file built
|
||||
// with the aidl_interface module type with versions property set. The module
|
||||
// type is used to build AIDL files in a way that they can be used across
|
||||
// independently updatable components of the system. If a device is shipped
|
||||
// with such a backward incompatible change, it has a high risk of breaking
|
||||
// later when a module using the interface is updated, e.g., Mainline modules.
|
||||
|
||||
package android.hardware.broadcastradio;
|
||||
@JavaDerive(equals=true, toString=true) @VintfStability
|
||||
parcelable ProgramSelector {
|
||||
android.hardware.broadcastradio.ProgramIdentifier primaryId;
|
||||
android.hardware.broadcastradio.ProgramIdentifier[] secondaryIds;
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// This file is a snapshot of an AIDL file. Do not edit it manually. There are
|
||||
// two cases:
|
||||
// 1). this is a frozen version file - do not edit this in any case.
|
||||
// 2). this is a 'current' file. If you make a backwards compatible change to
|
||||
// the interface (from the latest frozen version), the build system will
|
||||
// prompt you to update this file with `m <name>-update-api`.
|
||||
//
|
||||
// You must not make a backward incompatible change to any AIDL file built
|
||||
// with the aidl_interface module type with versions property set. The module
|
||||
// type is used to build AIDL files in a way that they can be used across
|
||||
// independently updatable components of the system. If a device is shipped
|
||||
// with such a backward incompatible change, it has a high risk of breaking
|
||||
// later when a module using the interface is updated, e.g., Mainline modules.
|
||||
|
||||
package android.hardware.broadcastradio;
|
||||
@JavaDerive(equals=true, toString=true) @VintfStability
|
||||
parcelable Properties {
|
||||
String maker;
|
||||
String product;
|
||||
String version;
|
||||
String serial;
|
||||
android.hardware.broadcastradio.IdentifierType[] supportedIdentifierTypes;
|
||||
android.hardware.broadcastradio.VendorKeyValue[] vendorInfo;
|
||||
}
|
|
@ -0,0 +1,44 @@
|
|||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// This file is a snapshot of an AIDL file. Do not edit it manually. There are
|
||||
// two cases:
|
||||
// 1). this is a frozen version file - do not edit this in any case.
|
||||
// 2). this is a 'current' file. If you make a backwards compatible change to
|
||||
// the interface (from the latest frozen version), the build system will
|
||||
// prompt you to update this file with `m <name>-update-api`.
|
||||
//
|
||||
// You must not make a backward incompatible change to any AIDL file built
|
||||
// with the aidl_interface module type with versions property set. The module
|
||||
// type is used to build AIDL files in a way that they can be used across
|
||||
// independently updatable components of the system. If a device is shipped
|
||||
// with such a backward incompatible change, it has a high risk of breaking
|
||||
// later when a module using the interface is updated, e.g., Mainline modules.
|
||||
|
||||
package android.hardware.broadcastradio;
|
||||
@Backing(type="int") @VintfStability
|
||||
enum Result {
|
||||
OK = 0,
|
||||
INTERNAL_ERROR = 1,
|
||||
INVALID_ARGUMENTS = 2,
|
||||
INVALID_STATE = 3,
|
||||
NOT_SUPPORTED = 4,
|
||||
TIMEOUT = 5,
|
||||
UNKNOWN_ERROR = 6,
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// This file is a snapshot of an AIDL file. Do not edit it manually. There are
|
||||
// two cases:
|
||||
// 1). this is a frozen version file - do not edit this in any case.
|
||||
// 2). this is a 'current' file. If you make a backwards compatible change to
|
||||
// the interface (from the latest frozen version), the build system will
|
||||
// prompt you to update this file with `m <name>-update-api`.
|
||||
//
|
||||
// You must not make a backward incompatible change to any AIDL file built
|
||||
// with the aidl_interface module type with versions property set. The module
|
||||
// type is used to build AIDL files in a way that they can be used across
|
||||
// independently updatable components of the system. If a device is shipped
|
||||
// with such a backward incompatible change, it has a high risk of breaking
|
||||
// later when a module using the interface is updated, e.g., Mainline modules.
|
||||
|
||||
package android.hardware.broadcastradio;
|
||||
@JavaDerive(equals=true, toString=true) @VintfStability
|
||||
parcelable VendorKeyValue {
|
||||
String key;
|
||||
String value;
|
||||
}
|
|
@ -0,0 +1,58 @@
|
|||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package android.hardware.broadcastradio;
|
||||
|
||||
/**
|
||||
* Defines the AM/FM band range for configuring different regions.
|
||||
*
|
||||
* <p>Channel grid is defined as: each possible channel is set at
|
||||
* lowerBound + channelNumber * spacing, up to upperBound.
|
||||
*/
|
||||
@VintfStability
|
||||
@JavaDerive(equals=true, toString=true)
|
||||
parcelable AmFmBandRange {
|
||||
/**
|
||||
* The frequency (in kHz) of the first channel within the range.
|
||||
*
|
||||
* Lower bound must be a tunable frequency.
|
||||
*/
|
||||
int lowerBound;
|
||||
|
||||
/**
|
||||
* The frequency (in kHz) of the last channel within the range.
|
||||
*/
|
||||
int upperBound;
|
||||
|
||||
/**
|
||||
* Channel grid resolution (in kHz), telling how far the channels are apart.
|
||||
*/
|
||||
int spacing;
|
||||
|
||||
/**
|
||||
* Channel spacing (in kHz) used to speed up seeking to the next station
|
||||
* via the {@link IBroadcastRadio#seek} operation.
|
||||
*
|
||||
* It must be a multiple of channel grid resolution.
|
||||
*
|
||||
* Tuner may first quickly check every n-th channel and if it detects echo
|
||||
* from a station, it fine-tunes to find the exact frequency.
|
||||
*
|
||||
* It's ignored for capabilities check (with full=true when calling
|
||||
* getAmFmRegionConfig).
|
||||
*/
|
||||
int seekSpacing;
|
||||
}
|
|
@ -0,0 +1,86 @@
|
|||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package android.hardware.broadcastradio;
|
||||
|
||||
import android.hardware.broadcastradio.AmFmBandRange;
|
||||
|
||||
/**
|
||||
* Regional configuration for AM/FM.
|
||||
*
|
||||
* <p>For hardware capabilities check (with full=true when calling
|
||||
* {@link IBroadcastRadio#getAmFmRegionConfig}), HAL implementation fills
|
||||
* entire supported range of frequencies and features.
|
||||
*
|
||||
* When checking current configuration, at most one bit in each bitset
|
||||
* can be set.
|
||||
*/
|
||||
@VintfStability
|
||||
@JavaDerive(equals=true, toString=true)
|
||||
parcelable AmFmRegionConfig {
|
||||
/**
|
||||
* Noth D50 and D75 are FM de-emphasis filter supported or configured.
|
||||
*
|
||||
* Both might be set for hardware capabilities check (with full={@code true}
|
||||
* when calling getAmFmRegionConfig), but exactly one for specific region
|
||||
* settings.
|
||||
*/
|
||||
const int DEEMPHASIS_D50 = 1 << 0;
|
||||
|
||||
const int DEEMPHASIS_D75 = 1 << 1;
|
||||
|
||||
/**
|
||||
* Both RDS and RBDS are supported or configured RDS variants.
|
||||
*
|
||||
* Both might be set for hardware capabilities check (with full={@code true}
|
||||
* when calling getAmFmRegionConfig), but only one (or none) for specific
|
||||
* region settings.
|
||||
*
|
||||
* RDS is Standard variant, used everywhere except North America.
|
||||
*/
|
||||
const int RDS = 1 << 0;
|
||||
|
||||
/**
|
||||
* Variant used in North America (see RDS).
|
||||
*/
|
||||
const int RBDS = 1 << 1;
|
||||
|
||||
/**
|
||||
* All supported or configured AM/FM bands.
|
||||
*
|
||||
* AM/FM bands are identified by frequency value
|
||||
* (see {@link IdentifierType#AMFM_FREQUENCY_KHZ}).
|
||||
*
|
||||
* With typical configuration, it's expected to have two frequency ranges
|
||||
* for capabilities check (AM and FM) and four ranges for specific region
|
||||
* configuration (AM LW, AM MW, AM SW, FM).
|
||||
*/
|
||||
AmFmBandRange[] ranges;
|
||||
|
||||
/**
|
||||
* De-emphasis filter supported/configured.
|
||||
*
|
||||
* It is a bitset of de-emphasis values (DEEMPHASIS_D50 and DEEMPHASIS_D75).
|
||||
*/
|
||||
int fmDeemphasis;
|
||||
|
||||
/**
|
||||
* RDS/RBDS variant supported/configured.
|
||||
*
|
||||
* It is a bitset of RDS values (RDS and RBDS).
|
||||
*/
|
||||
int fmRds;
|
||||
}
|
|
@ -0,0 +1,46 @@
|
|||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package android.hardware.broadcastradio;
|
||||
|
||||
import android.hardware.broadcastradio.AnnouncementType;
|
||||
import android.hardware.broadcastradio.ProgramSelector;
|
||||
import android.hardware.broadcastradio.VendorKeyValue;
|
||||
|
||||
/**
|
||||
* Station broadcasting active announcement.
|
||||
*/
|
||||
@VintfStability
|
||||
@JavaDerive(equals=true, toString=true)
|
||||
parcelable Announcement {
|
||||
/**
|
||||
* Program selector to tune to the announcement.
|
||||
*/
|
||||
ProgramSelector selector;
|
||||
|
||||
/**
|
||||
* Announcement type.
|
||||
*/
|
||||
AnnouncementType type = AnnouncementType.INVALID;
|
||||
|
||||
/**
|
||||
* Vendor-specific information.
|
||||
*
|
||||
* It may be used for extra features, not supported by the platform,
|
||||
* for example: com.me.hdradio.urgency=100; com.me.hdradio.certainity=50.
|
||||
*/
|
||||
VendorKeyValue[] vendorInfo;
|
||||
}
|
|
@ -0,0 +1,72 @@
|
|||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package android.hardware.broadcastradio;
|
||||
|
||||
/**
|
||||
* Type of an announcement.
|
||||
*
|
||||
* <p>It maps to different announcement types for each radio technology.
|
||||
*/
|
||||
@VintfStability
|
||||
@Backing(type="byte")
|
||||
@JavaDerive(equals=true, toString=true)
|
||||
enum AnnouncementType {
|
||||
/**
|
||||
* Undefined announcement type
|
||||
*/
|
||||
INVALID = 0,
|
||||
|
||||
/**
|
||||
* DAB alarm, RDS emergency program type (PTY 31).
|
||||
*/
|
||||
EMERGENCY = 1,
|
||||
|
||||
/**
|
||||
* DAB warning.
|
||||
*/
|
||||
WARNING,
|
||||
|
||||
/**
|
||||
* DAB road traffic, RDS TA, HD Radio transportation.
|
||||
*/
|
||||
TRAFFIC,
|
||||
|
||||
/**
|
||||
* Weather.
|
||||
*/
|
||||
WEATHER,
|
||||
|
||||
/**
|
||||
* News.
|
||||
*/
|
||||
NEWS,
|
||||
|
||||
/**
|
||||
* DAB event, special event.
|
||||
*/
|
||||
EVENT,
|
||||
|
||||
/**
|
||||
* DAB sport report, RDS sports.
|
||||
*/
|
||||
SPORT,
|
||||
|
||||
/**
|
||||
* All others.
|
||||
*/
|
||||
MISC,
|
||||
}
|
|
@ -0,0 +1,92 @@
|
|||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package android.hardware.broadcastradio;
|
||||
|
||||
/**
|
||||
* Configuration flags to be used with isConfigFlagSet and setConfigFlag methods
|
||||
* of IBroadcastRadio.
|
||||
*/
|
||||
@VintfStability
|
||||
@Backing(type="int")
|
||||
@JavaDerive(equals=true, toString=true)
|
||||
enum ConfigFlag {
|
||||
/**
|
||||
* Forces mono audio stream reception.
|
||||
*
|
||||
* Analog broadcasts can recover poor reception conditions by jointing
|
||||
* stereo channels into one. Mainly for, but not limited to AM/FM.
|
||||
*/
|
||||
FORCE_MONO = 1,
|
||||
|
||||
/**
|
||||
* Forces the analog playback for the supporting radio technology.
|
||||
*
|
||||
* User may disable digital playback for FM HD Radio or hybrid FM/DAB with
|
||||
* this option. This is purely user choice, ie. does not reflect digital-
|
||||
* analog handover state managed from the HAL implementation side.
|
||||
*
|
||||
* Some radio technologies may not support this, ie. DAB.
|
||||
*/
|
||||
FORCE_ANALOG,
|
||||
|
||||
/**
|
||||
* Forces the digital playback for the supporting radio technology.
|
||||
*
|
||||
* User may disable digital-analog handover that happens with poor
|
||||
* reception conditions. With digital forced, the radio will remain silent
|
||||
* instead of switching to analog channel if it's available. This is purely
|
||||
* user choice, it does not reflect the actual state of handover.
|
||||
*/
|
||||
FORCE_DIGITAL,
|
||||
|
||||
/**
|
||||
* RDS Alternative Frequencies.
|
||||
*
|
||||
* If set and the currently tuned RDS station broadcasts on multiple
|
||||
* channels, radio tuner automatically switches to the best available
|
||||
* alternative.
|
||||
*/
|
||||
RDS_AF,
|
||||
|
||||
/**
|
||||
* RDS region-specific program lock-down.
|
||||
*
|
||||
* Allows user to lock to the current region as they move into the
|
||||
* other region.
|
||||
*/
|
||||
RDS_REG,
|
||||
|
||||
/**
|
||||
* Enables DAB-DAB hard- and implicit-linking (the same content).
|
||||
*/
|
||||
DAB_DAB_LINKING,
|
||||
|
||||
/**
|
||||
* Enables DAB-FM hard- and implicit-linking (the same content).
|
||||
*/
|
||||
DAB_FM_LINKING,
|
||||
|
||||
/**
|
||||
* Enables DAB-DAB soft-linking (related content).
|
||||
*/
|
||||
DAB_DAB_SOFT_LINKING,
|
||||
|
||||
/**
|
||||
* Enables DAB-FM soft-linking (related content).
|
||||
*/
|
||||
DAB_FM_SOFT_LINKING,
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package android.hardware.broadcastradio;
|
||||
|
||||
/**
|
||||
* An entry in regional configuration for DAB.
|
||||
*
|
||||
* <p>This defines a frequency table row for ensembles.
|
||||
*/
|
||||
@VintfStability
|
||||
@JavaDerive(equals=true, toString=true)
|
||||
parcelable DabTableEntry {
|
||||
/**
|
||||
* Channel name, i.e. 5A, 7B.
|
||||
*
|
||||
* It must match the following regular expression:
|
||||
* /^[A-Z0-9][A-Z0-9 ]{0,5}[A-Z0-9]$/ (2-7 uppercase alphanumeric characters
|
||||
* without spaces allowed at the beginning nor end).
|
||||
*/
|
||||
String label;
|
||||
|
||||
/**
|
||||
* Frequency, in kHz.
|
||||
*/
|
||||
int frequencyKhz;
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package android.hardware.broadcastradio;
|
||||
|
||||
import android.hardware.broadcastradio.Announcement;
|
||||
|
||||
/**
|
||||
* Callback interface for announcement listener.
|
||||
*
|
||||
* For typical configuration, the listener is a broadcast radio service.
|
||||
*/
|
||||
@VintfStability
|
||||
interface IAnnouncementListener {
|
||||
/**
|
||||
* Called whenever announcement list has changed.
|
||||
*
|
||||
* @param announcements The complete list of currently active announcements.
|
||||
*/
|
||||
oneway void onListUpdated(in Announcement[] announcements);
|
||||
}
|
|
@ -0,0 +1,353 @@
|
|||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package android.hardware.broadcastradio;
|
||||
|
||||
import android.hardware.broadcastradio.AmFmRegionConfig;
|
||||
import android.hardware.broadcastradio.AnnouncementType;
|
||||
import android.hardware.broadcastradio.ConfigFlag;
|
||||
import android.hardware.broadcastradio.DabTableEntry;
|
||||
import android.hardware.broadcastradio.IAnnouncementListener;
|
||||
import android.hardware.broadcastradio.ICloseHandle;
|
||||
import android.hardware.broadcastradio.ITunerCallback;
|
||||
import android.hardware.broadcastradio.ProgramFilter;
|
||||
import android.hardware.broadcastradio.ProgramSelector;
|
||||
import android.hardware.broadcastradio.Properties;
|
||||
import android.hardware.broadcastradio.VendorKeyValue;
|
||||
|
||||
/**
|
||||
* Represents a hardware broadcast radio module. A single module may contain
|
||||
* multiple hardware tuners (i.e. with an additional background tuner), but the
|
||||
* layers above the HAL see them as a single logical unit.
|
||||
*/
|
||||
@VintfStability
|
||||
interface IBroadcastRadio {
|
||||
/**
|
||||
* Invalid identifier for {@link IBroadcastRadio#getImage}.
|
||||
*/
|
||||
const int INVALID_IMAGE = 0;
|
||||
|
||||
/**
|
||||
* If the antenna is disconnected from the beginning, the
|
||||
* {@link ITunerCallback#onAntennaStateChange} callback must be
|
||||
* called within this time.
|
||||
*/
|
||||
const int ANTENNA_STATE_CHANGE_TIMEOUT_MS = 100;
|
||||
|
||||
/**
|
||||
* All chunks of a signal program list update must be transmitted
|
||||
* within this time.
|
||||
*/
|
||||
const int LIST_COMPLETE_TIMEOUT_MS = 300000;
|
||||
|
||||
/**
|
||||
* All tune, seek and step operations must be completed within
|
||||
* this time.
|
||||
*/
|
||||
const int TUNER_TIMEOUT_MS = 30000;
|
||||
|
||||
/**
|
||||
* Returns module properties: a description of a module and its
|
||||
* capabilities. This method must not fail.
|
||||
*
|
||||
* @return Module description.
|
||||
*/
|
||||
Properties getProperties();
|
||||
|
||||
/**
|
||||
* Fetches current or possible AM/FM region configuration.
|
||||
*
|
||||
* If the tuner doesn't support AM/FM, a service-specific error
|
||||
* {@link Result#NOT_SUPPORTED} will be returned.
|
||||
*
|
||||
* @param full If {@code true}, returns full hardware capabilities.
|
||||
* If {@code false}, returns current regional configuration.
|
||||
* @return config Hardware capabilities (full={@code true}) or current configuration
|
||||
* (full={@code false}).
|
||||
*/
|
||||
AmFmRegionConfig getAmFmRegionConfig(in boolean full);
|
||||
|
||||
/**
|
||||
* Fetches current DAB region configuration.
|
||||
*
|
||||
* If tuner doesn't support DAB, a service-specific error
|
||||
* {@link Result#NOT_SUPPORTED} wiil be returned.
|
||||
*
|
||||
* @return config Current configuration.
|
||||
*/
|
||||
DabTableEntry[] getDabRegionConfig();
|
||||
|
||||
/**
|
||||
* Sets callback interface.
|
||||
*
|
||||
* It is expected that there will only ever be a single callback set.
|
||||
* If called when a callback is already set, the existing one should be
|
||||
* replaced with the new callback.
|
||||
*
|
||||
* If the callback to be set is null, a service-specific error
|
||||
* {@link Result#INVALID_ARGUMENTS} will be returned; if the callback
|
||||
* is not set successfully, a service-specific error
|
||||
* {@link Result#NOT_SUPPORTED} should be returned.
|
||||
*
|
||||
* @param callback The callback interface used for BroadcastRadio HAL.
|
||||
*/
|
||||
void setTunerCallback(in ITunerCallback callback);
|
||||
|
||||
/**
|
||||
* Unsets callback interface.
|
||||
*
|
||||
* The existing callback is set to null.
|
||||
*/
|
||||
void unsetTunerCallback();
|
||||
|
||||
/**
|
||||
* Tunes to a specified program.
|
||||
*
|
||||
* Automatically cancels pending tune(), seek() or step().
|
||||
* The method should first check whether tune can be processed by the status
|
||||
* of tuner and inputs, schedule tune task, and then return status
|
||||
* immediately. If a non-null callback is not set, a service-specific
|
||||
* error {@link Result#INVALID_STATE} will be returned; if the program
|
||||
* selector doesn't contain any supported identifier, a service-specific error
|
||||
* {@link Result#NOT_SUPPORTED} will be returned; if the program selector
|
||||
* contains identifiers in invalid format (i.e. out of range), a
|
||||
* service-specific error {@link Result#INVALID_ARGUMENTS} will be returned;
|
||||
* otherwise, OK will be returned as status. Tune task should be processed
|
||||
* asynchronously after the method returns status. If the method returns OK,
|
||||
* {@link ITunerCallback#tuneFailed} or
|
||||
* {@link ITunerCallback#currentProgramInfoChanged} callback must be called
|
||||
* after the tune task completes.
|
||||
*
|
||||
* @param program Program to tune to.
|
||||
*/
|
||||
void tune(in ProgramSelector program);
|
||||
|
||||
/**
|
||||
* Seeks the next valid program on the "air".
|
||||
*
|
||||
* Advance to the next detected program and stay there.
|
||||
*
|
||||
* Automatically cancels pending tune(), seek() or step().
|
||||
* The method should first check whether seek can be processed by the status
|
||||
* of tuner and inputs, schedule seek task, and then return status
|
||||
* immediately. If a non-null callback is not set, a service-specific
|
||||
* error {@link Result#INVALID_STATE} will be returned; otherwise, OK will
|
||||
* be returned as status. Seek task should be processed asynchronously
|
||||
* after the method returns status. If the method returns OK,
|
||||
* {@link ITunerCallback#tuneFailed} or
|
||||
* {@link ITunerCallback#currentProgramInfoChanged} callback must be called
|
||||
* after the seek task completes.
|
||||
*
|
||||
* The skipSubChannel parameter is used to skip digital radio subchannels:
|
||||
* - HD Radio SPS;
|
||||
* - DAB secondary service.
|
||||
*
|
||||
* As an implementation detail, the HAL has the option to perform an actual
|
||||
* seek or select the next program from the list retrieved in the
|
||||
* background.
|
||||
*
|
||||
* @param directionUp {@code true} to change towards higher numeric values
|
||||
* (frequency, channel number), {@code false} towards
|
||||
* lower.
|
||||
* @param skipSubChannel Don't tune to subchannels.
|
||||
*/
|
||||
void seek(in boolean directionUp, in boolean skipSubChannel);
|
||||
|
||||
/**
|
||||
* Steps to the adjacent channel, which may not be occupied by any program.
|
||||
*
|
||||
* Automatically cancels pending tune(), seek() or step().
|
||||
* The method should first check whether step can be processed by the status
|
||||
* of tuner and inputs, schedule step task, and then return status
|
||||
* immediately. If a non-null callback is not set, service-specific
|
||||
* error {@link Result#INVALID_STATE} will be returned; if tuning to an
|
||||
* unoccupied channel is not supported (i.e. for satellite radio), a
|
||||
* service-specific error {@link Result#NOT_SUPPORTED} will be returned;
|
||||
* otherwise, OK should be returned as status. Step task should be
|
||||
* processed asynchronously after the method returns status. If the
|
||||
* method returns OK, {@link ITunerCallback#tuneFailed} or
|
||||
* {@link currentProgramInfoChanged} callback must be called after the
|
||||
* step task completes.
|
||||
*
|
||||
* @param directionUp {@code true} to change towards higher numeric values
|
||||
* (frequency, channel number), {@code false} towards lower.
|
||||
*/
|
||||
void step(in boolean directionUp);
|
||||
|
||||
/**
|
||||
* Cancels pending tune(), seek() or step().
|
||||
*
|
||||
* If there is no such operation running, the call can be ignored.
|
||||
* If cancel is called after the HAL completes an operation (tune, seek, and step)
|
||||
* and before the callback completions, the cancel can be ignored and the callback
|
||||
* should complete.
|
||||
*/
|
||||
void cancel();
|
||||
|
||||
/**
|
||||
* Applies a filter to the program list and starts sending program list
|
||||
* update over {@link ITunerCallback#onProgramListUpdated} callback.
|
||||
*
|
||||
* There may be only one updates stream active at the moment. Calling this
|
||||
* method again must result in cancelling the pending update request.
|
||||
*
|
||||
* This call clears the program list on the client side, the HAL must send
|
||||
* the whole list again.
|
||||
*
|
||||
* If the program list scanning hardware (i.e. background tuner) is
|
||||
* unavailable at the moment, the call must succeed and start updates
|
||||
* when it becomes available.
|
||||
*
|
||||
* If the program list scanning is not supported by the hardware, a
|
||||
* service-specific error {@link Result#NOT_SUPPORTED} will be returned.
|
||||
*
|
||||
* @param filter Filter to apply on the fetched program list.
|
||||
*/
|
||||
void startProgramListUpdates(in ProgramFilter filter);
|
||||
|
||||
/**
|
||||
* Stops sending program list updates.
|
||||
*
|
||||
* If stopProgramListUpdates is called after the HAL completes a program list update
|
||||
* and before the onCurrentProgramInfoChanged callback completions,
|
||||
* stopProgramListUpdates can be ignored and the callback should complete.
|
||||
*/
|
||||
void stopProgramListUpdates();
|
||||
|
||||
/**
|
||||
* Fetches the current setting of a given config flag.
|
||||
*
|
||||
* The success/failure result must be consistent with setConfigFlag.
|
||||
*
|
||||
* If the flag is not applicable, a service-specific error
|
||||
* {@link Result#INVALID_STATE} will be returned. If the flag is not
|
||||
* supported at all, a service-specific error {@link Result#NOT_SUPPORTED}
|
||||
* will be returned.
|
||||
*
|
||||
* @return the current value of the flag, if succeed.
|
||||
*/
|
||||
boolean isConfigFlagSet(in ConfigFlag flag);
|
||||
|
||||
/**
|
||||
* Sets the config flag.
|
||||
*
|
||||
* The success/failure result must be consistent with isConfigFlagSet.
|
||||
*
|
||||
* If the flag is not applicable, a service-specific error
|
||||
* {@link Result#INVALID_STATE} will be returned. If the flag is not
|
||||
* supported at all, a service-specific error {@link Result#NOT_SUPPORTED}
|
||||
* will be returned.
|
||||
*
|
||||
* @param flag Flag to set.
|
||||
* @param value The new value of a given flag.
|
||||
*/
|
||||
void setConfigFlag(in ConfigFlag flag, in boolean value);
|
||||
|
||||
/**
|
||||
* Generic method for setting vendor-specific parameter values.
|
||||
* The framework does not interpret the parameters, they are passed
|
||||
* in an opaque manner between a vendor application and HAL.
|
||||
*
|
||||
* Framework does not make any assumptions on the keys or values, other than
|
||||
* ones stated in VendorKeyValue documentation (a requirement of key
|
||||
* prefixes).
|
||||
*
|
||||
* For each pair in the result array, the key must be one of the keys
|
||||
* contained in the input (possibly with wildcards expanded), and the value
|
||||
* must be a vendor-specific result status (i.e. the string "OK" or an error
|
||||
* code). The implementation may choose to return an empty array, or only
|
||||
* return a status for a subset of the provided inputs, at its discretion.
|
||||
*
|
||||
* Application and HAL must not use keys with unknown prefix. In particular,
|
||||
* it must not place a key-value pair in results array for unknown key from
|
||||
* parameters array - instead, an unknown key should simply be ignored.
|
||||
* In other words, results array may contain a subset of parameter keys
|
||||
* (however, the framework doesn't enforce a strict subset - the only
|
||||
* formal requirement is vendor domain prefix for keys).
|
||||
*
|
||||
* @param parameters Vendor-specific key-value pairs.
|
||||
* @return Operation completion status for parameters being set.
|
||||
*/
|
||||
VendorKeyValue[] setParameters(in VendorKeyValue[] parameters);
|
||||
|
||||
/**
|
||||
* Generic method for retrieving vendor-specific parameter values.
|
||||
* The framework does not interpret the parameters, they are passed
|
||||
* in an opaque manner between a vendor application and HAL.
|
||||
*
|
||||
* Framework does not cache set/get requests, so it's allowed for
|
||||
* getParameter to return a different value than previous setParameter call.
|
||||
*
|
||||
* The syntax and semantics of keys are up to the vendor (as long as prefix
|
||||
* rules are obeyed). For instance, vendors may include some form of
|
||||
* wildcard support. In such case, result array may be of different size
|
||||
* than requested keys array. However, wildcards are not recognized by
|
||||
* framework and they are passed as-is to the HAL implementation.
|
||||
*
|
||||
* Unknown keys must be ignored and not placed into results array.
|
||||
*
|
||||
* @param keys Parameter keys to fetch.
|
||||
* @return Vendor-specific key-value pairs.
|
||||
*/
|
||||
VendorKeyValue[] getParameters(in String[] keys);
|
||||
|
||||
/**
|
||||
* Fetches image from radio module cache.
|
||||
*
|
||||
* This is out-of-band transport mechanism for images carried with metadata.
|
||||
* The metadata array only passes the identifier, so the client may cache
|
||||
* images or even not fetch them.
|
||||
*
|
||||
* The identifier may be any arbitrary number (i.e. sha256 prefix) selected
|
||||
* by the vendor. It must be stable so the application may cache it.
|
||||
*
|
||||
* The data must be a valid PNG, JPEG, GIF or BMP file, and must be less
|
||||
* than 1MB, due to hard limit on binder transaction buffer.
|
||||
*
|
||||
* Image data with an invalid format must be handled gracefully in the same
|
||||
* way as a missing image.
|
||||
*
|
||||
* The image identifier may become invalid after some time from passing it
|
||||
* with metadata struct (due to resource cleanup at the HAL implementation).
|
||||
* However, it must remain valid for a currently tuned program at least
|
||||
* until onCurrentProgramInfoChanged is called.
|
||||
*
|
||||
* @param id Identifier of an image (value of {@link IBroadcastRadio#INVALID_IMAGE}
|
||||
* is reserved and must be treated as invalid image).
|
||||
* @return A binary blob with image data
|
||||
* or a zero-length array if identifier doesn't exist.
|
||||
*/
|
||||
byte[] getImage(in int id);
|
||||
|
||||
/**
|
||||
* Registers announcement listener.
|
||||
*
|
||||
* If there is at least one observer registered, HAL implementation must
|
||||
* notify about announcements.
|
||||
*
|
||||
* If the observer dies, the HAL implementation must unregister observer
|
||||
* automatically.
|
||||
*
|
||||
* If the tuner doesn't support announcements, a service-specific error
|
||||
* {@link Result#NOT_SUPPORTED} will be returned.
|
||||
*
|
||||
* @param listener The listener interface.
|
||||
* @param enabled The list of announcement types to watch for.
|
||||
* @return a handle to unregister observer.
|
||||
*/
|
||||
ICloseHandle registerAnnouncementListener(
|
||||
in IAnnouncementListener listener, in AnnouncementType[] enabled);
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package android.hardware.broadcastradio;
|
||||
|
||||
/**
|
||||
* Represents a generic close handle to remove a callback that doesn't need
|
||||
* active interface.
|
||||
*/
|
||||
@VintfStability
|
||||
interface ICloseHandle {
|
||||
/**
|
||||
* Closes the handle.
|
||||
*
|
||||
* The call must not fail and must only be issued once.
|
||||
*
|
||||
* After the close call is executed, no other calls to this interface
|
||||
* are allowed. If the call is issued second time, a service-specific
|
||||
* error {@link Result#INVALID_STATE} will be returned.
|
||||
*/
|
||||
void close();
|
||||
}
|
|
@ -0,0 +1,113 @@
|
|||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package android.hardware.broadcastradio;
|
||||
|
||||
import android.hardware.broadcastradio.ConfigFlag;
|
||||
import android.hardware.broadcastradio.ProgramInfo;
|
||||
import android.hardware.broadcastradio.ProgramListChunk;
|
||||
import android.hardware.broadcastradio.ProgramSelector;
|
||||
import android.hardware.broadcastradio.Result;
|
||||
import android.hardware.broadcastradio.VendorKeyValue;
|
||||
|
||||
@VintfStability
|
||||
oneway interface ITunerCallback {
|
||||
/**
|
||||
* Method called by the HAL when a tuning operation fails asynchronously
|
||||
* following {@link IBroadcastRadio#tune}, {@link IBroadcastRadio#seek}
|
||||
* or {@link IBroadcastRadio#step}.
|
||||
*
|
||||
* This callback is only called when the tune(), seek() or step() command
|
||||
* succeeds without returning any error at first.
|
||||
*
|
||||
* @param result {@link Result#TIMEOUT} in case that tune(), seek() or
|
||||
* step() is not completed within
|
||||
* @link IBroadcastRadio#TUNER_TIMEOUT_MS}
|
||||
* @param selector A ProgramSelector structure passed from tune() call;
|
||||
* empty for step() and seek().
|
||||
*/
|
||||
void onTuneFailed(in Result result, in ProgramSelector selector);
|
||||
|
||||
/**
|
||||
* Method called by the HAL when current program information (including
|
||||
* metadata) is updated. It must be called when {@link IBroadcastRadio#tune}
|
||||
* {@link IBroadcastRadio#seek} or {@link IBroadcastRadio#step} command
|
||||
* succeeds.
|
||||
*
|
||||
* This is also called when the radio tuned to the static (not a valid
|
||||
* station), see {@link ProgramInfo#FLAG_TUNABLE} flag.
|
||||
*
|
||||
* @param info Current program information.
|
||||
*/
|
||||
void onCurrentProgramInfoChanged(in ProgramInfo info);
|
||||
|
||||
/**
|
||||
* A delta update of the program list, called whenever there's a change in
|
||||
* the list.
|
||||
*
|
||||
* If there are frequent changes, HAL implementation must throttle the rate
|
||||
* of the updates.
|
||||
*
|
||||
* There is a hard limit on binder transaction buffer, and the list must
|
||||
* not exceed it. For large lists, HAL implementation must split them to
|
||||
* multiple chunks, no larger than 500kiB each, and call this program list
|
||||
* update callback method separately.
|
||||
*
|
||||
* @param chunk A chunk of the program list update.
|
||||
*/
|
||||
void onProgramListUpdated(in ProgramListChunk chunk);
|
||||
|
||||
/**
|
||||
* Method called by the HAL when the antenna gets connected or disconnected.
|
||||
*
|
||||
* For broadcast radio service, client must assume the antenna is connected.
|
||||
* If it's not, then antennaStateChange must be called within
|
||||
* {@link IBroadcastRadio#ANTENNA_STATE_CHANGE_TIMEOUT_MS} to indicate that.
|
||||
*
|
||||
* @param connected {@code true} if the antenna is now connected, {@code false}
|
||||
* otherwise.
|
||||
*/
|
||||
void onAntennaStateChange(in boolean connected);
|
||||
|
||||
/**
|
||||
* Generic callback for passing updates to config flags.
|
||||
*
|
||||
* It's up to the HAL implementation if and how to implement this callback,
|
||||
* as long as it obeys the prefix rule. However, setConfigFlag must not
|
||||
* trigger this callback, while an internal event can change config flag
|
||||
* asynchronously at the HAL layer.
|
||||
*
|
||||
* @param flag Flag that has changed.
|
||||
* @param value The new value of the given flag.
|
||||
*/
|
||||
void onConfigFlagUpdated(in ConfigFlag flag, in boolean value);
|
||||
|
||||
/**
|
||||
* Generic callback for passing updates to vendor-specific parameter values.
|
||||
* The framework does not interpret the parameters, they are passed
|
||||
* in an opaque manner between a vendor application and HAL.
|
||||
*
|
||||
* It's up to the HAL implementation if and how to implement this callback,
|
||||
* as long as it obeys the prefix rule. In particular, only selected keys
|
||||
* may be notified this way. However, setParameters must not trigger
|
||||
* this callback, while an internal event can change parameters
|
||||
* asynchronously at the HAL layer.
|
||||
*
|
||||
* @param parameters Vendor-specific key-value pairs,
|
||||
* opaque to Android framework.
|
||||
*/
|
||||
void onParametersUpdated(in VendorKeyValue[] parameters);
|
||||
}
|
|
@ -0,0 +1,163 @@
|
|||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package android.hardware.broadcastradio;
|
||||
|
||||
/**
|
||||
* Type of program identifier component.
|
||||
*
|
||||
* Each identifier type corresponds to exactly one radio technology,
|
||||
* i.e. DAB_ENSEMBLE is specifically for DAB.
|
||||
*
|
||||
* VENDOR identifier types must be opaque to the framework.
|
||||
*
|
||||
* The value format for each (but VENDOR_*) identifier is strictly defined
|
||||
* to maintain interoperability between devices made by different vendors.
|
||||
*
|
||||
* All other values are reserved for future use.
|
||||
* Values not matching any enumerated constant must be ignored.
|
||||
*/
|
||||
@VintfStability
|
||||
@Backing(type="int")
|
||||
@JavaDerive(equals=true, toString=true)
|
||||
enum IdentifierType {
|
||||
/**
|
||||
* Primary/secondary identifier for vendor-specific radio technology.
|
||||
* The value format is determined by a vendor.
|
||||
*
|
||||
* The vendor identifiers have limited serialization capabilities - see
|
||||
* ProgramSelector description.
|
||||
*/
|
||||
VENDOR_START = 1000,
|
||||
|
||||
/**
|
||||
* See VENDOR_START
|
||||
*/
|
||||
VENDOR_END = 1999,
|
||||
|
||||
/**
|
||||
* Undefined identifier type.
|
||||
*/
|
||||
INVALID = 0,
|
||||
|
||||
/**
|
||||
* Primary identifier for analogue (without RDS) AM/FM stations:
|
||||
* frequency in kHz.
|
||||
*
|
||||
* This identifier also contains band information:
|
||||
* - <500kHz: AM LW;
|
||||
* - 500kHz - 1705kHz: AM MW;
|
||||
* - 1.71MHz - 30MHz: AM SW;
|
||||
* - >60MHz: FM.
|
||||
*/
|
||||
AMFM_FREQUENCY_KHZ,
|
||||
|
||||
/**
|
||||
* 16bit primary identifier for FM RDS station.
|
||||
*/
|
||||
RDS_PI,
|
||||
|
||||
/**
|
||||
* 64bit compound primary identifier for HD Radio.
|
||||
*
|
||||
* Consists of (from the LSB):
|
||||
* - 32bit: Station ID number;
|
||||
* - 4bit: HD Radio subchannel;
|
||||
* - 18bit: AMFM_FREQUENCY_KHZ.
|
||||
*
|
||||
* While station ID number should be unique globally, it sometimes get
|
||||
* abused by broadcasters (i.e. not being set at all). To ensure local
|
||||
* uniqueness, AMFM_FREQUENCY_KHZ was added here. Global uniqueness is
|
||||
* a best-effort - see HD_STATION_NAME.
|
||||
*
|
||||
* HD Radio subchannel is a value in range 0-7.
|
||||
* This index is 0-based (where 0 is MPS and 1..7 are SPS),
|
||||
* as opposed to HD Radio standard (where it's 1-based).
|
||||
*
|
||||
* The remaining bits should be set to zeros when writing on the chip side
|
||||
* and ignored when read.
|
||||
*/
|
||||
|
||||
HD_STATION_ID_EXT,
|
||||
|
||||
/**
|
||||
* 64bit additional identifier for HD Radio.
|
||||
*
|
||||
* Due to Station ID abuse, some HD_STATION_ID_EXT identifiers may be not
|
||||
* globally unique. To provide a best-effort solution, a short version of
|
||||
* station name may be carried as additional identifier and may be used
|
||||
* by the tuner hardware to double-check tuning.
|
||||
*
|
||||
* The name is limited to the first 8 A-Z0-9 characters (lowercase letters
|
||||
* must be converted to uppercase). Encoded in little-endian ASCII:
|
||||
* the first character of the name is the LSB.
|
||||
*
|
||||
* For example: "Abc" is encoded as 0x434241.
|
||||
*/
|
||||
HD_STATION_NAME,
|
||||
|
||||
/**
|
||||
* 28bit compound primary identifier for Digital Audio Broadcasting.
|
||||
*
|
||||
* Consists of (from the LSB):
|
||||
* - 16bit: SId;
|
||||
* - 8bit: ECC code;
|
||||
* - 4bit: SCIdS.
|
||||
*
|
||||
* SCIdS (Service Component Identifier within the Service) value
|
||||
* of 0 represents the main service, while 1 and above represents
|
||||
* secondary services.
|
||||
*
|
||||
* The remaining bits should be set to zeros when writing on the chip side
|
||||
* and ignored when read.
|
||||
*/
|
||||
DAB_SID_EXT,
|
||||
|
||||
/**
|
||||
* 16bit
|
||||
*/
|
||||
DAB_ENSEMBLE,
|
||||
|
||||
/**
|
||||
* 12bit
|
||||
*/
|
||||
DAB_SCID,
|
||||
|
||||
/**
|
||||
* kHz (see AMFM_FREQUENCY_KHZ)
|
||||
*/
|
||||
DAB_FREQUENCY_KHZ,
|
||||
|
||||
/**
|
||||
* 24bit primary identifier for Digital Radio Mondiale.
|
||||
*/
|
||||
DRMO_SERVICE_ID,
|
||||
|
||||
/**
|
||||
* kHz (see AMFM_FREQUENCY_KHZ)
|
||||
*/
|
||||
DRMO_FREQUENCY_KHZ,
|
||||
|
||||
/**
|
||||
* 32bit primary identifier for SiriusXM Satellite Radio.
|
||||
*/
|
||||
SXM_SERVICE_ID = DRMO_FREQUENCY_KHZ + 2,
|
||||
|
||||
/**
|
||||
* 0-999 range
|
||||
*/
|
||||
SXM_CHANNEL,
|
||||
}
|
|
@ -0,0 +1,115 @@
|
|||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package android.hardware.broadcastradio;
|
||||
|
||||
/**
|
||||
* An element of metadata array.
|
||||
*/
|
||||
@VintfStability
|
||||
@JavaDerive(equals=true, toString=true)
|
||||
union Metadata {
|
||||
/**
|
||||
* RDS PS (string)
|
||||
*/
|
||||
String rdsPs;
|
||||
|
||||
/**
|
||||
* RDS PTY (uint8_t)
|
||||
*/
|
||||
int rdsPty;
|
||||
|
||||
/**
|
||||
* RBDS PTY (uint8_t)
|
||||
*/
|
||||
int rbdsPty;
|
||||
|
||||
/**
|
||||
* RDS RT (string)
|
||||
*/
|
||||
String rdsRt;
|
||||
|
||||
/**
|
||||
* Song title (string)
|
||||
*/
|
||||
String songTitle;
|
||||
|
||||
/**
|
||||
* Artist name (string)
|
||||
*/
|
||||
String songArtist;
|
||||
|
||||
/**
|
||||
* Album name (string)
|
||||
*/
|
||||
String songAlbum;
|
||||
|
||||
/**
|
||||
* Station icon (uint32_t, see {@link IBroadcastRadio#getImage})
|
||||
*/
|
||||
int stationIcon;
|
||||
|
||||
/**
|
||||
* Album art (uint32_t, see {@link IBroadcastRadio#getImage})
|
||||
*/
|
||||
int albumArt;
|
||||
|
||||
/**
|
||||
* Station name.
|
||||
*
|
||||
* This is a generic field to cover any radio technology.
|
||||
*
|
||||
* If the PROGRAM_NAME has the same content as DAB_*_NAME or RDS_PS,
|
||||
* it may not be present, to preserve space - framework must repopulate
|
||||
* it on the client side.
|
||||
*/
|
||||
String programName;
|
||||
|
||||
/**
|
||||
* DAB ensemble name (string)
|
||||
*/
|
||||
String dabEnsembleName;
|
||||
|
||||
/**
|
||||
* DAB ensemble name abbreviated (string).
|
||||
*
|
||||
* The string must be up to 8 characters long.
|
||||
*
|
||||
* If the short variant is present, the long (DAB_ENSEMBLE_NAME) one must be
|
||||
* present as well.
|
||||
*/
|
||||
String dabEnsembleNameShort;
|
||||
|
||||
/**
|
||||
* DAB service name (string)
|
||||
*/
|
||||
String dabServiceName;
|
||||
|
||||
/**
|
||||
* DAB service name abbreviated (see DAB_ENSEMBLE_NAME_SHORT) (string)
|
||||
*/
|
||||
String dabServiceNameShort;
|
||||
|
||||
/**
|
||||
* DAB component name (string)
|
||||
*/
|
||||
String dabComponentName;
|
||||
|
||||
/**
|
||||
* DAB component name abbreviated (see DAB_ENSEMBLE_NAME_SHORT) (string)
|
||||
*/
|
||||
String dabComponentNameShort;
|
||||
}
|
|
@ -0,0 +1,70 @@
|
|||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package android.hardware.broadcastradio;
|
||||
|
||||
import android.hardware.broadcastradio.IdentifierType;
|
||||
import android.hardware.broadcastradio.ProgramIdentifier;
|
||||
|
||||
/**
|
||||
* Large-grain filter to the program list.
|
||||
*
|
||||
* This is meant to reduce binder transaction bandwidth, not for fine-grained
|
||||
* filtering user might expect.
|
||||
*
|
||||
* The filter is designed as conjunctive normal form: the entry that passes the
|
||||
* filter must satisfy all the clauses (members of this struct). Vector clauses
|
||||
* are disjunctions of literals. In other words, there is AND between each
|
||||
* high-level group and OR inside it.
|
||||
*/
|
||||
@VintfStability
|
||||
@JavaDerive(equals=true, toString=true)
|
||||
parcelable ProgramFilter {
|
||||
/**
|
||||
* List of identifier types that are filtered by the filter.
|
||||
*
|
||||
* If the program list entry contains at least one identifier of the type
|
||||
* listed, it satisfies this condition.
|
||||
*
|
||||
* Empty list means no filtering on identifier type.
|
||||
*/
|
||||
IdentifierType[] identifierTypes;
|
||||
|
||||
/**
|
||||
* List of identifiers that are filtered by the filter.
|
||||
*
|
||||
* If the program list entry contains at least one listed identifier,
|
||||
* it satisfies this condition.
|
||||
*
|
||||
* Empty list means no filtering on identifier.
|
||||
*/
|
||||
ProgramIdentifier[] identifiers;
|
||||
|
||||
/**
|
||||
* Includes non-tunable entries that define tree structure on the
|
||||
* program list (i.e. DAB ensembles).
|
||||
*/
|
||||
boolean includeCategories;
|
||||
|
||||
/**
|
||||
* Disables updates on entry modifications.
|
||||
*
|
||||
* If {@code true}, 'modified' vector of {@link ProgramListChunk} must contain
|
||||
* list additions only. Once the program is added to the list, it's not
|
||||
* updated anymore.
|
||||
*/
|
||||
boolean excludeModifications;
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package android.hardware.broadcastradio;
|
||||
|
||||
import android.hardware.broadcastradio.IdentifierType;
|
||||
|
||||
/**
|
||||
* A single program identifier component, i.e. frequency or channel ID.
|
||||
*/
|
||||
@VintfStability
|
||||
@JavaDerive(equals=true, toString=true)
|
||||
parcelable ProgramIdentifier {
|
||||
/**
|
||||
* Maps to IdentifierType enum.
|
||||
*/
|
||||
IdentifierType type = IdentifierType.INVALID;
|
||||
|
||||
/**
|
||||
* The uint64_t value field holds the value in format described in comments
|
||||
* for IdentifierType enum.
|
||||
*/
|
||||
long value;
|
||||
}
|
|
@ -0,0 +1,173 @@
|
|||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package android.hardware.broadcastradio;
|
||||
|
||||
import android.hardware.broadcastradio.Metadata;
|
||||
import android.hardware.broadcastradio.ProgramIdentifier;
|
||||
import android.hardware.broadcastradio.ProgramSelector;
|
||||
import android.hardware.broadcastradio.VendorKeyValue;
|
||||
|
||||
/**
|
||||
* Program (channel, station) information.
|
||||
*
|
||||
* Carries both user-visible information (like station name) and technical
|
||||
* details (tuning selector).
|
||||
*/
|
||||
@VintfStability
|
||||
@JavaDerive(equals=true, toString=true)
|
||||
parcelable ProgramInfo {
|
||||
/**
|
||||
* Set when the program is currently playing live stream.
|
||||
* This may result in a slightly altered reception parameters,
|
||||
* usually targeted at reduced latency.
|
||||
*/
|
||||
const int FLAG_LIVE = 1 << 0;
|
||||
|
||||
/**
|
||||
* Radio stream is not playing, ie. due to bad reception conditions or
|
||||
* buffering. In this state volume knob MAY be disabled to prevent user
|
||||
* increasing volume too much.
|
||||
*/
|
||||
const int FLAG_MUTED = 1 << 1;
|
||||
|
||||
/**
|
||||
* Station broadcasts traffic information regularly,
|
||||
* but not necessarily right now.
|
||||
*/
|
||||
const int FLAG_TRAFFIC_PROGRAM = 1 << 2;
|
||||
|
||||
/**
|
||||
* Station is broadcasting traffic information at the very moment.
|
||||
*/
|
||||
const int FLAG_TRAFFIC_ANNOUNCEMENT = 1 << 3;
|
||||
|
||||
/**
|
||||
* Station can be tuned to (not playing static).
|
||||
*
|
||||
* It's the same condition that would stop a seek operation
|
||||
* (i.e. {@link IBroadcastRadio#seek}).
|
||||
*
|
||||
* By definition, this flag must be set for all items on the program list.
|
||||
*/
|
||||
const int FLAG_TUNABLE = 1 << 4;
|
||||
|
||||
/**
|
||||
* Audio stream is MONO if this bit is not set.
|
||||
*/
|
||||
const int FLAG_STEREO = 1 << 5;
|
||||
|
||||
/**
|
||||
* An identifier used to point at the program (primarily to tune to it).
|
||||
*
|
||||
* This field is required - its type field must not be set to
|
||||
* {@link IdentifierType#INVALID}.
|
||||
*/
|
||||
ProgramSelector selector;
|
||||
|
||||
/**
|
||||
* Identifier currently used for program selection.
|
||||
*
|
||||
* It allows to determine which technology is currently used for reception.
|
||||
*
|
||||
* Some program selectors contain tuning information for different radio
|
||||
* technologies (i.e. FM RDS and DAB). For example, user may tune using
|
||||
* a ProgramSelector with RDS_PI primary identifier, but the tuner hardware
|
||||
* may choose to use DAB technology to make actual tuning. This identifier
|
||||
* must reflect that.
|
||||
*
|
||||
* This field is required for currently tuned program only.
|
||||
* For all other items on the program list, its type field must be
|
||||
* initialized to {@link IdentifierType#INVALID}.
|
||||
*
|
||||
* Only primary identifiers for a given radio technology are valid:
|
||||
* - AMFM_FREQUENCY_KHZ for analog AM/FM;
|
||||
* - RDS_PI for FM RDS;
|
||||
* - HD_STATION_ID_EXT;
|
||||
* - DAB_SID_EXT;
|
||||
* - DRMO_SERVICE_ID;
|
||||
* - SXM_SERVICE_ID;
|
||||
* - VENDOR_*;
|
||||
* - more might come in next minor versions of this HAL.
|
||||
*/
|
||||
ProgramIdentifier logicallyTunedTo;
|
||||
|
||||
/**
|
||||
* Identifier currently used by hardware to physically tune to a channel.
|
||||
*
|
||||
* Some radio technologies broadcast the same program on multiple channels,
|
||||
* i.e. with RDS AF the same program may be broadcasted on multiple
|
||||
* alternative frequencies; the same DAB program may be broadcast on
|
||||
* multiple ensembles. This identifier points to the channel to which the
|
||||
* radio hardware is physically tuned to.
|
||||
*
|
||||
* This field is required for currently tuned program only.
|
||||
* For all other items on the program list, its type field must be
|
||||
* initialized to {@link IdentifierType#INVALID}.
|
||||
*
|
||||
* Only physical identifiers are valid:
|
||||
* - AMFM_FREQUENCY_KHZ;
|
||||
* - DAB_ENSEMBLE;
|
||||
* - DRMO_FREQUENCY_KHZ;
|
||||
* - SXM_CHANNEL;
|
||||
* - VENDOR_*;
|
||||
* - more might come in next minor versions of this HAL.
|
||||
*/
|
||||
ProgramIdentifier physicallyTunedTo;
|
||||
|
||||
/**
|
||||
* Primary identifiers of related contents.
|
||||
*
|
||||
* Some radio technologies provide pointers to other programs that carry
|
||||
* related content (i.e. DAB soft-links). This field is a list of pointers
|
||||
* to other programs on the program list.
|
||||
*
|
||||
* This is not a list of programs that carry the same content (i.e.
|
||||
* DAB hard-links, RDS AF). Switching to programs from this list usually
|
||||
* require user action.
|
||||
*
|
||||
* Please note, that these identifiers do not have to exist on the program
|
||||
* list - i.e. DAB tuner may provide information on FM RDS alternatives
|
||||
* despite not supporting FM RDS. If the system has multiple tuners, another
|
||||
* one may have it on its list.
|
||||
*
|
||||
* This field is optional.
|
||||
*/
|
||||
@nullable ProgramIdentifier[] relatedContent;
|
||||
|
||||
/**
|
||||
* Program flags.
|
||||
*/
|
||||
int infoFlags;
|
||||
|
||||
/**
|
||||
* Signal quality measured in 0% to 100% range to be shown in the UI.
|
||||
*/
|
||||
int signalQuality;
|
||||
|
||||
/**
|
||||
* Program metadata (station name, PTY, song title).
|
||||
*/
|
||||
Metadata[] metadata;
|
||||
|
||||
/**
|
||||
* Vendor-specific information.
|
||||
*
|
||||
* It may be used for extra features, not supported by the platform,
|
||||
* for example: paid-service=true; bitrate=320kbps.
|
||||
*/
|
||||
VendorKeyValue[] vendorInfo;
|
||||
}
|
|
@ -0,0 +1,73 @@
|
|||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package android.hardware.broadcastradio;
|
||||
|
||||
import android.hardware.broadcastradio.ProgramIdentifier;
|
||||
import android.hardware.broadcastradio.ProgramInfo;
|
||||
|
||||
/**
|
||||
* An update packet of the program list.
|
||||
*
|
||||
* The order of entries in the arrays is unspecified.
|
||||
*/
|
||||
@VintfStability
|
||||
@JavaDerive(equals=true, toString=true)
|
||||
parcelable ProgramListChunk {
|
||||
/**
|
||||
* Treats all previously added entries as removed.
|
||||
*
|
||||
* This is meant to save binder transaction bandwidth on 'removed' array
|
||||
* and provide a clear empty state.
|
||||
*
|
||||
* If set, 'removed' array must be null.
|
||||
*
|
||||
* The client may wait with taking action on this until it received the
|
||||
* chunk with complete flag set (to avoid part of stations temporarily
|
||||
* disappearing from the list).
|
||||
*/
|
||||
boolean purge;
|
||||
|
||||
/**
|
||||
* If false, it means there are still programs not transmitted,
|
||||
* due for transmission in following updates.
|
||||
*
|
||||
* Used by UIs that wait for complete list instead of displaying
|
||||
* programs while scanning.
|
||||
*
|
||||
* After the whole channel range was scanned and all discovered programs
|
||||
* were transmitted, the last chunk must have set this flag to {@code true}.
|
||||
* This must happen within {@link IBroadcastRadio#LIST_COMPLETE_TIMEOUT_MS}
|
||||
* from the startProgramListUpdates call. If it doesn't, client may assume
|
||||
* the tuner came into a bad state and display error message.
|
||||
*/
|
||||
boolean complete;
|
||||
|
||||
/**
|
||||
* Added or modified program list entries.
|
||||
*
|
||||
* Two entries with the same primaryId (ProgramSelector member)
|
||||
* are considered the same.
|
||||
*/
|
||||
ProgramInfo[] modified;
|
||||
|
||||
/**
|
||||
* Removed program list entries.
|
||||
*
|
||||
* Contains primaryId (ProgramSelector member) of a program to remove.
|
||||
*/
|
||||
@nullable ProgramIdentifier[] removed;
|
||||
}
|
|
@ -0,0 +1,74 @@
|
|||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package android.hardware.broadcastradio;
|
||||
|
||||
import android.hardware.broadcastradio.ProgramIdentifier;
|
||||
|
||||
/**
|
||||
* A set of identifiers necessary to tune to a given station.
|
||||
*
|
||||
* This can hold a combination of various identifiers, like:
|
||||
* - AM/FM frequency,
|
||||
* - HD Radio subchannel,
|
||||
* - DAB service ID.
|
||||
*
|
||||
* The type of radio technology is determined by the primary identifier - if the
|
||||
* primary identifier is for DAB, the program is DAB. However, a program of a
|
||||
* specific radio technology may have additional secondary identifiers for other
|
||||
* technologies, i.e. a satellite program may have FM fallback frequency,
|
||||
* if a station broadcasts both via satellite and FM.
|
||||
*
|
||||
* The identifiers from VENDOR_START..VENDOR_END range have limited
|
||||
* serialization capabilities: they are serialized locally, but ignored by the
|
||||
* cloud services. If a program has primary id from vendor range, it's not
|
||||
* synchronized with other devices at all.
|
||||
*/
|
||||
@VintfStability
|
||||
@JavaDerive(equals=true, toString=true)
|
||||
parcelable ProgramSelector {
|
||||
/**
|
||||
* Primary program identifier.
|
||||
*
|
||||
* This identifier uniquely identifies a station and can be used for
|
||||
* equality check.
|
||||
*
|
||||
* It can hold only a subset of identifier types, one per each
|
||||
* radio technology:
|
||||
* - analogue AM/FM: AMFM_FREQUENCY_KHZ;
|
||||
* - FM RDS: RDS_PI;
|
||||
* - HD Radio: HD_STATION_ID_EXT;
|
||||
* - DAB: DAB_SID_EXT;
|
||||
* - Digital Radio Mondiale: DRMO_SERVICE_ID;
|
||||
* - SiriusXM: SXM_SERVICE_ID;
|
||||
* - vendor-specific: VENDOR_START..VENDOR_END.
|
||||
*/
|
||||
ProgramIdentifier primaryId;
|
||||
|
||||
/**
|
||||
* Secondary program identifiers.
|
||||
*
|
||||
* These identifiers are supplementary and can speed up tuning process,
|
||||
* but the primary ID must be sufficient (i.e. RDS PI is enough to select
|
||||
* a station from the list after a full band scan).
|
||||
*
|
||||
* Two selectors with different secondary IDs, but the same primary ID are
|
||||
* considered equal. In particular, secondary IDs array may get updated for
|
||||
* an entry on the program list (ie. when a better frequency for a given
|
||||
* station is found).
|
||||
*/
|
||||
ProgramIdentifier[] secondaryIds;
|
||||
}
|
|
@ -0,0 +1,76 @@
|
|||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package android.hardware.broadcastradio;
|
||||
|
||||
import android.hardware.broadcastradio.IdentifierType;
|
||||
import android.hardware.broadcastradio.VendorKeyValue;
|
||||
|
||||
/**
|
||||
* Properties of a given broadcast radio module.
|
||||
*/
|
||||
@VintfStability
|
||||
@JavaDerive(equals=true, toString=true)
|
||||
parcelable Properties {
|
||||
/**
|
||||
* A company name who made the radio module. Must be a valid, registered
|
||||
* name of the company itself.
|
||||
*
|
||||
* It must be opaque to the Android framework.
|
||||
*/
|
||||
String maker;
|
||||
|
||||
/**
|
||||
* A product name. Must be unique within the company.
|
||||
*
|
||||
* It must be opaque to the Android framework.
|
||||
*/
|
||||
String product;
|
||||
|
||||
/**
|
||||
* Version of the hardware module.
|
||||
*
|
||||
* It must be opaque to the Android framework.
|
||||
*/
|
||||
String version;
|
||||
|
||||
/**
|
||||
* Hardware serial number (for subscription services).
|
||||
*
|
||||
* It must be opaque to the Android framework.
|
||||
*/
|
||||
String serial;
|
||||
|
||||
/**
|
||||
* A list of supported {@link IdentifierType} values.
|
||||
*
|
||||
* If an identifier is supported by radio module, it means it can use it for
|
||||
* tuning to ProgramSelector with either primary or secondary Identifier of
|
||||
* a given type.
|
||||
*
|
||||
* Support for VENDOR identifier type does not guarantee compatibility, as
|
||||
* other module properties (implementor, product, version) must be checked.
|
||||
*/
|
||||
IdentifierType[] supportedIdentifierTypes;
|
||||
|
||||
/**
|
||||
* Vendor-specific information.
|
||||
*
|
||||
* It may be used for extra features, not supported by the platform,
|
||||
* for example: com.me.preset-slots=6; com.me.ultra-hd-capable={@code false}.
|
||||
*/
|
||||
VendorKeyValue[] vendorInfo;
|
||||
}
|
|
@ -0,0 +1,61 @@
|
|||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package android.hardware.broadcastradio;
|
||||
|
||||
/**
|
||||
* Result for methods of BroadcastRadio AIDL HAL interfaces.
|
||||
*/
|
||||
@VintfStability
|
||||
@Backing(type="int")
|
||||
enum Result {
|
||||
/**
|
||||
* Methods run without error.
|
||||
*/
|
||||
OK,
|
||||
|
||||
/**
|
||||
* Internal error in HAL.
|
||||
*/
|
||||
INTERNAL_ERROR,
|
||||
|
||||
/**
|
||||
* Error used when the input argument for the method is invalid.
|
||||
*/
|
||||
INVALID_ARGUMENTS,
|
||||
|
||||
/**
|
||||
* Error used when the service is of invalid state (i.e. callback
|
||||
* is not registered for IBroadcastRadio).
|
||||
*/
|
||||
INVALID_STATE,
|
||||
|
||||
/**
|
||||
* Error used when an operation is not supported.
|
||||
*/
|
||||
NOT_SUPPORTED,
|
||||
|
||||
/**
|
||||
* Error used when a tune, seek, step or operation is not completed
|
||||
* within {@link IBroadcastRadio#LIST_COMPLETE_TIMEOUT_MS}.
|
||||
*/
|
||||
TIMEOUT,
|
||||
|
||||
/**
|
||||
* Error that does not follow into the error categories above.
|
||||
*/
|
||||
UNKNOWN_ERROR,
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package android.hardware.broadcastradio;
|
||||
|
||||
/**
|
||||
* A key-value pair for vendor-specific information to be passed as-is through
|
||||
* Android framework to the front-end application.
|
||||
*/
|
||||
@VintfStability
|
||||
@JavaDerive(equals=true, toString=true)
|
||||
parcelable VendorKeyValue {
|
||||
/**
|
||||
* Key must start with unique vendor Java-style namespace,
|
||||
* eg. 'com.somecompany.parameter1'.
|
||||
*/
|
||||
String key;
|
||||
|
||||
/**
|
||||
* Value must be passed through the framework without any changes.
|
||||
* Format of this string can vary across vendors.
|
||||
*/
|
||||
String value;
|
||||
}
|
|
@ -152,17 +152,8 @@
|
|||
<instance>default</instance>
|
||||
</interface>
|
||||
</hal>
|
||||
<hal format="hidl" optional="true">
|
||||
<hal format="aidl" optional="true">
|
||||
<name>android.hardware.broadcastradio</name>
|
||||
<version>1.0-1</version>
|
||||
<interface>
|
||||
<name>IBroadcastRadioFactory</name>
|
||||
<instance>default</instance>
|
||||
</interface>
|
||||
</hal>
|
||||
<hal format="hidl" optional="true">
|
||||
<name>android.hardware.broadcastradio</name>
|
||||
<version>2.0</version>
|
||||
<interface>
|
||||
<name>IBroadcastRadio</name>
|
||||
<regex-instance>.*</regex-instance>
|
||||
|
|
Loading…
Reference in a new issue