Merge "Revert "Revert "Revert "Protect against null strings in hal wrapper implementation.""""
diff --git a/CleanSpec.mk b/CleanSpec.mk
index 962f6cd..212c8b1 100644
--- a/CleanSpec.mk
+++ b/CleanSpec.mk
@@ -48,3 +48,7 @@
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/lib/hw/android.hardware*)
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/lib64/hw/android.hardware*)
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/etc/init/android.hardware*)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/bin/hw/android.hardware.bluetooth*)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/lib/hw/android.hardware.bluetooth*)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/lib64/hw/android.hardware.bluetooth*)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/etc/init/android.hardware.bluetooth*)
diff --git a/audio/2.0/default/Android.mk b/audio/2.0/default/Android.mk
index 9cb56c7..93f7ad0 100644
--- a/audio/2.0/default/Android.mk
+++ b/audio/2.0/default/Android.mk
@@ -37,7 +37,6 @@
libhardware \
libhidlbase \
libhidltransport \
- libhwbinder \
liblog \
libutils \
android.hardware.audio@2.0 \
@@ -64,14 +63,14 @@
libhidlbase \
libhidltransport \
liblog \
- libhwbinder \
libutils \
libhardware \
android.hardware.audio@2.0 \
android.hardware.audio.common@2.0 \
android.hardware.audio.effect@2.0 \
android.hardware.soundtrigger@2.0 \
- android.hardware.broadcastradio@1.0
+ android.hardware.broadcastradio@1.0 \
+ android.hardware.broadcastradio@1.1
ifeq ($(strip $(AUDIOSERVER_MULTILIB)),)
LOCAL_MULTILIB := 32
@@ -79,4 +78,8 @@
LOCAL_MULTILIB := $(AUDIOSERVER_MULTILIB)
endif
+ifeq ($(TARGET_USES_BCRADIO_FUTURE_FEATURES),true)
+LOCAL_CFLAGS += -DTARGET_USES_BCRADIO_FUTURE_FEATURES
+endif
+
include $(BUILD_EXECUTABLE)
diff --git a/audio/2.0/default/StreamOut.cpp b/audio/2.0/default/StreamOut.cpp
index 6ccdbcd..cdc8ded 100644
--- a/audio/2.0/default/StreamOut.cpp
+++ b/audio/2.0/default/StreamOut.cpp
@@ -79,6 +79,10 @@
ssize_t writeResult = mStream->write(mStream, &mBuffer[0], availToRead);
if (writeResult >= 0) {
mStatus.reply.written = writeResult;
+ // Diagnostics of the cause of b/35813113.
+ ALOGE_IF(writeResult > availToRead,
+ "legacy hal reports more bytes written than asked for: %lld > %lld",
+ (long long)writeResult, (long long)availToRead);
} else {
mStatus.retval = Stream::analyzeStatus("write", writeResult);
}
diff --git a/audio/2.0/default/service.cpp b/audio/2.0/default/service.cpp
index 8b608c8..f3a858a 100644
--- a/audio/2.0/default/service.cpp
+++ b/audio/2.0/default/service.cpp
@@ -22,6 +22,7 @@
#include <android/hardware/audio/effect/2.0/IEffectsFactory.h>
#include <android/hardware/soundtrigger/2.0/ISoundTriggerHw.h>
#include <android/hardware/broadcastradio/1.0/IBroadcastRadioFactory.h>
+#include <android/hardware/broadcastradio/1.1/IBroadcastRadioFactory.h>
using android::hardware::configureRpcThreadpool;
using android::hardware::joinRpcThreadpool;
@@ -31,21 +32,33 @@
using android::hardware::audio::V2_0::IDevicesFactory;
using android::hardware::soundtrigger::V2_0::ISoundTriggerHw;
using android::hardware::registerPassthroughServiceImplementation;
-using android::hardware::broadcastradio::V1_0::IBroadcastRadioFactory;
+namespace broadcastradio = android::hardware::broadcastradio;
+
+#ifdef TARGET_USES_BCRADIO_FUTURE_FEATURES
+static const bool useBroadcastRadioFutureFeatures = true;
+#else
+static const bool useBroadcastRadioFutureFeatures = false;
+#endif
using android::OK;
int main(int /* argc */, char* /* argv */ []) {
configureRpcThreadpool(16, true /*callerWillJoin*/);
android::status_t status;
- status = registerPassthroughServiceImplementation<IDevicesFactory>("audio_devices_factory");
+ status = registerPassthroughServiceImplementation<IDevicesFactory>();
LOG_ALWAYS_FATAL_IF(status != OK, "Error while registering audio service: %d", status);
- status = registerPassthroughServiceImplementation<IEffectsFactory>("audio_effects_factory");
+ status = registerPassthroughServiceImplementation<IEffectsFactory>();
LOG_ALWAYS_FATAL_IF(status != OK, "Error while registering audio effects service: %d", status);
// Soundtrigger and FM radio might be not present.
status = registerPassthroughServiceImplementation<ISoundTriggerHw>("sound_trigger.primary");
ALOGE_IF(status != OK, "Error while registering soundtrigger service: %d", status);
- status = registerPassthroughServiceImplementation<IBroadcastRadioFactory>("broadcastradio");
+ if (useBroadcastRadioFutureFeatures) {
+ status = registerPassthroughServiceImplementation<
+ broadcastradio::V1_1::IBroadcastRadioFactory>();
+ } else {
+ status = registerPassthroughServiceImplementation<
+ broadcastradio::V1_0::IBroadcastRadioFactory>();
+ }
ALOGE_IF(status != OK, "Error while registering fm radio service: %d", status);
joinRpcThreadpool();
return status;
diff --git a/audio/common/2.0/vts/types.vts b/audio/common/2.0/vts/types.vts
deleted file mode 100644
index d790573..0000000
--- a/audio/common/2.0/vts/types.vts
+++ /dev/null
@@ -1,1954 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 2.0
-component_name: "types"
-
-package: "android.hardware.audio.common"
-
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioHandleConsts"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "AUDIO_IO_HANDLE_NONE"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "AUDIO_MODULE_HANDLE_NONE"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "AUDIO_PORT_HANDLE_NONE"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "AUDIO_PATCH_HANDLE_NONE"
- scalar_value: {
- int32_t: 0
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::Uuid"
- type: TYPE_STRUCT
- struct_value: {
- name: "timeLow"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "timeMid"
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- struct_value: {
- name: "versionAndTimeHigh"
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- struct_value: {
- name: "variantAndClockSeqHigh"
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- struct_value: {
- name: "node"
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioStreamType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "DEFAULT"
- scalar_value: {
- int32_t: -1
- }
- enumerator: "MIN"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "VOICE_CALL"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "SYSTEM"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "RING"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "MUSIC"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "ALARM"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "NOTIFICATION"
- scalar_value: {
- int32_t: 5
- }
- enumerator: "BLUETOOTH_SCO"
- scalar_value: {
- int32_t: 6
- }
- enumerator: "ENFORCED_AUDIBLE"
- scalar_value: {
- int32_t: 7
- }
- enumerator: "DTMF"
- scalar_value: {
- int32_t: 8
- }
- enumerator: "TTS"
- scalar_value: {
- int32_t: 9
- }
- enumerator: "ACCESSIBILITY"
- scalar_value: {
- int32_t: 10
- }
- enumerator: "REROUTING"
- scalar_value: {
- int32_t: 11
- }
- enumerator: "PATCH"
- scalar_value: {
- int32_t: 12
- }
- enumerator: "PUBLIC_CNT"
- scalar_value: {
- int32_t: 11
- }
- enumerator: "FOR_POLICY_CNT"
- scalar_value: {
- int32_t: 12
- }
- enumerator: "CNT"
- scalar_value: {
- int32_t: 13
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioSource"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "DEFAULT"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "MIC"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "VOICE_UPLINK"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "VOICE_DOWNLINK"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "VOICE_CALL"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "CAMCORDER"
- scalar_value: {
- int32_t: 5
- }
- enumerator: "VOICE_RECOGNITION"
- scalar_value: {
- int32_t: 6
- }
- enumerator: "VOICE_COMMUNICATION"
- scalar_value: {
- int32_t: 7
- }
- enumerator: "REMOTE_SUBMIX"
- scalar_value: {
- int32_t: 8
- }
- enumerator: "UNPROCESSED"
- scalar_value: {
- int32_t: 9
- }
- enumerator: "CNT"
- scalar_value: {
- int32_t: 10
- }
- enumerator: "MAX"
- scalar_value: {
- int32_t: 9
- }
- enumerator: "FM_TUNER"
- scalar_value: {
- int32_t: 1998
- }
- enumerator: "HOTWORD"
- scalar_value: {
- int32_t: 1999
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioSessionConsts"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "OUTPUT_STAGE"
- scalar_value: {
- int32_t: -1
- }
- enumerator: "OUTPUT_MIX"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "ALLOCATE"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "NONE"
- scalar_value: {
- int32_t: 0
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioFormat"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "INVALID"
- scalar_value: {
- uint32_t: 4294967295
- }
- enumerator: "DEFAULT"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "PCM"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "MP3"
- scalar_value: {
- uint32_t: 16777216
- }
- enumerator: "AMR_NB"
- scalar_value: {
- uint32_t: 33554432
- }
- enumerator: "AMR_WB"
- scalar_value: {
- uint32_t: 50331648
- }
- enumerator: "AAC"
- scalar_value: {
- uint32_t: 67108864
- }
- enumerator: "HE_AAC_V1"
- scalar_value: {
- uint32_t: 83886080
- }
- enumerator: "HE_AAC_V2"
- scalar_value: {
- uint32_t: 100663296
- }
- enumerator: "VORBIS"
- scalar_value: {
- uint32_t: 117440512
- }
- enumerator: "OPUS"
- scalar_value: {
- uint32_t: 134217728
- }
- enumerator: "AC3"
- scalar_value: {
- uint32_t: 150994944
- }
- enumerator: "E_AC3"
- scalar_value: {
- uint32_t: 167772160
- }
- enumerator: "DTS"
- scalar_value: {
- uint32_t: 184549376
- }
- enumerator: "DTS_HD"
- scalar_value: {
- uint32_t: 201326592
- }
- enumerator: "IEC61937"
- scalar_value: {
- uint32_t: 218103808
- }
- enumerator: "DOLBY_TRUEHD"
- scalar_value: {
- uint32_t: 234881024
- }
- enumerator: "EVRC"
- scalar_value: {
- uint32_t: 268435456
- }
- enumerator: "EVRCB"
- scalar_value: {
- uint32_t: 285212672
- }
- enumerator: "EVRCWB"
- scalar_value: {
- uint32_t: 301989888
- }
- enumerator: "EVRCNW"
- scalar_value: {
- uint32_t: 318767104
- }
- enumerator: "AAC_ADIF"
- scalar_value: {
- uint32_t: 335544320
- }
- enumerator: "WMA"
- scalar_value: {
- uint32_t: 352321536
- }
- enumerator: "WMA_PRO"
- scalar_value: {
- uint32_t: 369098752
- }
- enumerator: "AMR_WB_PLUS"
- scalar_value: {
- uint32_t: 385875968
- }
- enumerator: "MP2"
- scalar_value: {
- uint32_t: 402653184
- }
- enumerator: "QCELP"
- scalar_value: {
- uint32_t: 419430400
- }
- enumerator: "DSD"
- scalar_value: {
- uint32_t: 436207616
- }
- enumerator: "FLAC"
- scalar_value: {
- uint32_t: 452984832
- }
- enumerator: "ALAC"
- scalar_value: {
- uint32_t: 469762048
- }
- enumerator: "APE"
- scalar_value: {
- uint32_t: 486539264
- }
- enumerator: "AAC_ADTS"
- scalar_value: {
- uint32_t: 503316480
- }
- enumerator: "SBC"
- scalar_value: {
- uint32_t: 520093696
- }
- enumerator: "APTX"
- scalar_value: {
- uint32_t: 536870912
- }
- enumerator: "APTX_HD"
- scalar_value: {
- uint32_t: 553648128
- }
- enumerator: "AC4"
- scalar_value: {
- uint32_t: 570425344
- }
- enumerator: "LDAC"
- scalar_value: {
- uint32_t: 587202560
- }
- enumerator: "MAIN_MASK"
- scalar_value: {
- uint32_t: 4278190080
- }
- enumerator: "SUB_MASK"
- scalar_value: {
- uint32_t: 16777215
- }
- enumerator: "PCM_SUB_16_BIT"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "PCM_SUB_8_BIT"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "PCM_SUB_32_BIT"
- scalar_value: {
- uint32_t: 3
- }
- enumerator: "PCM_SUB_8_24_BIT"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "PCM_SUB_FLOAT"
- scalar_value: {
- uint32_t: 5
- }
- enumerator: "PCM_SUB_24_BIT_PACKED"
- scalar_value: {
- uint32_t: 6
- }
- enumerator: "MP3_SUB_NONE"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "AMR_SUB_NONE"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "AAC_SUB_MAIN"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "AAC_SUB_LC"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "AAC_SUB_SSR"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "AAC_SUB_LTP"
- scalar_value: {
- uint32_t: 8
- }
- enumerator: "AAC_SUB_HE_V1"
- scalar_value: {
- uint32_t: 16
- }
- enumerator: "AAC_SUB_SCALABLE"
- scalar_value: {
- uint32_t: 32
- }
- enumerator: "AAC_SUB_ERLC"
- scalar_value: {
- uint32_t: 64
- }
- enumerator: "AAC_SUB_LD"
- scalar_value: {
- uint32_t: 128
- }
- enumerator: "AAC_SUB_HE_V2"
- scalar_value: {
- uint32_t: 256
- }
- enumerator: "AAC_SUB_ELD"
- scalar_value: {
- uint32_t: 512
- }
- enumerator: "VORBIS_SUB_NONE"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "PCM_16_BIT"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "PCM_8_BIT"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "PCM_32_BIT"
- scalar_value: {
- uint32_t: 3
- }
- enumerator: "PCM_8_24_BIT"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "PCM_FLOAT"
- scalar_value: {
- uint32_t: 5
- }
- enumerator: "PCM_24_BIT_PACKED"
- scalar_value: {
- uint32_t: 6
- }
- enumerator: "AAC_MAIN"
- scalar_value: {
- uint32_t: 67108865
- }
- enumerator: "AAC_LC"
- scalar_value: {
- uint32_t: 67108866
- }
- enumerator: "AAC_SSR"
- scalar_value: {
- uint32_t: 67108868
- }
- enumerator: "AAC_LTP"
- scalar_value: {
- uint32_t: 67108872
- }
- enumerator: "AAC_HE_V1"
- scalar_value: {
- uint32_t: 67108880
- }
- enumerator: "AAC_SCALABLE"
- scalar_value: {
- uint32_t: 67108896
- }
- enumerator: "AAC_ERLC"
- scalar_value: {
- uint32_t: 67108928
- }
- enumerator: "AAC_LD"
- scalar_value: {
- uint32_t: 67108992
- }
- enumerator: "AAC_HE_V2"
- scalar_value: {
- uint32_t: 67109120
- }
- enumerator: "AAC_ELD"
- scalar_value: {
- uint32_t: 67109376
- }
- enumerator: "AAC_ADTS_MAIN"
- scalar_value: {
- uint32_t: 503316481
- }
- enumerator: "AAC_ADTS_LC"
- scalar_value: {
- uint32_t: 503316482
- }
- enumerator: "AAC_ADTS_SSR"
- scalar_value: {
- uint32_t: 503316484
- }
- enumerator: "AAC_ADTS_LTP"
- scalar_value: {
- uint32_t: 503316488
- }
- enumerator: "AAC_ADTS_HE_V1"
- scalar_value: {
- uint32_t: 503316496
- }
- enumerator: "AAC_ADTS_SCALABLE"
- scalar_value: {
- uint32_t: 503316512
- }
- enumerator: "AAC_ADTS_ERLC"
- scalar_value: {
- uint32_t: 503316544
- }
- enumerator: "AAC_ADTS_LD"
- scalar_value: {
- uint32_t: 503316608
- }
- enumerator: "AAC_ADTS_HE_V2"
- scalar_value: {
- uint32_t: 503316736
- }
- enumerator: "AAC_ADTS_ELD"
- scalar_value: {
- uint32_t: 503316992
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::FixedChannelCount"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "FCC_2"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "FCC_8"
- scalar_value: {
- int32_t: 8
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioChannelMask"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "REPRESENTATION_POSITION"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "REPRESENTATION_INDEX"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "NONE"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "INVALID"
- scalar_value: {
- uint32_t: 3221225472
- }
- enumerator: "OUT_FRONT_LEFT"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "OUT_FRONT_RIGHT"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "OUT_FRONT_CENTER"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "OUT_LOW_FREQUENCY"
- scalar_value: {
- uint32_t: 8
- }
- enumerator: "OUT_BACK_LEFT"
- scalar_value: {
- uint32_t: 16
- }
- enumerator: "OUT_BACK_RIGHT"
- scalar_value: {
- uint32_t: 32
- }
- enumerator: "OUT_FRONT_LEFT_OF_CENTER"
- scalar_value: {
- uint32_t: 64
- }
- enumerator: "OUT_FRONT_RIGHT_OF_CENTER"
- scalar_value: {
- uint32_t: 128
- }
- enumerator: "OUT_BACK_CENTER"
- scalar_value: {
- uint32_t: 256
- }
- enumerator: "OUT_SIDE_LEFT"
- scalar_value: {
- uint32_t: 512
- }
- enumerator: "OUT_SIDE_RIGHT"
- scalar_value: {
- uint32_t: 1024
- }
- enumerator: "OUT_TOP_CENTER"
- scalar_value: {
- uint32_t: 2048
- }
- enumerator: "OUT_TOP_FRONT_LEFT"
- scalar_value: {
- uint32_t: 4096
- }
- enumerator: "OUT_TOP_FRONT_CENTER"
- scalar_value: {
- uint32_t: 8192
- }
- enumerator: "OUT_TOP_FRONT_RIGHT"
- scalar_value: {
- uint32_t: 16384
- }
- enumerator: "OUT_TOP_BACK_LEFT"
- scalar_value: {
- uint32_t: 32768
- }
- enumerator: "OUT_TOP_BACK_CENTER"
- scalar_value: {
- uint32_t: 65536
- }
- enumerator: "OUT_TOP_BACK_RIGHT"
- scalar_value: {
- uint32_t: 131072
- }
- enumerator: "OUT_MONO"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "OUT_STEREO"
- scalar_value: {
- uint32_t: 3
- }
- enumerator: "OUT_2POINT1"
- scalar_value: {
- uint32_t: 11
- }
- enumerator: "OUT_QUAD"
- scalar_value: {
- uint32_t: 51
- }
- enumerator: "OUT_QUAD_BACK"
- scalar_value: {
- uint32_t: 51
- }
- enumerator: "OUT_QUAD_SIDE"
- scalar_value: {
- uint32_t: 1539
- }
- enumerator: "OUT_SURROUND"
- scalar_value: {
- uint32_t: 263
- }
- enumerator: "OUT_PENTA"
- scalar_value: {
- uint32_t: 55
- }
- enumerator: "OUT_5POINT1"
- scalar_value: {
- uint32_t: 63
- }
- enumerator: "OUT_5POINT1_BACK"
- scalar_value: {
- uint32_t: 63
- }
- enumerator: "OUT_5POINT1_SIDE"
- scalar_value: {
- uint32_t: 1551
- }
- enumerator: "OUT_6POINT1"
- scalar_value: {
- uint32_t: 319
- }
- enumerator: "OUT_7POINT1"
- scalar_value: {
- uint32_t: 1599
- }
- enumerator: "OUT_ALL"
- scalar_value: {
- uint32_t: 262143
- }
- enumerator: "IN_LEFT"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "IN_RIGHT"
- scalar_value: {
- uint32_t: 8
- }
- enumerator: "IN_FRONT"
- scalar_value: {
- uint32_t: 16
- }
- enumerator: "IN_BACK"
- scalar_value: {
- uint32_t: 32
- }
- enumerator: "IN_LEFT_PROCESSED"
- scalar_value: {
- uint32_t: 64
- }
- enumerator: "IN_RIGHT_PROCESSED"
- scalar_value: {
- uint32_t: 128
- }
- enumerator: "IN_FRONT_PROCESSED"
- scalar_value: {
- uint32_t: 256
- }
- enumerator: "IN_BACK_PROCESSED"
- scalar_value: {
- uint32_t: 512
- }
- enumerator: "IN_PRESSURE"
- scalar_value: {
- uint32_t: 1024
- }
- enumerator: "IN_X_AXIS"
- scalar_value: {
- uint32_t: 2048
- }
- enumerator: "IN_Y_AXIS"
- scalar_value: {
- uint32_t: 4096
- }
- enumerator: "IN_Z_AXIS"
- scalar_value: {
- uint32_t: 8192
- }
- enumerator: "IN_VOICE_UPLINK"
- scalar_value: {
- uint32_t: 16384
- }
- enumerator: "IN_VOICE_DNLINK"
- scalar_value: {
- uint32_t: 32768
- }
- enumerator: "IN_MONO"
- scalar_value: {
- uint32_t: 16
- }
- enumerator: "IN_STEREO"
- scalar_value: {
- uint32_t: 12
- }
- enumerator: "IN_FRONT_BACK"
- scalar_value: {
- uint32_t: 48
- }
- enumerator: "IN_6"
- scalar_value: {
- uint32_t: 252
- }
- enumerator: "IN_VOICE_UPLINK_MONO"
- scalar_value: {
- uint32_t: 16400
- }
- enumerator: "IN_VOICE_DNLINK_MONO"
- scalar_value: {
- uint32_t: 32784
- }
- enumerator: "IN_VOICE_CALL_MONO"
- scalar_value: {
- uint32_t: 49168
- }
- enumerator: "IN_ALL"
- scalar_value: {
- uint32_t: 65532
- }
- enumerator: "COUNT_MAX"
- scalar_value: {
- uint32_t: 30
- }
- enumerator: "INDEX_HDR"
- scalar_value: {
- uint32_t: 2147483648
- }
- enumerator: "INDEX_MASK_1"
- scalar_value: {
- uint32_t: 2147483649
- }
- enumerator: "INDEX_MASK_2"
- scalar_value: {
- uint32_t: 2147483651
- }
- enumerator: "INDEX_MASK_3"
- scalar_value: {
- uint32_t: 2147483655
- }
- enumerator: "INDEX_MASK_4"
- scalar_value: {
- uint32_t: 2147483663
- }
- enumerator: "INDEX_MASK_5"
- scalar_value: {
- uint32_t: 2147483679
- }
- enumerator: "INDEX_MASK_6"
- scalar_value: {
- uint32_t: 2147483711
- }
- enumerator: "INDEX_MASK_7"
- scalar_value: {
- uint32_t: 2147483775
- }
- enumerator: "INDEX_MASK_8"
- scalar_value: {
- uint32_t: 2147483903
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioInterleave"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "LEFT"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "RIGHT"
- scalar_value: {
- int32_t: 1
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioMode"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "INVALID"
- scalar_value: {
- int32_t: -2
- }
- enumerator: "CURRENT"
- scalar_value: {
- int32_t: -1
- }
- enumerator: "NORMAL"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "RINGTONE"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "IN_CALL"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "IN_COMMUNICATION"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "CNT"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "MAX"
- scalar_value: {
- int32_t: 3
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioDevice"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "NONE"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "BIT_IN"
- scalar_value: {
- uint32_t: 2147483648
- }
- enumerator: "BIT_DEFAULT"
- scalar_value: {
- uint32_t: 1073741824
- }
- enumerator: "OUT_EARPIECE"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "OUT_SPEAKER"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "OUT_WIRED_HEADSET"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "OUT_WIRED_HEADPHONE"
- scalar_value: {
- uint32_t: 8
- }
- enumerator: "OUT_BLUETOOTH_SCO"
- scalar_value: {
- uint32_t: 16
- }
- enumerator: "OUT_BLUETOOTH_SCO_HEADSET"
- scalar_value: {
- uint32_t: 32
- }
- enumerator: "OUT_BLUETOOTH_SCO_CARKIT"
- scalar_value: {
- uint32_t: 64
- }
- enumerator: "OUT_BLUETOOTH_A2DP"
- scalar_value: {
- uint32_t: 128
- }
- enumerator: "OUT_BLUETOOTH_A2DP_HEADPHONES"
- scalar_value: {
- uint32_t: 256
- }
- enumerator: "OUT_BLUETOOTH_A2DP_SPEAKER"
- scalar_value: {
- uint32_t: 512
- }
- enumerator: "OUT_AUX_DIGITAL"
- scalar_value: {
- uint32_t: 1024
- }
- enumerator: "OUT_HDMI"
- scalar_value: {
- uint32_t: 1024
- }
- enumerator: "OUT_ANLG_DOCK_HEADSET"
- scalar_value: {
- uint32_t: 2048
- }
- enumerator: "OUT_DGTL_DOCK_HEADSET"
- scalar_value: {
- uint32_t: 4096
- }
- enumerator: "OUT_USB_ACCESSORY"
- scalar_value: {
- uint32_t: 8192
- }
- enumerator: "OUT_USB_DEVICE"
- scalar_value: {
- uint32_t: 16384
- }
- enumerator: "OUT_REMOTE_SUBMIX"
- scalar_value: {
- uint32_t: 32768
- }
- enumerator: "OUT_TELEPHONY_TX"
- scalar_value: {
- uint32_t: 65536
- }
- enumerator: "OUT_LINE"
- scalar_value: {
- uint32_t: 131072
- }
- enumerator: "OUT_HDMI_ARC"
- scalar_value: {
- uint32_t: 262144
- }
- enumerator: "OUT_SPDIF"
- scalar_value: {
- uint32_t: 524288
- }
- enumerator: "OUT_FM"
- scalar_value: {
- uint32_t: 1048576
- }
- enumerator: "OUT_AUX_LINE"
- scalar_value: {
- uint32_t: 2097152
- }
- enumerator: "OUT_SPEAKER_SAFE"
- scalar_value: {
- uint32_t: 4194304
- }
- enumerator: "OUT_IP"
- scalar_value: {
- uint32_t: 8388608
- }
- enumerator: "OUT_BUS"
- scalar_value: {
- uint32_t: 16777216
- }
- enumerator: "OUT_PROXY"
- scalar_value: {
- uint32_t: 33554432
- }
- enumerator: "OUT_DEFAULT"
- scalar_value: {
- uint32_t: 1073741824
- }
- enumerator: "OUT_ALL"
- scalar_value: {
- uint32_t: 1140850687
- }
- enumerator: "OUT_ALL_A2DP"
- scalar_value: {
- uint32_t: 896
- }
- enumerator: "OUT_ALL_SCO"
- scalar_value: {
- uint32_t: 112
- }
- enumerator: "OUT_ALL_USB"
- scalar_value: {
- uint32_t: 24576
- }
- enumerator: "IN_COMMUNICATION"
- scalar_value: {
- uint32_t: 2147483649
- }
- enumerator: "IN_AMBIENT"
- scalar_value: {
- uint32_t: 2147483650
- }
- enumerator: "IN_BUILTIN_MIC"
- scalar_value: {
- uint32_t: 2147483652
- }
- enumerator: "IN_BLUETOOTH_SCO_HEADSET"
- scalar_value: {
- uint32_t: 2147483656
- }
- enumerator: "IN_WIRED_HEADSET"
- scalar_value: {
- uint32_t: 2147483664
- }
- enumerator: "IN_AUX_DIGITAL"
- scalar_value: {
- uint32_t: 2147483680
- }
- enumerator: "IN_HDMI"
- scalar_value: {
- uint32_t: 2147483680
- }
- enumerator: "IN_VOICE_CALL"
- scalar_value: {
- uint32_t: 2147483712
- }
- enumerator: "IN_TELEPHONY_RX"
- scalar_value: {
- uint32_t: 2147483712
- }
- enumerator: "IN_BACK_MIC"
- scalar_value: {
- uint32_t: 2147483776
- }
- enumerator: "IN_REMOTE_SUBMIX"
- scalar_value: {
- uint32_t: 2147483904
- }
- enumerator: "IN_ANLG_DOCK_HEADSET"
- scalar_value: {
- uint32_t: 2147484160
- }
- enumerator: "IN_DGTL_DOCK_HEADSET"
- scalar_value: {
- uint32_t: 2147484672
- }
- enumerator: "IN_USB_ACCESSORY"
- scalar_value: {
- uint32_t: 2147485696
- }
- enumerator: "IN_USB_DEVICE"
- scalar_value: {
- uint32_t: 2147487744
- }
- enumerator: "IN_FM_TUNER"
- scalar_value: {
- uint32_t: 2147491840
- }
- enumerator: "IN_TV_TUNER"
- scalar_value: {
- uint32_t: 2147500032
- }
- enumerator: "IN_LINE"
- scalar_value: {
- uint32_t: 2147516416
- }
- enumerator: "IN_SPDIF"
- scalar_value: {
- uint32_t: 2147549184
- }
- enumerator: "IN_BLUETOOTH_A2DP"
- scalar_value: {
- uint32_t: 2147614720
- }
- enumerator: "IN_LOOPBACK"
- scalar_value: {
- uint32_t: 2147745792
- }
- enumerator: "IN_IP"
- scalar_value: {
- uint32_t: 2148007936
- }
- enumerator: "IN_BUS"
- scalar_value: {
- uint32_t: 2148532224
- }
- enumerator: "IN_PROXY"
- scalar_value: {
- uint32_t: 2164260864
- }
- enumerator: "IN_DEFAULT"
- scalar_value: {
- uint32_t: 3221225472
- }
- enumerator: "IN_ALL"
- scalar_value: {
- uint32_t: 3240099839
- }
- enumerator: "IN_ALL_SCO"
- scalar_value: {
- uint32_t: 2147483656
- }
- enumerator: "IN_ALL_USB"
- scalar_value: {
- uint32_t: 2147489792
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioOutputFlag"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "NONE"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "DIRECT"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "PRIMARY"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "FAST"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "DEEP_BUFFER"
- scalar_value: {
- int32_t: 8
- }
- enumerator: "COMPRESS_OFFLOAD"
- scalar_value: {
- int32_t: 16
- }
- enumerator: "NON_BLOCKING"
- scalar_value: {
- int32_t: 32
- }
- enumerator: "HW_AV_SYNC"
- scalar_value: {
- int32_t: 64
- }
- enumerator: "TTS"
- scalar_value: {
- int32_t: 128
- }
- enumerator: "RAW"
- scalar_value: {
- int32_t: 256
- }
- enumerator: "SYNC"
- scalar_value: {
- int32_t: 512
- }
- enumerator: "IEC958_NONAUDIO"
- scalar_value: {
- int32_t: 1024
- }
- enumerator: "DIRECT_PCM"
- scalar_value: {
- int32_t: 8192
- }
- enumerator: "MMAP_NOIRQ"
- scalar_value: {
- int32_t: 16384
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioInputFlag"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "NONE"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "FAST"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "HW_HOTWORD"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "RAW"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "SYNC"
- scalar_value: {
- int32_t: 8
- }
- enumerator: "MMAP_NOIRQ"
- scalar_value: {
- int32_t: 16
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioUsage"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "UNKNOWN"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "MEDIA"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "VOICE_COMMUNICATION"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "VOICE_COMMUNICATION_SIGNALLING"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "ALARM"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "NOTIFICATION"
- scalar_value: {
- int32_t: 5
- }
- enumerator: "NOTIFICATION_TELEPHONY_RINGTONE"
- scalar_value: {
- int32_t: 6
- }
- enumerator: "NOTIFICATION_COMMUNICATION_REQUEST"
- scalar_value: {
- int32_t: 7
- }
- enumerator: "NOTIFICATION_COMMUNICATION_INSTANT"
- scalar_value: {
- int32_t: 8
- }
- enumerator: "NOTIFICATION_COMMUNICATION_DELAYED"
- scalar_value: {
- int32_t: 9
- }
- enumerator: "NOTIFICATION_EVENT"
- scalar_value: {
- int32_t: 10
- }
- enumerator: "ASSISTANCE_ACCESSIBILITY"
- scalar_value: {
- int32_t: 11
- }
- enumerator: "ASSISTANCE_NAVIGATION_GUIDANCE"
- scalar_value: {
- int32_t: 12
- }
- enumerator: "ASSISTANCE_SONIFICATION"
- scalar_value: {
- int32_t: 13
- }
- enumerator: "GAME"
- scalar_value: {
- int32_t: 14
- }
- enumerator: "VIRTUAL_SOURCE"
- scalar_value: {
- int32_t: 15
- }
- enumerator: "ASSISTANT"
- scalar_value: {
- int32_t: 16
- }
- enumerator: "CNT"
- scalar_value: {
- int32_t: 17
- }
- enumerator: "MAX"
- scalar_value: {
- int32_t: 16
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioOffloadInfo"
- type: TYPE_STRUCT
- struct_value: {
- name: "sampleRateHz"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "channelMask"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioChannelMask"
- }
- struct_value: {
- name: "format"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioFormat"
- }
- struct_value: {
- name: "streamType"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioStreamType"
- }
- struct_value: {
- name: "bitRatePerSecond"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "durationMicroseconds"
- type: TYPE_SCALAR
- scalar_type: "int64_t"
- }
- struct_value: {
- name: "hasVideo"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "isStreaming"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "bitWidth"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "bufferSize"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "usage"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioUsage"
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioConfig"
- type: TYPE_STRUCT
- struct_value: {
- name: "sampleRateHz"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "channelMask"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioChannelMask"
- }
- struct_value: {
- name: "format"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioFormat"
- }
- struct_value: {
- name: "offloadInfo"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::audio::common::V2_0::AudioOffloadInfo"
- }
- struct_value: {
- name: "frameCount"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioGainMode"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "JOINT"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "CHANNELS"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "RAMP"
- scalar_value: {
- uint32_t: 4
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioGain"
- type: TYPE_STRUCT
- struct_value: {
- name: "mode"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioGainMode"
- }
- struct_value: {
- name: "channelMask"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioChannelMask"
- }
- struct_value: {
- name: "minValue"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "maxValue"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "defaultValue"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "stepValue"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "minRampMs"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "maxRampMs"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioGainConfig"
- type: TYPE_STRUCT
- struct_value: {
- name: "index"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "mode"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioGainMode"
- }
- struct_value: {
- name: "channelMask"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioChannelMask"
- }
- struct_value: {
- name: "values"
- type: TYPE_ARRAY
- vector_size: 32
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
- struct_value: {
- name: "rampDurationMs"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioPortRole"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "NONE"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "SOURCE"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "SINK"
- scalar_value: {
- int32_t: 2
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioPortType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "NONE"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "DEVICE"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "MIX"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "SESSION"
- scalar_value: {
- int32_t: 3
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioPortConfigDeviceExt"
- type: TYPE_STRUCT
- struct_value: {
- name: "hwModule"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "type"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioDevice"
- }
- struct_value: {
- name: "address"
- type: TYPE_ARRAY
- vector_size: 32
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioPortConfigSessionExt"
- type: TYPE_STRUCT
- struct_value: {
- name: "session"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioPortConfigMask"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "SAMPLE_RATE"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "CHANNEL_MASK"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "FORMAT"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "GAIN"
- scalar_value: {
- uint32_t: 8
- }
- enumerator: "ALL"
- scalar_value: {
- uint32_t: 15
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioPortConfig"
- type: TYPE_STRUCT
- sub_struct: {
- name: "::android::hardware::audio::common::V2_0::AudioPortConfig::Ext"
- type: TYPE_UNION
- sub_union: {
- name: "::android::hardware::audio::common::V2_0::AudioPortConfig::Ext::AudioPortConfigMixExt"
- type: TYPE_STRUCT
- sub_struct: {
- name: "::android::hardware::audio::common::V2_0::AudioPortConfig::Ext::AudioPortConfigMixExt::UseCase"
- type: TYPE_UNION
- union_value: {
- name: "stream"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioStreamType"
- }
- union_value: {
- name: "source"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioSource"
- }
- }
- struct_value: {
- name: "hwModule"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "ioHandle"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "useCase"
- type: TYPE_UNION
- predefined_type: "::android::hardware::audio::common::V2_0::AudioPortConfig::Ext::AudioPortConfigMixExt::UseCase"
- }
- }
- union_value: {
- name: "device"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::audio::common::V2_0::AudioPortConfigDeviceExt"
- }
- union_value: {
- name: "mix"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::audio::common::V2_0::AudioPortConfig::Ext::AudioPortConfigMixExt"
- }
- union_value: {
- name: "session"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::audio::common::V2_0::AudioPortConfigSessionExt"
- }
- }
- struct_value: {
- name: "id"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "configMask"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioPortConfigMask"
- }
- struct_value: {
- name: "sampleRateHz"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "channelMask"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioChannelMask"
- }
- struct_value: {
- name: "format"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioFormat"
- }
- struct_value: {
- name: "gain"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::audio::common::V2_0::AudioGainConfig"
- }
- struct_value: {
- name: "type"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioPortType"
- }
- struct_value: {
- name: "role"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioPortRole"
- }
- struct_value: {
- name: "ext"
- type: TYPE_UNION
- predefined_type: "::android::hardware::audio::common::V2_0::AudioPortConfig::Ext"
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioPortDeviceExt"
- type: TYPE_STRUCT
- struct_value: {
- name: "hwModule"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "type"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioDevice"
- }
- struct_value: {
- name: "address"
- type: TYPE_ARRAY
- vector_size: 32
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioMixLatencyClass"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "LOW"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "NORMAL"
- scalar_value: {
- int32_t: 1
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioPortMixExt"
- type: TYPE_STRUCT
- struct_value: {
- name: "hwModule"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "ioHandle"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "latencyClass"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioMixLatencyClass"
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioPortSessionExt"
- type: TYPE_STRUCT
- struct_value: {
- name: "session"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::AudioPort"
- type: TYPE_STRUCT
- sub_struct: {
- name: "::android::hardware::audio::common::V2_0::AudioPort::Ext"
- type: TYPE_UNION
- union_value: {
- name: "device"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::audio::common::V2_0::AudioPortDeviceExt"
- }
- union_value: {
- name: "mix"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::audio::common::V2_0::AudioPortMixExt"
- }
- union_value: {
- name: "session"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::audio::common::V2_0::AudioPortSessionExt"
- }
- }
- struct_value: {
- name: "id"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "role"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioPortRole"
- }
- struct_value: {
- name: "name"
- type: TYPE_STRING
- }
- struct_value: {
- name: "sampleRates"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
- struct_value: {
- name: "channelMasks"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioChannelMask"
- }
- }
- struct_value: {
- name: "formats"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioFormat"
- }
- }
- struct_value: {
- name: "gains"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::audio::common::V2_0::AudioGain"
- }
- }
- struct_value: {
- name: "activeConfig"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::audio::common::V2_0::AudioPortConfig"
- }
- struct_value: {
- name: "type"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioPortType"
- }
- struct_value: {
- name: "ext"
- type: TYPE_UNION
- predefined_type: "::android::hardware::audio::common::V2_0::AudioPort::Ext"
- }
-}
-
-attribute: {
- name: "::android::hardware::audio::common::V2_0::ThreadInfo"
- type: TYPE_STRUCT
- struct_value: {
- name: "pid"
- type: TYPE_SCALAR
- scalar_type: "int64_t"
- }
- struct_value: {
- name: "tid"
- type: TYPE_SCALAR
- scalar_type: "int64_t"
- }
-}
-
diff --git a/audio/effect/2.0/default/Android.mk b/audio/effect/2.0/default/Android.mk
index 1541d41..bbcf298 100644
--- a/audio/effect/2.0/default/Android.mk
+++ b/audio/effect/2.0/default/Android.mk
@@ -29,7 +29,6 @@
libhidlbase \
libhidlmemory \
libhidltransport \
- libhwbinder \
liblog \
libutils \
android.hardware.audio.common@2.0 \
diff --git a/audio/effect/2.0/vts/functional/Android.bp b/audio/effect/2.0/vts/functional/Android.bp
index b82d44a..a162534 100644
--- a/audio/effect/2.0/vts/functional/Android.bp
+++ b/audio/effect/2.0/vts/functional/Android.bp
@@ -15,21 +15,19 @@
//
cc_test {
- name: "audio_effect_hidl_hal_test",
- gtest: true,
- srcs: ["audio_effect_hidl_hal_test.cpp"],
+ name: "VtsHalAudioEffectV2_0TargetTest",
+ srcs: ["VtsHalAudioEffectV2_0TargetTest.cpp"],
shared_libs: [
"libbase",
"liblog",
"libcutils",
"libhidlbase",
"libhidltransport",
- "libhwbinder",
"libnativehelper",
"libutils",
"android.hardware.audio.effect@2.0",
],
- static_libs: ["libgtest"],
+ static_libs: ["VtsHalHidlTargetBaseTest"],
cflags: [
"-O0",
"-g",
diff --git a/audio/effect/2.0/vts/functional/audio_effect_hidl_hal_test.cpp b/audio/effect/2.0/vts/functional/VtsHalAudioEffectV2_0TargetTest.cpp
similarity index 94%
rename from audio/effect/2.0/vts/functional/audio_effect_hidl_hal_test.cpp
rename to audio/effect/2.0/vts/functional/VtsHalAudioEffectV2_0TargetTest.cpp
index 145d4c3..6c5b980 100644
--- a/audio/effect/2.0/vts/functional/audio_effect_hidl_hal_test.cpp
+++ b/audio/effect/2.0/vts/functional/VtsHalAudioEffectV2_0TargetTest.cpp
@@ -21,7 +21,7 @@
#include <android/hardware/audio/effect/2.0/IEffectsFactory.h>
#include <android/hardware/audio/effect/2.0/types.h>
-#include <gtest/gtest.h>
+#include <VtsHalHidlTargetBaseTest.h>
using ::android::hardware::audio::common::V2_0::Uuid;
using ::android::hardware::audio::effect::V2_0::EffectDescriptor;
@@ -35,10 +35,10 @@
using ::android::sp;
// The main test class for Audio Effect HIDL HAL.
-class AudioEffectHidlTest : public ::testing::Test {
+class AudioEffectHidlTest : public ::testing::VtsHalHidlTargetBaseTest {
public:
virtual void SetUp() override {
- effectsFactory = IEffectsFactory::getService("audio_effects_factory");
+ effectsFactory = ::testing::VtsHalHidlTargetBaseTest::getService<IEffectsFactory>();
ASSERT_NE(effectsFactory, nullptr);
}
diff --git a/automotive/Android.bp b/automotive/Android.bp
index aa8f74f..1f39e88 100644
--- a/automotive/Android.bp
+++ b/automotive/Android.bp
@@ -1,5 +1,5 @@
// This is an autogenerated file, do not edit.
subdirs = [
- "vehicle",
"vehicle/2.0",
+ "vehicle/2.1",
]
diff --git a/automotive/vehicle/2.0/Android.mk b/automotive/vehicle/2.0/Android.mk
index c540027..f976c39 100644
--- a/automotive/vehicle/2.0/Android.mk
+++ b/automotive/vehicle/2.0/Android.mk
@@ -17,177 +17,6 @@
#
-# Build types.hal (CommonIgnitionMonitors)
-#
-GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/CommonIgnitionMonitors.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
- $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
- -Ljava \
- -randroid.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.automotive.vehicle@2.0::types.CommonIgnitionMonitors
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build types.hal (CompressionIgnitionMonitors)
-#
-GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/CompressionIgnitionMonitors.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
- $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
- -Ljava \
- -randroid.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.automotive.vehicle@2.0::types.CompressionIgnitionMonitors
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build types.hal (FuelSystemStatus)
-#
-GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/FuelSystemStatus.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
- $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
- -Ljava \
- -randroid.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.automotive.vehicle@2.0::types.FuelSystemStatus
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build types.hal (FuelType)
-#
-GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/FuelType.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
- $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
- -Ljava \
- -randroid.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.automotive.vehicle@2.0::types.FuelType
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build types.hal (IgnitionMonitorKind)
-#
-GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/IgnitionMonitorKind.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
- $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
- -Ljava \
- -randroid.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.automotive.vehicle@2.0::types.IgnitionMonitorKind
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build types.hal (Obd2FloatSensorIndex)
-#
-GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/Obd2FloatSensorIndex.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
- $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
- -Ljava \
- -randroid.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.automotive.vehicle@2.0::types.Obd2FloatSensorIndex
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build types.hal (Obd2IntegerSensorIndex)
-#
-GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/Obd2IntegerSensorIndex.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
- $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
- -Ljava \
- -randroid.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.automotive.vehicle@2.0::types.Obd2IntegerSensorIndex
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build types.hal (SecondaryAirStatus)
-#
-GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/SecondaryAirStatus.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
- $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
- -Ljava \
- -randroid.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.automotive.vehicle@2.0::types.SecondaryAirStatus
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build types.hal (SparkIgnitionMonitors)
-#
-GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/SparkIgnitionMonitors.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
- $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
- -Ljava \
- -randroid.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.automotive.vehicle@2.0::types.SparkIgnitionMonitors
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
# Build types.hal (StatusCode)
#
GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/StatusCode.java
@@ -1198,177 +1027,6 @@
#
-# Build types.hal (CommonIgnitionMonitors)
-#
-GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/CommonIgnitionMonitors.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
- $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
- -Ljava \
- -randroid.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.automotive.vehicle@2.0::types.CommonIgnitionMonitors
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build types.hal (CompressionIgnitionMonitors)
-#
-GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/CompressionIgnitionMonitors.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
- $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
- -Ljava \
- -randroid.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.automotive.vehicle@2.0::types.CompressionIgnitionMonitors
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build types.hal (FuelSystemStatus)
-#
-GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/FuelSystemStatus.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
- $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
- -Ljava \
- -randroid.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.automotive.vehicle@2.0::types.FuelSystemStatus
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build types.hal (FuelType)
-#
-GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/FuelType.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
- $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
- -Ljava \
- -randroid.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.automotive.vehicle@2.0::types.FuelType
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build types.hal (IgnitionMonitorKind)
-#
-GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/IgnitionMonitorKind.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
- $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
- -Ljava \
- -randroid.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.automotive.vehicle@2.0::types.IgnitionMonitorKind
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build types.hal (Obd2FloatSensorIndex)
-#
-GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/Obd2FloatSensorIndex.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
- $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
- -Ljava \
- -randroid.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.automotive.vehicle@2.0::types.Obd2FloatSensorIndex
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build types.hal (Obd2IntegerSensorIndex)
-#
-GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/Obd2IntegerSensorIndex.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
- $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
- -Ljava \
- -randroid.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.automotive.vehicle@2.0::types.Obd2IntegerSensorIndex
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build types.hal (SecondaryAirStatus)
-#
-GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/SecondaryAirStatus.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
- $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
- -Ljava \
- -randroid.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.automotive.vehicle@2.0::types.SecondaryAirStatus
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build types.hal (SparkIgnitionMonitors)
-#
-GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/SparkIgnitionMonitors.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
- $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
- -Ljava \
- -randroid.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.automotive.vehicle@2.0::types.SparkIgnitionMonitors
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
# Build types.hal (StatusCode)
#
GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_0/StatusCode.java
diff --git a/automotive/vehicle/2.0/default/Android.mk b/automotive/vehicle/2.0/default/Android.mk
index c394f2e..ba4a6cd 100644
--- a/automotive/vehicle/2.0/default/Android.mk
+++ b/automotive/vehicle/2.0/default/Android.mk
@@ -14,20 +14,25 @@
LOCAL_PATH := $(call my-dir)
-module_prefix = android.hardware.automotive.vehicle@2.0
+vhal_v2_0 = android.hardware.automotive.vehicle@2.0
###############################################################################
# Vehicle reference implementation lib
###############################################################################
include $(CLEAR_VARS)
-LOCAL_MODULE := $(module_prefix)-manager-lib
+LOCAL_MODULE := $(vhal_v2_0)-manager-lib
LOCAL_SRC_FILES := \
- vehicle_hal_manager/AccessControlConfigParser.cpp \
- vehicle_hal_manager/Obd2SensorStore.cpp \
- vehicle_hal_manager/SubscriptionManager.cpp \
- vehicle_hal_manager/VehicleHalManager.cpp \
- vehicle_hal_manager/VehicleObjectPool.cpp \
- vehicle_hal_manager/VehicleUtils.cpp \
+ common/src/AccessControlConfigParser.cpp \
+ common/src/SubscriptionManager.cpp \
+ common/src/VehicleHalManager.cpp \
+ common/src/VehicleObjectPool.cpp \
+ common/src/VehicleUtils.cpp \
+
+LOCAL_C_INCLUDES := \
+ $(LOCAL_PATH)/common/include/vhal_v2_0
+
+LOCAL_EXPORT_C_INCLUDE_DIRS := \
+ $(LOCAL_PATH)/common/include
LOCAL_SHARED_LIBRARIES := \
libbinder \
@@ -36,7 +41,7 @@
libhwbinder \
liblog \
libutils \
- $(module_prefix) \
+ $(vhal_v2_0) \
include $(BUILD_STATIC_LIBRARY)
@@ -44,11 +49,11 @@
# Vehicle HAL Protobuf library
###############################################################################
include $(CLEAR_VARS)
-LOCAL_SRC_FILES := $(call all-proto-files-under, impl/proto)
+LOCAL_SRC_FILES := $(call all-proto-files-under, impl/vhal_v2_0/proto)
LOCAL_PROTOC_OPTIMIZE_TYPE := nano
-LOCAL_MODULE := $(module_prefix)-libproto-native
+LOCAL_MODULE := $(vhal_v2_0)-libproto-native
LOCAL_MODULE_CLASS := STATIC_LIBRARIES
LOCAL_MODULE_TAGS := optional
@@ -57,7 +62,7 @@
generated_sources_dir := $(call local-generated-sources-dir)
LOCAL_EXPORT_C_INCLUDE_DIRS := \
- $(generated_sources_dir)/proto/$(LOCAL_PATH)/impl/proto
+ $(generated_sources_dir)/proto/$(LOCAL_PATH)/impl/vhal_v2_0/proto
include $(BUILD_STATIC_LIBRARY)
@@ -67,11 +72,23 @@
###############################################################################
include $(CLEAR_VARS)
-LOCAL_MODULE:= $(module_prefix)-default-impl-lib
+LOCAL_MODULE:= $(vhal_v2_0)-default-impl-lib
LOCAL_SRC_FILES:= \
- impl/DefaultVehicleHal.cpp \
+ impl/vhal_v2_0/DefaultVehicleHal.cpp \
+ impl/vhal_v2_0/PipeComm.cpp \
+ impl/vhal_v2_0/SocketComm.cpp
+
+LOCAL_C_INCLUDES := \
+ $(LOCAL_PATH)/impl/vhal_v2_0
+
+LOCAL_EXPORT_C_INCLUDE_DIRS := \
+ $(LOCAL_PATH)/impl
+
+LOCAL_WHOLE_STATIC_LIBRARIES := \
+ $(vhal_v2_0)-manager-lib \
LOCAL_SHARED_LIBRARIES := \
+ libbase \
libbinder \
libhidlbase \
libhidltransport \
@@ -79,10 +96,12 @@
liblog \
libprotobuf-cpp-lite \
libutils \
- $(module_prefix) \
+ $(vhal_v2_0) \
LOCAL_STATIC_LIBRARIES := \
- $(module_prefix)-libproto-native
+ $(vhal_v2_0)-libproto-native \
+
+LOCAL_CFLAGS += -Wall -Wextra -Werror
include $(BUILD_STATIC_LIBRARY)
@@ -92,13 +111,13 @@
###############################################################################
include $(CLEAR_VARS)
-LOCAL_MODULE:= $(module_prefix)-manager-unit-tests
+LOCAL_MODULE:= $(vhal_v2_0)-manager-unit-tests
-LOCAL_WHOLE_STATIC_LIBRARIES := $(module_prefix)-manager-lib
+LOCAL_WHOLE_STATIC_LIBRARIES := \
+ $(vhal_v2_0)-manager-lib \
LOCAL_SRC_FILES:= \
tests/AccessControlConfigParser_test.cpp \
- tests/Obd2SensorStore_test.cpp \
tests/SubscriptionManager_test.cpp \
tests/VehicleHalManager_test.cpp \
tests/VehicleObjectPool_test.cpp \
@@ -111,7 +130,7 @@
libhwbinder \
liblog \
libutils \
- $(module_prefix) \
+ $(vhal_v2_0) \
LOCAL_CFLAGS += -Wall -Wextra
LOCAL_MODULE_TAGS := tests
@@ -123,19 +142,16 @@
# Vehicle HAL service
###############################################################################
include $(CLEAR_VARS)
-LOCAL_MODULE := $(module_prefix)-service
-LOCAL_INIT_RC := $(module_prefix)-service.rc
+LOCAL_MODULE := $(vhal_v2_0)-service
+LOCAL_INIT_RC := $(vhal_v2_0)-service.rc
LOCAL_PROPRIETARY_MODULE := true
LOCAL_MODULE_RELATIVE_PATH := hw
LOCAL_SRC_FILES := \
VehicleService.cpp
-LOCAL_WHOLE_STATIC_LIBRARIES := \
- $(module_prefix)-manager-lib \
- $(module_prefix)-default-impl-lib \
-
LOCAL_SHARED_LIBRARIES := \
+ libbase \
libbinder \
libhidlbase \
libhidltransport \
@@ -143,9 +159,13 @@
liblog \
libprotobuf-cpp-lite \
libutils \
- $(module_prefix) \
+ $(vhal_v2_0) \
LOCAL_STATIC_LIBRARIES := \
- $(module_prefix)-libproto-native
+ $(vhal_v2_0)-manager-lib \
+ $(vhal_v2_0)-default-impl-lib \
+ $(vhal_v2_0)-libproto-native \
+
+LOCAL_CFLAGS += -Wall -Wextra -Werror
include $(BUILD_EXECUTABLE)
diff --git a/automotive/vehicle/2.0/default/VehicleService.cpp b/automotive/vehicle/2.0/default/VehicleService.cpp
index 345dbcc..95057cc 100644
--- a/automotive/vehicle/2.0/default/VehicleService.cpp
+++ b/automotive/vehicle/2.0/default/VehicleService.cpp
@@ -20,9 +20,8 @@
#include <iostream>
-
-#include <vehicle_hal_manager/VehicleHalManager.h>
-#include <impl/DefaultVehicleHal.h>
+#include <vhal_v2_0/VehicleHalManager.h>
+#include <vhal_v2_0/DefaultVehicleHal.h>
using namespace android;
using namespace android::hardware;
@@ -35,7 +34,7 @@
configureRpcThreadpool(1, true /* callerWillJoin */);
ALOGI("Registering as service...");
- service->registerAsService("Vehicle");
+ service->registerAsService();
ALOGI("Ready");
joinRpcThreadpool();
diff --git a/automotive/vehicle/2.0/default/vehicle_hal_manager/AccessControlConfigParser.h b/automotive/vehicle/2.0/default/common/include/vhal_v2_0/AccessControlConfigParser.h
similarity index 100%
rename from automotive/vehicle/2.0/default/vehicle_hal_manager/AccessControlConfigParser.h
rename to automotive/vehicle/2.0/default/common/include/vhal_v2_0/AccessControlConfigParser.h
diff --git a/automotive/vehicle/2.0/default/vehicle_hal_manager/ConcurrentQueue.h b/automotive/vehicle/2.0/default/common/include/vhal_v2_0/ConcurrentQueue.h
similarity index 100%
rename from automotive/vehicle/2.0/default/vehicle_hal_manager/ConcurrentQueue.h
rename to automotive/vehicle/2.0/default/common/include/vhal_v2_0/ConcurrentQueue.h
diff --git a/automotive/vehicle/2.0/default/vehicle_hal_manager/SubscriptionManager.h b/automotive/vehicle/2.0/default/common/include/vhal_v2_0/SubscriptionManager.h
similarity index 100%
rename from automotive/vehicle/2.0/default/vehicle_hal_manager/SubscriptionManager.h
rename to automotive/vehicle/2.0/default/common/include/vhal_v2_0/SubscriptionManager.h
diff --git a/automotive/vehicle/2.0/default/VehicleHal.h b/automotive/vehicle/2.0/default/common/include/vhal_v2_0/VehicleHal.h
similarity index 98%
rename from automotive/vehicle/2.0/default/VehicleHal.h
rename to automotive/vehicle/2.0/default/common/include/vhal_v2_0/VehicleHal.h
index 76df5b8..8203a1e 100644
--- a/automotive/vehicle/2.0/default/VehicleHal.h
+++ b/automotive/vehicle/2.0/default/common/include/vhal_v2_0/VehicleHal.h
@@ -18,8 +18,7 @@
#define android_hardware_automotive_vehicle_V2_0_VehicleHal_H
#include <android/hardware/automotive/vehicle/2.0/IVehicle.h>
-#include "vehicle_hal_manager/VehicleObjectPool.h"
-
+#include "VehicleObjectPool.h"
namespace android {
namespace hardware {
diff --git a/automotive/vehicle/2.0/default/vehicle_hal_manager/VehicleHalManager.h b/automotive/vehicle/2.0/default/common/include/vhal_v2_0/VehicleHalManager.h
similarity index 100%
rename from automotive/vehicle/2.0/default/vehicle_hal_manager/VehicleHalManager.h
rename to automotive/vehicle/2.0/default/common/include/vhal_v2_0/VehicleHalManager.h
diff --git a/automotive/vehicle/2.0/default/vehicle_hal_manager/VehicleObjectPool.h b/automotive/vehicle/2.0/default/common/include/vhal_v2_0/VehicleObjectPool.h
similarity index 100%
rename from automotive/vehicle/2.0/default/vehicle_hal_manager/VehicleObjectPool.h
rename to automotive/vehicle/2.0/default/common/include/vhal_v2_0/VehicleObjectPool.h
diff --git a/automotive/vehicle/2.0/default/vehicle_hal_manager/VehiclePropConfigIndex.h b/automotive/vehicle/2.0/default/common/include/vhal_v2_0/VehiclePropConfigIndex.h
similarity index 100%
rename from automotive/vehicle/2.0/default/vehicle_hal_manager/VehiclePropConfigIndex.h
rename to automotive/vehicle/2.0/default/common/include/vhal_v2_0/VehiclePropConfigIndex.h
diff --git a/automotive/vehicle/2.0/default/vehicle_hal_manager/VehicleUtils.h b/automotive/vehicle/2.0/default/common/include/vhal_v2_0/VehicleUtils.h
similarity index 100%
rename from automotive/vehicle/2.0/default/vehicle_hal_manager/VehicleUtils.h
rename to automotive/vehicle/2.0/default/common/include/vhal_v2_0/VehicleUtils.h
diff --git a/automotive/vehicle/2.0/default/vehicle_hal_manager/AccessControlConfigParser.cpp b/automotive/vehicle/2.0/default/common/src/AccessControlConfigParser.cpp
similarity index 100%
rename from automotive/vehicle/2.0/default/vehicle_hal_manager/AccessControlConfigParser.cpp
rename to automotive/vehicle/2.0/default/common/src/AccessControlConfigParser.cpp
diff --git a/automotive/vehicle/2.0/default/vehicle_hal_manager/SubscriptionManager.cpp b/automotive/vehicle/2.0/default/common/src/SubscriptionManager.cpp
similarity index 100%
rename from automotive/vehicle/2.0/default/vehicle_hal_manager/SubscriptionManager.cpp
rename to automotive/vehicle/2.0/default/common/src/SubscriptionManager.cpp
diff --git a/automotive/vehicle/2.0/default/vehicle_hal_manager/VehicleHalManager.cpp b/automotive/vehicle/2.0/default/common/src/VehicleHalManager.cpp
similarity index 100%
rename from automotive/vehicle/2.0/default/vehicle_hal_manager/VehicleHalManager.cpp
rename to automotive/vehicle/2.0/default/common/src/VehicleHalManager.cpp
diff --git a/automotive/vehicle/2.0/default/vehicle_hal_manager/VehicleObjectPool.cpp b/automotive/vehicle/2.0/default/common/src/VehicleObjectPool.cpp
similarity index 100%
rename from automotive/vehicle/2.0/default/vehicle_hal_manager/VehicleObjectPool.cpp
rename to automotive/vehicle/2.0/default/common/src/VehicleObjectPool.cpp
diff --git a/automotive/vehicle/2.0/default/vehicle_hal_manager/VehicleUtils.cpp b/automotive/vehicle/2.0/default/common/src/VehicleUtils.cpp
similarity index 100%
rename from automotive/vehicle/2.0/default/vehicle_hal_manager/VehicleUtils.cpp
rename to automotive/vehicle/2.0/default/common/src/VehicleUtils.cpp
diff --git a/automotive/vehicle/2.0/default/impl/DefaultVehicleHal.cpp b/automotive/vehicle/2.0/default/impl/DefaultVehicleHal.cpp
deleted file mode 100644
index d3d77b6..0000000
--- a/automotive/vehicle/2.0/default/impl/DefaultVehicleHal.cpp
+++ /dev/null
@@ -1,844 +0,0 @@
-/*
- * Copyright (C) 2016 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.
- */
-
-#define LOG_TAG "DefaultVehicleHal"
-#include <android/log.h>
-
-#include <algorithm>
-#include <netinet/in.h>
-#include <sys/socket.h>
-
-#include "DefaultVehicleHal.h"
-#include "VehicleHalProto.pb.h"
-
-#define DEBUG_SOCKET (33452)
-
-namespace android {
-namespace hardware {
-namespace automotive {
-namespace vehicle {
-namespace V2_0 {
-
-namespace impl {
-
-void DefaultVehicleHal::doGetConfig(emulator::EmulatorMessage& rxMsg,
- emulator::EmulatorMessage& respMsg) {
- std::vector<VehiclePropConfig> configs = listProperties();
- emulator::VehiclePropGet getProp = rxMsg.prop(0);
-
- respMsg.set_msg_type(emulator::GET_CONFIG_RESP);
- respMsg.set_status(emulator::ERROR_INVALID_PROPERTY);
-
- for (auto& config : configs) {
- // Find the config we are looking for
- if (config.prop == getProp.prop()) {
- emulator::VehiclePropConfig* protoCfg = respMsg.add_config();
- populateProtoVehicleConfig(protoCfg, config);
- respMsg.set_status(emulator::RESULT_OK);
- break;
- }
- }
-}
-
-void DefaultVehicleHal::doGetConfigAll(emulator::EmulatorMessage& /* rxMsg */,
- emulator::EmulatorMessage& respMsg) {
- std::vector<VehiclePropConfig> configs = listProperties();
-
- respMsg.set_msg_type(emulator::GET_CONFIG_ALL_RESP);
- respMsg.set_status(emulator::RESULT_OK);
-
- for (auto& config : configs) {
- emulator::VehiclePropConfig* protoCfg = respMsg.add_config();
- populateProtoVehicleConfig(protoCfg, config);
- }
-}
-
-void DefaultVehicleHal::doGetProperty(emulator::EmulatorMessage& rxMsg,
- emulator::EmulatorMessage& respMsg) {
- int32_t areaId = 0;
- emulator::VehiclePropGet getProp = rxMsg.prop(0);
- int32_t propId = getProp.prop();
- emulator::Status status = emulator::ERROR_INVALID_PROPERTY;
- VehiclePropValue* val;
-
- respMsg.set_msg_type(emulator::GET_PROPERTY_RESP);
-
- if (getProp.has_area_id()) {
- areaId = getProp.area_id();
- }
-
- {
- std::lock_guard<std::mutex> lock(mPropsMutex);
-
- val = getVehiclePropValueLocked(propId, areaId);
- if (val != nullptr) {
- emulator::VehiclePropValue* protoVal = respMsg.add_value();
- populateProtoVehiclePropValue(protoVal, val);
- status = emulator::RESULT_OK;
- }
- }
-
- respMsg.set_status(status);
-}
-
-void DefaultVehicleHal::doGetPropertyAll(emulator::EmulatorMessage& /* rxMsg */,
- emulator::EmulatorMessage& respMsg) {
- respMsg.set_msg_type(emulator::GET_PROPERTY_ALL_RESP);
- respMsg.set_status(emulator::RESULT_OK);
-
- {
- std::lock_guard<std::mutex> lock(mPropsMutex);
-
- for (auto& propVal : mProps) {
- emulator::VehiclePropValue* protoVal = respMsg.add_value();
- populateProtoVehiclePropValue(protoVal, propVal.get());
- }
- }
-}
-
-void DefaultVehicleHal::doSetProperty(emulator::EmulatorMessage& rxMsg,
- emulator::EmulatorMessage& respMsg) {
- emulator::VehiclePropValue protoVal = rxMsg.value(0);
- VehiclePropValue val;
-
- respMsg.set_msg_type(emulator::SET_PROPERTY_RESP);
-
- val.prop = protoVal.prop();
- val.areaId = protoVal.area_id();
-
- // Copy value data if it is set. This automatically handles complex data types if needed.
- if (protoVal.has_string_value()) {
- val.value.stringValue = protoVal.string_value().c_str();
- }
-
- if (protoVal.has_bytes_value()) {
- std::vector<uint8_t> tmp(protoVal.bytes_value().begin(), protoVal.bytes_value().end());
- val.value.bytes = tmp;
- }
-
- if (protoVal.int32_values_size() > 0) {
- std::vector<int32_t> int32Values = std::vector<int32_t>(protoVal.int32_values_size());
- for (int i=0; i<protoVal.int32_values_size(); i++) {
- int32Values[i] = protoVal.int32_values(i);
- }
- val.value.int32Values = int32Values;
- }
-
- if (protoVal.int64_values_size() > 0) {
- std::vector<int64_t> int64Values = std::vector<int64_t>(protoVal.int64_values_size());
- for (int i=0; i<protoVal.int64_values_size(); i++) {
- int64Values[i] = protoVal.int64_values(i);
- }
- val.value.int64Values = int64Values;
- }
-
- if (protoVal.float_values_size() > 0) {
- std::vector<float> floatValues = std::vector<float>(protoVal.float_values_size());
- for (int i=0; i<protoVal.float_values_size(); i++) {
- floatValues[i] = protoVal.float_values(i);
- }
- val.value.floatValues = floatValues;
- }
-
- if (updateProperty(val) == StatusCode::OK) {
- // Send property up to VehicleHalManager via callback
- auto& pool = *getValuePool();
- VehiclePropValuePtr v = pool.obtain(val);
-
- doHalEvent(std::move(v));
- respMsg.set_status(emulator::RESULT_OK);
- } else {
- respMsg.set_status(emulator::ERROR_INVALID_PROPERTY);
- }
-}
-
-// This function should only be called while mPropsMutex is locked.
-VehiclePropValue* DefaultVehicleHal::getVehiclePropValueLocked(int32_t propId, int32_t areaId) {
- if (getPropArea(propId) == VehicleArea::GLOBAL) {
- // In VehicleHal, global properties have areaId = -1. We use 0.
- areaId = 0;
- }
-
- for (auto& prop : mProps) {
- if ((prop->prop == propId) && (prop->areaId == areaId)) {
- return prop.get();
- }
- }
- ALOGW("%s: Property not found: propId = 0x%x, areaId = 0x%x", __FUNCTION__, propId, areaId);
- return nullptr;
-}
-
-static std::unique_ptr<Obd2SensorStore> fillDefaultObd2Frame(
- size_t numVendorIntegerSensors,
- size_t numVendorFloatSensors) {
- std::unique_ptr<Obd2SensorStore> sensorStore(new Obd2SensorStore(
- numVendorIntegerSensors, numVendorFloatSensors));
-
- sensorStore->setIntegerSensor(
- Obd2IntegerSensorIndex::FUEL_SYSTEM_STATUS,
- toInt(FuelSystemStatus::CLOSED_LOOP));
- sensorStore->setIntegerSensor(
- Obd2IntegerSensorIndex::MALFUNCTION_INDICATOR_LIGHT_ON, 0);
- sensorStore->setIntegerSensor(
- Obd2IntegerSensorIndex::IGNITION_MONITORS_SUPPORTED,
- toInt(IgnitionMonitorKind::SPARK));
- sensorStore->setIntegerSensor(Obd2IntegerSensorIndex::IGNITION_SPECIFIC_MONITORS,
- CommonIgnitionMonitors::COMPONENTS_AVAILABLE |
- CommonIgnitionMonitors::MISFIRE_AVAILABLE |
- SparkIgnitionMonitors::AC_REFRIGERANT_AVAILABLE |
- SparkIgnitionMonitors::EVAPORATIVE_SYSTEM_AVAILABLE);
- sensorStore->setIntegerSensor(
- Obd2IntegerSensorIndex::INTAKE_AIR_TEMPERATURE, 35);
- sensorStore->setIntegerSensor(
- Obd2IntegerSensorIndex::COMMANDED_SECONDARY_AIR_STATUS,
- toInt(SecondaryAirStatus::FROM_OUTSIDE_OR_OFF));
- sensorStore->setIntegerSensor(
- Obd2IntegerSensorIndex::NUM_OXYGEN_SENSORS_PRESENT, 1);
- sensorStore->setIntegerSensor(
- Obd2IntegerSensorIndex::RUNTIME_SINCE_ENGINE_START, 500);
- sensorStore->setIntegerSensor(
- Obd2IntegerSensorIndex::DISTANCE_TRAVELED_WITH_MALFUNCTION_INDICATOR_LIGHT_ON, 0);
- sensorStore->setIntegerSensor(
- Obd2IntegerSensorIndex::WARMUPS_SINCE_CODES_CLEARED, 51);
- sensorStore->setIntegerSensor(
- Obd2IntegerSensorIndex::DISTANCE_TRAVELED_SINCE_CODES_CLEARED, 365);
- sensorStore->setIntegerSensor(
- Obd2IntegerSensorIndex::ABSOLUTE_BAROMETRIC_PRESSURE, 30);
- sensorStore->setIntegerSensor(
- Obd2IntegerSensorIndex::CONTROL_MODULE_VOLTAGE, 12);
- sensorStore->setIntegerSensor(
- Obd2IntegerSensorIndex::AMBIENT_AIR_TEMPERATURE, 18);
- sensorStore->setIntegerSensor(
- Obd2IntegerSensorIndex::MAX_FUEL_AIR_EQUIVALENCE_RATIO, 1);
- sensorStore->setIntegerSensor(
- Obd2IntegerSensorIndex::FUEL_TYPE, toInt(FuelType::GASOLINE));
- sensorStore->setFloatSensor(
- Obd2FloatSensorIndex::CALCULATED_ENGINE_LOAD, 0.153);
- sensorStore->setFloatSensor(
- Obd2FloatSensorIndex::SHORT_TERM_FUEL_TRIM_BANK1, -0.16);
- sensorStore->setFloatSensor(
- Obd2FloatSensorIndex::LONG_TERM_FUEL_TRIM_BANK1, -0.16);
- sensorStore->setFloatSensor(
- Obd2FloatSensorIndex::SHORT_TERM_FUEL_TRIM_BANK2, -0.16);
- sensorStore->setFloatSensor(
- Obd2FloatSensorIndex::LONG_TERM_FUEL_TRIM_BANK2, -0.16);
- sensorStore->setFloatSensor(
- Obd2FloatSensorIndex::INTAKE_MANIFOLD_ABSOLUTE_PRESSURE, 7.5);
- sensorStore->setFloatSensor(
- Obd2FloatSensorIndex::ENGINE_RPM, 1250.);
- sensorStore->setFloatSensor(
- Obd2FloatSensorIndex::VEHICLE_SPEED, 40.);
- sensorStore->setFloatSensor(
- Obd2FloatSensorIndex::TIMING_ADVANCE, 2.5);
- sensorStore->setFloatSensor(
- Obd2FloatSensorIndex::THROTTLE_POSITION, 19.75);
- sensorStore->setFloatSensor(
- Obd2FloatSensorIndex::OXYGEN_SENSOR1_VOLTAGE, 0.265);
- sensorStore->setFloatSensor(
- Obd2FloatSensorIndex::FUEL_TANK_LEVEL_INPUT, 0.824);
- sensorStore->setFloatSensor(
- Obd2FloatSensorIndex::EVAPORATION_SYSTEM_VAPOR_PRESSURE, -0.373);
- sensorStore->setFloatSensor(
- Obd2FloatSensorIndex::CATALYST_TEMPERATURE_BANK1_SENSOR1, 190.);
- sensorStore->setFloatSensor(
- Obd2FloatSensorIndex::RELATIVE_THROTTLE_POSITION, 3.);
- sensorStore->setFloatSensor(
- Obd2FloatSensorIndex::ABSOLUTE_THROTTLE_POSITION_B, 0.306);
- sensorStore->setFloatSensor(
- Obd2FloatSensorIndex::ACCELERATOR_PEDAL_POSITION_D, 0.188);
- sensorStore->setFloatSensor(
- Obd2FloatSensorIndex::ACCELERATOR_PEDAL_POSITION_E, 0.094);
- sensorStore->setFloatSensor(
- Obd2FloatSensorIndex::COMMANDED_THROTTLE_ACTUATOR, 0.024);
-
- return sensorStore;
-}
-
-void DefaultVehicleHal::initObd2LiveFrame(VehiclePropConfig& propConfig) {
- auto sensorStore = fillDefaultObd2Frame(propConfig.configArray[0],
- propConfig.configArray[1]);
- mLiveObd2Frame = createVehiclePropValue(VehiclePropertyType::COMPLEX, 0);
- sensorStore->fillPropValue(mLiveObd2Frame.get(), "");
-}
-
-void DefaultVehicleHal::initObd2FreezeFrame(VehiclePropConfig& propConfig) {
- auto sensorStore = fillDefaultObd2Frame(propConfig.configArray[0],
- propConfig.configArray[1]);
-
- mFreezeObd2Frames.push_back(
- createVehiclePropValue(VehiclePropertyType::COMPLEX,0));
- mFreezeObd2Frames.push_back(
- createVehiclePropValue(VehiclePropertyType::COMPLEX,0));
- mFreezeObd2Frames.push_back(
- createVehiclePropValue(VehiclePropertyType::COMPLEX,0));
-
- sensorStore->fillPropValue(mFreezeObd2Frames[0].get(), "P0070");
- sensorStore->fillPropValue(mFreezeObd2Frames[1].get(), "P0102");
- sensorStore->fillPropValue(mFreezeObd2Frames[2].get(), "P0123");
-}
-
-void DefaultVehicleHal::parseRxProtoBuf(std::vector<uint8_t>& msg) {
- emulator::EmulatorMessage rxMsg;
- emulator::EmulatorMessage respMsg;
- std::string str(reinterpret_cast<const char*>(msg.data()), msg.size());
-
- rxMsg.ParseFromString(str);
-
- switch (rxMsg.msg_type()) {
- case emulator::GET_CONFIG_CMD:
- doGetConfig(rxMsg, respMsg);
- break;
- case emulator::GET_CONFIG_ALL_CMD:
- doGetConfigAll(rxMsg, respMsg);
- break;
- case emulator::GET_PROPERTY_CMD:
- doGetProperty(rxMsg, respMsg);
- break;
- case emulator::GET_PROPERTY_ALL_CMD:
- doGetPropertyAll(rxMsg, respMsg);
- break;
- case emulator::SET_PROPERTY_CMD:
- doSetProperty(rxMsg, respMsg);
- break;
- default:
- ALOGW("%s: Unknown message received, type = %d", __FUNCTION__, rxMsg.msg_type());
- respMsg.set_status(emulator::ERROR_UNIMPLEMENTED_CMD);
- break;
- }
-
- // Send the reply
- txMsg(respMsg);
-}
-
-// Copies internal VehiclePropConfig data structure to protobuf VehiclePropConfig
-void DefaultVehicleHal::populateProtoVehicleConfig(emulator::VehiclePropConfig* protoCfg,
- const VehiclePropConfig& cfg) {
- protoCfg->set_prop(cfg.prop);
- protoCfg->set_access(toInt(cfg.access));
- protoCfg->set_change_mode(toInt(cfg.changeMode));
- protoCfg->set_value_type(toInt(getPropType(cfg.prop)));
-
- if (!isGlobalProp(cfg.prop)) {
- protoCfg->set_supported_areas(cfg.supportedAreas);
- }
-
- for (auto& configElement : cfg.configArray) {
- protoCfg->add_config_array(configElement);
- }
-
- if (cfg.configString.size() > 0) {
- protoCfg->set_config_string(cfg.configString.c_str(), cfg.configString.size());
- }
-
- // Populate the min/max values based on property type
- switch (getPropType(cfg.prop)) {
- case VehiclePropertyType::STRING:
- case VehiclePropertyType::BOOLEAN:
- case VehiclePropertyType::INT32_VEC:
- case VehiclePropertyType::FLOAT_VEC:
- case VehiclePropertyType::BYTES:
- case VehiclePropertyType::COMPLEX:
- // Do nothing. These types don't have min/max values
- break;
- case VehiclePropertyType::INT64:
- if (cfg.areaConfigs.size() > 0) {
- emulator::VehicleAreaConfig* aCfg = protoCfg->add_area_configs();
- aCfg->set_min_int64_value(cfg.areaConfigs[0].minInt64Value);
- aCfg->set_max_int64_value(cfg.areaConfigs[0].maxInt64Value);
- }
- break;
- case VehiclePropertyType::FLOAT:
- if (cfg.areaConfigs.size() > 0) {
- emulator::VehicleAreaConfig* aCfg = protoCfg->add_area_configs();
- aCfg->set_min_float_value(cfg.areaConfigs[0].minFloatValue);
- aCfg->set_max_float_value(cfg.areaConfigs[0].maxFloatValue);
- }
- break;
- case VehiclePropertyType::INT32:
- if (cfg.areaConfigs.size() > 0) {
- emulator::VehicleAreaConfig* aCfg = protoCfg->add_area_configs();
- aCfg->set_min_int32_value(cfg.areaConfigs[0].minInt32Value);
- aCfg->set_max_int32_value(cfg.areaConfigs[0].maxInt32Value);
- }
- break;
- default:
- ALOGW("%s: Unknown property type: 0x%x", __FUNCTION__, toInt(getPropType(cfg.prop)));
- break;
- }
-
- protoCfg->set_min_sample_rate(cfg.minSampleRate);
- protoCfg->set_max_sample_rate(cfg.maxSampleRate);
-}
-
-// Copies internal VehiclePropValue data structure to protobuf VehiclePropValue
-void DefaultVehicleHal::populateProtoVehiclePropValue(emulator::VehiclePropValue* protoVal,
- const VehiclePropValue* val) {
- protoVal->set_prop(val->prop);
- protoVal->set_value_type(toInt(getPropType(val->prop)));
- protoVal->set_timestamp(val->timestamp);
- protoVal->set_area_id(val->areaId);
-
- // Copy value data if it is set.
- // - for bytes and strings, this is indicated by size > 0
- // - for int32, int64, and float, copy the values if vectors have data
- if (val->value.stringValue.size() > 0) {
- protoVal->set_string_value(val->value.stringValue.c_str(), val->value.stringValue.size());
- }
-
- if (val->value.bytes.size() > 0) {
- protoVal->set_bytes_value(val->value.bytes.data(), val->value.bytes.size());
- }
-
- for (auto& int32Value : val->value.int32Values) {
- protoVal->add_int32_values(int32Value);
- }
-
- for (auto& int64Value : val->value.int64Values) {
- protoVal->add_int64_values(int64Value);
- }
-
- for (auto& floatValue : val->value.floatValues) {
- protoVal->add_float_values(floatValue);
- }
-}
-
-void DefaultVehicleHal::rxMsg(void) {
- int numBytes = 0;
- int32_t msgSize;
- do {
- // This is a variable length message.
- // Read the number of bytes to rx over the socket
- numBytes = read(mCurSocket, &msgSize, sizeof(msgSize));
-
- if (numBytes != sizeof(msgSize)) {
- // This happens when connection is closed
- ALOGD("%s: numBytes=%d, expected=4", __FUNCTION__, numBytes);
- break;
- }
-
- std::vector<uint8_t> msg = std::vector<uint8_t>(msgSize);
-
- numBytes = read(mCurSocket, msg.data(), msgSize);
-
- if ((numBytes == msgSize) && (msgSize > 0)) {
- // Received a message.
- parseRxProtoBuf(msg);
- } else {
- // This happens when connection is closed
- ALOGD("%s: numBytes=%d, msgSize=%d", __FUNCTION__, numBytes, msgSize);
- break;
- }
- } while (mExit == 0);
-}
-
-void DefaultVehicleHal::rxThread(void) {
- // Initialize the socket
- {
- int retVal;
- struct sockaddr_in servAddr;
-
- mSocket = socket(AF_INET, SOCK_STREAM, 0);
- if (mSocket < 0) {
- ALOGE("%s: socket() failed, mSocket=%d, errno=%d", __FUNCTION__, mSocket, errno);
- mSocket = -1;
- return;
- }
-
- bzero(&servAddr, sizeof(servAddr));
- servAddr.sin_family = AF_INET;
- servAddr.sin_addr.s_addr = INADDR_ANY;
- servAddr.sin_port = htons(DEBUG_SOCKET);
-
- retVal = bind(mSocket, reinterpret_cast<struct sockaddr*>(&servAddr), sizeof(servAddr));
- if(retVal < 0) {
- ALOGE("%s: Error on binding: retVal=%d, errno=%d", __FUNCTION__, retVal, errno);
- close(mSocket);
- mSocket = -1;
- return;
- }
-
- listen(mSocket, 1);
-
- // Set the socket to be non-blocking so we can poll it continouously
- fcntl(mSocket, F_SETFL, O_NONBLOCK);
- }
-
- while (mExit == 0) {
- struct sockaddr_in cliAddr;
- socklen_t cliLen = sizeof(cliAddr);
- int cSocket = accept(mSocket, reinterpret_cast<struct sockaddr*>(&cliAddr), &cliLen);
-
- if (cSocket >= 0) {
- {
- std::lock_guard<std::mutex> lock(mTxMutex);
- mCurSocket = cSocket;
- }
- ALOGD("%s: Incoming connection received on socket %d", __FUNCTION__, cSocket);
- rxMsg();
- ALOGD("%s: Connection terminated on socket %d", __FUNCTION__, cSocket);
- {
- std::lock_guard<std::mutex> lock(mTxMutex);
- mCurSocket = -1;
- }
- }
-
- // TODO: Use a blocking socket?
- // Check every 100ms for a new socket connection
- std::this_thread::sleep_for(std::chrono::milliseconds(100));
- }
-
- // Shutdown the socket
- close(mSocket);
- mSocket = -1;
-}
-
-// This function sets the default value of a property if we are interested in setting it.
-// TODO: Co-locate the default values with the configuration structure, to make it easier to
-// add new properties and their defaults.
-void DefaultVehicleHal::setDefaultValue(VehiclePropValue* prop) {
- switch (prop->prop) {
- case toInt(VehicleProperty::INFO_MAKE):
- prop->value.stringValue = "Default Car";
- break;
- case toInt(VehicleProperty::HVAC_POWER_ON):
- prop->value.int32Values[0] = 1;
- break;
- case toInt(VehicleProperty::HVAC_DEFROSTER):
- prop->value.int32Values[0] = 0;
- break;
- case toInt(VehicleProperty::HVAC_RECIRC_ON):
- prop->value.int32Values[0] = 1;
- break;
- case toInt(VehicleProperty::HVAC_AC_ON):
- prop->value.int32Values[0] = 1;
- break;
- case toInt(VehicleProperty::HVAC_AUTO_ON):
- prop->value.int32Values[0] = 1;
- break;
- case toInt(VehicleProperty::HVAC_FAN_SPEED):
- prop->value.int32Values[0] = 3;
- break;
- case toInt(VehicleProperty::HVAC_FAN_DIRECTION):
- prop->value.int32Values[0] = toInt(VehicleHvacFanDirection::FACE);
- break;
- case toInt(VehicleProperty::HVAC_TEMPERATURE_SET):
- prop->value.floatValues[0] = 16;
- break;
- case toInt(VehicleProperty::NIGHT_MODE):
- prop->value.int32Values[0] = 0;
- break;
- case toInt(VehicleProperty::DRIVING_STATUS):
- prop->value.int32Values[0] = toInt(VehicleDrivingStatus::UNRESTRICTED);
- break;
- case toInt(VehicleProperty::GEAR_SELECTION):
- prop->value.int32Values[0] = toInt(VehicleGear::GEAR_PARK);
- break;
- case toInt(VehicleProperty::INFO_FUEL_CAPACITY):
- prop->value.floatValues[0] = 0.75f;
- break;
- case toInt(VehicleProperty::DISPLAY_BRIGHTNESS):
- prop->value.int32Values[0] = 7;
- break;
- case toInt(VehicleProperty::IGNITION_STATE):
- prop->value.int32Values[0] = toInt(VehicleIgnitionState::ON);
- break;
- case toInt(VehicleProperty::OBD2_LIVE_FRAME):
- // OBD2 is handled separately
- break;
- case toInt(VehicleProperty::OBD2_FREEZE_FRAME):
- // OBD2 is handled separately
- break;
- default:
- ALOGW("%s: propId=0x%x not found", __FUNCTION__, prop->prop);
- break;
- }
-}
-
-// Transmit a reply back to the emulator
-void DefaultVehicleHal::txMsg(emulator::EmulatorMessage& txMsg) {
- std::string msgString;
-
- if (txMsg.SerializeToString(&msgString)) {
- int32_t msgLen = msgString.length();
- int retVal = 0;
-
- // TODO: Prepend the message length to the string without a copy
- msgString.insert(0, reinterpret_cast<char*>(&msgLen), 4);
-
- // Send the message
- {
- std::lock_guard<std::mutex> lock(mTxMutex);
- if (mCurSocket != -1) {
- retVal = write(mCurSocket, msgString.data(), msgString.size());
- }
- }
-
- if (retVal < 0) {
- ALOGE("%s: Failed to tx message: retval=%d, errno=%d", __FUNCTION__, retVal, errno);
- }
- } else {
- ALOGE("%s: SerializeToString failed!", __FUNCTION__);
- }
-}
-
-// Updates the property value held in the HAL
-StatusCode DefaultVehicleHal::updateProperty(const VehiclePropValue& propValue) {
- auto propId = propValue.prop;
- auto areaId = propValue.areaId;
- StatusCode status = StatusCode::INVALID_ARG;
-
- {
- std::lock_guard<std::mutex> lock(mPropsMutex);
-
- VehiclePropValue* internalPropValue = getVehiclePropValueLocked(propId, areaId);
- if (internalPropValue != nullptr) {
- internalPropValue->value = propValue.value;
- internalPropValue->timestamp = elapsedRealtimeNano();
- status = StatusCode::OK;
- }
- }
- return status;
-}
-
-VehicleHal::VehiclePropValuePtr DefaultVehicleHal::get(
- const VehiclePropValue& requestedPropValue, StatusCode* outStatus) {
- auto areaId = requestedPropValue.areaId;
- auto& pool = *getValuePool();
- auto propId = requestedPropValue.prop;
- StatusCode status;
- VehiclePropValuePtr v = nullptr;
-
- switch (propId) {
- case toInt(VehicleProperty::OBD2_LIVE_FRAME):
- v = pool.obtainComplex();
- status = fillObd2LiveFrame(v.get());
- break;
- case toInt(VehicleProperty::OBD2_FREEZE_FRAME):
- v = pool.obtainComplex();
- status = fillObd2FreezeFrame(requestedPropValue, v.get());
- break;
- case toInt(VehicleProperty::OBD2_FREEZE_FRAME_INFO):
- v = pool.obtainComplex();
- status = fillObd2DtcInfo(v.get());
- break;
- default:
- {
- std::lock_guard<std::mutex> lock(mPropsMutex);
-
- VehiclePropValue *internalPropValue = getVehiclePropValueLocked(propId, areaId);
- if (internalPropValue != nullptr) {
- v = pool.obtain(*internalPropValue);
- }
- }
-
- if (v != nullptr) {
- status = StatusCode::OK;
- } else {
- status = StatusCode::INVALID_ARG;
- }
- break;
- }
-
- *outStatus = status;
- return v;
-}
-
-StatusCode DefaultVehicleHal::set(const VehiclePropValue& propValue) {
- auto propId = propValue.prop;
- StatusCode status;
- switch (propId) {
- case toInt(VehicleProperty::OBD2_FREEZE_FRAME_CLEAR):
- status = clearObd2FreezeFrames(propValue);
- break;
- default:
- status = updateProperty(propValue);
- if (status == StatusCode::OK) {
- // Send property update to emulator
- emulator::EmulatorMessage msg;
- emulator::VehiclePropValue *val = msg.add_value();
- populateProtoVehiclePropValue(val, &propValue);
- msg.set_status(emulator::RESULT_OK);
- msg.set_msg_type(emulator::SET_PROPERTY_ASYNC);
- txMsg(msg);
- }
- break;
- }
-
- return status;
-}
-
-// Parse supported properties list and generate vector of property values to hold current values.
-void DefaultVehicleHal::onCreate() {
- // Initialize member variables
- mCurSocket = -1;
- mExit = 0;
- mSocket = -1;
-
- // Get the list of configurations supported by this HAL
- std::vector<VehiclePropConfig> configs = listProperties();
-
- for (auto& cfg : configs) {
- VehiclePropertyType propType = getPropType(cfg.prop);
- int32_t supportedAreas = cfg.supportedAreas;
- int32_t vecSize;
-
- // Set the vector size based on property type
- switch (propType) {
- case VehiclePropertyType::BOOLEAN:
- case VehiclePropertyType::INT32:
- case VehiclePropertyType::INT64:
- case VehiclePropertyType::FLOAT:
- vecSize = 1;
- break;
- case VehiclePropertyType::INT32_VEC:
- case VehiclePropertyType::FLOAT_VEC:
- case VehiclePropertyType::BYTES:
- // TODO: Add proper support for these types
- vecSize = 1;
- break;
- case VehiclePropertyType::STRING:
- // Require individual handling
- vecSize = 0;
- break;
- case VehiclePropertyType::COMPLEX:
- switch (cfg.prop) {
- case toInt(VehicleProperty::OBD2_LIVE_FRAME):
- initObd2LiveFrame(cfg);
- break;
- case toInt(VehicleProperty::OBD2_FREEZE_FRAME):
- initObd2FreezeFrame(cfg);
- break;
- default:
- // Need to handle each complex property separately
- break;
- }
- continue;
- break;
- case VehiclePropertyType::MASK:
- default:
- ALOGW("%s: propType=0x%x not found", __FUNCTION__, propType);
- vecSize = 0;
- break;
- }
-
- // A global property will have supportedAreas = 0
- if (getPropArea(cfg.prop) == VehicleArea::GLOBAL) {
- supportedAreas = 0;
- }
-
- // This loop is a do-while so it executes at least once to handle global properties
- do {
- int32_t curArea = supportedAreas;
-
- // Clear the right-most bit of supportedAreas
- supportedAreas &= supportedAreas - 1;
-
- // Set curArea to the previously cleared bit
- curArea ^= supportedAreas;
-
- // Create a separate instance for each individual zone
- std::unique_ptr<VehiclePropValue> prop = createVehiclePropValue(propType, vecSize);
- prop->areaId = curArea;
- prop->prop = cfg.prop;
- setDefaultValue(prop.get());
- mProps.push_back(std::move(prop));
- } while (supportedAreas != 0);
- }
-
- // Start rx thread
- mThread = std::thread(&DefaultVehicleHal::rxThread, this);
-}
-
-StatusCode DefaultVehicleHal::fillObd2LiveFrame(VehiclePropValue* v) {
- v->prop = toInt(VehicleProperty::OBD2_LIVE_FRAME);
- v->value.int32Values = mLiveObd2Frame->value.int32Values;
- v->value.floatValues = mLiveObd2Frame->value.floatValues;
- v->value.bytes = mLiveObd2Frame->value.bytes;
- return StatusCode::OK;
-}
-
-template<typename Iterable>
-typename Iterable::const_iterator findPropValueAtTimestamp(
- const Iterable& frames,
- int64_t timestamp) {
- return std::find_if(frames.begin(),
- frames.end(),
- [timestamp] (const std::unique_ptr<VehiclePropValue>&
- propValue) -> bool {
- return propValue->timestamp == timestamp;
- });
-}
-
-StatusCode DefaultVehicleHal::fillObd2FreezeFrame(
- const VehiclePropValue& requestedPropValue, VehiclePropValue* v) {
- if (requestedPropValue.value.int64Values.size() != 1) {
- ALOGE("asked for OBD2_FREEZE_FRAME without valid timestamp");
- return StatusCode::INVALID_ARG;
- }
- auto timestamp = requestedPropValue.value.int64Values[0];
- auto freezeFrameIter = findPropValueAtTimestamp(mFreezeObd2Frames,
- timestamp);
- if(mFreezeObd2Frames.end() == freezeFrameIter) {
- ALOGE("asked for OBD2_FREEZE_FRAME at invalid timestamp");
- return StatusCode::INVALID_ARG;
- }
- const std::unique_ptr<VehiclePropValue>& freezeFrame = *freezeFrameIter;
- v->prop = toInt(VehicleProperty::OBD2_FREEZE_FRAME);
- v->value.int32Values = freezeFrame->value.int32Values;
- v->value.floatValues = freezeFrame->value.floatValues;
- v->value.bytes = freezeFrame->value.bytes;
- v->value.stringValue = freezeFrame->value.stringValue;
- v->timestamp = freezeFrame->timestamp;
- return StatusCode::OK;
-}
-
-StatusCode DefaultVehicleHal::clearObd2FreezeFrames(
- const VehiclePropValue& propValue) {
- if (propValue.value.int64Values.size() == 0) {
- mFreezeObd2Frames.clear();
- return StatusCode::OK;
- } else {
- for(int64_t timestamp: propValue.value.int64Values) {
- auto freezeFrameIter = findPropValueAtTimestamp(mFreezeObd2Frames,
- timestamp);
- if(mFreezeObd2Frames.end() == freezeFrameIter) {
- ALOGE("asked for OBD2_FREEZE_FRAME at invalid timestamp");
- return StatusCode::INVALID_ARG;
- }
- mFreezeObd2Frames.erase(freezeFrameIter);
- }
- }
- return StatusCode::OK;
-}
-
-StatusCode DefaultVehicleHal::fillObd2DtcInfo(VehiclePropValue* v) {
- std::vector<int64_t> timestamps;
- for(const auto& freezeFrame: mFreezeObd2Frames) {
- timestamps.push_back(freezeFrame->timestamp);
- }
- v->value.int64Values = timestamps;
- return StatusCode::OK;
-}
-
-
-
-} // impl
-
-} // namespace V2_0
-} // namespace vehicle
-} // namespace automotive
-} // namespace hardware
-} // namespace android
diff --git a/automotive/vehicle/2.0/default/impl/vhal_v2_0/CommBase.h b/automotive/vehicle/2.0/default/impl/vhal_v2_0/CommBase.h
new file mode 100644
index 0000000..6832ad3
--- /dev/null
+++ b/automotive/vehicle/2.0/default/impl/vhal_v2_0/CommBase.h
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2017 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.
+ */
+
+#ifndef android_hardware_automotive_vehicle_V2_0_impl_CommBase_H_
+#define android_hardware_automotive_vehicle_V2_0_impl_CommBase_H_
+
+#include <string>
+#include <vector>
+
+namespace android {
+namespace hardware {
+namespace automotive {
+namespace vehicle {
+namespace V2_0 {
+
+namespace impl {
+
+/**
+ * This is the communications base class. It defines the interface used in DefaultVehicleHal to
+ * send and receive data to and from the emulator.
+ */
+class CommBase {
+public:
+ virtual ~CommBase() = default;
+
+ /**
+ * Closes a connection if it is open.
+ */
+ virtual void stop() {}
+
+ /**
+ * Creates a connection to the other side.
+ *
+ * @return int Returns fd or socket number if connection is successful.
+ * Otherwise, returns -1 if no connection is availble.
+ */
+ virtual int connect() { return 0; }
+
+ /**
+ * Opens the communications channel.
+ *
+ * @return int Returns 0 if channel is opened, else -errno if failed.
+ */
+ virtual int open() = 0;
+
+ /**
+ * Blocking call to read data from the connection.
+ *
+ * @return std::vector<uint8_t> Serialized protobuf data received from emulator. This will be
+ * an empty vector if the connection was closed or some other error occurred.
+ */
+ virtual std::vector<uint8_t> read() = 0;
+
+ /**
+ * Transmits a string of data to the emulator.
+ *
+ * @param data Serialized protobuf data to transmit.
+ *
+ * @return int Number of bytes transmitted, or -1 if failed.
+ */
+ virtual int write(const std::vector<uint8_t>& data) = 0;
+};
+
+} // impl
+
+} // namespace V2_0
+} // namespace vehicle
+} // namespace automotive
+} // namespace hardware
+} // namespace android
+
+
+#endif // android_hardware_automotive_vehicle_V2_0_impl_CommBase_H_
diff --git a/automotive/vehicle/2.0/default/impl/DefaultConfig.h b/automotive/vehicle/2.0/default/impl/vhal_v2_0/DefaultConfig.h
similarity index 87%
rename from automotive/vehicle/2.0/default/impl/DefaultConfig.h
rename to automotive/vehicle/2.0/default/impl/vhal_v2_0/DefaultConfig.h
index 0c549b9..9591689 100644
--- a/automotive/vehicle/2.0/default/impl/DefaultConfig.h
+++ b/automotive/vehicle/2.0/default/impl/vhal_v2_0/DefaultConfig.h
@@ -18,7 +18,7 @@
#define android_hardware_automotive_vehicle_V2_0_impl_DefaultConfig_H_
#include <android/hardware/automotive/vehicle/2.0/IVehicle.h>
-#include <vehicle_hal_manager/VehicleUtils.h>
+#include <vhal_v2_0/VehicleUtils.h>
namespace android {
namespace hardware {
@@ -28,6 +28,11 @@
namespace impl {
+const VehicleProperty kHvacPowerProperties[] = {
+ VehicleProperty::HVAC_FAN_SPEED,
+ VehicleProperty::HVAC_FAN_DIRECTION,
+};
+
const VehiclePropConfig kVehicleProperties[] = {
{
.prop = toInt(VehicleProperty::INFO_MAKE),
@@ -36,10 +41,37 @@
},
{
+ .prop = toInt(VehicleProperty::PERF_VEHICLE_SPEED),
+ .access = VehiclePropertyAccess::READ,
+ .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
+ },
+
+ {
+ .prop = toInt(VehicleProperty::CURRENT_GEAR),
+ .access = VehiclePropertyAccess::READ,
+ .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
+ },
+
+ {
+ .prop = toInt(VehicleProperty::PARKING_BRAKE_ON),
+ .access = VehiclePropertyAccess::READ,
+ .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
+ },
+
+ {
+ .prop = toInt(VehicleProperty::FUEL_LEVEL_LOW),
+ .access = VehiclePropertyAccess::READ,
+ .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
+ },
+
+ {
.prop = toInt(VehicleProperty::HVAC_POWER_ON),
.access = VehiclePropertyAccess::READ_WRITE,
.changeMode = VehiclePropertyChangeMode::ON_CHANGE,
- .supportedAreas = toInt(VehicleAreaZone::ROW_1)
+ .supportedAreas = toInt(VehicleAreaZone::ROW_1),
+ // TODO(bryaneyler): Ideally, this is generated dynamically from
+ // kHvacPowerProperties.
+ .configString = "0x12400500,0x12400501" // HVAC_FAN_SPEED,HVAC_FAN_DIRECTION
},
{
@@ -160,32 +192,6 @@
.prop = toInt(VehicleProperty::IGNITION_STATE),
.access = VehiclePropertyAccess::READ,
.changeMode = VehiclePropertyChangeMode::ON_CHANGE,
- },
-
- {
- .prop = toInt(VehicleProperty::OBD2_LIVE_FRAME),
- .access = VehiclePropertyAccess::READ,
- .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
- .configArray = {0,0}
- },
-
- {
- .prop = toInt(VehicleProperty::OBD2_FREEZE_FRAME),
- .access = VehiclePropertyAccess::READ,
- .changeMode = VehiclePropertyChangeMode::ON_CHANGE,
- .configArray = {0,0}
- },
-
- {
- .prop = toInt(VehicleProperty::OBD2_FREEZE_FRAME_INFO),
- .access = VehiclePropertyAccess::READ,
- .changeMode = VehiclePropertyChangeMode::ON_CHANGE
- },
-
- {
- .prop = toInt(VehicleProperty::OBD2_FREEZE_FRAME_CLEAR),
- .access = VehiclePropertyAccess::WRITE,
- .changeMode = VehiclePropertyChangeMode::ON_CHANGE
}
};
diff --git a/automotive/vehicle/2.0/default/impl/vhal_v2_0/DefaultVehicleHal.cpp b/automotive/vehicle/2.0/default/impl/vhal_v2_0/DefaultVehicleHal.cpp
new file mode 100644
index 0000000..7a66c04
--- /dev/null
+++ b/automotive/vehicle/2.0/default/impl/vhal_v2_0/DefaultVehicleHal.cpp
@@ -0,0 +1,611 @@
+/*
+ * Copyright (C) 2016 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.
+ */
+
+#define LOG_TAG "DefaultVehicleHal_v2_0"
+#include <android/log.h>
+
+#include <algorithm>
+#include <android-base/properties.h>
+#include <cstdio>
+
+#include "DefaultVehicleHal.h"
+#include "PipeComm.h"
+#include "SocketComm.h"
+#include "VehicleHalProto.pb.h"
+
+namespace android {
+namespace hardware {
+namespace automotive {
+namespace vehicle {
+namespace V2_0 {
+
+namespace impl {
+
+void DefaultVehicleHal::doGetConfig(emulator::EmulatorMessage& rxMsg,
+ emulator::EmulatorMessage& respMsg) {
+ std::vector<VehiclePropConfig> configs = listProperties();
+ emulator::VehiclePropGet getProp = rxMsg.prop(0);
+
+ respMsg.set_msg_type(emulator::GET_CONFIG_RESP);
+ respMsg.set_status(emulator::ERROR_INVALID_PROPERTY);
+
+ for (auto& config : configs) {
+ // Find the config we are looking for
+ if (config.prop == getProp.prop()) {
+ emulator::VehiclePropConfig* protoCfg = respMsg.add_config();
+ populateProtoVehicleConfig(protoCfg, config);
+ respMsg.set_status(emulator::RESULT_OK);
+ break;
+ }
+ }
+}
+
+void DefaultVehicleHal::doGetConfigAll(emulator::EmulatorMessage& /* rxMsg */,
+ emulator::EmulatorMessage& respMsg) {
+ std::vector<VehiclePropConfig> configs = listProperties();
+
+ respMsg.set_msg_type(emulator::GET_CONFIG_ALL_RESP);
+ respMsg.set_status(emulator::RESULT_OK);
+
+ for (auto& config : configs) {
+ emulator::VehiclePropConfig* protoCfg = respMsg.add_config();
+ populateProtoVehicleConfig(protoCfg, config);
+ }
+}
+
+void DefaultVehicleHal::doGetProperty(emulator::EmulatorMessage& rxMsg,
+ emulator::EmulatorMessage& respMsg) {
+ int32_t areaId = 0;
+ emulator::VehiclePropGet getProp = rxMsg.prop(0);
+ int32_t propId = getProp.prop();
+ emulator::Status status = emulator::ERROR_INVALID_PROPERTY;
+ VehiclePropValue* val;
+
+ respMsg.set_msg_type(emulator::GET_PROPERTY_RESP);
+
+ if (getProp.has_area_id()) {
+ areaId = getProp.area_id();
+ }
+
+ {
+ std::lock_guard<std::mutex> lock(mPropsMutex);
+
+ val = getVehiclePropValueLocked(propId, areaId);
+ if (val != nullptr) {
+ emulator::VehiclePropValue* protoVal = respMsg.add_value();
+ populateProtoVehiclePropValue(protoVal, val);
+ status = emulator::RESULT_OK;
+ }
+ }
+
+ respMsg.set_status(status);
+}
+
+void DefaultVehicleHal::doGetPropertyAll(emulator::EmulatorMessage& /* rxMsg */,
+ emulator::EmulatorMessage& respMsg) {
+ respMsg.set_msg_type(emulator::GET_PROPERTY_ALL_RESP);
+ respMsg.set_status(emulator::RESULT_OK);
+
+ {
+ std::lock_guard<std::mutex> lock(mPropsMutex);
+
+ for (auto& prop : mProps) {
+ emulator::VehiclePropValue* protoVal = respMsg.add_value();
+ populateProtoVehiclePropValue(protoVal, prop.second.get());
+ }
+ }
+}
+
+void DefaultVehicleHal::doSetProperty(emulator::EmulatorMessage& rxMsg,
+ emulator::EmulatorMessage& respMsg) {
+ emulator::VehiclePropValue protoVal = rxMsg.value(0);
+ VehiclePropValue val;
+
+ respMsg.set_msg_type(emulator::SET_PROPERTY_RESP);
+
+ val.prop = protoVal.prop();
+ val.areaId = protoVal.area_id();
+
+ // Copy value data if it is set. This automatically handles complex data types if needed.
+ if (protoVal.has_string_value()) {
+ val.value.stringValue = protoVal.string_value().c_str();
+ }
+
+ if (protoVal.has_bytes_value()) {
+ std::vector<uint8_t> tmp(protoVal.bytes_value().begin(), protoVal.bytes_value().end());
+ val.value.bytes = tmp;
+ }
+
+ if (protoVal.int32_values_size() > 0) {
+ std::vector<int32_t> int32Values = std::vector<int32_t>(protoVal.int32_values_size());
+ for (int i=0; i<protoVal.int32_values_size(); i++) {
+ int32Values[i] = protoVal.int32_values(i);
+ }
+ val.value.int32Values = int32Values;
+ }
+
+ if (protoVal.int64_values_size() > 0) {
+ std::vector<int64_t> int64Values = std::vector<int64_t>(protoVal.int64_values_size());
+ for (int i=0; i<protoVal.int64_values_size(); i++) {
+ int64Values[i] = protoVal.int64_values(i);
+ }
+ val.value.int64Values = int64Values;
+ }
+
+ if (protoVal.float_values_size() > 0) {
+ std::vector<float> floatValues = std::vector<float>(protoVal.float_values_size());
+ for (int i=0; i<protoVal.float_values_size(); i++) {
+ floatValues[i] = protoVal.float_values(i);
+ }
+ val.value.floatValues = floatValues;
+ }
+
+ if (updateProperty(val) == StatusCode::OK) {
+ // Send property up to VehicleHalManager via callback
+ auto& pool = *getValuePool();
+ VehiclePropValuePtr v = pool.obtain(val);
+
+ doHalEvent(std::move(v));
+ respMsg.set_status(emulator::RESULT_OK);
+ } else {
+ respMsg.set_status(emulator::ERROR_INVALID_PROPERTY);
+ }
+}
+
+// This function should only be called while mPropsMutex is locked.
+VehiclePropValue* DefaultVehicleHal::getVehiclePropValueLocked(int32_t propId, int32_t areaId) {
+ if (getPropArea(propId) == VehicleArea::GLOBAL) {
+ // In VehicleHal, global properties have areaId = -1. We use 0.
+ areaId = 0;
+ }
+
+ auto prop = mProps.find(std::make_pair(propId, areaId));
+ if (prop != mProps.end()) {
+ return prop->second.get();
+ }
+ ALOGW("%s: Property not found: propId = 0x%x, areaId = 0x%x", __FUNCTION__, propId, areaId);
+ return nullptr;
+}
+
+void DefaultVehicleHal::parseRxProtoBuf(std::vector<uint8_t>& msg) {
+ emulator::EmulatorMessage rxMsg;
+ emulator::EmulatorMessage respMsg;
+
+ if (rxMsg.ParseFromArray(msg.data(), msg.size())) {
+ switch (rxMsg.msg_type()) {
+ case emulator::GET_CONFIG_CMD:
+ doGetConfig(rxMsg, respMsg);
+ break;
+ case emulator::GET_CONFIG_ALL_CMD:
+ doGetConfigAll(rxMsg, respMsg);
+ break;
+ case emulator::GET_PROPERTY_CMD:
+ doGetProperty(rxMsg, respMsg);
+ break;
+ case emulator::GET_PROPERTY_ALL_CMD:
+ doGetPropertyAll(rxMsg, respMsg);
+ break;
+ case emulator::SET_PROPERTY_CMD:
+ doSetProperty(rxMsg, respMsg);
+ break;
+ default:
+ ALOGW("%s: Unknown message received, type = %d", __FUNCTION__, rxMsg.msg_type());
+ respMsg.set_status(emulator::ERROR_UNIMPLEMENTED_CMD);
+ break;
+ }
+
+ // Send the reply
+ txMsg(respMsg);
+ } else {
+ ALOGE("%s: ParseFromString() failed. msgSize=%d", __FUNCTION__, static_cast<int>(msg.size()));
+ }
+}
+
+// Copies internal VehiclePropConfig data structure to protobuf VehiclePropConfig
+void DefaultVehicleHal::populateProtoVehicleConfig(emulator::VehiclePropConfig* protoCfg,
+ const VehiclePropConfig& cfg) {
+ protoCfg->set_prop(cfg.prop);
+ protoCfg->set_access(toInt(cfg.access));
+ protoCfg->set_change_mode(toInt(cfg.changeMode));
+ protoCfg->set_value_type(toInt(getPropType(cfg.prop)));
+
+ if (!isGlobalProp(cfg.prop)) {
+ protoCfg->set_supported_areas(cfg.supportedAreas);
+ }
+
+ for (auto& configElement : cfg.configArray) {
+ protoCfg->add_config_array(configElement);
+ }
+
+ if (cfg.configString.size() > 0) {
+ protoCfg->set_config_string(cfg.configString.c_str(), cfg.configString.size());
+ }
+
+ // Populate the min/max values based on property type
+ switch (getPropType(cfg.prop)) {
+ case VehiclePropertyType::STRING:
+ case VehiclePropertyType::BOOLEAN:
+ case VehiclePropertyType::INT32_VEC:
+ case VehiclePropertyType::FLOAT_VEC:
+ case VehiclePropertyType::BYTES:
+ case VehiclePropertyType::COMPLEX:
+ // Do nothing. These types don't have min/max values
+ break;
+ case VehiclePropertyType::INT64:
+ if (cfg.areaConfigs.size() > 0) {
+ emulator::VehicleAreaConfig* aCfg = protoCfg->add_area_configs();
+ aCfg->set_min_int64_value(cfg.areaConfigs[0].minInt64Value);
+ aCfg->set_max_int64_value(cfg.areaConfigs[0].maxInt64Value);
+ }
+ break;
+ case VehiclePropertyType::FLOAT:
+ if (cfg.areaConfigs.size() > 0) {
+ emulator::VehicleAreaConfig* aCfg = protoCfg->add_area_configs();
+ aCfg->set_min_float_value(cfg.areaConfigs[0].minFloatValue);
+ aCfg->set_max_float_value(cfg.areaConfigs[0].maxFloatValue);
+ }
+ break;
+ case VehiclePropertyType::INT32:
+ if (cfg.areaConfigs.size() > 0) {
+ emulator::VehicleAreaConfig* aCfg = protoCfg->add_area_configs();
+ aCfg->set_min_int32_value(cfg.areaConfigs[0].minInt32Value);
+ aCfg->set_max_int32_value(cfg.areaConfigs[0].maxInt32Value);
+ }
+ break;
+ default:
+ ALOGW("%s: Unknown property type: 0x%x", __FUNCTION__, toInt(getPropType(cfg.prop)));
+ break;
+ }
+
+ protoCfg->set_min_sample_rate(cfg.minSampleRate);
+ protoCfg->set_max_sample_rate(cfg.maxSampleRate);
+}
+
+// Copies internal VehiclePropValue data structure to protobuf VehiclePropValue
+void DefaultVehicleHal::populateProtoVehiclePropValue(emulator::VehiclePropValue* protoVal,
+ const VehiclePropValue* val) {
+ protoVal->set_prop(val->prop);
+ protoVal->set_value_type(toInt(getPropType(val->prop)));
+ protoVal->set_timestamp(val->timestamp);
+ protoVal->set_area_id(val->areaId);
+
+ // Copy value data if it is set.
+ // - for bytes and strings, this is indicated by size > 0
+ // - for int32, int64, and float, copy the values if vectors have data
+ if (val->value.stringValue.size() > 0) {
+ protoVal->set_string_value(val->value.stringValue.c_str(), val->value.stringValue.size());
+ }
+
+ if (val->value.bytes.size() > 0) {
+ protoVal->set_bytes_value(val->value.bytes.data(), val->value.bytes.size());
+ }
+
+ for (auto& int32Value : val->value.int32Values) {
+ protoVal->add_int32_values(int32Value);
+ }
+
+ for (auto& int64Value : val->value.int64Values) {
+ protoVal->add_int64_values(int64Value);
+ }
+
+ for (auto& floatValue : val->value.floatValues) {
+ protoVal->add_float_values(floatValue);
+ }
+}
+
+void DefaultVehicleHal::rxMsg() {
+ int numBytes = 0;
+
+ while (mExit == 0) {
+ std::vector<uint8_t> msg = mComm->read();
+
+ if (msg.size() > 0) {
+ // Received a message.
+ parseRxProtoBuf(msg);
+ } else {
+ // This happens when connection is closed
+ ALOGD("%s: numBytes=%d, msgSize=%d", __FUNCTION__, numBytes,
+ static_cast<int32_t>(msg.size()));
+ break;
+ }
+ }
+}
+
+void DefaultVehicleHal::rxThread() {
+ bool isEmulator = android::base::GetBoolProperty("ro.kernel.qemu", false);
+
+ if (isEmulator) {
+ // Initialize pipe to Emulator
+ mComm.reset(new PipeComm);
+ } else {
+ // Initialize socket over ADB
+ mComm.reset(new SocketComm);
+ }
+
+ int retVal = mComm->open();
+
+ if (retVal == 0) {
+ // Comms are properly opened
+ while (mExit == 0) {
+ retVal = mComm->connect();
+
+ if (retVal >= 0) {
+ rxMsg();
+ }
+
+ // Check every 100ms for a new connection
+ std::this_thread::sleep_for(std::chrono::milliseconds(100));
+ }
+ }
+}
+
+// This function sets the default value of a property if we are interested in setting it.
+// TODO: Co-locate the default values with the configuration structure, to make it easier to
+// add new properties and their defaults.
+void DefaultVehicleHal::setDefaultValue(VehiclePropValue* prop) {
+ switch (prop->prop) {
+ case toInt(VehicleProperty::INFO_MAKE):
+ prop->value.stringValue = "Default Car";
+ break;
+ case toInt(VehicleProperty::PERF_VEHICLE_SPEED):
+ prop->value.floatValues[0] = 0;
+ break;
+ case toInt(VehicleProperty::CURRENT_GEAR):
+ prop->value.int32Values[0] = toInt(VehicleGear::GEAR_PARK);
+ break;
+ case toInt(VehicleProperty::PARKING_BRAKE_ON):
+ prop->value.int32Values[0] = 1;
+ break;
+ case toInt(VehicleProperty::FUEL_LEVEL_LOW):
+ prop->value.int32Values[0] = 0;
+ break;
+ case toInt(VehicleProperty::HVAC_POWER_ON):
+ prop->value.int32Values[0] = 1;
+ break;
+ case toInt(VehicleProperty::HVAC_DEFROSTER):
+ prop->value.int32Values[0] = 0;
+ break;
+ case toInt(VehicleProperty::HVAC_RECIRC_ON):
+ prop->value.int32Values[0] = 1;
+ break;
+ case toInt(VehicleProperty::HVAC_AC_ON):
+ prop->value.int32Values[0] = 1;
+ break;
+ case toInt(VehicleProperty::HVAC_AUTO_ON):
+ prop->value.int32Values[0] = 1;
+ break;
+ case toInt(VehicleProperty::HVAC_FAN_SPEED):
+ prop->value.int32Values[0] = 3;
+ break;
+ case toInt(VehicleProperty::HVAC_FAN_DIRECTION):
+ prop->value.int32Values[0] = toInt(VehicleHvacFanDirection::FACE);
+ break;
+ case toInt(VehicleProperty::HVAC_TEMPERATURE_SET):
+ prop->value.floatValues[0] = 16;
+ break;
+ case toInt(VehicleProperty::NIGHT_MODE):
+ prop->value.int32Values[0] = 0;
+ break;
+ case toInt(VehicleProperty::DRIVING_STATUS):
+ prop->value.int32Values[0] = toInt(VehicleDrivingStatus::UNRESTRICTED);
+ break;
+ case toInt(VehicleProperty::GEAR_SELECTION):
+ prop->value.int32Values[0] = toInt(VehicleGear::GEAR_PARK);
+ break;
+ case toInt(VehicleProperty::INFO_FUEL_CAPACITY):
+ prop->value.floatValues[0] = 0.75f;
+ break;
+ case toInt(VehicleProperty::DISPLAY_BRIGHTNESS):
+ prop->value.int32Values[0] = 7;
+ break;
+ case toInt(VehicleProperty::IGNITION_STATE):
+ prop->value.int32Values[0] = toInt(VehicleIgnitionState::ON);
+ break;
+ default:
+ ALOGW("%s: propId=0x%x not found", __FUNCTION__, prop->prop);
+ break;
+ }
+}
+
+// Transmit a reply back to the emulator
+void DefaultVehicleHal::txMsg(emulator::EmulatorMessage& txMsg) {
+ int numBytes = txMsg.ByteSize();
+ std::vector<uint8_t> msg(numBytes);
+
+ if (txMsg.SerializeToArray(msg.data(), msg.size())) {
+ int retVal = 0;
+
+ // Send the message
+ if (mExit == 0) {
+ mComm->write(msg);
+ }
+
+ if (retVal < 0) {
+ ALOGE("%s: Failed to tx message: retval=%d, errno=%d", __FUNCTION__, retVal, errno);
+ }
+ } else {
+ ALOGE("%s: SerializeToString failed!", __FUNCTION__);
+ }
+}
+
+// Updates the property value held in the HAL
+StatusCode DefaultVehicleHal::updateProperty(const VehiclePropValue& propValue) {
+ auto propId = propValue.prop;
+ auto areaId = propValue.areaId;
+ StatusCode status = StatusCode::INVALID_ARG;
+
+ {
+ std::lock_guard<std::mutex> lock(mPropsMutex);
+
+ VehiclePropValue* internalPropValue = getVehiclePropValueLocked(propId, areaId);
+ if (internalPropValue != nullptr) {
+ internalPropValue->value = propValue.value;
+ internalPropValue->timestamp = elapsedRealtimeNano();
+ status = StatusCode::OK;
+ }
+ }
+ return status;
+}
+
+VehicleHal::VehiclePropValuePtr DefaultVehicleHal::get(
+ const VehiclePropValue& requestedPropValue, StatusCode* outStatus) {
+ auto areaId = requestedPropValue.areaId;
+ auto& pool = *getValuePool();
+ auto propId = requestedPropValue.prop;
+ StatusCode status;
+ VehiclePropValuePtr v = nullptr;
+
+ switch (propId) {
+ default:
+ {
+ std::lock_guard<std::mutex> lock(mPropsMutex);
+
+ VehiclePropValue *internalPropValue = getVehiclePropValueLocked(propId, areaId);
+ if (internalPropValue != nullptr) {
+ v = pool.obtain(*internalPropValue);
+ }
+ }
+
+ if (v != nullptr) {
+ status = StatusCode::OK;
+ } else {
+ status = StatusCode::INVALID_ARG;
+ }
+ break;
+ }
+
+ *outStatus = status;
+ return v;
+}
+
+StatusCode DefaultVehicleHal::set(const VehiclePropValue& propValue) {
+ auto propId = propValue.prop;
+ StatusCode status;
+ switch (propId) {
+ default:
+ if (mHvacPowerProps.find(VehicleProperty(propId)) !=
+ mHvacPowerProps.end()) {
+ auto prop = mProps.find(
+ std::make_pair(toInt(VehicleProperty::HVAC_POWER_ON), 0));
+ if (prop != mProps.end()) {
+ if (prop->second->value.int32Values.size() == 1 &&
+ prop->second->value.int32Values[0] == 0) {
+ status = StatusCode::NOT_AVAILABLE;
+ break;
+ }
+ }
+ }
+ status = updateProperty(propValue);
+ if (status == StatusCode::OK) {
+ // Send property update to emulator
+ emulator::EmulatorMessage msg;
+ emulator::VehiclePropValue *val = msg.add_value();
+ populateProtoVehiclePropValue(val, &propValue);
+ msg.set_status(emulator::RESULT_OK);
+ msg.set_msg_type(emulator::SET_PROPERTY_ASYNC);
+ txMsg(msg);
+ }
+ break;
+ }
+
+ return status;
+}
+
+// Parse supported properties list and generate vector of property values to hold current values.
+void DefaultVehicleHal::onCreate() {
+ // Initialize member variables
+ mExit = 0;
+
+ for (auto& prop : kHvacPowerProperties) {
+ mHvacPowerProps.insert(prop);
+ }
+
+ // Get the list of configurations supported by this HAL
+ std::vector<VehiclePropConfig> configs = listProperties();
+
+ for (auto& cfg : configs) {
+ VehiclePropertyType propType = getPropType(cfg.prop);
+ int32_t supportedAreas = cfg.supportedAreas;
+ int32_t vecSize;
+
+ // Set the vector size based on property type
+ switch (propType) {
+ case VehiclePropertyType::BOOLEAN:
+ case VehiclePropertyType::INT32:
+ case VehiclePropertyType::INT64:
+ case VehiclePropertyType::FLOAT:
+ vecSize = 1;
+ break;
+ case VehiclePropertyType::INT32_VEC:
+ case VehiclePropertyType::FLOAT_VEC:
+ case VehiclePropertyType::BYTES:
+ // TODO: Add proper support for these types
+ vecSize = 1;
+ break;
+ case VehiclePropertyType::STRING:
+ // Require individual handling
+ vecSize = 0;
+ break;
+ case VehiclePropertyType::COMPLEX:
+ switch (cfg.prop) {
+ default:
+ // Need to handle each complex property separately
+ break;
+ }
+ continue;
+ break;
+ case VehiclePropertyType::MASK:
+ default:
+ ALOGW("%s: propType=0x%x not found", __FUNCTION__, propType);
+ vecSize = 0;
+ break;
+ }
+
+ // A global property will have supportedAreas = 0
+ if (getPropArea(cfg.prop) == VehicleArea::GLOBAL) {
+ supportedAreas = 0;
+ }
+
+ // This loop is a do-while so it executes at least once to handle global properties
+ do {
+ int32_t curArea = supportedAreas;
+
+ // Clear the right-most bit of supportedAreas
+ supportedAreas &= supportedAreas - 1;
+
+ // Set curArea to the previously cleared bit
+ curArea ^= supportedAreas;
+
+ // Create a separate instance for each individual zone
+ std::unique_ptr<VehiclePropValue> prop = createVehiclePropValue(propType, vecSize);
+ prop->areaId = curArea;
+ prop->prop = cfg.prop;
+ setDefaultValue(prop.get());
+ mProps[std::make_pair(prop->prop, prop->areaId)] = std::move(prop);
+ } while (supportedAreas != 0);
+ }
+
+ // Start rx thread
+ mThread = std::thread(&DefaultVehicleHal::rxThread, this);
+}
+
+} // impl
+
+} // namespace V2_0
+} // namespace vehicle
+} // namespace automotive
+} // namespace hardware
+} // namespace android
diff --git a/automotive/vehicle/2.0/default/impl/DefaultVehicleHal.h b/automotive/vehicle/2.0/default/impl/vhal_v2_0/DefaultVehicleHal.h
similarity index 76%
rename from automotive/vehicle/2.0/default/impl/DefaultVehicleHal.h
rename to automotive/vehicle/2.0/default/impl/vhal_v2_0/DefaultVehicleHal.h
index 4b89f55..1ad8702 100644
--- a/automotive/vehicle/2.0/default/impl/DefaultVehicleHal.h
+++ b/automotive/vehicle/2.0/default/impl/vhal_v2_0/DefaultVehicleHal.h
@@ -17,16 +17,21 @@
#ifndef android_hardware_automotive_vehicle_V2_0_impl_DefaultVehicleHal_H_
#define android_hardware_automotive_vehicle_V2_0_impl_DefaultVehicleHal_H_
+#include <map>
#include <memory>
-
-#include <VehicleHal.h>
-#include <impl/DefaultConfig.h>
#include <sys/socket.h>
#include <thread>
+#include <unordered_set>
+
#include <utils/SystemClock.h>
-#include <vehicle_hal_manager/Obd2SensorStore.h>
+
+#include "CommBase.h"
#include "VehicleHalProto.pb.h"
+#include <vhal_v2_0/VehicleHal.h>
+
+#include "DefaultConfig.h"
+#include "VehicleHalProto.pb.h"
namespace android {
namespace hardware {
@@ -44,13 +49,7 @@
mExit = 1;
// Close emulator socket if it is open
- {
- std::lock_guard<std::mutex> lock(mTxMutex);
- if (mCurSocket != -1) {
- close(mCurSocket);
- mCurSocket = -1;
- }
- }
+ mComm->stop();
mThread.join();
}
@@ -85,34 +84,25 @@
void doGetPropertyAll(emulator::EmulatorMessage& rxMsg, emulator::EmulatorMessage& respMsg);
void doSetProperty(emulator::EmulatorMessage& rxMsg, emulator::EmulatorMessage& respMsg);
VehiclePropValue* getVehiclePropValueLocked(int32_t propId, int32_t areaId);
- void initObd2LiveFrame(VehiclePropConfig& propConfig);
- void initObd2FreezeFrame(VehiclePropConfig& propConfig);
void parseRxProtoBuf(std::vector<uint8_t>& msg);
void populateProtoVehicleConfig(emulator::VehiclePropConfig* protoCfg,
const VehiclePropConfig& cfg);
void populateProtoVehiclePropValue(emulator::VehiclePropValue* protoVal,
const VehiclePropValue* val);
void setDefaultValue(VehiclePropValue* prop);
- void rxMsg(void);
- void rxThread(void);
+ void rxMsg();
+ void rxThread();
void txMsg(emulator::EmulatorMessage& txMsg);
StatusCode updateProperty(const VehiclePropValue& propValue);
- StatusCode fillObd2LiveFrame(VehiclePropValue* v);
- StatusCode fillObd2FreezeFrame(const VehiclePropValue& requestedPropValue,
- VehiclePropValue* v);
- StatusCode fillObd2DtcInfo(VehiclePropValue *v);
- StatusCode clearObd2FreezeFrames(const VehiclePropValue& propValue);
private:
- // TODO: Use a hashtable to support indexing props
- std::vector<std::unique_ptr<VehiclePropValue>> mProps;
- std::atomic<int> mCurSocket;
+ std::map<
+ std::pair<int32_t /*VehicleProperty*/, int32_t /*areaId*/>,
+ std::unique_ptr<VehiclePropValue>> mProps;
std::atomic<int> mExit;
- std::unique_ptr<VehiclePropValue> mLiveObd2Frame {nullptr};
- std::vector<std::unique_ptr<VehiclePropValue>> mFreezeObd2Frames;
+ std::unordered_set<VehicleProperty> mHvacPowerProps;
std::mutex mPropsMutex;
- int mSocket;
- std::mutex mTxMutex;
std::thread mThread;
+ std::unique_ptr<CommBase> mComm{nullptr};
};
} // impl
diff --git a/automotive/vehicle/2.0/default/impl/vhal_v2_0/PipeComm.cpp b/automotive/vehicle/2.0/default/impl/vhal_v2_0/PipeComm.cpp
new file mode 100644
index 0000000..6f219fa
--- /dev/null
+++ b/automotive/vehicle/2.0/default/impl/vhal_v2_0/PipeComm.cpp
@@ -0,0 +1,106 @@
+/*
+ * Copyright (C) 2017 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.
+ */
+
+#define LOG_TAG "PipeComm"
+
+#include <android/hardware/automotive/vehicle/2.0/IVehicle.h>
+#include <android/log.h>
+#include <system/qemu_pipe.h>
+
+#include "PipeComm.h"
+
+#define CAR_SERVICE_NAME "pipe:qemud:car"
+
+
+namespace android {
+namespace hardware {
+namespace automotive {
+namespace vehicle {
+namespace V2_0 {
+
+namespace impl {
+
+PipeComm::PipeComm() {
+ // Initialize member vars
+ mPipeFd = -1;
+}
+
+
+int PipeComm::open() {
+ int fd = qemu_pipe_open(CAR_SERVICE_NAME);
+
+ if (fd < 0) {
+ ALOGE("%s: Could not open connection to service: %s %d", __FUNCTION__, strerror(errno), fd);
+ return -errno;
+ }
+
+ ALOGI("%s: OPENED PIPE, fd=%d", __FUNCTION__, fd);
+ mPipeFd = fd;
+ return 0;
+}
+
+std::vector<uint8_t> PipeComm::read() {
+ static constexpr int MAX_RX_MSG_SZ = 2048;
+ std::vector<uint8_t> msg = std::vector<uint8_t>(MAX_RX_MSG_SZ);
+ int numBytes;
+
+ numBytes = qemu_pipe_frame_recv(mPipeFd, msg.data(), msg.size());
+
+ if (numBytes == MAX_RX_MSG_SZ) {
+ ALOGE("%s: Received max size = %d", __FUNCTION__, MAX_RX_MSG_SZ);
+ } else if (numBytes > 0) {
+ msg.resize(numBytes);
+ return msg;
+ } else {
+ ALOGD("%s: Connection terminated on pipe %d, numBytes=%d", __FUNCTION__, mPipeFd, numBytes);
+ {
+ std::lock_guard<std::mutex> lock(mMutex);
+ mPipeFd = -1;
+ }
+ }
+
+ return std::vector<uint8_t>();
+}
+
+int PipeComm::write(const std::vector<uint8_t>& data) {
+ int retVal = 0;
+
+ {
+ std::lock_guard<std::mutex> lock(mMutex);
+ if (mPipeFd != -1) {
+ retVal = qemu_pipe_frame_send(mPipeFd, data.data(), data.size());
+ }
+ }
+
+ if (retVal < 0) {
+ retVal = -errno;
+ ALOGE("%s: send_cmd: (fd=%d): ERROR: %s", __FUNCTION__, mPipeFd, strerror(errno));
+ }
+
+ return retVal;
+}
+
+
+} // impl
+
+} // namespace V2_0
+} // namespace vehicle
+} // namespace automotive
+} // namespace hardware
+} // namespace android
+
+
+
diff --git a/automotive/vehicle/2.0/default/impl/vhal_v2_0/PipeComm.h b/automotive/vehicle/2.0/default/impl/vhal_v2_0/PipeComm.h
new file mode 100644
index 0000000..bcd32d0
--- /dev/null
+++ b/automotive/vehicle/2.0/default/impl/vhal_v2_0/PipeComm.h
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2017 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.
+ */
+
+#ifndef android_hardware_automotive_vehicle_V2_0_impl_PipeComm_H_
+#define android_hardware_automotive_vehicle_V2_0_impl_PipeComm_H_
+
+#include <mutex>
+#include <vector>
+#include "CommBase.h"
+
+namespace android {
+namespace hardware {
+namespace automotive {
+namespace vehicle {
+namespace V2_0 {
+
+namespace impl {
+
+/**
+ * PipeComm uses a qemu pipe interface to connect to the Goldfish Emulator.
+ */
+class PipeComm : public CommBase {
+public:
+ PipeComm();
+
+ /**
+ * Opens a pipe and begins listening.
+ *
+ * @return int Returns 0 on success.
+ */
+ int open() override;
+
+ /**
+ * Blocking call to read data from the connection.
+ *
+ * @return std::vector<uint8_t> Serialized protobuf data received from emulator. This will be
+ * an empty vector if the connection was closed or some other error occurred.
+ */
+ std::vector<uint8_t> read() override;
+
+ /**
+ * Transmits a string of data to the emulator.
+ *
+ * @param data Serialized protobuf data to transmit.
+ *
+ * @return int Number of bytes transmitted, or -1 if failed.
+ */
+ int write(const std::vector<uint8_t>& data) override;
+
+private:
+ std::mutex mMutex;
+ int mPipeFd;
+};
+
+} // impl
+
+} // namespace V2_0
+} // namespace vehicle
+} // namespace automotive
+} // namespace hardware
+} // namespace android
+
+
+#endif // android_hardware_automotive_vehicle_V2_0_impl_PipeComm_H_
diff --git a/automotive/vehicle/2.0/default/impl/vhal_v2_0/SocketComm.cpp b/automotive/vehicle/2.0/default/impl/vhal_v2_0/SocketComm.cpp
new file mode 100644
index 0000000..a3ef4b1
--- /dev/null
+++ b/automotive/vehicle/2.0/default/impl/vhal_v2_0/SocketComm.cpp
@@ -0,0 +1,190 @@
+/*
+ * Copyright (C) 2017 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.
+ */
+
+#define LOG_TAG "SocketComm"
+
+#include <android/hardware/automotive/vehicle/2.0/IVehicle.h>
+#include <android/log.h>
+#include <netinet/in.h>
+#include <sys/socket.h>
+
+#include "SocketComm.h"
+
+// Socket to use when communicating with Host PC
+static constexpr int DEBUG_SOCKET = 33452;
+
+namespace android {
+namespace hardware {
+namespace automotive {
+namespace vehicle {
+namespace V2_0 {
+
+namespace impl {
+
+SocketComm::SocketComm() {
+ // Initialize member vars
+ mCurSockFd = -1;
+ mExit = 0;
+ mSockFd = -1;
+}
+
+
+SocketComm::~SocketComm() {
+ stop();
+}
+
+int SocketComm::connect() {
+ sockaddr_in cliAddr;
+ socklen_t cliLen = sizeof(cliAddr);
+ int cSockFd = accept(mSockFd, reinterpret_cast<struct sockaddr*>(&cliAddr), &cliLen);
+
+ if (cSockFd >= 0) {
+ {
+ std::lock_guard<std::mutex> lock(mMutex);
+ mCurSockFd = cSockFd;
+ }
+ ALOGD("%s: Incoming connection received on socket %d", __FUNCTION__, cSockFd);
+ } else {
+ cSockFd = -1;
+ }
+
+ return cSockFd;
+}
+
+int SocketComm::open() {
+ int retVal;
+ struct sockaddr_in servAddr;
+
+ mSockFd = socket(AF_INET, SOCK_STREAM, 0);
+ if (mSockFd < 0) {
+ ALOGE("%s: socket() failed, mSockFd=%d, errno=%d", __FUNCTION__, mSockFd, errno);
+ mSockFd = -1;
+ return -errno;
+ }
+
+ memset(&servAddr, 0, sizeof(servAddr));
+ servAddr.sin_family = AF_INET;
+ servAddr.sin_addr.s_addr = INADDR_ANY;
+ servAddr.sin_port = htons(DEBUG_SOCKET);
+
+ retVal = bind(mSockFd, reinterpret_cast<struct sockaddr*>(&servAddr), sizeof(servAddr));
+ if(retVal < 0) {
+ ALOGE("%s: Error on binding: retVal=%d, errno=%d", __FUNCTION__, retVal, errno);
+ close(mSockFd);
+ mSockFd = -1;
+ return -errno;
+ }
+
+ listen(mSockFd, 1);
+
+ // Set the socket to be non-blocking so we can poll it continouously
+ fcntl(mSockFd, F_SETFL, O_NONBLOCK);
+
+ return 0;
+}
+
+std::vector<uint8_t> SocketComm::read() {
+ int32_t msgSize;
+ int numBytes = 0;
+
+ // This is a variable length message.
+ // Read the number of bytes to rx over the socket
+ numBytes = ::read(mCurSockFd, &msgSize, sizeof(msgSize));
+ msgSize = ntohl(msgSize);
+
+ if (numBytes != sizeof(msgSize)) {
+ // This happens when connection is closed
+ ALOGD("%s: numBytes=%d, expected=4", __FUNCTION__, numBytes);
+ ALOGD("%s: Connection terminated on socket %d", __FUNCTION__, mCurSockFd);
+ {
+ std::lock_guard<std::mutex> lock(mMutex);
+ mCurSockFd = -1;
+ }
+
+ return std::vector<uint8_t>();
+ }
+
+ std::vector<uint8_t> msg = std::vector<uint8_t>(msgSize);
+
+ numBytes = ::read(mCurSockFd, msg.data(), msgSize);
+
+ if ((numBytes == msgSize) && (msgSize > 0)) {
+ // Received a message.
+ return msg;
+ } else {
+ // This happens when connection is closed
+ ALOGD("%s: numBytes=%d, msgSize=%d", __FUNCTION__, numBytes, msgSize);
+ ALOGD("%s: Connection terminated on socket %d", __FUNCTION__, mCurSockFd);
+ {
+ std::lock_guard<std::mutex> lock(mMutex);
+ mCurSockFd = -1;
+ }
+
+ return std::vector<uint8_t>();
+ }
+}
+
+void SocketComm::stop() {
+ if (mExit == 0) {
+ std::lock_guard<std::mutex> lock(mMutex);
+ mExit = 1;
+
+ // Close emulator socket if it is open
+ if (mCurSockFd != -1) {
+ close(mCurSockFd);
+ mCurSockFd = -1;
+ }
+
+ if (mSockFd != -1) {
+ close(mSockFd);
+ mSockFd = -1;
+ }
+ }
+}
+
+int SocketComm::write(const std::vector<uint8_t>& data) {
+ static constexpr int MSG_HEADER_LEN = 4;
+ int retVal = 0;
+ union {
+ uint32_t msgLen;
+ uint8_t msgLenBytes[MSG_HEADER_LEN];
+ };
+
+ // Prepare header for the message
+ msgLen = static_cast<uint32_t>(data.size());
+ msgLen = htonl(msgLen);
+
+ std::lock_guard<std::mutex> lock(mMutex);
+ if (mCurSockFd != -1) {
+ retVal = ::write(mCurSockFd, msgLenBytes, MSG_HEADER_LEN);
+
+ if (retVal == MSG_HEADER_LEN) {
+ retVal = ::write(mCurSockFd, data.data(), data.size());
+ }
+ }
+
+ return retVal;
+}
+
+
+} // impl
+
+} // namespace V2_0
+} // namespace vehicle
+} // namespace automotive
+} // namespace hardware
+} // namespace android
+
diff --git a/automotive/vehicle/2.0/default/impl/vhal_v2_0/SocketComm.h b/automotive/vehicle/2.0/default/impl/vhal_v2_0/SocketComm.h
new file mode 100644
index 0000000..12cfb29
--- /dev/null
+++ b/automotive/vehicle/2.0/default/impl/vhal_v2_0/SocketComm.h
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2017 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.
+ */
+
+#ifndef android_hardware_automotive_vehicle_V2_0_impl_SocketComm_H_
+#define android_hardware_automotive_vehicle_V2_0_impl_SocketComm_H_
+
+#include <mutex>
+#include <vector>
+#include "CommBase.h"
+
+namespace android {
+namespace hardware {
+namespace automotive {
+namespace vehicle {
+namespace V2_0 {
+
+namespace impl {
+
+/**
+ * SocketComm opens a socket via adb's TCP port forwarding to enable a Host PC to connect to
+ * the VehicleHAL.
+ */
+class SocketComm : public CommBase {
+public:
+ SocketComm();
+ virtual ~SocketComm();
+
+ /**
+ * Creates a connection to the other side.
+ *
+ * @return int Returns fd or socket number if connection is successful.
+ * Otherwise, returns -1 if no connection is availble.
+ */
+ int connect() override;
+
+ /**
+ * Opens a socket and begins listening.
+ *
+ * @return int Returns 0 on success.
+ */
+ int open() override;
+
+ /**
+ * Blocking call to read data from the connection.
+ *
+ * @return std::vector<uint8_t> Serialized protobuf data received from emulator. This will be
+ * an empty vector if the connection was closed or some other error occurred.
+ */
+ std::vector<uint8_t> read() override;
+
+ /**
+ * Closes a connection if it is open.
+ */
+ void stop() override;
+
+ /**
+ * Transmits a string of data to the emulator.
+ *
+ * @param data Serialized protobuf data to transmit.
+ *
+ * @return int Number of bytes transmitted, or -1 if failed.
+ */
+ int write(const std::vector<uint8_t>& data) override;
+
+private:
+ int mCurSockFd;
+ std::atomic<int> mExit;
+ std::mutex mMutex;
+ int mSockFd;
+};
+
+} // impl
+
+} // namespace V2_0
+} // namespace vehicle
+} // namespace automotive
+} // namespace hardware
+} // namespace android
+
+
+#endif // android_hardware_automotive_vehicle_V2_0_impl_SocketComm_H_
diff --git a/automotive/vehicle/2.0/default/impl/proto/VehicleHalProto.proto b/automotive/vehicle/2.0/default/impl/vhal_v2_0/proto/VehicleHalProto.proto
similarity index 100%
rename from automotive/vehicle/2.0/default/impl/proto/VehicleHalProto.proto
rename to automotive/vehicle/2.0/default/impl/vhal_v2_0/proto/VehicleHalProto.proto
diff --git a/automotive/vehicle/2.0/default/tests/AccessControlConfigParser_test.cpp b/automotive/vehicle/2.0/default/tests/AccessControlConfigParser_test.cpp
index 6922b86..d9611c0 100644
--- a/automotive/vehicle/2.0/default/tests/AccessControlConfigParser_test.cpp
+++ b/automotive/vehicle/2.0/default/tests/AccessControlConfigParser_test.cpp
@@ -19,8 +19,8 @@
#include <fstream>
#include <unordered_set>
-#include "vehicle_hal_manager/AccessControlConfigParser.h"
-#include <vehicle_hal_manager/VehicleUtils.h>
+#include "vhal_v2_0/AccessControlConfigParser.h"
+#include "vhal_v2_0/VehicleUtils.h"
namespace android {
namespace hardware {
diff --git a/automotive/vehicle/2.0/default/tests/SubscriptionManager_test.cpp b/automotive/vehicle/2.0/default/tests/SubscriptionManager_test.cpp
index c6c6add..e13d003 100644
--- a/automotive/vehicle/2.0/default/tests/SubscriptionManager_test.cpp
+++ b/automotive/vehicle/2.0/default/tests/SubscriptionManager_test.cpp
@@ -19,7 +19,7 @@
#include <gtest/gtest.h>
-#include "vehicle_hal_manager/SubscriptionManager.h"
+#include "vhal_v2_0/SubscriptionManager.h"
#include "VehicleHalTestUtils.h"
diff --git a/automotive/vehicle/2.0/default/tests/VehicleHalManager_test.cpp b/automotive/vehicle/2.0/default/tests/VehicleHalManager_test.cpp
index 274a843..f637344 100644
--- a/automotive/vehicle/2.0/default/tests/VehicleHalManager_test.cpp
+++ b/automotive/vehicle/2.0/default/tests/VehicleHalManager_test.cpp
@@ -21,7 +21,7 @@
#include <gtest/gtest.h>
-#include "vehicle_hal_manager/VehicleHalManager.h"
+#include "vhal_v2_0/VehicleHalManager.h"
#include "VehicleHalTestUtils.h"
diff --git a/automotive/vehicle/2.0/default/tests/VehicleHalTestUtils.h b/automotive/vehicle/2.0/default/tests/VehicleHalTestUtils.h
index 8ba36d8..ce1ed7d 100644
--- a/automotive/vehicle/2.0/default/tests/VehicleHalTestUtils.h
+++ b/automotive/vehicle/2.0/default/tests/VehicleHalTestUtils.h
@@ -18,10 +18,11 @@
#define android_hardware_automotive_vehicle_V2_0_VehicleDebugUtils_H_
#include <android/hardware/automotive/vehicle/2.0/types.h>
-#include <vehicle_hal_manager/VehicleUtils.h>
#include <ios>
#include <sstream>
+#include "vhal_v2_0/VehicleUtils.h"
+
namespace android {
namespace hardware {
namespace automotive {
diff --git a/automotive/vehicle/2.0/default/tests/VehicleObjectPool_test.cpp b/automotive/vehicle/2.0/default/tests/VehicleObjectPool_test.cpp
index 7d37355..a291351 100644
--- a/automotive/vehicle/2.0/default/tests/VehicleObjectPool_test.cpp
+++ b/automotive/vehicle/2.0/default/tests/VehicleObjectPool_test.cpp
@@ -20,7 +20,7 @@
#include <utils/SystemClock.h>
-#include "vehicle_hal_manager/VehicleObjectPool.h"
+#include "vhal_v2_0/VehicleObjectPool.h"
namespace android {
namespace hardware {
diff --git a/automotive/vehicle/2.0/default/tests/VehiclePropConfigIndex_test.cpp b/automotive/vehicle/2.0/default/tests/VehiclePropConfigIndex_test.cpp
index fad4ab3..0f65820 100644
--- a/automotive/vehicle/2.0/default/tests/VehiclePropConfigIndex_test.cpp
+++ b/automotive/vehicle/2.0/default/tests/VehiclePropConfigIndex_test.cpp
@@ -16,7 +16,7 @@
#include <gtest/gtest.h>
-#include "vehicle_hal_manager/VehiclePropConfigIndex.h"
+#include "vhal_v2_0/VehiclePropConfigIndex.h"
#include "VehicleHalTestUtils.h"
diff --git a/automotive/vehicle/2.0/types.hal b/automotive/vehicle/2.0/types.hal
index 68a8a17..0d2dfdd 100644
--- a/automotive/vehicle/2.0/types.hal
+++ b/automotive/vehicle/2.0/types.hal
@@ -226,28 +226,6 @@
| VehicleArea:GLOBAL),
/*
- * Reports wheel rotational distance in meters since last wheel tick
- * event
- *
- * The value is a vector each element represents distance for individual
- * wheel in the following order: left front, right front, left rear,
- * right rear. VehiclePropValue.timestamp must be correctly filled in.
- *
- * Vendors must specify wheels that support this sensor in
- * VehiclePropConfig.configFlags. The format of this field is a bitset of
- * values from Wheel enum.
- *
- * @change_mode VehiclePropertyChangeMode:ON_CHANGE|VehiclePropertyChangeMode:CONTINUOUS
- * @access VehiclePropertyAccess:READ
- * @unit VehicleUnit:METER
- */
- WHEEL_TICK = (
- 0x0306
- | VehiclePropertyGroup:SYSTEM
- | VehiclePropertyType:FLOAT_VEC
- | VehicleArea:GLOBAL),
-
- /*
* Currently selected gear
*
* @change_mode VehiclePropertyChangeMode:ON_CHANGE
@@ -352,9 +330,12 @@
/*
* Fan speed setting
*
+ * IVehicle#set may return StatusCode::NOT_AVAILABLE and IVehicle#get is not
+ * guaranteed to work if HVAC unit is off. See HVAC_POWER_ON property for
+ * details.
+ *
* @change_mode VehiclePropertyChangeMode:ON_CHANGE
* @access VehiclePropertyAccess:READ_WRITE
- * @allow_out_of_range_value : OFF
*/
HVAC_FAN_SPEED = (
0x0500
@@ -365,10 +346,13 @@
/*
* Fan direction setting
*
+ * IVehicle#set may return StatusCode::NOT_AVAILABLE and IVehicle#get is not
+ * guaranteed to work if HVAC unit is off. See HVAC_POWER_ON property for
+ * details.
+ *
* @change_mode VehiclePropertyChangeMode:ON_CHANGE
* @access VehiclePropertyAccess:READ_WRITE
* @data_enum VehicleHvacFanDirection
- * @allow_out_of_range_value : OFF
*/
HVAC_FAN_DIRECTION = (
0x0501
@@ -379,6 +363,10 @@
/*
* HVAC current temperature.
*
+ * IVehicle#set may return StatusCode::NOT_AVAILABLE and IVehicle#get is not
+ * guaranteed to work if HVAC unit is off. See HVAC_POWER_ON property for
+ * details.
+ *
* @change_mode VehiclePropertyChangeMode:ON_CHANGE
* @access VehiclePropertyAccess:READ_WRITE
*/
@@ -391,9 +379,12 @@
/*
* HVAC, target temperature set.
*
+ * IVehicle#set may return StatusCode::NOT_AVAILABLE and IVehicle#get is not
+ * guaranteed to work if HVAC unit is off. See HVAC_POWER_ON property for
+ * details.
+ *
* @change_mode VehiclePropertyChangeMode:ON_CHANGE
* @access VehiclePropertyAccess:READ_WRITE
- * @allow_out_of_range_value : MIN / MAX / OFF
*/
HVAC_TEMPERATURE_SET = (
0x0503
@@ -404,6 +395,10 @@
/*
* On/off defrost
*
+ * IVehicle#set may return StatusCode::NOT_AVAILABLE and IVehicle#get is not
+ * guaranteed to work if HVAC unit is off. See HVAC_POWER_ON property for
+ * details.
+ *
* @change_mode VehiclePropertyChangeMode:ON_CHANGE
* @access VehiclePropertyAccess:READ_WRITE
*/
@@ -416,6 +411,10 @@
/*
* On/off AC
*
+ * IVehicle#set may return StatusCode::NOT_AVAILABLE and IVehicle#get is not
+ * guaranteed to work if HVAC unit is off. See HVAC_POWER_ON property for
+ * details.
+ *
* @change_mode VehiclePropertyChangeMode:ON_CHANGE
* @access VehiclePropertyAccess:READ_WRITE
* @config_flags Supported zones
@@ -429,6 +428,10 @@
/*
* On/off max AC
*
+ * IVehicle#set may return StatusCode::NOT_AVAILABLE and IVehicle#get is not
+ * guaranteed to work if HVAC unit is off. See HVAC_POWER_ON property for
+ * details.
+ *
* @change_mode VehiclePropertyChangeMode:ON_CHANGE
* @access VehiclePropertyAccess:READ_WRITE
*/
@@ -441,6 +444,10 @@
/*
* On/off max defrost
*
+ * IVehicle#set may return StatusCode::NOT_AVAILABLE and IVehicle#get is not
+ * guaranteed to work if HVAC unit is off. See HVAC_POWER_ON property for
+ * details.
+ *
* @change_mode VehiclePropertyChangeMode:ON_CHANGE
* @access VehiclePropertyAccess:READ_WRITE
*/
@@ -453,6 +460,10 @@
/*
* On/off re-circulation
*
+ * IVehicle#set may return StatusCode::NOT_AVAILABLE and IVehicle#get is not
+ * guaranteed to work if HVAC unit is off. See HVAC_POWER_ON property for
+ * details.
+ *
* @change_mode VehiclePropertyChangeMode:ON_CHANGE
* @access VehiclePropertyAccess:READ_WRITE
*/
@@ -465,6 +476,10 @@
/*
* On/off dual. This must be defined per each row.
*
+ * IVehicle#set may return StatusCode::NOT_AVAILABLE and IVehicle#get is not
+ * guaranteed to work if HVAC unit is off. See HVAC_POWER_ON property for
+ * details.
+ *
* @change_mode VehiclePropertyChangeMode:ON_CHANGE
* @access VehiclePropertyAccess:READ_WRITE
*/
@@ -477,6 +492,10 @@
/*
* On/off automatic mode
*
+ * IVehicle#set may return StatusCode::NOT_AVAILABLE and IVehicle#get is not
+ * guaranteed to work if HVAC unit is off. See HVAC_POWER_ON property for
+ * details.
+ *
* @change_mode VehiclePropertyChangeMode:ON_CHANGE
* @access VehiclePropertyAccess:READ_WRITE
*/
@@ -497,6 +516,10 @@
* min/max range defines the allowable range and number of steps in each
* direction.
*
+ * IVehicle#set may return StatusCode::NOT_AVAILABLE and IVehicle#get is not
+ * guaranteed to work if HVAC unit is off. See HVAC_POWER_ON property for
+ * details.
+ *
* @change_mode VehiclePropertyChangeMode:ON_CHANGE
* @access VehiclePropertyAccess:READ_WRITE
*/
@@ -512,8 +535,12 @@
* Increase values denote higher heating levels for side mirrors.
* 0 indicates heating is turned off.
*
- * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
- * @access VEHICLE_PROP_ACCESS_READ_WRITE
+ * IVehicle#set may return StatusCode::NOT_AVAILABLE and IVehicle#get is not
+ * guaranteed to work if HVAC unit is off. See HVAC_POWER_ON property for
+ * details.
+ *
+ * @change_mode VehiclePropertyChangeMode:ON_CHANGE
+ * @access VehiclePropertyAccess:READ_WRITE
*/
HVAC_SIDE_MIRROR_HEAT = (
0x050C
@@ -529,8 +556,12 @@
* Negative value indicates cooling.
* 0 indicates temperature control is off.
*
- * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
- * @access VEHICLE_PROP_ACCESS_READ_WRITE
+ * IVehicle#set may return StatusCode::NOT_AVAILABLE and IVehicle#get is not
+ * guaranteed to work if HVAC unit is off. See HVAC_POWER_ON property for
+ * details.
+ *
+ * @change_mode VehiclePropertyChangeMode:ON_CHANGE
+ * @access VehiclePropertyAccess:READ_WRITE
*/
HVAC_STEERING_WHEEL_TEMP = (
0x050D
@@ -545,8 +576,11 @@
* different unit from VehicleUnit enum.
* This parameter affects all HVAC temperatures in the system.
*
- * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
- * @access VEHICLE_PROP_ACCESS_READ
+ * IVehicle#get is not guaranteed to work if HVAC unit is off. See
+ * HVAC_POWER_ON property for details.
+ *
+ * @change_mode VehiclePropertyChangeMode:ON_CHANGE
+ * @access VehiclePropertyAccess:READ
*/
HVAC_TEMPERATURE_UNITS = (
0x050E
@@ -557,9 +591,11 @@
/**
* Actual fan speed
*
- * @change_mode VEHICLE_PROP_CHANGE_MODE_ON_CHANGE
- * @access VEHICLE_PROP_ACCESS_READ
- * @allow_out_of_range_value : OFF
+ * IVehicle#get is not guaranteed to work if HVAC unit is off. See
+ * HVAC_POWER_ON property for details.
+ *
+ * @change_mode VehiclePropertyChangeMode:ON_CHANGE
+ * @access VehiclePropertyAccess:READ
*/
HVAC_ACTUAL_FAN_SPEED_RPM = (
0x050F
@@ -577,9 +613,8 @@
*
* 0x12 = (1 << 1) | (1 << 4)
*
- * @change_mode VEHICLE_PROP_CHANGE_MODE_STATIC
- * @access VEHICLE_PROP_ACCESS_READ
- * @allow_out_of_range_value : OFF
+ * @change_mode VehiclePropertyChangeMode:STATIC
+ * @access VehiclePropertyAccess:READ
*/
HVAC_FAN_DIRECTION_AVAILABLE = (
0x0511
@@ -1775,138 +1810,8 @@
| VehiclePropertyGroup:SYSTEM
| VehiclePropertyType:COMPLEX
| VehicleArea:GLOBAL),
-
- /*
- * OBD2 Live Sensor Data
- *
- * This property uses COMPLEX data to send a snapshot of the current (live)
- * values of the OBD2 sensors provided by the vehicle.
- *
- * VehiclePropConfig
- * configArray[0] : number of vendor-specific integer-valued sensors
- * that can be returned in a frame.
- * configArray[1] : number of vendor-specific float-valued sensors
- * that can be returned in a frame.
- *
- * The values are to be interpreted as follows:
- * the indices defined in Obd2IntegerSensorIndex are to be used to
- * read from int32Values;
- * the indices defined in Obd2FloatSensorIndex are to be used to
- * read from floatValues.
- * the elements of bytes are to be interpreted as a bitmask, such that
- * the bits 0 thru the integer value of
- * Obd2IntegerSensorIndex.LAST_SYSTEM_INDEX + the value of configArray[0]
- * are 1 if the corresponding index is a valid sensor index whose value can
- * be read in the returned int32Values vector, 0 otherwise.
- * the bits Obd2IntegerSensorIndex.LAST_SYSTEM_INDEX+1 thru
- * Obd2FloatingSensorIndex.LAST_SYSTEM_INDEX + the value of configArray[1]
- * are 1 if the corresponding index is a valid sensor index whose value
- * can be read in the returned floatValues vector, 0 otherwise.
- *
- * For example, int32Values[0] corresponds to FUEL_SYSTEM_STATUS, and
- * floatValues[0] corresponds to CALCULATED_ENGINE_LOAD, but that mapping
- * is only valid if the corresponding bits in the bytes vector are set to 1.
- *
- * @change_mode VehiclePropertyChangeMode:ON_CHANGE
- * @access VehiclePropertyAccess:READ
- */
- OBD2_LIVE_FRAME = (
- 0x0D00
- | VehiclePropertyGroup:SYSTEM
- | VehiclePropertyType:COMPLEX
- | VehicleArea:GLOBAL),
-
- /*
- * OBD2 Freeze Frame Sensor Data
- *
- * This property uses COMPLEX data to send a snapshot of the values of the
- * OBD2 sensors provided by the vehicle at the time that a diagnostic
- * troubleshooting code (DTC) was recorded by the vehicle.
- *
- * VehiclePropConfig
- * configArray[0] : number of vendor-specific integer-valued sensors
- * that can be returned in a frame.
- * configArray[1] : number of vendor-specific float-valued sensors
- * that can be returned in a frame.
- *
- * A get of this property must take the following form:
- * int64Values[0]: timestamp of the freeze frame to retrieve.
- * Valid timestamps are given by OBD2_DTC_INFO.
- *
- * The values are to be interpreted as follows:
- * the indices defined in Obd2IntegerSensorIndex are to be used to
- * read from int32Values;
- * the indices defined in Obd2FloatSensorIndex are to be used to
- * read from floatValues;
- * the elements of bytes are to be interpreted as a bitmask, such that
- * the bits 0 thru the integer value of
- * Obd2IntegerSensorIndex.LAST_SYSTEM_INDEX + the value of configArray[0]
- * are 1 if the corresponding index is a valid sensor index whose value can
- * be read in the returned int32Values vector, 0 otherwise.
- * the bits Obd2IntegerSensorIndex.LAST_SYSTEM_INDEX+1 thru
- * Obd2FloatingSensorIndex.LAST_SYSTEM_INDEX + the value of configArray[1]
- * are 1 if the corresponding index is a valid sensor index whose value
- * can be read in the returned floatValues vector, 0 otherwise.
- * stringValue is the DTC that caused this freeze frame to be recorded.
- *
- * For example, int32Values[0] corresponds to FUEL_SYSTEM_STATUS, and
- * floatValues[0] corresponds to CALCULATED_ENGINE_LOAD, but that mapping
- * is only valid if the corresponding bits in the bytes vector are set to 1,
- * and a possible valid stringValue is "P0176" to indicate a malfunction
- * of the fuel composition sensor circuit.
- *
- * @change_mode VehiclePropertyChangeMode:ON_CHANGE
- * @access VehiclePropertyAccess:READ
- */
- OBD2_FREEZE_FRAME = (
- 0x0D01
- | VehiclePropertyGroup:SYSTEM
- | VehiclePropertyType:COMPLEX
- | VehicleArea:GLOBAL),
-
- /*
- * OBD2 Freeze Frame Information
- *
- * This property describes the current freeze frames stored in vehicle
- * memory and available for retrieval via OBD2_FREEZE_FRAME.
- *
- * The values are to be interpreted as follows:
- * each element of int64Values is the timestamp at which a a fault code
- * has been detected and the corresponding freeze frame stored, and each
- * such element can be used as the key to OBD2_FREEZE_FRAME to retrieve
- * the corresponding freeze frame.
- *
- * @change_mode VehiclePropertyChangeMode:ON_CHANGE
- * @access VehiclePropertyAccess:READ
- */
- OBD2_FREEZE_FRAME_INFO = (
- 0x0D02
- | VehiclePropertyGroup:SYSTEM
- | VehiclePropertyType:COMPLEX
- | VehicleArea:GLOBAL),
-
- /*
- * OBD2 Freeze Frame Clear
- *
- * This property allows deletion of any of the freeze frames stored in
- * vehicle memory, as described by OBD2_DTC_INFO.
- *
- * A set of this property is to be interpreted as follows:
- * if int64Values contains no elements, then all DTCs stored will be cleared;
- * if int64Values contains one or more elements, then DTCs at the timestamps
- * stored in int64Values will be cleared, and the others not cleared, except
- * the memory will be compacted so that all remaining DTCs are stored
- * contiguously.
- *
- * @change_mode VehiclePropertyChangeMode:ON_CHANGE
- * @access VehiclePropertyAccess:WRITE
- */
- OBD2_FREEZE_FRAME_CLEAR = (
- 0x0D03
- | VehiclePropertyGroup:SYSTEM
- | VehiclePropertyType:COMPLEX
- | VehicleArea:GLOBAL),
};
+
/*
* Bit flags for fan direction
*/
@@ -2794,86 +2699,6 @@
INTERNAL_ERROR = 5,
};
-/* The status of a fuel system as described by the OBD2 specification. */
-enum FuelSystemStatus : int32_t {
- OPEN_INSUFFICIENT_ENGINE_TEMPERATURE = 1,
-
- CLOSED_LOOP = 2,
-
- OPEN_ENGINE_LOAD_OR_DECELERATION = 4,
-
- OPEN_SYSTEM_FAILURE = 8,
-
- CLOSED_LOOP_BUT_FEEDBACK_FAULT = 16,
-};
-
-/* Defines which ignition monitors are available to be read. */
-enum IgnitionMonitorKind : int32_t {
- SPARK = 0,
-
- COMPRESSION = 1,
-};
-
-/* These ignition monitors are common to both SPARK and COMPRESSION. */
-enum CommonIgnitionMonitors : int32_t {
- COMPONENTS_AVAILABLE = 0x1 << 0,
- COMPONENTS_INCOMPLETE = 0x1 << 1,
-
- FUEL_SYSTEM_AVAILABLE = 0x1 << 2,
- FUEL_SYSTEM_INCOMPLETE = 0x1 << 3,
-
- MISFIRE_AVAILABLE = 0x1 << 4,
- MISFIRE_INCOMPLETE = 0x1 << 5,
-};
-
-/* Ignition monitors available for SPARK vehicles. */
-enum SparkIgnitionMonitors : CommonIgnitionMonitors {
- EGR_AVAILABLE = 0x1 << 6,
- EGR_INCOMPLETE = 0x1 << 7,
-
- OXYGEN_SENSOR_HEATER_AVAILABLE = 0x1 << 8,
- OXYGEN_SENSOR_HEATER_INCOMPLETE = 0x1 << 9,
-
- OXYGEN_SENSOR_AVAILABLE = 0x1 << 10,
- OXYGEN_SENSOR_INCOMPLETE = 0x1 << 11,
-
- AC_REFRIGERANT_AVAILABLE = 0x1 << 12,
- AC_REFRIGERANT_INCOMPLETE = 0x1 << 13,
-
- SECONDARY_AIR_SYSTEM_AVAILABLE = 0x1 << 14,
- SECONDARY_AIR_SYSTEM_INCOMPLETE = 0x1 << 15,
-
- EVAPORATIVE_SYSTEM_AVAILABLE = 0x1 << 16,
- EVAPORATIVE_SYSTEM_INCOMPLETE = 0x1 << 17,
-
- HEATED_CATALYST_AVAILABLE = 0x1 << 18,
- HEATED_CATALYST_INCOMPLETE = 0x1 << 19,
-
- CATALYST_AVAILABLE = 0x1 << 20,
- CATALYST_INCOMPLETE = 0x1 << 21,
-};
-
-/* Ignition monitors only available for COMPRESSION vehicles. */
-enum CompressionIgnitionMonitors : CommonIgnitionMonitors {
- EGR_OR_VVT_AVAILABLE = 0x1 << 6,
- EGR_OR_VVT_INCOMPLETE = 0x1 << 7,
-
- PM_FILTER_AVAILABLE = 0x1 << 8,
- PM_FILTER_INCOMPLETE = 0x1 << 9,
-
- EXHAUST_GAS_SENSOR_AVAILABLE = 0x1 << 10,
- EXHAUST_GAS_SENSOR_INCOMPLETE = 0x1 << 11,
-
- BOOST_PRESSURE_AVAILABLE = 0x1 << 12,
- BOOST_PRESSURE_INCOMPLETE = 0x1 << 13,
-
- NOx_SCR__AVAILABLE = 0x1 << 14,
- NOx_SCR_INCOMPLETE = 0x1 << 15,
-
- NMHC_CATALYST_AVAILABLE = 0x1 << 16,
- NMHC_CATALYST_INCOMPLETE = 0x1 << 17,
-};
-
enum Wheel : int32_t {
UNKNOWN = 0x0,
@@ -2883,306 +2708,6 @@
RIGHT_REAR = 0x8,
};
-enum SecondaryAirStatus : int32_t {
- UPSTREAM = 1,
-
- DOWNSTREAM_OF_CATALYCIC_CONVERTER = 2,
-
- FROM_OUTSIDE_OR_OFF = 4,
-
- PUMP_ON_FOR_DIAGNOSTICS = 8,
-};
-
-enum FuelType : int32_t {
- NOT_AVAILABLE = 0,
-
- GASOLINE = 1,
-
- METHANOL = 2,
-
- ETHANOL = 3,
-
- DIESEL = 4,
-
- LPG = 5,
-
- CNG = 6,
-
- PROPANE = 7,
-
- ELECTRIC = 8,
-
- BIFUEL_RUNNING_GASOLINE = 9,
-
- BIFUEL_RUNNING_METHANOL = 10,
-
- BIFUEL_RUNNING_ETHANOL = 11,
-
- BIFUEL_RUNNING_LPG = 12,
-
- BIFUEL_RUNNING_CNG = 13,
-
- BIFUEL_RUNNING_PROPANE = 14,
-
- BIFUEL_RUNNING_ELECTRIC = 15,
-
- BIFUEL_RUNNING_ELECTRIC_AND_COMBUSTION = 16,
-
- HYBRID_GASOLINE = 17,
-
- HYBRID_ETHANOL = 18,
-
- HYBRID_DIESEL = 19,
-
- HYBRID_ELECTRIC = 20,
-
- HYBRID_RUNNING_ELECTRIC_AND_COMBUSTION = 21,
-
- HYBRID_REGENERATIVE = 22,
-
- BIFUEL_RUNNING_DIESEL = 23,
-};
-
-/*
- * This enum provides the canonical mapping for sensor properties that have an integer value.
- * The ordering of the values is taken from the OBD2 specification.
- * Some of the properties are represented as an integer mapping to another enum. In those cases
- * expect a comment by the property definition describing the enum to look at for the mapping.
- * Any value greater than the last reserved index is available to vendors to map their extensions.
- */
-enum Obd2IntegerSensorIndex : int32_t {
- /* refer to FuelSystemStatus for a description of this value. */
- FUEL_SYSTEM_STATUS = 0,
-
- MALFUNCTION_INDICATOR_LIGHT_ON = 1,
-
- /* refer to IgnitionMonitorKind for a description of this value. */
- IGNITION_MONITORS_SUPPORTED = 2,
-
- /*
- * The value of this sensor is a bitmask that specifies whether ignition-specific
- * tests are available and whether they are complete. The semantics of the individual
- * bits in this value are given by, respectively, SparkIgnitionMonitors and
- * CompressionIgnitionMonitors depending on the value of IGNITION_MONITORS_SUPPORTED.
- */
- IGNITION_SPECIFIC_MONITORS = 3,
-
- INTAKE_AIR_TEMPERATURE = 4,
-
- /* refer to SecondaryAirStatus for a description of this value. */
- COMMANDED_SECONDARY_AIR_STATUS = 5,
-
- NUM_OXYGEN_SENSORS_PRESENT = 6,
-
- RUNTIME_SINCE_ENGINE_START = 7,
-
- DISTANCE_TRAVELED_WITH_MALFUNCTION_INDICATOR_LIGHT_ON = 8,
-
- WARMUPS_SINCE_CODES_CLEARED = 9,
-
- DISTANCE_TRAVELED_SINCE_CODES_CLEARED = 10,
-
- ABSOLUTE_BAROMETRIC_PRESSURE = 11,
-
- CONTROL_MODULE_VOLTAGE = 12,
-
- AMBIENT_AIR_TEMPERATURE = 13,
-
- TIME_WITH_MALFUNCTION_LIGHT_ON = 14,
-
- TIME_SINCE_TROUBLE_CODES_CLEARED = 15,
-
- MAX_FUEL_AIR_EQUIVALENCE_RATIO = 16,
-
- MAX_OXYGEN_SENSOR_VOLTAGE = 17,
-
- MAX_OXYGEN_SENSOR_CURRENT = 18,
-
- MAX_INTAKE_MANIFOLD_ABSOLUTE_PRESSURE = 19,
-
- MAX_AIR_FLOW_RATE_FROM_MASS_AIR_FLOW_SENSOR = 20,
-
- /* refer to FuelType for a description of this value. */
- FUEL_TYPE = 21,
-
- FUEL_RAIL_ABSOLUTE_PRESSURE = 22,
-
- ENGINE_OIL_TEMPERATURE = 23,
-
- DRIVER_DEMAND_PERCENT_TORQUE = 24,
-
- ENGINE_ACTUAL_PERCENT_TORQUE = 25,
-
- ENGINE_REFERENCE_PERCENT_TORQUE = 26,
-
- ENGINE_PERCENT_TORQUE_DATA_IDLE = 27,
-
- ENGINE_PERCENT_TORQUE_DATA_POINT1 = 28,
-
- ENGINE_PERCENT_TORQUE_DATA_POINT2 = 29,
-
- ENGINE_PERCENT_TORQUE_DATA_POINT3 = 30,
-
- ENGINE_PERCENT_TORQUE_DATA_POINT4 = 31,
-
- LAST_SYSTEM_INDEX = ENGINE_PERCENT_TORQUE_DATA_POINT4,
-
- VENDOR_START_INDEX = LAST_SYSTEM_INDEX + 1,
-};
-
-/*
- * This enum provides the canonical mapping for sensor properties that have a floating-point value.
- * The ordering of the values is taken from the OBD2 specification.
- * Any value greater than the last reserved index is available to vendors to map their extensions.
- */
-enum Obd2FloatSensorIndex : int32_t {
- CALCULATED_ENGINE_LOAD = 0,
-
- ENGINE_COOLANT_TEMPERATURE = 1,
-
- SHORT_TERM_FUEL_TRIM_BANK1 = 2,
-
- LONG_TERM_FUEL_TRIM_BANK1 = 3,
-
- SHORT_TERM_FUEL_TRIM_BANK2 = 4,
-
- LONG_TERM_FUEL_TRIM_BANK2 = 5,
-
- FUEL_PRESSURE = 6,
-
- INTAKE_MANIFOLD_ABSOLUTE_PRESSURE = 7,
-
- ENGINE_RPM = 8,
-
- VEHICLE_SPEED = 9,
-
- TIMING_ADVANCE = 10,
-
- MAF_AIR_FLOW_RATE = 11,
-
- THROTTLE_POSITION = 12,
-
- OXYGEN_SENSOR1_VOLTAGE = 13,
-
- OXYGEN_SENSOR1_SHORT_TERM_FUEL_TRIM = 14,
-
- OXYGEN_SENSOR1_FUEL_AIR_EQUIVALENCE_RATIO = 15,
-
- OXYGEN_SENSOR2_VOLTAGE = 16,
-
- OXYGEN_SENSOR2_SHORT_TERM_FUEL_TRIM = 17,
-
- OXYGEN_SENSOR2_FUEL_AIR_EQUIVALENCE_RATIO = 18,
-
- OXYGEN_SENSOR3_VOLTAGE = 19,
-
- OXYGEN_SENSOR3_SHORT_TERM_FUEL_TRIM = 20,
-
- OXYGEN_SENSOR3_FUEL_AIR_EQUIVALENCE_RATIO = 21,
-
- OXYGEN_SENSOR4_VOLTAGE = 22,
-
- OXYGEN_SENSOR4_SHORT_TERM_FUEL_TRIM = 23,
-
- OXYGEN_SENSOR4_FUEL_AIR_EQUIVALENCE_RATIO = 24,
-
- OXYGEN_SENSOR5_VOLTAGE = 25,
-
- OXYGEN_SENSOR5_SHORT_TERM_FUEL_TRIM = 26,
-
- OXYGEN_SENSOR5_FUEL_AIR_EQUIVALENCE_RATIO = 27,
-
- OXYGEN_SENSOR6_VOLTAGE = 28,
-
- OXYGEN_SENSOR6_SHORT_TERM_FUEL_TRIM = 29,
-
- OXYGEN_SENSOR6_FUEL_AIR_EQUIVALENCE_RATIO = 30,
-
- OXYGEN_SENSOR7_VOLTAGE = 31,
-
- OXYGEN_SENSOR7_SHORT_TERM_FUEL_TRIM = 32,
-
- OXYGEN_SENSOR7_FUEL_AIR_EQUIVALENCE_RATIO = 33,
-
- OXYGEN_SENSOR8_VOLTAGE = 34,
-
- OXYGEN_SENSOR8_SHORT_TERM_FUEL_TRIM = 35,
-
- OXYGEN_SENSOR8_FUEL_AIR_EQUIVALENCE_RATIO = 36,
-
- FUEL_RAIL_PRESSURE = 37,
-
- FUEL_RAIL_GAUGE_PRESSURE = 38,
-
- COMMANDED_EXHAUST_GAS_RECIRCULATION = 39,
-
- EXHAUST_GAS_RECIRCULATION_ERROR = 40,
-
- COMMANDED_EVAPORATIVE_PURGE = 41,
-
- FUEL_TANK_LEVEL_INPUT = 42,
-
- EVAPORATION_SYSTEM_VAPOR_PRESSURE = 43,
-
- CATALYST_TEMPERATURE_BANK1_SENSOR1 = 44,
-
- CATALYST_TEMPERATURE_BANK2_SENSOR1 = 45,
-
- CATALYST_TEMPERATURE_BANK1_SENSOR2 = 46,
-
- CATALYST_TEMPERATURE_BANK2_SENSOR2 = 47,
-
- ABSOLUTE_LOAD_VALUE = 48,
-
- FUEL_AIR_COMMANDED_EQUIVALENCE_RATIO = 49,
-
- RELATIVE_THROTTLE_POSITION = 50,
-
- ABSOLUTE_THROTTLE_POSITION_B = 51,
-
- ABSOLUTE_THROTTLE_POSITION_C = 52,
-
- ACCELERATOR_PEDAL_POSITION_D = 53,
-
- ACCELERATOR_PEDAL_POSITION_E = 54,
-
- ACCELERATOR_PEDAL_POSITION_F = 55,
-
- COMMANDED_THROTTLE_ACTUATOR = 56,
-
- ETHANOL_FUEL_PERCENTAGE = 57,
-
- ABSOLUTE_EVAPORATION_SYSTEM_VAPOR_PRESSURE = 58,
-
- SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK1 = 59,
-
- SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK2 = 60,
-
- SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK3 = 61,
-
- SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK4 = 62,
-
- LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK1 = 63,
-
- LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK2 = 64,
-
- LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK3 = 65,
-
- LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK4 = 66,
-
- RELATIVE_ACCELERATOR_PEDAL_POSITION = 67,
-
- HYBRID_BATTERY_PACK_REMAINING_LIFE = 68,
-
- FUEL_INJECTION_TIMING = 69,
-
- ENGINE_FUEL_RATE = 70,
-
- LAST_SYSTEM_INDEX = ENGINE_FUEL_RATE,
-
- VENDOR_START_INDEX = LAST_SYSTEM_INDEX + 1,
-};
-
/*
* This enum lists the types of supported VMS messages.
*/
diff --git a/automotive/vehicle/2.0/vts/Vehicle.vts b/automotive/vehicle/2.0/vts/Vehicle.vts
deleted file mode 100644
index aa12f0c..0000000
--- a/automotive/vehicle/2.0/vts/Vehicle.vts
+++ /dev/null
@@ -1,115 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 2.0
-component_name: "IVehicle"
-
-package: "android.hardware.automotive.vehicle"
-
-import: "android.hardware.automotive.vehicle@2.0::IVehicleCallback"
-import: "android.hardware.automotive.vehicle@2.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- api: {
- name: "getAllPropConfigs"
- return_type_hidl: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::automotive::vehicle::V2_0::VehiclePropConfig"
- }
- }
- }
-
- api: {
- name: "getPropConfigs"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::automotive::vehicle::V2_0::StatusCode"
- }
- return_type_hidl: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::automotive::vehicle::V2_0::VehiclePropConfig"
- }
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
- }
-
- api: {
- name: "get"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::automotive::vehicle::V2_0::StatusCode"
- }
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::automotive::vehicle::V2_0::VehiclePropValue"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::automotive::vehicle::V2_0::VehiclePropValue"
- }
- }
-
- api: {
- name: "set"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::automotive::vehicle::V2_0::StatusCode"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::automotive::vehicle::V2_0::VehiclePropValue"
- }
- }
-
- api: {
- name: "subscribe"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::automotive::vehicle::V2_0::StatusCode"
- }
- arg: {
- type: TYPE_HIDL_CALLBACK
- predefined_type: "::android::hardware::automotive::vehicle::V2_0::IVehicleCallback"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::automotive::vehicle::V2_0::SubscribeOptions"
- }
- }
- }
-
- api: {
- name: "unsubscribe"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::automotive::vehicle::V2_0::StatusCode"
- }
- arg: {
- type: TYPE_HIDL_CALLBACK
- predefined_type: "::android::hardware::automotive::vehicle::V2_0::IVehicleCallback"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "debugDump"
- return_type_hidl: {
- type: TYPE_STRING
- }
- }
-
-}
diff --git a/automotive/vehicle/2.0/vts/VehicleCallback.vts b/automotive/vehicle/2.0/vts/VehicleCallback.vts
deleted file mode 100644
index e4815d5..0000000
--- a/automotive/vehicle/2.0/vts/VehicleCallback.vts
+++ /dev/null
@@ -1,46 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 2.0
-component_name: "IVehicleCallback"
-
-package: "android.hardware.automotive.vehicle"
-
-import: "android.hardware.automotive.vehicle@2.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- api: {
- name: "onPropertyEvent"
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::automotive::vehicle::V2_0::VehiclePropValue"
- }
- }
- }
-
- api: {
- name: "onPropertySet"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::automotive::vehicle::V2_0::VehiclePropValue"
- }
- }
-
- api: {
- name: "onPropertySetError"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::automotive::vehicle::V2_0::StatusCode"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
-}
diff --git a/automotive/vehicle/2.0/vts/types.vts b/automotive/vehicle/2.0/vts/types.vts
deleted file mode 100644
index 3868c99..0000000
--- a/automotive/vehicle/2.0/vts/types.vts
+++ /dev/null
@@ -1,2780 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 2.0
-component_name: "types"
-
-package: "android.hardware.automotive.vehicle"
-
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "STRING"
- scalar_value: {
- int32_t: 1048576
- }
- enumerator: "BOOLEAN"
- scalar_value: {
- int32_t: 2097152
- }
- enumerator: "INT32"
- scalar_value: {
- int32_t: 4194304
- }
- enumerator: "INT32_VEC"
- scalar_value: {
- int32_t: 4259840
- }
- enumerator: "INT64"
- scalar_value: {
- int32_t: 5242880
- }
- enumerator: "FLOAT"
- scalar_value: {
- int32_t: 6291456
- }
- enumerator: "FLOAT_VEC"
- scalar_value: {
- int32_t: 6356992
- }
- enumerator: "BYTES"
- scalar_value: {
- int32_t: 7340032
- }
- enumerator: "COMPLEX"
- scalar_value: {
- int32_t: 14680064
- }
- enumerator: "MASK"
- scalar_value: {
- int32_t: 16711680
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VehicleArea"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "GLOBAL"
- scalar_value: {
- int32_t: 16777216
- }
- enumerator: "ZONE"
- scalar_value: {
- int32_t: 33554432
- }
- enumerator: "WINDOW"
- scalar_value: {
- int32_t: 50331648
- }
- enumerator: "MIRROR"
- scalar_value: {
- int32_t: 67108864
- }
- enumerator: "SEAT"
- scalar_value: {
- int32_t: 83886080
- }
- enumerator: "DOOR"
- scalar_value: {
- int32_t: 100663296
- }
- enumerator: "MASK"
- scalar_value: {
- int32_t: 251658240
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VehiclePropertyGroup"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "SYSTEM"
- scalar_value: {
- int32_t: 268435456
- }
- enumerator: "VENDOR"
- scalar_value: {
- int32_t: 536870912
- }
- enumerator: "MASK"
- scalar_value: {
- int32_t: -268435456
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VehicleProperty"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "INVALID"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "INFO_VIN"
- scalar_value: {
- int32_t: 286261504
- }
- enumerator: "INFO_MAKE"
- scalar_value: {
- int32_t: 286261505
- }
- enumerator: "INFO_MODEL"
- scalar_value: {
- int32_t: 286261506
- }
- enumerator: "INFO_MODEL_YEAR"
- scalar_value: {
- int32_t: 289407235
- }
- enumerator: "INFO_FUEL_CAPACITY"
- scalar_value: {
- int32_t: 291504388
- }
- enumerator: "PERF_ODOMETER"
- scalar_value: {
- int32_t: 291504644
- }
- enumerator: "PERF_VEHICLE_SPEED"
- scalar_value: {
- int32_t: 291504647
- }
- enumerator: "ENGINE_COOLANT_TEMP"
- scalar_value: {
- int32_t: 291504897
- }
- enumerator: "ENGINE_OIL_TEMP"
- scalar_value: {
- int32_t: 291504900
- }
- enumerator: "ENGINE_RPM"
- scalar_value: {
- int32_t: 291504901
- }
- enumerator: "WHEEL_TICK"
- scalar_value: {
- int32_t: 291570438
- }
- enumerator: "GEAR_SELECTION"
- scalar_value: {
- int32_t: 289408000
- }
- enumerator: "CURRENT_GEAR"
- scalar_value: {
- int32_t: 289408001
- }
- enumerator: "PARKING_BRAKE_ON"
- scalar_value: {
- int32_t: 287310850
- }
- enumerator: "DRIVING_STATUS"
- scalar_value: {
- int32_t: 289408004
- }
- enumerator: "FUEL_LEVEL_LOW"
- scalar_value: {
- int32_t: 287310853
- }
- enumerator: "NIGHT_MODE"
- scalar_value: {
- int32_t: 287310855
- }
- enumerator: "TURN_SIGNAL_STATE"
- scalar_value: {
- int32_t: 289408008
- }
- enumerator: "IGNITION_STATE"
- scalar_value: {
- int32_t: 289408009
- }
- enumerator: "HVAC_FAN_SPEED"
- scalar_value: {
- int32_t: 306185472
- }
- enumerator: "HVAC_FAN_DIRECTION"
- scalar_value: {
- int32_t: 306185473
- }
- enumerator: "HVAC_TEMPERATURE_CURRENT"
- scalar_value: {
- int32_t: 308282626
- }
- enumerator: "HVAC_TEMPERATURE_SET"
- scalar_value: {
- int32_t: 308282627
- }
- enumerator: "HVAC_DEFROSTER"
- scalar_value: {
- int32_t: 320865540
- }
- enumerator: "HVAC_AC_ON"
- scalar_value: {
- int32_t: 304088325
- }
- enumerator: "HVAC_MAX_AC_ON"
- scalar_value: {
- int32_t: 304088326
- }
- enumerator: "HVAC_MAX_DEFROST_ON"
- scalar_value: {
- int32_t: 304088327
- }
- enumerator: "HVAC_RECIRC_ON"
- scalar_value: {
- int32_t: 304088328
- }
- enumerator: "HVAC_DUAL_ON"
- scalar_value: {
- int32_t: 304088329
- }
- enumerator: "HVAC_AUTO_ON"
- scalar_value: {
- int32_t: 304088330
- }
- enumerator: "HVAC_SEAT_TEMPERATURE"
- scalar_value: {
- int32_t: 356517131
- }
- enumerator: "HVAC_SIDE_MIRROR_HEAT"
- scalar_value: {
- int32_t: 339739916
- }
- enumerator: "HVAC_STEERING_WHEEL_TEMP"
- scalar_value: {
- int32_t: 289408269
- }
- enumerator: "HVAC_TEMPERATURE_UNITS"
- scalar_value: {
- int32_t: 306185486
- }
- enumerator: "HVAC_ACTUAL_FAN_SPEED_RPM"
- scalar_value: {
- int32_t: 306185487
- }
- enumerator: "HVAC_FAN_DIRECTION_AVAILABLE"
- scalar_value: {
- int32_t: 306185489
- }
- enumerator: "HVAC_POWER_ON"
- scalar_value: {
- int32_t: 304088336
- }
- enumerator: "ENV_OUTSIDE_TEMPERATURE"
- scalar_value: {
- int32_t: 291505923
- }
- enumerator: "ENV_CABIN_TEMPERATURE"
- scalar_value: {
- int32_t: 291505924
- }
- enumerator: "RADIO_PRESET"
- scalar_value: {
- int32_t: 289474561
- }
- enumerator: "AUDIO_FOCUS"
- scalar_value: {
- int32_t: 289474816
- }
- enumerator: "AUDIO_FOCUS_EXT_SYNC"
- scalar_value: {
- int32_t: 289474832
- }
- enumerator: "AUDIO_VOLUME"
- scalar_value: {
- int32_t: 289474817
- }
- enumerator: "AUDIO_VOLUME_EXT_SYNC"
- scalar_value: {
- int32_t: 289474833
- }
- enumerator: "AUDIO_VOLUME_LIMIT"
- scalar_value: {
- int32_t: 289474818
- }
- enumerator: "AUDIO_ROUTING_POLICY"
- scalar_value: {
- int32_t: 289474819
- }
- enumerator: "AUDIO_HW_VARIANT"
- scalar_value: {
- int32_t: 289409284
- }
- enumerator: "AUDIO_EXT_ROUTING_HINT"
- scalar_value: {
- int32_t: 289474821
- }
- enumerator: "AUDIO_STREAM_STATE"
- scalar_value: {
- int32_t: 289474822
- }
- enumerator: "AUDIO_PARAMETERS"
- scalar_value: {
- int32_t: 286263559
- }
- enumerator: "AP_POWER_STATE"
- scalar_value: {
- int32_t: 289475072
- }
- enumerator: "DISPLAY_BRIGHTNESS"
- scalar_value: {
- int32_t: 289409537
- }
- enumerator: "AP_POWER_BOOTUP_REASON"
- scalar_value: {
- int32_t: 289409538
- }
- enumerator: "HW_KEY_INPUT"
- scalar_value: {
- int32_t: 289475088
- }
- enumerator: "INSTRUMENT_CLUSTER_INFO"
- scalar_value: {
- int32_t: 289475104
- }
- enumerator: "UNIX_TIME"
- scalar_value: {
- int32_t: 290458160
- }
- enumerator: "CURRENT_TIME_IN_SECONDS"
- scalar_value: {
- int32_t: 289409585
- }
- enumerator: "DOOR_POS"
- scalar_value: {
- int32_t: 373295872
- }
- enumerator: "DOOR_MOVE"
- scalar_value: {
- int32_t: 373295873
- }
- enumerator: "DOOR_LOCK"
- scalar_value: {
- int32_t: 371198722
- }
- enumerator: "MIRROR_Z_POS"
- scalar_value: {
- int32_t: 339741504
- }
- enumerator: "MIRROR_Z_MOVE"
- scalar_value: {
- int32_t: 339741505
- }
- enumerator: "MIRROR_Y_POS"
- scalar_value: {
- int32_t: 339741506
- }
- enumerator: "MIRROR_Y_MOVE"
- scalar_value: {
- int32_t: 339741507
- }
- enumerator: "MIRROR_LOCK"
- scalar_value: {
- int32_t: 287312708
- }
- enumerator: "MIRROR_FOLD"
- scalar_value: {
- int32_t: 287312709
- }
- enumerator: "SEAT_MEMORY_SELECT"
- scalar_value: {
- int32_t: 356518784
- }
- enumerator: "SEAT_MEMORY_SET"
- scalar_value: {
- int32_t: 356518785
- }
- enumerator: "SEAT_BELT_BUCKLED"
- scalar_value: {
- int32_t: 354421634
- }
- enumerator: "SEAT_BELT_HEIGHT_POS"
- scalar_value: {
- int32_t: 356518787
- }
- enumerator: "SEAT_BELT_HEIGHT_MOVE"
- scalar_value: {
- int32_t: 356518788
- }
- enumerator: "SEAT_FORE_AFT_POS"
- scalar_value: {
- int32_t: 356518789
- }
- enumerator: "SEAT_FORE_AFT_MOVE"
- scalar_value: {
- int32_t: 356518790
- }
- enumerator: "SEAT_BACKREST_ANGLE_1_POS"
- scalar_value: {
- int32_t: 356518791
- }
- enumerator: "SEAT_BACKREST_ANGLE_1_MOVE"
- scalar_value: {
- int32_t: 356518792
- }
- enumerator: "SEAT_BACKREST_ANGLE_2_POS"
- scalar_value: {
- int32_t: 356518793
- }
- enumerator: "SEAT_BACKREST_ANGLE_2_MOVE"
- scalar_value: {
- int32_t: 356518794
- }
- enumerator: "SEAT_HEIGHT_POS"
- scalar_value: {
- int32_t: 356518795
- }
- enumerator: "SEAT_HEIGHT_MOVE"
- scalar_value: {
- int32_t: 356518796
- }
- enumerator: "SEAT_DEPTH_POS"
- scalar_value: {
- int32_t: 356518797
- }
- enumerator: "SEAT_DEPTH_MOVE"
- scalar_value: {
- int32_t: 356518798
- }
- enumerator: "SEAT_TILT_POS"
- scalar_value: {
- int32_t: 356518799
- }
- enumerator: "SEAT_TILT_MOVE"
- scalar_value: {
- int32_t: 356518800
- }
- enumerator: "SEAT_LUMBAR_FORE_AFT_POS"
- scalar_value: {
- int32_t: 356518801
- }
- enumerator: "SEAT_LUMBAR_FORE_AFT_MOVE"
- scalar_value: {
- int32_t: 356518802
- }
- enumerator: "SEAT_LUMBAR_SIDE_SUPPORT_POS"
- scalar_value: {
- int32_t: 356518803
- }
- enumerator: "SEAT_LUMBAR_SIDE_SUPPORT_MOVE"
- scalar_value: {
- int32_t: 356518804
- }
- enumerator: "SEAT_HEADREST_HEIGHT_POS"
- scalar_value: {
- int32_t: 289409941
- }
- enumerator: "SEAT_HEADREST_HEIGHT_MOVE"
- scalar_value: {
- int32_t: 356518806
- }
- enumerator: "SEAT_HEADREST_ANGLE_POS"
- scalar_value: {
- int32_t: 356518807
- }
- enumerator: "SEAT_HEADREST_ANGLE_MOVE"
- scalar_value: {
- int32_t: 356518808
- }
- enumerator: "SEAT_HEADREST_FORE_AFT_POS"
- scalar_value: {
- int32_t: 356518809
- }
- enumerator: "SEAT_HEADREST_FORE_AFT_MOVE"
- scalar_value: {
- int32_t: 356518810
- }
- enumerator: "WINDOW_POS"
- scalar_value: {
- int32_t: 289409984
- }
- enumerator: "WINDOW_MOVE"
- scalar_value: {
- int32_t: 289409985
- }
- enumerator: "WINDOW_VENT_POS"
- scalar_value: {
- int32_t: 289409986
- }
- enumerator: "WINDOW_VENT_MOVE"
- scalar_value: {
- int32_t: 289409987
- }
- enumerator: "WINDOW_LOCK"
- scalar_value: {
- int32_t: 287312836
- }
- enumerator: "VEHICLE_MAP_SERVICE"
- scalar_value: {
- int32_t: 299895808
- }
- enumerator: "OBD2_LIVE_FRAME"
- scalar_value: {
- int32_t: 299896064
- }
- enumerator: "OBD2_FREEZE_FRAME"
- scalar_value: {
- int32_t: 299896065
- }
- enumerator: "OBD2_FREEZE_FRAME_INFO"
- scalar_value: {
- int32_t: 299896066
- }
- enumerator: "OBD2_FREEZE_FRAME_CLEAR"
- scalar_value: {
- int32_t: 299896067
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VehicleHvacFanDirection"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "FACE"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "FLOOR"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "FACE_AND_FLOOR"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "DEFROST"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "DEFROST_AND_FLOOR"
- scalar_value: {
- int32_t: 5
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VehicleRadioConstants"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "VEHICLE_RADIO_PRESET_MIN_VALUE"
- scalar_value: {
- int32_t: 1
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VehicleAudioFocusRequest"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "REQUEST_GAIN"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "REQUEST_GAIN_TRANSIENT"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "REQUEST_GAIN_TRANSIENT_MAY_DUCK"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "REQUEST_GAIN_TRANSIENT_NO_DUCK"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "REQUEST_RELEASE"
- scalar_value: {
- int32_t: 5
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VehicleAudioFocusState"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "STATE_GAIN"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "STATE_GAIN_TRANSIENT"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "STATE_LOSS_TRANSIENT_CAN_DUCK"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "STATE_LOSS_TRANSIENT"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "STATE_LOSS"
- scalar_value: {
- int32_t: 5
- }
- enumerator: "STATE_LOSS_TRANSIENT_EXLCUSIVE"
- scalar_value: {
- int32_t: 6
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VehicleAudioStreamFlag"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "STREAM0_FLAG"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "STREAM1_FLAG"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "STREAM2_FLAG"
- scalar_value: {
- int32_t: 4
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VehicleAudioStream"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "STREAM0"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "STREAM1"
- scalar_value: {
- int32_t: 1
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VehicleAudioExtFocusFlag"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "NONE_FLAG"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "PERMANENT_FLAG"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "TRANSIENT_FLAG"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "PLAY_ONLY_FLAG"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "MUTE_MEDIA_FLAG"
- scalar_value: {
- int32_t: 8
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VehicleAudioFocusIndex"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "FOCUS"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "STREAMS"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "EXTERNAL_FOCUS_STATE"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "AUDIO_CONTEXTS"
- scalar_value: {
- int32_t: 3
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VehicleAudioContextFlag"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "MUSIC_FLAG"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "NAVIGATION_FLAG"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "VOICE_COMMAND_FLAG"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "CALL_FLAG"
- scalar_value: {
- int32_t: 8
- }
- enumerator: "ALARM_FLAG"
- scalar_value: {
- int32_t: 16
- }
- enumerator: "NOTIFICATION_FLAG"
- scalar_value: {
- int32_t: 32
- }
- enumerator: "UNKNOWN_FLAG"
- scalar_value: {
- int32_t: 64
- }
- enumerator: "SAFETY_ALERT_FLAG"
- scalar_value: {
- int32_t: 128
- }
- enumerator: "CD_ROM_FLAG"
- scalar_value: {
- int32_t: 256
- }
- enumerator: "AUX_AUDIO_FLAG"
- scalar_value: {
- int32_t: 512
- }
- enumerator: "SYSTEM_SOUND_FLAG"
- scalar_value: {
- int32_t: 1024
- }
- enumerator: "RADIO_FLAG"
- scalar_value: {
- int32_t: 2048
- }
- enumerator: "EXT_SOURCE_FLAG"
- scalar_value: {
- int32_t: 4096
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VehicleAudioVolumeCapabilityFlag"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "PERSISTENT_STORAGE"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "MASTER_VOLUME_ONLY"
- scalar_value: {
- int32_t: 2
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VehicleAudioVolumeState"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "STATE_OK"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "LIMIT_REACHED"
- scalar_value: {
- int32_t: 1
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VehicleAudioVolumeIndex"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "INDEX_STREAM"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "INDEX_VOLUME"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "INDEX_STATE"
- scalar_value: {
- int32_t: 2
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VehicleAudioVolumeLimitIndex"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "STREAM"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "MAX_VOLUME"
- scalar_value: {
- int32_t: 1
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VehicleAudioRoutingPolicyIndex"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "STREAM"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "CONTEXTS"
- scalar_value: {
- int32_t: 1
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VehicleAudioHwVariantConfigFlag"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "INTERNAL_RADIO_FLAG"
- scalar_value: {
- int32_t: 1
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateConfigFlag"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "ENABLE_DEEP_SLEEP_FLAG"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "CONFIG_SUPPORT_TIMER_POWER_ON_FLAG"
- scalar_value: {
- int32_t: 2
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VehicleApPowerState"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "OFF"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "DEEP_SLEEP"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "ON_DISP_OFF"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "ON_FULL"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "SHUTDOWN_PREPARE"
- scalar_value: {
- int32_t: 4
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateShutdownParam"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "SHUTDOWN_IMMEDIATELY"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "CAN_SLEEP"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "SHUTDOWN_ONLY"
- scalar_value: {
- int32_t: 3
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VehicleApPowerSetState"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "BOOT_COMPLETE"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "DEEP_SLEEP_ENTRY"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "DEEP_SLEEP_EXIT"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "SHUTDOWN_POSTPONE"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "SHUTDOWN_START"
- scalar_value: {
- int32_t: 5
- }
- enumerator: "DISPLAY_OFF"
- scalar_value: {
- int32_t: 6
- }
- enumerator: "DISPLAY_ON"
- scalar_value: {
- int32_t: 7
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateIndex"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "STATE"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "ADDITIONAL"
- scalar_value: {
- int32_t: 1
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VehicleApPowerBootupReason"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "USER_POWER_ON"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "USER_UNLOCK"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "TIMER"
- scalar_value: {
- int32_t: 2
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VehicleHwKeyInputAction"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "ACTION_DOWN"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "ACTION_UP"
- scalar_value: {
- int32_t: 1
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VehicleDisplay"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "MAIN"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "INSTRUMENT_CLUSTER"
- scalar_value: {
- int32_t: 1
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VehicleInstrumentClusterType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "NONE"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "HAL_INTERFACE"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "EXTERNAL_DISPLAY"
- scalar_value: {
- int32_t: 2
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VehicleUnit"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "SHOULD_NOT_USE"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "METER_PER_SEC"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "RPM"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "HERTZ"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "PERCENTILE"
- scalar_value: {
- int32_t: 16
- }
- enumerator: "MILLIMETER"
- scalar_value: {
- int32_t: 32
- }
- enumerator: "METER"
- scalar_value: {
- int32_t: 33
- }
- enumerator: "KILOMETER"
- scalar_value: {
- int32_t: 35
- }
- enumerator: "CELSIUS"
- scalar_value: {
- int32_t: 48
- }
- enumerator: "FAHRENHEIT"
- scalar_value: {
- int32_t: 49
- }
- enumerator: "KELVIN"
- scalar_value: {
- int32_t: 50
- }
- enumerator: "MILLILITER"
- scalar_value: {
- int32_t: 64
- }
- enumerator: "NANO_SECS"
- scalar_value: {
- int32_t: 80
- }
- enumerator: "SECS"
- scalar_value: {
- int32_t: 83
- }
- enumerator: "YEAR"
- scalar_value: {
- int32_t: 89
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VehiclePropertyChangeMode"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "STATIC"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "ON_CHANGE"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "CONTINUOUS"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "POLL"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "ON_SET"
- scalar_value: {
- int32_t: 4
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VehiclePropertyAccess"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "NONE"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "READ"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "WRITE"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "READ_WRITE"
- scalar_value: {
- int32_t: 3
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VehicleDrivingStatus"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "UNRESTRICTED"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "NO_VIDEO"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "NO_KEYBOARD_INPUT"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "NO_VOICE_INPUT"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "NO_CONFIG"
- scalar_value: {
- int32_t: 8
- }
- enumerator: "LIMIT_MESSAGE_LEN"
- scalar_value: {
- int32_t: 16
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VehicleGear"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "GEAR_NEUTRAL"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "GEAR_REVERSE"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "GEAR_PARK"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "GEAR_DRIVE"
- scalar_value: {
- int32_t: 8
- }
- enumerator: "GEAR_LOW"
- scalar_value: {
- int32_t: 16
- }
- enumerator: "GEAR_1"
- scalar_value: {
- int32_t: 16
- }
- enumerator: "GEAR_2"
- scalar_value: {
- int32_t: 32
- }
- enumerator: "GEAR_3"
- scalar_value: {
- int32_t: 64
- }
- enumerator: "GEAR_4"
- scalar_value: {
- int32_t: 128
- }
- enumerator: "GEAR_5"
- scalar_value: {
- int32_t: 256
- }
- enumerator: "GEAR_6"
- scalar_value: {
- int32_t: 512
- }
- enumerator: "GEAR_7"
- scalar_value: {
- int32_t: 1024
- }
- enumerator: "GEAR_8"
- scalar_value: {
- int32_t: 2048
- }
- enumerator: "GEAR_9"
- scalar_value: {
- int32_t: 4096
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VehicleAreaZone"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "ROW_1_LEFT"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "ROW_1_CENTER"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "ROW_1_RIGHT"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "ROW_1"
- scalar_value: {
- int32_t: 8
- }
- enumerator: "ROW_2_LEFT"
- scalar_value: {
- int32_t: 16
- }
- enumerator: "ROW_2_CENTER"
- scalar_value: {
- int32_t: 32
- }
- enumerator: "ROW_2_RIGHT"
- scalar_value: {
- int32_t: 64
- }
- enumerator: "ROW_2"
- scalar_value: {
- int32_t: 128
- }
- enumerator: "ROW_3_LEFT"
- scalar_value: {
- int32_t: 256
- }
- enumerator: "ROW_3_CENTER"
- scalar_value: {
- int32_t: 512
- }
- enumerator: "ROW_3_RIGHT"
- scalar_value: {
- int32_t: 1024
- }
- enumerator: "ROW_3"
- scalar_value: {
- int32_t: 2048
- }
- enumerator: "ROW_4_LEFT"
- scalar_value: {
- int32_t: 4096
- }
- enumerator: "ROW_4_CENTER"
- scalar_value: {
- int32_t: 8192
- }
- enumerator: "ROW_4_RIGHT"
- scalar_value: {
- int32_t: 16384
- }
- enumerator: "ROW_4"
- scalar_value: {
- int32_t: 32768
- }
- enumerator: "WHOLE_CABIN"
- scalar_value: {
- int32_t: -2147483648
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "ROW_1_LEFT"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "ROW_1_CENTER"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "ROW_1_RIGHT"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "ROW_2_LEFT"
- scalar_value: {
- int32_t: 16
- }
- enumerator: "ROW_2_CENTER"
- scalar_value: {
- int32_t: 32
- }
- enumerator: "ROW_2_RIGHT"
- scalar_value: {
- int32_t: 64
- }
- enumerator: "ROW_3_LEFT"
- scalar_value: {
- int32_t: 256
- }
- enumerator: "ROW_3_CENTER"
- scalar_value: {
- int32_t: 512
- }
- enumerator: "ROW_3_RIGHT"
- scalar_value: {
- int32_t: 1024
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "FRONT_WINDSHIELD"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "REAR_WINDSHIELD"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "ROOF_TOP"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "ROW_1_LEFT"
- scalar_value: {
- int32_t: 16
- }
- enumerator: "ROW_1_RIGHT"
- scalar_value: {
- int32_t: 32
- }
- enumerator: "ROW_2_LEFT"
- scalar_value: {
- int32_t: 256
- }
- enumerator: "ROW_2_RIGHT"
- scalar_value: {
- int32_t: 512
- }
- enumerator: "ROW_3_LEFT"
- scalar_value: {
- int32_t: 4096
- }
- enumerator: "ROW_3_RIGHT"
- scalar_value: {
- int32_t: 8192
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "ROW_1_LEFT"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "ROW_1_RIGHT"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "ROW_2_LEFT"
- scalar_value: {
- int32_t: 16
- }
- enumerator: "ROW_2_RIGHT"
- scalar_value: {
- int32_t: 64
- }
- enumerator: "ROW_3_LEFT"
- scalar_value: {
- int32_t: 256
- }
- enumerator: "ROW_3_RIGHT"
- scalar_value: {
- int32_t: 1024
- }
- enumerator: "HOOD"
- scalar_value: {
- int32_t: 268435456
- }
- enumerator: "REAR"
- scalar_value: {
- int32_t: 536870912
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VehicleAreaMirror"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "DRIVER_LEFT"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "DRIVER_RIGHT"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "DRIVER_CENTER"
- scalar_value: {
- int32_t: 4
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VehicleTurnSignal"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "NONE"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "RIGHT"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "LEFT"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "EMERGENCY"
- scalar_value: {
- int32_t: 4
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VehicleAreaConfig"
- type: TYPE_STRUCT
- struct_value: {
- name: "areaId"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "minInt32Value"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "maxInt32Value"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "minInt64Value"
- type: TYPE_SCALAR
- scalar_type: "int64_t"
- }
- struct_value: {
- name: "maxInt64Value"
- type: TYPE_SCALAR
- scalar_type: "int64_t"
- }
- struct_value: {
- name: "minFloatValue"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- struct_value: {
- name: "maxFloatValue"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VehiclePropConfig"
- type: TYPE_STRUCT
- struct_value: {
- name: "prop"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "access"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::automotive::vehicle::V2_0::VehiclePropertyAccess"
- }
- struct_value: {
- name: "changeMode"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::automotive::vehicle::V2_0::VehiclePropertyChangeMode"
- }
- struct_value: {
- name: "supportedAreas"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "areaConfigs"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::automotive::vehicle::V2_0::VehicleAreaConfig"
- }
- }
- struct_value: {
- name: "configFlags"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "configArray"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
- struct_value: {
- name: "configString"
- type: TYPE_STRING
- }
- struct_value: {
- name: "minSampleRate"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- struct_value: {
- name: "maxSampleRate"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VehiclePropValue"
- type: TYPE_STRUCT
- sub_struct: {
- name: "::android::hardware::automotive::vehicle::V2_0::VehiclePropValue::RawValue"
- type: TYPE_STRUCT
- struct_value: {
- name: "int32Values"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
- struct_value: {
- name: "floatValues"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- }
- struct_value: {
- name: "int64Values"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "int64_t"
- }
- }
- struct_value: {
- name: "bytes"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- struct_value: {
- name: "stringValue"
- type: TYPE_STRING
- }
- }
- struct_value: {
- name: "prop"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "timestamp"
- type: TYPE_SCALAR
- scalar_type: "int64_t"
- }
- struct_value: {
- name: "areaId"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "value"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::automotive::vehicle::V2_0::VehiclePropValue::RawValue"
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "UNDEFINED"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "LOCK"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "OFF"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "ACC"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "ON"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "START"
- scalar_value: {
- int32_t: 5
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VehiclePropertyOperation"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "GENERIC"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "SET"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "GET"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "SUBSCRIBE"
- scalar_value: {
- int32_t: 3
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::SubscribeFlags"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "UNDEFINED"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "HAL_EVENT"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "SET_CALL"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "DEFAULT"
- scalar_value: {
- int32_t: 1
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::SubscribeOptions"
- type: TYPE_STRUCT
- struct_value: {
- name: "propId"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "vehicleAreas"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "sampleRate"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- struct_value: {
- name: "flags"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::automotive::vehicle::V2_0::SubscribeFlags"
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::StatusCode"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "OK"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "TRY_AGAIN"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "INVALID_ARG"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "NOT_AVAILABLE"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "ACCESS_DENIED"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "INTERNAL_ERROR"
- scalar_value: {
- int32_t: 5
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::FuelSystemStatus"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "OPEN_INSUFFICIENT_ENGINE_TEMPERATURE"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "CLOSED_LOOP"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "OPEN_ENGINE_LOAD_OR_DECELERATION"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "OPEN_SYSTEM_FAILURE"
- scalar_value: {
- int32_t: 8
- }
- enumerator: "CLOSED_LOOP_BUT_FEEDBACK_FAULT"
- scalar_value: {
- int32_t: 16
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::IgnitionMonitorKind"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "SPARK"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "COMPRESSION"
- scalar_value: {
- int32_t: 1
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::CommonIgnitionMonitors"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "COMPONENTS_AVAILABLE"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "COMPONENTS_INCOMPLETE"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "FUEL_SYSTEM_AVAILABLE"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "FUEL_SYSTEM_INCOMPLETE"
- scalar_value: {
- int32_t: 8
- }
- enumerator: "MISFIRE_AVAILABLE"
- scalar_value: {
- int32_t: 16
- }
- enumerator: "MISFIRE_INCOMPLETE"
- scalar_value: {
- int32_t: 32
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::SparkIgnitionMonitors"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "COMPONENTS_AVAILABLE"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "COMPONENTS_INCOMPLETE"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "FUEL_SYSTEM_AVAILABLE"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "FUEL_SYSTEM_INCOMPLETE"
- scalar_value: {
- int32_t: 8
- }
- enumerator: "MISFIRE_AVAILABLE"
- scalar_value: {
- int32_t: 16
- }
- enumerator: "MISFIRE_INCOMPLETE"
- scalar_value: {
- int32_t: 32
- }
- enumerator: "EGR_AVAILABLE"
- scalar_value: {
- int32_t: 64
- }
- enumerator: "EGR_INCOMPLETE"
- scalar_value: {
- int32_t: 128
- }
- enumerator: "OXYGEN_SENSOR_HEATER_AVAILABLE"
- scalar_value: {
- int32_t: 256
- }
- enumerator: "OXYGEN_SENSOR_HEATER_INCOMPLETE"
- scalar_value: {
- int32_t: 512
- }
- enumerator: "OXYGEN_SENSOR_AVAILABLE"
- scalar_value: {
- int32_t: 1024
- }
- enumerator: "OXYGEN_SENSOR_INCOMPLETE"
- scalar_value: {
- int32_t: 2048
- }
- enumerator: "AC_REFRIGERANT_AVAILABLE"
- scalar_value: {
- int32_t: 4096
- }
- enumerator: "AC_REFRIGERANT_INCOMPLETE"
- scalar_value: {
- int32_t: 8192
- }
- enumerator: "SECONDARY_AIR_SYSTEM_AVAILABLE"
- scalar_value: {
- int32_t: 16384
- }
- enumerator: "SECONDARY_AIR_SYSTEM_INCOMPLETE"
- scalar_value: {
- int32_t: 32768
- }
- enumerator: "EVAPORATIVE_SYSTEM_AVAILABLE"
- scalar_value: {
- int32_t: 65536
- }
- enumerator: "EVAPORATIVE_SYSTEM_INCOMPLETE"
- scalar_value: {
- int32_t: 131072
- }
- enumerator: "HEATED_CATALYST_AVAILABLE"
- scalar_value: {
- int32_t: 262144
- }
- enumerator: "HEATED_CATALYST_INCOMPLETE"
- scalar_value: {
- int32_t: 524288
- }
- enumerator: "CATALYST_AVAILABLE"
- scalar_value: {
- int32_t: 1048576
- }
- enumerator: "CATALYST_INCOMPLETE"
- scalar_value: {
- int32_t: 2097152
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::CompressionIgnitionMonitors"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "COMPONENTS_AVAILABLE"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "COMPONENTS_INCOMPLETE"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "FUEL_SYSTEM_AVAILABLE"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "FUEL_SYSTEM_INCOMPLETE"
- scalar_value: {
- int32_t: 8
- }
- enumerator: "MISFIRE_AVAILABLE"
- scalar_value: {
- int32_t: 16
- }
- enumerator: "MISFIRE_INCOMPLETE"
- scalar_value: {
- int32_t: 32
- }
- enumerator: "EGR_OR_VVT_AVAILABLE"
- scalar_value: {
- int32_t: 64
- }
- enumerator: "EGR_OR_VVT_INCOMPLETE"
- scalar_value: {
- int32_t: 128
- }
- enumerator: "PM_FILTER_AVAILABLE"
- scalar_value: {
- int32_t: 256
- }
- enumerator: "PM_FILTER_INCOMPLETE"
- scalar_value: {
- int32_t: 512
- }
- enumerator: "EXHAUST_GAS_SENSOR_AVAILABLE"
- scalar_value: {
- int32_t: 1024
- }
- enumerator: "EXHAUST_GAS_SENSOR_INCOMPLETE"
- scalar_value: {
- int32_t: 2048
- }
- enumerator: "BOOST_PRESSURE_AVAILABLE"
- scalar_value: {
- int32_t: 4096
- }
- enumerator: "BOOST_PRESSURE_INCOMPLETE"
- scalar_value: {
- int32_t: 8192
- }
- enumerator: "NOx_SCR__AVAILABLE"
- scalar_value: {
- int32_t: 16384
- }
- enumerator: "NOx_SCR_INCOMPLETE"
- scalar_value: {
- int32_t: 32768
- }
- enumerator: "NMHC_CATALYST_AVAILABLE"
- scalar_value: {
- int32_t: 65536
- }
- enumerator: "NMHC_CATALYST_INCOMPLETE"
- scalar_value: {
- int32_t: 131072
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::Wheel"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "UNKNOWN"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "LEFT_FRONT"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "RIGHT_FRONT"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "LEFT_REAR"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "RIGHT_REAR"
- scalar_value: {
- int32_t: 8
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::SecondaryAirStatus"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "UPSTREAM"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "DOWNSTREAM_OF_CATALYCIC_CONVERTER"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "FROM_OUTSIDE_OR_OFF"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "PUMP_ON_FOR_DIAGNOSTICS"
- scalar_value: {
- int32_t: 8
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::FuelType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "NOT_AVAILABLE"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "GASOLINE"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "METHANOL"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "ETHANOL"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "DIESEL"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "LPG"
- scalar_value: {
- int32_t: 5
- }
- enumerator: "CNG"
- scalar_value: {
- int32_t: 6
- }
- enumerator: "PROPANE"
- scalar_value: {
- int32_t: 7
- }
- enumerator: "ELECTRIC"
- scalar_value: {
- int32_t: 8
- }
- enumerator: "BIFUEL_RUNNING_GASOLINE"
- scalar_value: {
- int32_t: 9
- }
- enumerator: "BIFUEL_RUNNING_METHANOL"
- scalar_value: {
- int32_t: 10
- }
- enumerator: "BIFUEL_RUNNING_ETHANOL"
- scalar_value: {
- int32_t: 11
- }
- enumerator: "BIFUEL_RUNNING_LPG"
- scalar_value: {
- int32_t: 12
- }
- enumerator: "BIFUEL_RUNNING_CNG"
- scalar_value: {
- int32_t: 13
- }
- enumerator: "BIFUEL_RUNNING_PROPANE"
- scalar_value: {
- int32_t: 14
- }
- enumerator: "BIFUEL_RUNNING_ELECTRIC"
- scalar_value: {
- int32_t: 15
- }
- enumerator: "BIFUEL_RUNNING_ELECTRIC_AND_COMBUSTION"
- scalar_value: {
- int32_t: 16
- }
- enumerator: "HYBRID_GASOLINE"
- scalar_value: {
- int32_t: 17
- }
- enumerator: "HYBRID_ETHANOL"
- scalar_value: {
- int32_t: 18
- }
- enumerator: "HYBRID_DIESEL"
- scalar_value: {
- int32_t: 19
- }
- enumerator: "HYBRID_ELECTRIC"
- scalar_value: {
- int32_t: 20
- }
- enumerator: "HYBRID_RUNNING_ELECTRIC_AND_COMBUSTION"
- scalar_value: {
- int32_t: 21
- }
- enumerator: "HYBRID_REGENERATIVE"
- scalar_value: {
- int32_t: 22
- }
- enumerator: "BIFUEL_RUNNING_DIESEL"
- scalar_value: {
- int32_t: 23
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::Obd2IntegerSensorIndex"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "FUEL_SYSTEM_STATUS"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "MALFUNCTION_INDICATOR_LIGHT_ON"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "IGNITION_MONITORS_SUPPORTED"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "IGNITION_SPECIFIC_MONITORS"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "INTAKE_AIR_TEMPERATURE"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "COMMANDED_SECONDARY_AIR_STATUS"
- scalar_value: {
- int32_t: 5
- }
- enumerator: "NUM_OXYGEN_SENSORS_PRESENT"
- scalar_value: {
- int32_t: 6
- }
- enumerator: "RUNTIME_SINCE_ENGINE_START"
- scalar_value: {
- int32_t: 7
- }
- enumerator: "DISTANCE_TRAVELED_WITH_MALFUNCTION_INDICATOR_LIGHT_ON"
- scalar_value: {
- int32_t: 8
- }
- enumerator: "WARMUPS_SINCE_CODES_CLEARED"
- scalar_value: {
- int32_t: 9
- }
- enumerator: "DISTANCE_TRAVELED_SINCE_CODES_CLEARED"
- scalar_value: {
- int32_t: 10
- }
- enumerator: "ABSOLUTE_BAROMETRIC_PRESSURE"
- scalar_value: {
- int32_t: 11
- }
- enumerator: "CONTROL_MODULE_VOLTAGE"
- scalar_value: {
- int32_t: 12
- }
- enumerator: "AMBIENT_AIR_TEMPERATURE"
- scalar_value: {
- int32_t: 13
- }
- enumerator: "TIME_WITH_MALFUNCTION_LIGHT_ON"
- scalar_value: {
- int32_t: 14
- }
- enumerator: "TIME_SINCE_TROUBLE_CODES_CLEARED"
- scalar_value: {
- int32_t: 15
- }
- enumerator: "MAX_FUEL_AIR_EQUIVALENCE_RATIO"
- scalar_value: {
- int32_t: 16
- }
- enumerator: "MAX_OXYGEN_SENSOR_VOLTAGE"
- scalar_value: {
- int32_t: 17
- }
- enumerator: "MAX_OXYGEN_SENSOR_CURRENT"
- scalar_value: {
- int32_t: 18
- }
- enumerator: "MAX_INTAKE_MANIFOLD_ABSOLUTE_PRESSURE"
- scalar_value: {
- int32_t: 19
- }
- enumerator: "MAX_AIR_FLOW_RATE_FROM_MASS_AIR_FLOW_SENSOR"
- scalar_value: {
- int32_t: 20
- }
- enumerator: "FUEL_TYPE"
- scalar_value: {
- int32_t: 21
- }
- enumerator: "FUEL_RAIL_ABSOLUTE_PRESSURE"
- scalar_value: {
- int32_t: 22
- }
- enumerator: "ENGINE_OIL_TEMPERATURE"
- scalar_value: {
- int32_t: 23
- }
- enumerator: "DRIVER_DEMAND_PERCENT_TORQUE"
- scalar_value: {
- int32_t: 24
- }
- enumerator: "ENGINE_ACTUAL_PERCENT_TORQUE"
- scalar_value: {
- int32_t: 25
- }
- enumerator: "ENGINE_REFERENCE_PERCENT_TORQUE"
- scalar_value: {
- int32_t: 26
- }
- enumerator: "ENGINE_PERCENT_TORQUE_DATA_IDLE"
- scalar_value: {
- int32_t: 27
- }
- enumerator: "ENGINE_PERCENT_TORQUE_DATA_POINT1"
- scalar_value: {
- int32_t: 28
- }
- enumerator: "ENGINE_PERCENT_TORQUE_DATA_POINT2"
- scalar_value: {
- int32_t: 29
- }
- enumerator: "ENGINE_PERCENT_TORQUE_DATA_POINT3"
- scalar_value: {
- int32_t: 30
- }
- enumerator: "ENGINE_PERCENT_TORQUE_DATA_POINT4"
- scalar_value: {
- int32_t: 31
- }
- enumerator: "LAST_SYSTEM_INDEX"
- scalar_value: {
- int32_t: 31
- }
- enumerator: "VENDOR_START_INDEX"
- scalar_value: {
- int32_t: 32
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::Obd2FloatSensorIndex"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "CALCULATED_ENGINE_LOAD"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "ENGINE_COOLANT_TEMPERATURE"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "SHORT_TERM_FUEL_TRIM_BANK1"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "LONG_TERM_FUEL_TRIM_BANK1"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "SHORT_TERM_FUEL_TRIM_BANK2"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "LONG_TERM_FUEL_TRIM_BANK2"
- scalar_value: {
- int32_t: 5
- }
- enumerator: "FUEL_PRESSURE"
- scalar_value: {
- int32_t: 6
- }
- enumerator: "INTAKE_MANIFOLD_ABSOLUTE_PRESSURE"
- scalar_value: {
- int32_t: 7
- }
- enumerator: "ENGINE_RPM"
- scalar_value: {
- int32_t: 8
- }
- enumerator: "VEHICLE_SPEED"
- scalar_value: {
- int32_t: 9
- }
- enumerator: "TIMING_ADVANCE"
- scalar_value: {
- int32_t: 10
- }
- enumerator: "MAF_AIR_FLOW_RATE"
- scalar_value: {
- int32_t: 11
- }
- enumerator: "THROTTLE_POSITION"
- scalar_value: {
- int32_t: 12
- }
- enumerator: "OXYGEN_SENSOR1_VOLTAGE"
- scalar_value: {
- int32_t: 13
- }
- enumerator: "OXYGEN_SENSOR1_SHORT_TERM_FUEL_TRIM"
- scalar_value: {
- int32_t: 14
- }
- enumerator: "OXYGEN_SENSOR1_FUEL_AIR_EQUIVALENCE_RATIO"
- scalar_value: {
- int32_t: 15
- }
- enumerator: "OXYGEN_SENSOR2_VOLTAGE"
- scalar_value: {
- int32_t: 16
- }
- enumerator: "OXYGEN_SENSOR2_SHORT_TERM_FUEL_TRIM"
- scalar_value: {
- int32_t: 17
- }
- enumerator: "OXYGEN_SENSOR2_FUEL_AIR_EQUIVALENCE_RATIO"
- scalar_value: {
- int32_t: 18
- }
- enumerator: "OXYGEN_SENSOR3_VOLTAGE"
- scalar_value: {
- int32_t: 19
- }
- enumerator: "OXYGEN_SENSOR3_SHORT_TERM_FUEL_TRIM"
- scalar_value: {
- int32_t: 20
- }
- enumerator: "OXYGEN_SENSOR3_FUEL_AIR_EQUIVALENCE_RATIO"
- scalar_value: {
- int32_t: 21
- }
- enumerator: "OXYGEN_SENSOR4_VOLTAGE"
- scalar_value: {
- int32_t: 22
- }
- enumerator: "OXYGEN_SENSOR4_SHORT_TERM_FUEL_TRIM"
- scalar_value: {
- int32_t: 23
- }
- enumerator: "OXYGEN_SENSOR4_FUEL_AIR_EQUIVALENCE_RATIO"
- scalar_value: {
- int32_t: 24
- }
- enumerator: "OXYGEN_SENSOR5_VOLTAGE"
- scalar_value: {
- int32_t: 25
- }
- enumerator: "OXYGEN_SENSOR5_SHORT_TERM_FUEL_TRIM"
- scalar_value: {
- int32_t: 26
- }
- enumerator: "OXYGEN_SENSOR5_FUEL_AIR_EQUIVALENCE_RATIO"
- scalar_value: {
- int32_t: 27
- }
- enumerator: "OXYGEN_SENSOR6_VOLTAGE"
- scalar_value: {
- int32_t: 28
- }
- enumerator: "OXYGEN_SENSOR6_SHORT_TERM_FUEL_TRIM"
- scalar_value: {
- int32_t: 29
- }
- enumerator: "OXYGEN_SENSOR6_FUEL_AIR_EQUIVALENCE_RATIO"
- scalar_value: {
- int32_t: 30
- }
- enumerator: "OXYGEN_SENSOR7_VOLTAGE"
- scalar_value: {
- int32_t: 31
- }
- enumerator: "OXYGEN_SENSOR7_SHORT_TERM_FUEL_TRIM"
- scalar_value: {
- int32_t: 32
- }
- enumerator: "OXYGEN_SENSOR7_FUEL_AIR_EQUIVALENCE_RATIO"
- scalar_value: {
- int32_t: 33
- }
- enumerator: "OXYGEN_SENSOR8_VOLTAGE"
- scalar_value: {
- int32_t: 34
- }
- enumerator: "OXYGEN_SENSOR8_SHORT_TERM_FUEL_TRIM"
- scalar_value: {
- int32_t: 35
- }
- enumerator: "OXYGEN_SENSOR8_FUEL_AIR_EQUIVALENCE_RATIO"
- scalar_value: {
- int32_t: 36
- }
- enumerator: "FUEL_RAIL_PRESSURE"
- scalar_value: {
- int32_t: 37
- }
- enumerator: "FUEL_RAIL_GAUGE_PRESSURE"
- scalar_value: {
- int32_t: 38
- }
- enumerator: "COMMANDED_EXHAUST_GAS_RECIRCULATION"
- scalar_value: {
- int32_t: 39
- }
- enumerator: "EXHAUST_GAS_RECIRCULATION_ERROR"
- scalar_value: {
- int32_t: 40
- }
- enumerator: "COMMANDED_EVAPORATIVE_PURGE"
- scalar_value: {
- int32_t: 41
- }
- enumerator: "FUEL_TANK_LEVEL_INPUT"
- scalar_value: {
- int32_t: 42
- }
- enumerator: "EVAPORATION_SYSTEM_VAPOR_PRESSURE"
- scalar_value: {
- int32_t: 43
- }
- enumerator: "CATALYST_TEMPERATURE_BANK1_SENSOR1"
- scalar_value: {
- int32_t: 44
- }
- enumerator: "CATALYST_TEMPERATURE_BANK2_SENSOR1"
- scalar_value: {
- int32_t: 45
- }
- enumerator: "CATALYST_TEMPERATURE_BANK1_SENSOR2"
- scalar_value: {
- int32_t: 46
- }
- enumerator: "CATALYST_TEMPERATURE_BANK2_SENSOR2"
- scalar_value: {
- int32_t: 47
- }
- enumerator: "ABSOLUTE_LOAD_VALUE"
- scalar_value: {
- int32_t: 48
- }
- enumerator: "FUEL_AIR_COMMANDED_EQUIVALENCE_RATIO"
- scalar_value: {
- int32_t: 49
- }
- enumerator: "RELATIVE_THROTTLE_POSITION"
- scalar_value: {
- int32_t: 50
- }
- enumerator: "ABSOLUTE_THROTTLE_POSITION_B"
- scalar_value: {
- int32_t: 51
- }
- enumerator: "ABSOLUTE_THROTTLE_POSITION_C"
- scalar_value: {
- int32_t: 52
- }
- enumerator: "ACCELERATOR_PEDAL_POSITION_D"
- scalar_value: {
- int32_t: 53
- }
- enumerator: "ACCELERATOR_PEDAL_POSITION_E"
- scalar_value: {
- int32_t: 54
- }
- enumerator: "ACCELERATOR_PEDAL_POSITION_F"
- scalar_value: {
- int32_t: 55
- }
- enumerator: "COMMANDED_THROTTLE_ACTUATOR"
- scalar_value: {
- int32_t: 56
- }
- enumerator: "ETHANOL_FUEL_PERCENTAGE"
- scalar_value: {
- int32_t: 57
- }
- enumerator: "ABSOLUTE_EVAPORATION_SYSTEM_VAPOR_PRESSURE"
- scalar_value: {
- int32_t: 58
- }
- enumerator: "SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK1"
- scalar_value: {
- int32_t: 59
- }
- enumerator: "SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK2"
- scalar_value: {
- int32_t: 60
- }
- enumerator: "SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK3"
- scalar_value: {
- int32_t: 61
- }
- enumerator: "SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK4"
- scalar_value: {
- int32_t: 62
- }
- enumerator: "LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK1"
- scalar_value: {
- int32_t: 63
- }
- enumerator: "LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK2"
- scalar_value: {
- int32_t: 64
- }
- enumerator: "LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK3"
- scalar_value: {
- int32_t: 65
- }
- enumerator: "LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK4"
- scalar_value: {
- int32_t: 66
- }
- enumerator: "RELATIVE_ACCELERATOR_PEDAL_POSITION"
- scalar_value: {
- int32_t: 67
- }
- enumerator: "HYBRID_BATTERY_PACK_REMAINING_LIFE"
- scalar_value: {
- int32_t: 68
- }
- enumerator: "FUEL_INJECTION_TIMING"
- scalar_value: {
- int32_t: 69
- }
- enumerator: "ENGINE_FUEL_RATE"
- scalar_value: {
- int32_t: 70
- }
- enumerator: "LAST_SYSTEM_INDEX"
- scalar_value: {
- int32_t: 70
- }
- enumerator: "VENDOR_START_INDEX"
- scalar_value: {
- int32_t: 71
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VmsMessageType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "SUBSCRIBE"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "UNSUBSCRIBE"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "DATA"
- scalar_value: {
- int32_t: 3
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::automotive::vehicle::V2_0::VmsMessageIntegerValuesIndex"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "VMS_MESSAGE_TYPE"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "VMS_LAYER_ID"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "VMS_LAYER_VERSION"
- scalar_value: {
- int32_t: 3
- }
- }
-}
-
diff --git a/automotive/vehicle/2.1/Android.bp b/automotive/vehicle/2.1/Android.bp
new file mode 100644
index 0000000..dcf395c
--- /dev/null
+++ b/automotive/vehicle/2.1/Android.bp
@@ -0,0 +1,62 @@
+// This file is autogenerated by hidl-gen. Do not edit manually.
+
+filegroup {
+ name: "android.hardware.automotive.vehicle@2.1_hal",
+ srcs: [
+ "types.hal",
+ "IVehicle.hal",
+ ],
+}
+
+genrule {
+ name: "android.hardware.automotive.vehicle@2.1_genc++",
+ tools: ["hidl-gen"],
+ cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.automotive.vehicle@2.1",
+ srcs: [
+ ":android.hardware.automotive.vehicle@2.1_hal",
+ ],
+ out: [
+ "android/hardware/automotive/vehicle/2.1/types.cpp",
+ "android/hardware/automotive/vehicle/2.1/VehicleAll.cpp",
+ ],
+}
+
+genrule {
+ name: "android.hardware.automotive.vehicle@2.1_genc++_headers",
+ tools: ["hidl-gen"],
+ cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.automotive.vehicle@2.1",
+ srcs: [
+ ":android.hardware.automotive.vehicle@2.1_hal",
+ ],
+ out: [
+ "android/hardware/automotive/vehicle/2.1/types.h",
+ "android/hardware/automotive/vehicle/2.1/IVehicle.h",
+ "android/hardware/automotive/vehicle/2.1/IHwVehicle.h",
+ "android/hardware/automotive/vehicle/2.1/BnHwVehicle.h",
+ "android/hardware/automotive/vehicle/2.1/BpHwVehicle.h",
+ "android/hardware/automotive/vehicle/2.1/BsVehicle.h",
+ ],
+}
+
+cc_library_shared {
+ name: "android.hardware.automotive.vehicle@2.1",
+ generated_sources: ["android.hardware.automotive.vehicle@2.1_genc++"],
+ generated_headers: ["android.hardware.automotive.vehicle@2.1_genc++_headers"],
+ export_generated_headers: ["android.hardware.automotive.vehicle@2.1_genc++_headers"],
+ shared_libs: [
+ "libhidlbase",
+ "libhidltransport",
+ "libhwbinder",
+ "liblog",
+ "libutils",
+ "libcutils",
+ "android.hardware.automotive.vehicle@2.0",
+ ],
+ export_shared_lib_headers: [
+ "libhidlbase",
+ "libhidltransport",
+ "libhwbinder",
+ "libutils",
+ "android.hardware.automotive.vehicle@2.0",
+ ],
+}
diff --git a/automotive/vehicle/2.1/Android.mk b/automotive/vehicle/2.1/Android.mk
new file mode 100644
index 0000000..f5a121d
--- /dev/null
+++ b/automotive/vehicle/2.1/Android.mk
@@ -0,0 +1,458 @@
+# This file is autogenerated by hidl-gen. Do not edit manually.
+
+LOCAL_PATH := $(call my-dir)
+
+################################################################################
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := android.hardware.automotive.vehicle@2.1-java
+LOCAL_MODULE_CLASS := JAVA_LIBRARIES
+
+intermediates := $(call local-generated-sources-dir, COMMON)
+
+HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
+
+LOCAL_JAVA_LIBRARIES := \
+ android.hardware.automotive.vehicle@2.0-java \
+ android.hidl.base@1.0-java \
+
+
+#
+# Build types.hal (CommonIgnitionMonitors)
+#
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/CommonIgnitionMonitors.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.automotive.vehicle@2.1::types.CommonIgnitionMonitors
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (CompressionIgnitionMonitors)
+#
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/CompressionIgnitionMonitors.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.automotive.vehicle@2.1::types.CompressionIgnitionMonitors
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (FuelSystemStatus)
+#
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/FuelSystemStatus.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.automotive.vehicle@2.1::types.FuelSystemStatus
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (FuelType)
+#
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/FuelType.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.automotive.vehicle@2.1::types.FuelType
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (IgnitionMonitorKind)
+#
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/IgnitionMonitorKind.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.automotive.vehicle@2.1::types.IgnitionMonitorKind
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (Obd2FloatSensorIndex)
+#
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/Obd2FloatSensorIndex.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.automotive.vehicle@2.1::types.Obd2FloatSensorIndex
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (Obd2IntegerSensorIndex)
+#
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/Obd2IntegerSensorIndex.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.automotive.vehicle@2.1::types.Obd2IntegerSensorIndex
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (SecondaryAirStatus)
+#
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/SecondaryAirStatus.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.automotive.vehicle@2.1::types.SecondaryAirStatus
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (SparkIgnitionMonitors)
+#
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/SparkIgnitionMonitors.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.automotive.vehicle@2.1::types.SparkIgnitionMonitors
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (VehicleProperty)
+#
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/VehicleProperty.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.automotive.vehicle@2.1::types.VehicleProperty
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build IVehicle.hal
+#
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/IVehicle.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IVehicle.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.automotive.vehicle@2.1::IVehicle
+
+$(GEN): $(LOCAL_PATH)/IVehicle.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+include $(BUILD_JAVA_LIBRARY)
+
+
+################################################################################
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := android.hardware.automotive.vehicle@2.1-java-static
+LOCAL_MODULE_CLASS := JAVA_LIBRARIES
+
+intermediates := $(call local-generated-sources-dir, COMMON)
+
+HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
+
+LOCAL_STATIC_JAVA_LIBRARIES := \
+ android.hardware.automotive.vehicle@2.0-java-static \
+ android.hidl.base@1.0-java-static \
+
+
+#
+# Build types.hal (CommonIgnitionMonitors)
+#
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/CommonIgnitionMonitors.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.automotive.vehicle@2.1::types.CommonIgnitionMonitors
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (CompressionIgnitionMonitors)
+#
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/CompressionIgnitionMonitors.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.automotive.vehicle@2.1::types.CompressionIgnitionMonitors
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (FuelSystemStatus)
+#
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/FuelSystemStatus.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.automotive.vehicle@2.1::types.FuelSystemStatus
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (FuelType)
+#
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/FuelType.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.automotive.vehicle@2.1::types.FuelType
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (IgnitionMonitorKind)
+#
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/IgnitionMonitorKind.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.automotive.vehicle@2.1::types.IgnitionMonitorKind
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (Obd2FloatSensorIndex)
+#
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/Obd2FloatSensorIndex.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.automotive.vehicle@2.1::types.Obd2FloatSensorIndex
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (Obd2IntegerSensorIndex)
+#
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/Obd2IntegerSensorIndex.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.automotive.vehicle@2.1::types.Obd2IntegerSensorIndex
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (SecondaryAirStatus)
+#
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/SecondaryAirStatus.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.automotive.vehicle@2.1::types.SecondaryAirStatus
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (SparkIgnitionMonitors)
+#
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/SparkIgnitionMonitors.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.automotive.vehicle@2.1::types.SparkIgnitionMonitors
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build types.hal (VehicleProperty)
+#
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/VehicleProperty.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.automotive.vehicle@2.1::types.VehicleProperty
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build IVehicle.hal
+#
+GEN := $(intermediates)/android/hardware/automotive/vehicle/V2_1/IVehicle.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IVehicle.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.automotive.vehicle@2.1::IVehicle
+
+$(GEN): $(LOCAL_PATH)/IVehicle.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+include $(BUILD_STATIC_JAVA_LIBRARY)
+
+
+
+include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/automotive/vehicle/2.1/IVehicle.hal b/automotive/vehicle/2.1/IVehicle.hal
new file mode 100644
index 0000000..5b6a23f
--- /dev/null
+++ b/automotive/vehicle/2.1/IVehicle.hal
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.1 (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.1
+ *
+ * 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.automotive.vehicle@2.1;
+
+import android.hardware.automotive.vehicle@2.0;
+
+/*
+ * New revision of IVehicle interface that supports properties defined in
+ * VehicleProperty enum version 2.1.
+ *
+ * NOTE: this HAL interface is under development and shouldn't be used in
+ * production.
+ *
+ * TODO(pavelm): update comment when this interface is ready for prod.
+ */
+interface IVehicle extends @2.0::IVehicle {
+};
diff --git a/automotive/vehicle/2.1/default/Android.mk b/automotive/vehicle/2.1/default/Android.mk
new file mode 100644
index 0000000..3075956
--- /dev/null
+++ b/automotive/vehicle/2.1/default/Android.mk
@@ -0,0 +1,122 @@
+# Copyright (C) 2016 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.
+
+LOCAL_PATH := $(call my-dir)
+
+vhal_v2_0 = android.hardware.automotive.vehicle@2.0
+vhal_v2_1 = android.hardware.automotive.vehicle@2.1
+
+###############################################################################
+# Vehicle reference implementation lib
+###############################################################################
+include $(CLEAR_VARS)
+LOCAL_MODULE := $(vhal_v2_1)-manager-lib
+LOCAL_SRC_FILES := \
+ common/src/Obd2SensorStore.cpp
+
+LOCAL_C_INCLUDES := \
+ $(LOCAL_PATH)/common/include/vhal_v2_1 \
+ $(LOCAL_PATH)/../../2.0/default/common/include/vhal_v2_0 \
+
+LOCAL_EXPORT_C_INCLUDE_DIRS := \
+ $(LOCAL_PATH)/common/include
+
+LOCAL_SHARED_LIBRARIES := \
+ libbinder \
+ libhidlbase \
+ libhidltransport \
+ libhwbinder \
+ liblog \
+ libutils \
+ $(vhal_v2_1) \
+
+include $(BUILD_STATIC_LIBRARY)
+
+###############################################################################
+# Vehicle default VehicleHAL implementation
+###############################################################################
+include $(CLEAR_VARS)
+
+LOCAL_MODULE:= $(vhal_v2_1)-default-impl-lib
+LOCAL_SRC_FILES:= \
+ impl/vhal_v2_1/DefaultVehicleHal.cpp \
+
+LOCAL_C_INCLUDES := \
+ $(LOCAL_PATH)/impl/vhal_v2_1 \
+ $(LOCAL_PATH)/common/include
+
+LOCAL_EXPORT_C_INCLUDE_DIRS := \
+ $(LOCAL_PATH)/impl \
+ $(LOCAL_PATH)/common/include
+
+
+# LOCAL_WHOLE_STATIC_LIBRARIES := \
+
+LOCAL_STATIC_LIBRARIES := \
+ $(vhal_v2_0)-default-impl-lib \
+ $(vhal_v2_0)-manager-lib \
+ $(vhal_v2_1)-manager-lib \
+ $(vhal_v2_0)-libproto-native
+
+LOCAL_SHARED_LIBRARIES := \
+ libbase \
+ libbinder \
+ libhidlbase \
+ libhidltransport \
+ libhwbinder \
+ liblog \
+ libutils \
+ libprotobuf-cpp-lite \
+ $(vhal_v2_0) \
+ $(vhal_v2_1) \
+
+LOCAL_CFLAGS += -Wall -Wextra -Werror
+
+include $(BUILD_STATIC_LIBRARY)
+
+###############################################################################
+# Vehicle HAL service
+###############################################################################
+include $(CLEAR_VARS)
+LOCAL_MODULE := $(vhal_v2_1)-service
+LOCAL_INIT_RC := $(vhal_v2_1)-service.rc
+LOCAL_MODULE_RELATIVE_PATH := hw
+LOCAL_PROPRIETARY_MODULE := true
+LOCAL_SRC_FILES := \
+ service.cpp
+
+LOCAL_WHOLE_STATIC_LIBRARIES := \
+ $(vhal_v2_0)-libproto-native \
+
+LOCAL_STATIC_LIBRARIES := \
+ $(vhal_v2_0)-manager-lib \
+ $(vhal_v2_0)-default-impl-lib \
+ $(vhal_v2_1)-default-impl-lib \
+ $(vhal_v2_1)-manager-lib \
+
+LOCAL_SHARED_LIBRARIES := \
+ libbase \
+ libbinder \
+ libhidlbase \
+ libhidltransport \
+ libhwbinder \
+ liblog \
+ libutils \
+ libprotobuf-cpp-lite \
+ $(vhal_v2_0) \
+ $(vhal_v2_1) \
+
+LOCAL_CFLAGS += -Wall -Wextra -Werror
+
+include $(BUILD_EXECUTABLE)
diff --git a/automotive/vehicle/2.1/default/android.hardware.automotive.vehicle@2.1-service.rc b/automotive/vehicle/2.1/default/android.hardware.automotive.vehicle@2.1-service.rc
new file mode 100644
index 0000000..8929d25
--- /dev/null
+++ b/automotive/vehicle/2.1/default/android.hardware.automotive.vehicle@2.1-service.rc
@@ -0,0 +1,4 @@
+service vehicle-hal-2.1 /vendor/bin/hw/android.hardware.automotive.vehicle@2.1-service
+ class hal
+ user vehicle_network
+ group system inet
diff --git a/automotive/vehicle/2.0/default/vehicle_hal_manager/Obd2SensorStore.h b/automotive/vehicle/2.1/default/common/include/vhal_v2_1/Obd2SensorStore.h
similarity index 80%
rename from automotive/vehicle/2.0/default/vehicle_hal_manager/Obd2SensorStore.h
rename to automotive/vehicle/2.1/default/common/include/vhal_v2_1/Obd2SensorStore.h
index 3e2a08e..945e3e0 100644
--- a/automotive/vehicle/2.0/default/vehicle_hal_manager/Obd2SensorStore.h
+++ b/automotive/vehicle/2.1/default/common/include/vhal_v2_1/Obd2SensorStore.h
@@ -14,18 +14,18 @@
* limitations under the License.
*/
-#ifndef android_hardware_automotive_vehicle_V2_0_Obd2SensorStore_H_
-#define android_hardware_automotive_vehicle_V2_0_Obd2SensorStore_H_
+#ifndef android_hardware_automotive_vehicle_V2_1_Obd2SensorStore_H_
+#define android_hardware_automotive_vehicle_V2_1_Obd2SensorStore_H_
#include <vector>
-#include <VehicleHal.h>
+#include <android/hardware/automotive/vehicle/2.1/types.h>
namespace android {
namespace hardware {
namespace automotive {
namespace vehicle {
-namespace V2_0 {
+namespace V2_1 {
// This class wraps all the logic required to create an OBD2 frame.
// It allows storing sensor values, setting appropriate bitmasks as needed,
@@ -38,14 +38,14 @@
size_t numVendorFloatSensors);
// Stores an integer-valued sensor.
- StatusCode setIntegerSensor(Obd2IntegerSensorIndex index, int32_t value);
+ V2_0::StatusCode setIntegerSensor(Obd2IntegerSensorIndex index, int32_t value);
// Stores an integer-valued sensor.
- StatusCode setIntegerSensor(size_t index, int32_t value);
+ V2_0::StatusCode setIntegerSensor(size_t index, int32_t value);
// Stores a float-valued sensor.
- StatusCode setFloatSensor(Obd2FloatSensorIndex index, float value);
+ V2_0::StatusCode setFloatSensor(Obd2FloatSensorIndex index, float value);
// Stores a float-valued sensor.
- StatusCode setFloatSensor(size_t index, float value);
+ V2_0::StatusCode setFloatSensor(size_t index, float value);
// Returns a vector that contains all integer sensors stored.
const std::vector<int32_t>& getIntegerSensors() const;
@@ -55,7 +55,7 @@
const std::vector<uint8_t>& getSensorsBitmask() const;
// Given a stringValue, fill in a VehiclePropValue
- void fillPropValue(VehiclePropValue *propValue,
+ void fillPropValue(V2_0::VehiclePropValue *propValue,
std::string dtc) const;
private:
@@ -77,7 +77,7 @@
BitmaskInVector mSensorsBitmask;
};
-} // namespace V2_0
+} // namespace V2_1
} // namespace vehicle
} // namespace automotive
} // namespace hardware
diff --git a/automotive/vehicle/2.0/default/vehicle_hal_manager/Obd2SensorStore.cpp b/automotive/vehicle/2.1/default/common/src/Obd2SensorStore.cpp
similarity index 79%
rename from automotive/vehicle/2.0/default/vehicle_hal_manager/Obd2SensorStore.cpp
rename to automotive/vehicle/2.1/default/common/src/Obd2SensorStore.cpp
index 761e550..b07717b 100644
--- a/automotive/vehicle/2.0/default/vehicle_hal_manager/Obd2SensorStore.cpp
+++ b/automotive/vehicle/2.1/default/common/src/Obd2SensorStore.cpp
@@ -17,13 +17,13 @@
#include "Obd2SensorStore.h"
#include <utils/SystemClock.h>
-#include <vehicle_hal_manager/VehicleUtils.h>
+#include "VehicleUtils.h"
namespace android {
namespace hardware {
namespace automotive {
namespace vehicle {
-namespace V2_0 {
+namespace V2_1 {
Obd2SensorStore::BitmaskInVector::BitmaskInVector(size_t numBits)
{
@@ -57,8 +57,8 @@
Obd2SensorStore::Obd2SensorStore(size_t numVendorIntegerSensors,
size_t numVendorFloatSensors) {
// because the last index is valid *inclusive*
- const size_t numSystemIntegerSensors = toInt(Obd2IntegerSensorIndex::LAST_SYSTEM_INDEX)+1;
- const size_t numSystemFloatSensors = toInt(Obd2FloatSensorIndex::LAST_SYSTEM_INDEX)+1;
+ const size_t numSystemIntegerSensors = V2_0::toInt(Obd2IntegerSensorIndex::LAST_SYSTEM_INDEX)+1;
+ const size_t numSystemFloatSensors = V2_0::toInt(Obd2FloatSensorIndex::LAST_SYSTEM_INDEX)+1;
mIntegerSensors = std::vector<int32_t>(
numSystemIntegerSensors+numVendorIntegerSensors, 0);
mFloatSensors = std::vector<float>(
@@ -66,25 +66,25 @@
mSensorsBitmask.resize(mIntegerSensors.size()+mFloatSensors.size());
}
-StatusCode Obd2SensorStore::setIntegerSensor(Obd2IntegerSensorIndex index,
+V2_0::StatusCode Obd2SensorStore::setIntegerSensor(Obd2IntegerSensorIndex index,
int32_t value) {
- return setIntegerSensor(toInt(index), value);
+ return setIntegerSensor(V2_0::toInt(index), value);
}
-StatusCode Obd2SensorStore::setFloatSensor(Obd2FloatSensorIndex index,
+V2_0::StatusCode Obd2SensorStore::setFloatSensor(Obd2FloatSensorIndex index,
float value) {
- return setFloatSensor(toInt(index), value);
+ return setFloatSensor(V2_0::toInt(index), value);
}
-StatusCode Obd2SensorStore::setIntegerSensor(size_t index, int32_t value) {
+V2_0::StatusCode Obd2SensorStore::setIntegerSensor(size_t index, int32_t value) {
mIntegerSensors[index] = value;
mSensorsBitmask.set(index, true);
- return StatusCode::OK;
+ return V2_0::StatusCode::OK;
}
-StatusCode Obd2SensorStore::setFloatSensor(size_t index, float value) {
+V2_0::StatusCode Obd2SensorStore::setFloatSensor(size_t index, float value) {
mFloatSensors[index] = value;
mSensorsBitmask.set(index + mIntegerSensors.size(), true);
- return StatusCode::OK;
+ return V2_0::StatusCode::OK;
}
const std::vector<int32_t>& Obd2SensorStore::getIntegerSensors() const {
@@ -99,7 +99,7 @@
return mSensorsBitmask.getBitmask();
}
-void Obd2SensorStore::fillPropValue(VehiclePropValue *propValue,
+void Obd2SensorStore::fillPropValue(V2_0::VehiclePropValue *propValue,
std::string dtc) const {
propValue->timestamp = elapsedRealtimeNano();
propValue->value.int32Values = getIntegerSensors();
diff --git a/automotive/vehicle/2.1/default/impl/vhal_v2_1/DefaultConfig.h b/automotive/vehicle/2.1/default/impl/vhal_v2_1/DefaultConfig.h
new file mode 100644
index 0000000..769ae6d
--- /dev/null
+++ b/automotive/vehicle/2.1/default/impl/vhal_v2_1/DefaultConfig.h
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2016 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.
+ */
+
+#ifndef android_hardware_automotive_vehicle_V2_1_impl_DefaultConfig_H_
+#define android_hardware_automotive_vehicle_V2_1_impl_DefaultConfig_H_
+
+#include <android/hardware/automotive/vehicle/2.1/types.h>
+#include <vhal_v2_0/VehicleUtils.h>
+
+namespace android {
+namespace hardware {
+namespace automotive {
+namespace vehicle {
+namespace V2_1 {
+
+namespace impl {
+
+const V2_0::VehiclePropConfig kVehicleProperties[] = {
+ {
+ .prop = V2_0::toInt(V2_1::VehicleProperty::WHEEL_TICK),
+ .access = V2_0::VehiclePropertyAccess::READ,
+ .changeMode = V2_0::VehiclePropertyChangeMode::CONTINUOUS,
+ },
+
+ {
+ .prop = V2_0::toInt(V2_1::VehicleProperty::OBD2_LIVE_FRAME),
+ .access = V2_0::VehiclePropertyAccess::READ,
+ .changeMode = V2_0::VehiclePropertyChangeMode::ON_CHANGE,
+ .configArray = {0,0}
+ },
+
+ {
+ .prop = V2_0::toInt(V2_1::VehicleProperty::OBD2_FREEZE_FRAME),
+ .access = V2_0::VehiclePropertyAccess::READ,
+ .changeMode = V2_0::VehiclePropertyChangeMode::ON_CHANGE,
+ .configArray = {0,0}
+ },
+
+ {
+ .prop = V2_0::toInt(V2_1::VehicleProperty::OBD2_FREEZE_FRAME_INFO),
+ .access = V2_0::VehiclePropertyAccess::READ,
+ .changeMode = V2_0::VehiclePropertyChangeMode::ON_CHANGE
+ },
+
+ {
+ .prop = V2_0::toInt(V2_1::VehicleProperty::OBD2_FREEZE_FRAME_CLEAR),
+ .access = V2_0::VehiclePropertyAccess::WRITE,
+ .changeMode = V2_0::VehiclePropertyChangeMode::ON_CHANGE
+ }
+};
+
+} // impl
+
+} // namespace V2_1
+} // namespace vehicle
+} // namespace automotive
+} // namespace hardware
+} // namespace android
+
+#endif // android_hardware_automotive_vehicle_V2_1_impl_DefaultConfig_H_
diff --git a/automotive/vehicle/2.1/default/impl/vhal_v2_1/DefaultVehicleHal.cpp b/automotive/vehicle/2.1/default/impl/vhal_v2_1/DefaultVehicleHal.cpp
new file mode 100644
index 0000000..dc96bf9
--- /dev/null
+++ b/automotive/vehicle/2.1/default/impl/vhal_v2_1/DefaultVehicleHal.cpp
@@ -0,0 +1,284 @@
+/*
+ * Copyright (C) 2016 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.
+ */
+
+#define LOG_TAG "DefaultVehicleHal_v2_1"
+#include <android/log.h>
+
+#include <algorithm>
+#include <netinet/in.h>
+#include <sys/socket.h>
+
+#include "DefaultVehicleHal.h"
+#include "VehicleHalProto.pb.h"
+
+#define DEBUG_SOCKET (33452)
+
+namespace android {
+namespace hardware {
+namespace automotive {
+namespace vehicle {
+namespace V2_1 {
+
+namespace impl {
+
+static std::unique_ptr<Obd2SensorStore> fillDefaultObd2Frame(
+ size_t numVendorIntegerSensors,
+ size_t numVendorFloatSensors) {
+ std::unique_ptr<Obd2SensorStore> sensorStore(new Obd2SensorStore(
+ numVendorIntegerSensors, numVendorFloatSensors));
+
+ sensorStore->setIntegerSensor(
+ Obd2IntegerSensorIndex::FUEL_SYSTEM_STATUS,
+ V2_0::toInt(FuelSystemStatus::CLOSED_LOOP));
+ sensorStore->setIntegerSensor(
+ Obd2IntegerSensorIndex::MALFUNCTION_INDICATOR_LIGHT_ON, 0);
+ sensorStore->setIntegerSensor(
+ Obd2IntegerSensorIndex::IGNITION_MONITORS_SUPPORTED,
+ V2_0::toInt(IgnitionMonitorKind::SPARK));
+ sensorStore->setIntegerSensor(Obd2IntegerSensorIndex::IGNITION_SPECIFIC_MONITORS,
+ CommonIgnitionMonitors::COMPONENTS_AVAILABLE |
+ CommonIgnitionMonitors::MISFIRE_AVAILABLE |
+ SparkIgnitionMonitors::AC_REFRIGERANT_AVAILABLE |
+ SparkIgnitionMonitors::EVAPORATIVE_SYSTEM_AVAILABLE);
+ sensorStore->setIntegerSensor(
+ Obd2IntegerSensorIndex::INTAKE_AIR_TEMPERATURE, 35);
+ sensorStore->setIntegerSensor(
+ Obd2IntegerSensorIndex::COMMANDED_SECONDARY_AIR_STATUS,
+ V2_0::toInt(SecondaryAirStatus::FROM_OUTSIDE_OR_OFF));
+ sensorStore->setIntegerSensor(
+ Obd2IntegerSensorIndex::NUM_OXYGEN_SENSORS_PRESENT, 1);
+ sensorStore->setIntegerSensor(
+ Obd2IntegerSensorIndex::RUNTIME_SINCE_ENGINE_START, 500);
+ sensorStore->setIntegerSensor(
+ Obd2IntegerSensorIndex::DISTANCE_TRAVELED_WITH_MALFUNCTION_INDICATOR_LIGHT_ON, 0);
+ sensorStore->setIntegerSensor(
+ Obd2IntegerSensorIndex::WARMUPS_SINCE_CODES_CLEARED, 51);
+ sensorStore->setIntegerSensor(
+ Obd2IntegerSensorIndex::DISTANCE_TRAVELED_SINCE_CODES_CLEARED, 365);
+ sensorStore->setIntegerSensor(
+ Obd2IntegerSensorIndex::ABSOLUTE_BAROMETRIC_PRESSURE, 30);
+ sensorStore->setIntegerSensor(
+ Obd2IntegerSensorIndex::CONTROL_MODULE_VOLTAGE, 12);
+ sensorStore->setIntegerSensor(
+ Obd2IntegerSensorIndex::AMBIENT_AIR_TEMPERATURE, 18);
+ sensorStore->setIntegerSensor(
+ Obd2IntegerSensorIndex::MAX_FUEL_AIR_EQUIVALENCE_RATIO, 1);
+ sensorStore->setIntegerSensor(
+ Obd2IntegerSensorIndex::FUEL_TYPE, V2_0::toInt(FuelType::GASOLINE));
+ sensorStore->setFloatSensor(
+ Obd2FloatSensorIndex::CALCULATED_ENGINE_LOAD, 0.153);
+ sensorStore->setFloatSensor(
+ Obd2FloatSensorIndex::SHORT_TERM_FUEL_TRIM_BANK1, -0.16);
+ sensorStore->setFloatSensor(
+ Obd2FloatSensorIndex::LONG_TERM_FUEL_TRIM_BANK1, -0.16);
+ sensorStore->setFloatSensor(
+ Obd2FloatSensorIndex::SHORT_TERM_FUEL_TRIM_BANK2, -0.16);
+ sensorStore->setFloatSensor(
+ Obd2FloatSensorIndex::LONG_TERM_FUEL_TRIM_BANK2, -0.16);
+ sensorStore->setFloatSensor(
+ Obd2FloatSensorIndex::INTAKE_MANIFOLD_ABSOLUTE_PRESSURE, 7.5);
+ sensorStore->setFloatSensor(
+ Obd2FloatSensorIndex::ENGINE_RPM, 1250.);
+ sensorStore->setFloatSensor(
+ Obd2FloatSensorIndex::VEHICLE_SPEED, 40.);
+ sensorStore->setFloatSensor(
+ Obd2FloatSensorIndex::TIMING_ADVANCE, 2.5);
+ sensorStore->setFloatSensor(
+ Obd2FloatSensorIndex::THROTTLE_POSITION, 19.75);
+ sensorStore->setFloatSensor(
+ Obd2FloatSensorIndex::OXYGEN_SENSOR1_VOLTAGE, 0.265);
+ sensorStore->setFloatSensor(
+ Obd2FloatSensorIndex::FUEL_TANK_LEVEL_INPUT, 0.824);
+ sensorStore->setFloatSensor(
+ Obd2FloatSensorIndex::EVAPORATION_SYSTEM_VAPOR_PRESSURE, -0.373);
+ sensorStore->setFloatSensor(
+ Obd2FloatSensorIndex::CATALYST_TEMPERATURE_BANK1_SENSOR1, 190.);
+ sensorStore->setFloatSensor(
+ Obd2FloatSensorIndex::RELATIVE_THROTTLE_POSITION, 3.);
+ sensorStore->setFloatSensor(
+ Obd2FloatSensorIndex::ABSOLUTE_THROTTLE_POSITION_B, 0.306);
+ sensorStore->setFloatSensor(
+ Obd2FloatSensorIndex::ACCELERATOR_PEDAL_POSITION_D, 0.188);
+ sensorStore->setFloatSensor(
+ Obd2FloatSensorIndex::ACCELERATOR_PEDAL_POSITION_E, 0.094);
+ sensorStore->setFloatSensor(
+ Obd2FloatSensorIndex::COMMANDED_THROTTLE_ACTUATOR, 0.024);
+
+ return sensorStore;
+}
+
+void DefaultVehicleHal::initObd2LiveFrame(V2_0::VehiclePropConfig& propConfig) {
+ auto sensorStore = fillDefaultObd2Frame(propConfig.configArray[0],
+ propConfig.configArray[1]);
+ mLiveObd2Frame = createVehiclePropValue(
+ V2_0::VehiclePropertyType::COMPLEX, 0);
+ sensorStore->fillPropValue(mLiveObd2Frame.get(), "");
+}
+
+void DefaultVehicleHal::initObd2FreezeFrame(V2_0::VehiclePropConfig& propConfig) {
+ auto sensorStore = fillDefaultObd2Frame(propConfig.configArray[0],
+ propConfig.configArray[1]);
+
+ mFreezeObd2Frames.push_back(
+ createVehiclePropValue(V2_0::VehiclePropertyType::COMPLEX,0));
+ mFreezeObd2Frames.push_back(
+ createVehiclePropValue(V2_0::VehiclePropertyType::COMPLEX,0));
+ mFreezeObd2Frames.push_back(
+ createVehiclePropValue(V2_0::VehiclePropertyType::COMPLEX,0));
+
+ sensorStore->fillPropValue(mFreezeObd2Frames[0].get(), "P0070");
+ sensorStore->fillPropValue(mFreezeObd2Frames[1].get(), "P0102");
+ sensorStore->fillPropValue(mFreezeObd2Frames[2].get(), "P0123");
+}
+
+V2_0::StatusCode DefaultVehicleHal::fillObd2LiveFrame(V2_0::VehiclePropValue* v) {
+ v->prop = V2_0::toInt(VehicleProperty::OBD2_LIVE_FRAME);
+ v->value.int32Values = mLiveObd2Frame->value.int32Values;
+ v->value.floatValues = mLiveObd2Frame->value.floatValues;
+ v->value.bytes = mLiveObd2Frame->value.bytes;
+ return V2_0::StatusCode::OK;
+}
+
+template<typename Iterable>
+typename Iterable::const_iterator findPropValueAtTimestamp(
+ const Iterable& frames,
+ int64_t timestamp) {
+ return std::find_if(frames.begin(),
+ frames.end(),
+ [timestamp] (const std::unique_ptr<V2_0::VehiclePropValue>&
+ propValue) -> bool {
+ return propValue->timestamp == timestamp;
+ });
+}
+
+V2_0::StatusCode DefaultVehicleHal::fillObd2FreezeFrame(
+ const V2_0::VehiclePropValue& requestedPropValue,
+ V2_0::VehiclePropValue* v) {
+ if (requestedPropValue.value.int64Values.size() != 1) {
+ ALOGE("asked for OBD2_FREEZE_FRAME without valid timestamp");
+ return V2_0::StatusCode::INVALID_ARG;
+ }
+ auto timestamp = requestedPropValue.value.int64Values[0];
+ auto freezeFrameIter = findPropValueAtTimestamp(mFreezeObd2Frames,
+ timestamp);
+ if(mFreezeObd2Frames.end() == freezeFrameIter) {
+ ALOGE("asked for OBD2_FREEZE_FRAME at invalid timestamp");
+ return V2_0::StatusCode::INVALID_ARG;
+ }
+ const auto& freezeFrame = *freezeFrameIter;
+ v->prop = V2_0::toInt(VehicleProperty::OBD2_FREEZE_FRAME);
+ v->value.int32Values = freezeFrame->value.int32Values;
+ v->value.floatValues = freezeFrame->value.floatValues;
+ v->value.bytes = freezeFrame->value.bytes;
+ v->value.stringValue = freezeFrame->value.stringValue;
+ v->timestamp = freezeFrame->timestamp;
+ return V2_0::StatusCode::OK;
+}
+
+V2_0::StatusCode DefaultVehicleHal::clearObd2FreezeFrames(
+ const V2_0::VehiclePropValue& propValue) {
+ if (propValue.value.int64Values.size() == 0) {
+ mFreezeObd2Frames.clear();
+ return V2_0::StatusCode::OK;
+ } else {
+ for(int64_t timestamp: propValue.value.int64Values) {
+ auto freezeFrameIter = findPropValueAtTimestamp(mFreezeObd2Frames,
+ timestamp);
+ if(mFreezeObd2Frames.end() == freezeFrameIter) {
+ ALOGE("asked for OBD2_FREEZE_FRAME at invalid timestamp");
+ return V2_0::StatusCode::INVALID_ARG;
+ }
+ mFreezeObd2Frames.erase(freezeFrameIter);
+ }
+ }
+ return V2_0::StatusCode::OK;
+}
+
+V2_0::StatusCode DefaultVehicleHal::fillObd2DtcInfo(V2_0::VehiclePropValue* v) {
+ std::vector<int64_t> timestamps;
+ for(const auto& freezeFrame: mFreezeObd2Frames) {
+ timestamps.push_back(freezeFrame->timestamp);
+ }
+ v->value.int64Values = timestamps;
+ return V2_0::StatusCode::OK;
+}
+
+void DefaultVehicleHal::onCreate() {
+ mVehicleHal20->init(getValuePool(),
+ std::bind(&DefaultVehicleHal::doHalEvent, this, _1),
+ std::bind(&DefaultVehicleHal::doHalPropertySetError, this, _1, _2, _3));
+
+ std::vector<V2_0::VehiclePropConfig> configs = listProperties();
+ for (auto& cfg : configs) {
+ switch(cfg.prop) {
+ case V2_0::toInt(V2_1::VehicleProperty::OBD2_LIVE_FRAME):
+ initObd2LiveFrame(cfg);
+ break;
+ case V2_0::toInt(V2_1::VehicleProperty::OBD2_FREEZE_FRAME):
+ initObd2FreezeFrame(cfg);
+ break;
+ default:
+ break;
+ }
+ }
+}
+
+DefaultVehicleHal::VehiclePropValuePtr DefaultVehicleHal::get(
+ const V2_0::VehiclePropValue& requestedPropValue,
+ V2_0::StatusCode* outStatus) {
+
+ auto propId = requestedPropValue.prop;
+ VehiclePropValuePtr v = nullptr;
+ auto& pool = *getValuePool();
+
+ switch (propId) {
+ case V2_0::toInt(V2_1::VehicleProperty::OBD2_LIVE_FRAME):
+ v = pool.obtainComplex();
+ *outStatus = fillObd2LiveFrame(v.get());
+ return v;
+ case V2_0::toInt(V2_1::VehicleProperty::OBD2_FREEZE_FRAME):
+ v = pool.obtainComplex();
+ *outStatus = fillObd2FreezeFrame(requestedPropValue, v.get());
+ return v;
+ case V2_0::toInt(V2_1::VehicleProperty::OBD2_FREEZE_FRAME_INFO):
+ v = pool.obtainComplex();
+ *outStatus = fillObd2DtcInfo(v.get());
+ return v;
+ default:
+ return mVehicleHal20->get(requestedPropValue, outStatus);
+ }
+}
+
+V2_0::StatusCode DefaultVehicleHal::set(
+ const V2_0::VehiclePropValue& propValue) {
+
+ auto propId = propValue.prop;
+ switch (propId) {
+ case V2_0::toInt(V2_1::VehicleProperty::OBD2_FREEZE_FRAME_CLEAR):
+ return clearObd2FreezeFrames(propValue);
+ break;
+ default:
+ return mVehicleHal20->set(propValue);
+ }
+}
+
+} // impl
+
+} // namespace V2_1
+} // namespace vehicle
+} // namespace automotive
+} // namespace hardware
+} // namespace android
diff --git a/automotive/vehicle/2.1/default/impl/vhal_v2_1/DefaultVehicleHal.h b/automotive/vehicle/2.1/default/impl/vhal_v2_1/DefaultVehicleHal.h
new file mode 100644
index 0000000..ac65fc6
--- /dev/null
+++ b/automotive/vehicle/2.1/default/impl/vhal_v2_1/DefaultVehicleHal.h
@@ -0,0 +1,96 @@
+/*
+ * Copyright (C) 2016 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.
+ */
+
+#ifndef android_hardware_automotive_vehicle_V2_1_impl_DefaultVehicleHal_H_
+#define android_hardware_automotive_vehicle_V2_1_impl_DefaultVehicleHal_H_
+
+#include <memory>
+
+#include <utils/SystemClock.h>
+
+#include <vhal_v2_0/VehicleHal.h>
+#include <vhal_v2_0/DefaultVehicleHal.h>
+#include <vhal_v2_1/Obd2SensorStore.h>
+
+#include "DefaultConfig.h"
+
+namespace android {
+namespace hardware {
+namespace automotive {
+namespace vehicle {
+namespace V2_1 {
+
+namespace impl {
+
+using namespace std::placeholders;
+
+class DefaultVehicleHal : public V2_0::VehicleHal {
+public:
+ DefaultVehicleHal(V2_0::VehicleHal* vhal20) : mVehicleHal20(vhal20) {}
+
+ std::vector<V2_0::VehiclePropConfig> listProperties() override {
+ std::vector<V2_0::VehiclePropConfig> propConfigs(mVehicleHal20->listProperties());
+
+ // Join Vehicle Hal 2.0 and 2.1 configs.
+ propConfigs.insert(propConfigs.end(),
+ std::begin(kVehicleProperties),
+ std::end(kVehicleProperties));
+
+ return propConfigs;
+ }
+
+ VehiclePropValuePtr get(const V2_0::VehiclePropValue& requestedPropValue,
+ V2_0::StatusCode* outStatus) override;
+
+ V2_0::StatusCode set(const V2_0::VehiclePropValue& propValue) override;
+
+ V2_0::StatusCode subscribe(int32_t property,
+ int32_t areas,
+ float sampleRate) override {
+ return mVehicleHal20->subscribe(property, areas, sampleRate);
+ }
+
+ V2_0::StatusCode unsubscribe(int32_t property) override {
+ return mVehicleHal20->unsubscribe(property);
+ }
+
+ void onCreate() override;
+
+private:
+ void initObd2LiveFrame(V2_0::VehiclePropConfig& propConfig);
+ void initObd2FreezeFrame(V2_0::VehiclePropConfig& propConfig);
+ V2_0::StatusCode fillObd2LiveFrame(V2_0::VehiclePropValue* v);
+ V2_0::StatusCode fillObd2FreezeFrame(const V2_0::VehiclePropValue& requestedPropValue,
+ V2_0::VehiclePropValue* v);
+ V2_0::StatusCode fillObd2DtcInfo(V2_0::VehiclePropValue *v);
+ V2_0::StatusCode clearObd2FreezeFrames(const V2_0::VehiclePropValue& propValue);
+
+private:
+ V2_0::VehicleHal* mVehicleHal20;
+ std::unique_ptr<V2_0::VehiclePropValue> mLiveObd2Frame {nullptr};
+ std::vector<std::unique_ptr<V2_0::VehiclePropValue>> mFreezeObd2Frames;
+};
+
+} // impl
+
+} // namespace V2_1
+} // namespace vehicle
+} // namespace automotive
+} // namespace hardware
+} // namespace android
+
+
+#endif // android_hardware_automotive_vehicle_V2_0_impl_DefaultVehicleHal_H_
diff --git a/automotive/vehicle/2.1/default/service.cpp b/automotive/vehicle/2.1/default/service.cpp
new file mode 100644
index 0000000..0844622
--- /dev/null
+++ b/automotive/vehicle/2.1/default/service.cpp
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2016 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.
+ */
+
+#define LOG_TAG "automotive.vehicle@2.1-service"
+#include <android/log.h>
+#include <hidl/HidlTransportSupport.h>
+
+#include <iostream>
+
+#include <android/hardware/automotive/vehicle/2.1/IVehicle.h>
+
+#include <vhal_v2_0/VehicleHalManager.h>
+#include <vhal_v2_0/DefaultVehicleHal.h>
+
+#include <vhal_v2_1/DefaultVehicleHal.h>
+
+using namespace android;
+using namespace android::hardware;
+
+namespace V2_1 = ::android::hardware::automotive::vehicle::V2_1;
+namespace V2_0 = ::android::hardware::automotive::vehicle::V2_0;
+
+using StatusCode = V2_0::StatusCode;
+using VehiclePropValue = V2_0::VehiclePropValue;
+
+/* Just wrapper that passes all calls to the provided V2_0::IVehicle object */
+struct Vehicle_V2_1 : public V2_1::IVehicle {
+
+ Vehicle_V2_1(V2_0::IVehicle* vehicle20) : mVehicle20(vehicle20) {}
+
+ // Methods derived from IVehicle
+ Return<void> getAllPropConfigs(getAllPropConfigs_cb _hidl_cb) override {
+ return mVehicle20->getAllPropConfigs(_hidl_cb);
+ }
+
+ Return<void> getPropConfigs(const hidl_vec<int32_t>& properties,
+ getPropConfigs_cb _hidl_cb) override {
+ return mVehicle20->getPropConfigs(properties, _hidl_cb);
+ }
+
+ Return<void> get(const V2_0::VehiclePropValue& requestedPropValue,
+ get_cb _hidl_cb) override {
+ return mVehicle20->get(requestedPropValue, _hidl_cb);
+ }
+
+ Return<StatusCode> set(const VehiclePropValue& value) override {
+ return mVehicle20->set(value);
+ }
+
+ Return<StatusCode> subscribe(const sp<V2_0::IVehicleCallback>& callback,
+ const hidl_vec<V2_0::SubscribeOptions>&
+ options) override {
+ return mVehicle20->subscribe(callback, options);
+ }
+
+ Return<StatusCode> unsubscribe(const sp<V2_0::IVehicleCallback>& callback,
+ int32_t propId) override {
+ return mVehicle20->unsubscribe(callback, propId);
+ }
+
+ Return<void> debugDump(debugDump_cb _hidl_cb = nullptr) override {
+ return mVehicle20->debugDump(_hidl_cb);
+ }
+
+private:
+ V2_0::IVehicle* mVehicle20;
+};
+
+int main(int /* argc */, char* /* argv */ []) {
+ auto halImpl20 = std::make_unique<V2_0::impl::DefaultVehicleHal>();
+ auto halImpl21 = std::make_unique<V2_1::impl::DefaultVehicleHal>(halImpl20.get());
+
+ auto vehicleManager = std::make_unique<V2_0::VehicleHalManager>(halImpl21.get());
+
+ Vehicle_V2_1 vehicle21(vehicleManager.get());
+
+ ALOGI("Registering as service...");
+ vehicle21.registerAsService();
+
+ configureRpcThreadpool(1, true /* callerWillJoin */);
+
+ ALOGI("Ready");
+ joinRpcThreadpool();
+}
diff --git a/automotive/vehicle/2.0/default/tests/Obd2SensorStore_test.cpp b/automotive/vehicle/2.1/default/tests/Obd2SensorStore_test.cpp
similarity index 98%
rename from automotive/vehicle/2.0/default/tests/Obd2SensorStore_test.cpp
rename to automotive/vehicle/2.1/default/tests/Obd2SensorStore_test.cpp
index 3ebebbd..a01c0f4 100644
--- a/automotive/vehicle/2.0/default/tests/Obd2SensorStore_test.cpp
+++ b/automotive/vehicle/2.1/default/tests/Obd2SensorStore_test.cpp
@@ -16,8 +16,8 @@
#include <gtest/gtest.h>
-#include "vehicle_hal_manager/Obd2SensorStore.h"
-#include "vehicle_hal_manager/VehicleUtils.h"
+#include "vhal_v2_0/Obd2SensorStore.h"
+#include "vhal_v2_0/VehicleUtils.h"
namespace android {
namespace hardware {
diff --git a/automotive/vehicle/2.1/types.hal b/automotive/vehicle/2.1/types.hal
new file mode 100644
index 0000000..f0dd95f
--- /dev/null
+++ b/automotive/vehicle/2.1/types.hal
@@ -0,0 +1,553 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.1 (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.1
+ *
+ * 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.automotive.vehicle@2.1;
+
+import android.hardware.automotive.vehicle@2.0;
+
+/*
+ * Extension of VehicleProperty enum declared in Vehicle HAL 2.0
+ */
+enum VehicleProperty: @2.0::VehicleProperty {
+ /*
+ * Reports wheel rotational distance in meters since last wheel tick
+ * event
+ *
+ * The value is a vector each element represents distance for individual
+ * wheel in the following order: left front, right front, left rear,
+ * right rear. VehiclePropValue.timestamp must be correctly filled in.
+ *
+ * Vendors must specify wheels that support this sensor in
+ * VehiclePropConfig.configFlags. The format of this field is a bitset of
+ * values from Wheel enum.
+ *
+ * @change_mode VehiclePropertyChangeMode:ON_CHANGE |VehiclePropertyChangeMode:CONTINUOUS
+ * @access VehiclePropertyAccess:READ
+ * @unit VehicleUnit:METER
+ */
+ WHEEL_TICK = (
+ 0x0306
+ | VehiclePropertyGroup:SYSTEM
+ | VehiclePropertyType:FLOAT_VEC
+ | VehicleArea:GLOBAL),
+
+ /*
+ * OBD2 Live Sensor Data
+ *
+ * This property uses COMPLEX data to send a snapshot of the current (live)
+ * values of the OBD2 sensors provided by the vehicle.
+ *
+ * VehiclePropConfig
+ * configArray[0] : number of vendor-specific integer-valued sensors
+ * that can be returned in a frame.
+ * configArray[1] : number of vendor-specific float-valued sensors
+ * that can be returned in a frame.
+ *
+ * The values are to be interpreted as follows:
+ * the indices defined in Obd2IntegerSensorIndex are to be used to
+ * read from int32Values;
+ * the indices defined in Obd2FloatSensorIndex are to be used to
+ * read from floatValues.
+ * the elements of bytes are to be interpreted as a bitmask, such that
+ * the bits 0 thru the integer value of
+ * Obd2IntegerSensorIndex.LAST_SYSTEM_INDEX + the value of configArray[0]
+ * are 1 if the corresponding index is a valid sensor index whose value can
+ * be read in the returned int32Values vector, 0 otherwise.
+ * the bits Obd2IntegerSensorIndex.LAST_SYSTEM_INDEX+1 thru
+ * Obd2FloatingSensorIndex.LAST_SYSTEM_INDEX + the value of configArray[1]
+ * are 1 if the corresponding index is a valid sensor index whose value
+ * can be read in the returned floatValues vector, 0 otherwise.
+ *
+ * For example, int32Values[0] corresponds to FUEL_SYSTEM_STATUS, and
+ * floatValues[0] corresponds to CALCULATED_ENGINE_LOAD, but that mapping
+ * is only valid if the corresponding bits in the bytes vector are set to 1.
+ *
+ * @change_mode VehiclePropertyChangeMode:ON_CHANGE
+ * @access VehiclePropertyAccess:READ
+ */
+ OBD2_LIVE_FRAME = (
+ 0x0D00
+ | VehiclePropertyGroup:SYSTEM
+ | VehiclePropertyType:COMPLEX
+ | VehicleArea:GLOBAL),
+
+ /*
+ * OBD2 Freeze Frame Sensor Data
+ *
+ * This property uses COMPLEX data to send a snapshot of the values of the
+ * OBD2 sensors provided by the vehicle at the time that a diagnostic
+ * troubleshooting code (DTC) was recorded by the vehicle.
+ *
+ * VehiclePropConfig
+ * configArray[0] : number of vendor-specific integer-valued sensors
+ * that can be returned in a frame.
+ * configArray[1] : number of vendor-specific float-valued sensors
+ * that can be returned in a frame.
+ *
+ * A get of this property must take the following form:
+ * int64Values[0]: timestamp of the freeze frame to retrieve.
+ * Valid timestamps are given by OBD2_DTC_INFO.
+ *
+ * The values are to be interpreted as follows:
+ * the indices defined in Obd2IntegerSensorIndex are to be used to
+ * read from int32Values;
+ * the indices defined in Obd2FloatSensorIndex are to be used to
+ * read from floatValues;
+ * the elements of bytes are to be interpreted as a bitmask, such that
+ * the bits 0 thru the integer value of
+ * Obd2IntegerSensorIndex.LAST_SYSTEM_INDEX + the value of configArray[0]
+ * are 1 if the corresponding index is a valid sensor index whose value can
+ * be read in the returned int32Values vector, 0 otherwise.
+ * the bits Obd2IntegerSensorIndex.LAST_SYSTEM_INDEX+1 thru
+ * Obd2FloatingSensorIndex.LAST_SYSTEM_INDEX + the value of configArray[1]
+ * are 1 if the corresponding index is a valid sensor index whose value
+ * can be read in the returned floatValues vector, 0 otherwise.
+ * stringValue is the DTC that caused this freeze frame to be recorded.
+ *
+ * For example, int32Values[0] corresponds to FUEL_SYSTEM_STATUS, and
+ * floatValues[0] corresponds to CALCULATED_ENGINE_LOAD, but that mapping
+ * is only valid if the corresponding bits in the bytes vector are set to 1,
+ * and a possible valid stringValue is "P0176" to indicate a malfunction
+ * of the fuel composition sensor circuit.
+ *
+ * @change_mode VehiclePropertyChangeMode:ON_CHANGE
+ * @access VehiclePropertyAccess:READ
+ */
+ OBD2_FREEZE_FRAME = (
+ 0x0D01
+ | VehiclePropertyGroup:SYSTEM
+ | VehiclePropertyType:COMPLEX
+ | VehicleArea:GLOBAL),
+
+ /*
+ * OBD2 Freeze Frame Information
+ *
+ * This property describes the current freeze frames stored in vehicle
+ * memory and available for retrieval via OBD2_FREEZE_FRAME.
+ *
+ * The values are to be interpreted as follows:
+ * each element of int64Values is the timestamp at which a a fault code
+ * has been detected and the corresponding freeze frame stored, and each
+ * such element can be used as the key to OBD2_FREEZE_FRAME to retrieve
+ * the corresponding freeze frame.
+ *
+ * @change_mode VehiclePropertyChangeMode:ON_CHANGE
+ * @access VehiclePropertyAccess:READ
+ */
+ OBD2_FREEZE_FRAME_INFO = (
+ 0x0D02
+ | VehiclePropertyGroup:SYSTEM
+ | VehiclePropertyType:COMPLEX
+ | VehicleArea:GLOBAL),
+
+ /*
+ * OBD2 Freeze Frame Clear
+ *
+ * This property allows deletion of any of the freeze frames stored in
+ * vehicle memory, as described by OBD2_DTC_INFO.
+ *
+ * A set of this property is to be interpreted as follows:
+ * if int64Values contains no elements, then all DTCs stored will be cleared;
+ * if int64Values contains one or more elements, then DTCs at the timestamps
+ * stored in int64Values will be cleared, and the others not cleared, except
+ * the memory will be compacted so that all remaining DTCs are stored
+ * contiguously.
+ *
+ * @change_mode VehiclePropertyChangeMode:ON_CHANGE
+ * @access VehiclePropertyAccess:WRITE
+ */
+ OBD2_FREEZE_FRAME_CLEAR = (
+ 0x0D03
+ | VehiclePropertyGroup:SYSTEM
+ | VehiclePropertyType:COMPLEX
+ | VehicleArea:GLOBAL),
+};
+
+/* The status of a fuel system as described by the OBD2 specification. */
+enum FuelSystemStatus : int32_t {
+ OPEN_INSUFFICIENT_ENGINE_TEMPERATURE = 1,
+
+ CLOSED_LOOP = 2,
+
+ OPEN_ENGINE_LOAD_OR_DECELERATION = 4,
+
+ OPEN_SYSTEM_FAILURE = 8,
+
+ CLOSED_LOOP_BUT_FEEDBACK_FAULT = 16,
+};
+
+/* Defines which ignition monitors are available to be read. */
+enum IgnitionMonitorKind : int32_t {
+ SPARK = 0,
+
+ COMPRESSION = 1,
+};
+
+/* These ignition monitors are common to both SPARK and COMPRESSION. */
+enum CommonIgnitionMonitors : int32_t {
+ COMPONENTS_AVAILABLE = 0x1 << 0,
+ COMPONENTS_INCOMPLETE = 0x1 << 1,
+
+ FUEL_SYSTEM_AVAILABLE = 0x1 << 2,
+ FUEL_SYSTEM_INCOMPLETE = 0x1 << 3,
+
+ MISFIRE_AVAILABLE = 0x1 << 4,
+ MISFIRE_INCOMPLETE = 0x1 << 5,
+};
+
+/* Ignition monitors available for SPARK vehicles. */
+enum SparkIgnitionMonitors : CommonIgnitionMonitors {
+ EGR_AVAILABLE = 0x1 << 6,
+ EGR_INCOMPLETE = 0x1 << 7,
+
+ OXYGEN_SENSOR_HEATER_AVAILABLE = 0x1 << 8,
+ OXYGEN_SENSOR_HEATER_INCOMPLETE = 0x1 << 9,
+
+ OXYGEN_SENSOR_AVAILABLE = 0x1 << 10,
+ OXYGEN_SENSOR_INCOMPLETE = 0x1 << 11,
+
+ AC_REFRIGERANT_AVAILABLE = 0x1 << 12,
+ AC_REFRIGERANT_INCOMPLETE = 0x1 << 13,
+
+ SECONDARY_AIR_SYSTEM_AVAILABLE = 0x1 << 14,
+ SECONDARY_AIR_SYSTEM_INCOMPLETE = 0x1 << 15,
+
+ EVAPORATIVE_SYSTEM_AVAILABLE = 0x1 << 16,
+ EVAPORATIVE_SYSTEM_INCOMPLETE = 0x1 << 17,
+
+ HEATED_CATALYST_AVAILABLE = 0x1 << 18,
+ HEATED_CATALYST_INCOMPLETE = 0x1 << 19,
+
+ CATALYST_AVAILABLE = 0x1 << 20,
+ CATALYST_INCOMPLETE = 0x1 << 21,
+};
+
+/* Ignition monitors only available for COMPRESSION vehicles. */
+enum CompressionIgnitionMonitors : CommonIgnitionMonitors {
+ EGR_OR_VVT_AVAILABLE = 0x1 << 6,
+ EGR_OR_VVT_INCOMPLETE = 0x1 << 7,
+
+ PM_FILTER_AVAILABLE = 0x1 << 8,
+ PM_FILTER_INCOMPLETE = 0x1 << 9,
+
+ EXHAUST_GAS_SENSOR_AVAILABLE = 0x1 << 10,
+ EXHAUST_GAS_SENSOR_INCOMPLETE = 0x1 << 11,
+
+ BOOST_PRESSURE_AVAILABLE = 0x1 << 12,
+ BOOST_PRESSURE_INCOMPLETE = 0x1 << 13,
+
+ NOx_SCR__AVAILABLE = 0x1 << 14,
+ NOx_SCR_INCOMPLETE = 0x1 << 15,
+
+ NMHC_CATALYST_AVAILABLE = 0x1 << 16,
+ NMHC_CATALYST_INCOMPLETE = 0x1 << 17,
+};
+
+enum SecondaryAirStatus : int32_t {
+ UPSTREAM = 1,
+
+ DOWNSTREAM_OF_CATALYCIC_CONVERTER = 2,
+
+ FROM_OUTSIDE_OR_OFF = 4,
+
+ PUMP_ON_FOR_DIAGNOSTICS = 8,
+};
+
+enum FuelType : int32_t {
+ NOT_AVAILABLE = 0,
+
+ GASOLINE = 1,
+
+ METHANOL = 2,
+
+ ETHANOL = 3,
+
+ DIESEL = 4,
+
+ LPG = 5,
+
+ CNG = 6,
+
+ PROPANE = 7,
+
+ ELECTRIC = 8,
+
+ BIFUEL_RUNNING_GASOLINE = 9,
+
+ BIFUEL_RUNNING_METHANOL = 10,
+
+ BIFUEL_RUNNING_ETHANOL = 11,
+
+ BIFUEL_RUNNING_LPG = 12,
+
+ BIFUEL_RUNNING_CNG = 13,
+
+ BIFUEL_RUNNING_PROPANE = 14,
+
+ BIFUEL_RUNNING_ELECTRIC = 15,
+
+ BIFUEL_RUNNING_ELECTRIC_AND_COMBUSTION = 16,
+
+ HYBRID_GASOLINE = 17,
+
+ HYBRID_ETHANOL = 18,
+
+ HYBRID_DIESEL = 19,
+
+ HYBRID_ELECTRIC = 20,
+
+ HYBRID_RUNNING_ELECTRIC_AND_COMBUSTION = 21,
+
+ HYBRID_REGENERATIVE = 22,
+
+ BIFUEL_RUNNING_DIESEL = 23,
+};
+
+/*
+ * This enum provides the canonical mapping for sensor properties that have an integer value.
+ * The ordering of the values is taken from the OBD2 specification.
+ * Some of the properties are represented as an integer mapping to another enum. In those cases
+ * expect a comment by the property definition describing the enum to look at for the mapping.
+ * Any value greater than the last reserved index is available to vendors to map their extensions.
+ */
+enum Obd2IntegerSensorIndex : int32_t {
+ /* refer to FuelSystemStatus for a description of this value. */
+ FUEL_SYSTEM_STATUS = 0,
+
+ MALFUNCTION_INDICATOR_LIGHT_ON = 1,
+
+ /* refer to IgnitionMonitorKind for a description of this value. */
+ IGNITION_MONITORS_SUPPORTED = 2,
+
+ /*
+ * The value of this sensor is a bitmask that specifies whether ignition-specific
+ * tests are available and whether they are complete. The semantics of the individual
+ * bits in this value are given by, respectively, SparkIgnitionMonitors and
+ * CompressionIgnitionMonitors depending on the value of IGNITION_MONITORS_SUPPORTED.
+ */
+ IGNITION_SPECIFIC_MONITORS = 3,
+
+ INTAKE_AIR_TEMPERATURE = 4,
+
+ /* refer to SecondaryAirStatus for a description of this value. */
+ COMMANDED_SECONDARY_AIR_STATUS = 5,
+
+ NUM_OXYGEN_SENSORS_PRESENT = 6,
+
+ RUNTIME_SINCE_ENGINE_START = 7,
+
+ DISTANCE_TRAVELED_WITH_MALFUNCTION_INDICATOR_LIGHT_ON = 8,
+
+ WARMUPS_SINCE_CODES_CLEARED = 9,
+
+ DISTANCE_TRAVELED_SINCE_CODES_CLEARED = 10,
+
+ ABSOLUTE_BAROMETRIC_PRESSURE = 11,
+
+ CONTROL_MODULE_VOLTAGE = 12,
+
+ AMBIENT_AIR_TEMPERATURE = 13,
+
+ TIME_WITH_MALFUNCTION_LIGHT_ON = 14,
+
+ TIME_SINCE_TROUBLE_CODES_CLEARED = 15,
+
+ MAX_FUEL_AIR_EQUIVALENCE_RATIO = 16,
+
+ MAX_OXYGEN_SENSOR_VOLTAGE = 17,
+
+ MAX_OXYGEN_SENSOR_CURRENT = 18,
+
+ MAX_INTAKE_MANIFOLD_ABSOLUTE_PRESSURE = 19,
+
+ MAX_AIR_FLOW_RATE_FROM_MASS_AIR_FLOW_SENSOR = 20,
+
+ /* refer to FuelType for a description of this value. */
+ FUEL_TYPE = 21,
+
+ FUEL_RAIL_ABSOLUTE_PRESSURE = 22,
+
+ ENGINE_OIL_TEMPERATURE = 23,
+
+ DRIVER_DEMAND_PERCENT_TORQUE = 24,
+
+ ENGINE_ACTUAL_PERCENT_TORQUE = 25,
+
+ ENGINE_REFERENCE_PERCENT_TORQUE = 26,
+
+ ENGINE_PERCENT_TORQUE_DATA_IDLE = 27,
+
+ ENGINE_PERCENT_TORQUE_DATA_POINT1 = 28,
+
+ ENGINE_PERCENT_TORQUE_DATA_POINT2 = 29,
+
+ ENGINE_PERCENT_TORQUE_DATA_POINT3 = 30,
+
+ ENGINE_PERCENT_TORQUE_DATA_POINT4 = 31,
+
+ LAST_SYSTEM_INDEX = ENGINE_PERCENT_TORQUE_DATA_POINT4,
+};
+
+/*
+ * This enum provides the canonical mapping for sensor properties that have a floating-point value.
+ * The ordering of the values is taken from the OBD2 specification.
+ * Any value greater than the last reserved index is available to vendors to map their extensions.
+ */
+enum Obd2FloatSensorIndex : int32_t {
+ CALCULATED_ENGINE_LOAD = 0,
+
+ ENGINE_COOLANT_TEMPERATURE = 1,
+
+ SHORT_TERM_FUEL_TRIM_BANK1 = 2,
+
+ LONG_TERM_FUEL_TRIM_BANK1 = 3,
+
+ SHORT_TERM_FUEL_TRIM_BANK2 = 4,
+
+ LONG_TERM_FUEL_TRIM_BANK2 = 5,
+
+ FUEL_PRESSURE = 6,
+
+ INTAKE_MANIFOLD_ABSOLUTE_PRESSURE = 7,
+
+ ENGINE_RPM = 8,
+
+ VEHICLE_SPEED = 9,
+
+ TIMING_ADVANCE = 10,
+
+ MAF_AIR_FLOW_RATE = 11,
+
+ THROTTLE_POSITION = 12,
+
+ OXYGEN_SENSOR1_VOLTAGE = 13,
+
+ OXYGEN_SENSOR1_SHORT_TERM_FUEL_TRIM = 14,
+
+ OXYGEN_SENSOR1_FUEL_AIR_EQUIVALENCE_RATIO = 15,
+
+ OXYGEN_SENSOR2_VOLTAGE = 16,
+
+ OXYGEN_SENSOR2_SHORT_TERM_FUEL_TRIM = 17,
+
+ OXYGEN_SENSOR2_FUEL_AIR_EQUIVALENCE_RATIO = 18,
+
+ OXYGEN_SENSOR3_VOLTAGE = 19,
+
+ OXYGEN_SENSOR3_SHORT_TERM_FUEL_TRIM = 20,
+
+ OXYGEN_SENSOR3_FUEL_AIR_EQUIVALENCE_RATIO = 21,
+
+ OXYGEN_SENSOR4_VOLTAGE = 22,
+
+ OXYGEN_SENSOR4_SHORT_TERM_FUEL_TRIM = 23,
+
+ OXYGEN_SENSOR4_FUEL_AIR_EQUIVALENCE_RATIO = 24,
+
+ OXYGEN_SENSOR5_VOLTAGE = 25,
+
+ OXYGEN_SENSOR5_SHORT_TERM_FUEL_TRIM = 26,
+
+ OXYGEN_SENSOR5_FUEL_AIR_EQUIVALENCE_RATIO = 27,
+
+ OXYGEN_SENSOR6_VOLTAGE = 28,
+
+ OXYGEN_SENSOR6_SHORT_TERM_FUEL_TRIM = 29,
+
+ OXYGEN_SENSOR6_FUEL_AIR_EQUIVALENCE_RATIO = 30,
+
+ OXYGEN_SENSOR7_VOLTAGE = 31,
+
+ OXYGEN_SENSOR7_SHORT_TERM_FUEL_TRIM = 32,
+
+ OXYGEN_SENSOR7_FUEL_AIR_EQUIVALENCE_RATIO = 33,
+
+ OXYGEN_SENSOR8_VOLTAGE = 34,
+
+ OXYGEN_SENSOR8_SHORT_TERM_FUEL_TRIM = 35,
+
+ OXYGEN_SENSOR8_FUEL_AIR_EQUIVALENCE_RATIO = 36,
+
+ FUEL_RAIL_PRESSURE = 37,
+
+ FUEL_RAIL_GAUGE_PRESSURE = 38,
+
+ COMMANDED_EXHAUST_GAS_RECIRCULATION = 39,
+
+ EXHAUST_GAS_RECIRCULATION_ERROR = 40,
+
+ COMMANDED_EVAPORATIVE_PURGE = 41,
+
+ FUEL_TANK_LEVEL_INPUT = 42,
+
+ EVAPORATION_SYSTEM_VAPOR_PRESSURE = 43,
+
+ CATALYST_TEMPERATURE_BANK1_SENSOR1 = 44,
+
+ CATALYST_TEMPERATURE_BANK2_SENSOR1 = 45,
+
+ CATALYST_TEMPERATURE_BANK1_SENSOR2 = 46,
+
+ CATALYST_TEMPERATURE_BANK2_SENSOR2 = 47,
+
+ ABSOLUTE_LOAD_VALUE = 48,
+
+ FUEL_AIR_COMMANDED_EQUIVALENCE_RATIO = 49,
+
+ RELATIVE_THROTTLE_POSITION = 50,
+
+ ABSOLUTE_THROTTLE_POSITION_B = 51,
+
+ ABSOLUTE_THROTTLE_POSITION_C = 52,
+
+ ACCELERATOR_PEDAL_POSITION_D = 53,
+
+ ACCELERATOR_PEDAL_POSITION_E = 54,
+
+ ACCELERATOR_PEDAL_POSITION_F = 55,
+
+ COMMANDED_THROTTLE_ACTUATOR = 56,
+
+ ETHANOL_FUEL_PERCENTAGE = 57,
+
+ ABSOLUTE_EVAPORATION_SYSTEM_VAPOR_PRESSURE = 58,
+
+ SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK1 = 59,
+
+ SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK2 = 60,
+
+ SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK3 = 61,
+
+ SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK4 = 62,
+
+ LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK1 = 63,
+
+ LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK2 = 64,
+
+ LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK3 = 65,
+
+ LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK4 = 66,
+
+ RELATIVE_ACCELERATOR_PEDAL_POSITION = 67,
+
+ HYBRID_BATTERY_PACK_REMAINING_LIFE = 68,
+
+ FUEL_INJECTION_TIMING = 69,
+
+ ENGINE_FUEL_RATE = 70,
+
+ LAST_SYSTEM_INDEX = ENGINE_FUEL_RATE,
+};
diff --git a/automotive/vehicle/Android.bp b/automotive/vehicle/Android.bp
deleted file mode 100644
index c12cd4f..0000000
--- a/automotive/vehicle/Android.bp
+++ /dev/null
@@ -1,4 +0,0 @@
-// This is an autogenerated file, do not edit.
-subdirs = [
- "2.0",
-]
diff --git a/biometrics/Android.bp b/biometrics/Android.bp
index b4681e4..c87e3af 100644
--- a/biometrics/Android.bp
+++ b/biometrics/Android.bp
@@ -1,5 +1,5 @@
// This is an autogenerated file, do not edit.
subdirs = [
"fingerprint/2.1",
- "fingerprint/2.1/vts/functional"
+ "fingerprint/2.1/vts/functional",
]
diff --git a/biometrics/fingerprint/2.1/default/Android.mk b/biometrics/fingerprint/2.1/default/Android.mk
index ea20130..3d06397 100644
--- a/biometrics/fingerprint/2.1/default/Android.mk
+++ b/biometrics/fingerprint/2.1/default/Android.mk
@@ -15,7 +15,6 @@
libhidlbase \
libhidltransport \
libhardware \
- libhwbinder \
libkeystore_binder \
libutils \
android.hardware.biometrics.fingerprint@2.1 \
diff --git a/biometrics/fingerprint/2.1/vts/BiometricsFingerprint.vts b/biometrics/fingerprint/2.1/vts/BiometricsFingerprint.vts
deleted file mode 100644
index 0581da0..0000000
--- a/biometrics/fingerprint/2.1/vts/BiometricsFingerprint.vts
+++ /dev/null
@@ -1,191 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 2.1
-component_name: "IBiometricsFingerprint"
-
-package: "android.hardware.biometrics.fingerprint"
-
-import: "android.hardware.biometrics.fingerprint@2.1::IBiometricsFingerprintClientCallback"
-import: "android.hardware.biometrics.fingerprint@2.1::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- api: {
- name: "setNotify"
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- arg: {
- type: TYPE_HIDL_CALLBACK
- predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::IBiometricsFingerprintClientCallback"
- }
- callflow: {
- next: "setActiveGroup"
- }
- callflow: {
- entry: true
- }
- }
-
- api: {
- name: "preEnroll"
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- callflow: {
- next: "enroll"
- next: "postEnroll"
- }
- }
-
- api: {
- name: "enroll"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::RequestStatus"
- }
- arg: {
- type: TYPE_ARRAY
- vector_size: 69
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- callflow: {
- next: "cancel"
- next: "enroll"
- next: "postEnroll"
- next: "remove"
- }
- }
-
- api: {
- name: "postEnroll"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::RequestStatus"
- }
- callflow: {
- next: "authenticate"
- next: "setActiveGroup"
- next: "enumerate"
- next: "remove"
- }
- }
-
- api: {
- name: "getAuthenticatorId"
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- callflow: {
- next: "authenticate"
- }
- }
-
- api: {
- name: "cancel"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::RequestStatus"
- }
- callflow: {
- next: "authenticate"
- next: "enroll"
- next: "enumerate"
- next: "remove"
- next: "setActiveGroup"
- }
- }
-
- api: {
- name: "enumerate"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::RequestStatus"
- }
- callflow: {
- next: "remove"
- next: "enroll"
- next: "authenticate"
- next: "setActiveGroup"
- }
- }
-
- api: {
- name: "remove"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::RequestStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- callflow: {
- next: "enumerate"
- next: "authenticate"
- next: "cancel"
- next: "getAuthenticatorId"
- next: "setActiveGroup"
- }
- }
-
- api: {
- name: "setActiveGroup"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::RequestStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_STRING
- }
- callflow: {
- next: "authenticate"
- next: "preEnroll"
- next: "enumerate"
- next: "remove"
- }
- }
-
- api: {
- name: "authenticate"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::RequestStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- callflow: {
- next: "cancel"
- next: "preEnroll"
- next: "remove"
- }
- }
-
-}
diff --git a/biometrics/fingerprint/2.1/vts/BiometricsFingerprintClientCallback.vts b/biometrics/fingerprint/2.1/vts/BiometricsFingerprintClientCallback.vts
deleted file mode 100644
index dedda65..0000000
--- a/biometrics/fingerprint/2.1/vts/BiometricsFingerprintClientCallback.vts
+++ /dev/null
@@ -1,126 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 2.1
-component_name: "IBiometricsFingerprintClientCallback"
-
-package: "android.hardware.biometrics.fingerprint"
-
-import: "android.hardware.biometrics.fingerprint@2.1::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- api: {
- name: "onEnrollResult"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "onAcquired"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "onAuthenticated"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "onError"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintError"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "onRemoved"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "onEnumerate"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
-}
diff --git a/biometrics/fingerprint/2.1/vts/functional/Android.bp b/biometrics/fingerprint/2.1/vts/functional/Android.bp
index 7d2e83f..63115c1 100644
--- a/biometrics/fingerprint/2.1/vts/functional/Android.bp
+++ b/biometrics/fingerprint/2.1/vts/functional/Android.bp
@@ -15,27 +15,21 @@
//
cc_test {
- name: "fingerprint_hidl_hal_test",
- gtest: true,
- srcs: ["fingerprint_hidl_hal_test.cpp"],
+ name: "VtsHalBiometricsFingerprintV2_1TargetTest",
+ srcs: ["VtsHalBiometricsFingerprintV2_1TargetTest.cpp"],
shared_libs: [
"libbase",
"libhidltransport",
"libhardware",
- "libhwbinder",
"libhidlbase",
"liblog",
"libutils",
"android.hardware.biometrics.fingerprint@2.1",
],
- static_libs: ["libgtest"],
+ static_libs: ["VtsHalHidlTargetBaseTest"],
cflags: [
- "--coverage",
"-O0",
"-g",
- ],
- ldflags: [
- "--coverage"
]
}
diff --git a/biometrics/fingerprint/2.1/vts/functional/fingerprint_hidl_hal_test.cpp b/biometrics/fingerprint/2.1/vts/functional/VtsHalBiometricsFingerprintV2_1TargetTest.cpp
similarity index 95%
rename from biometrics/fingerprint/2.1/vts/functional/fingerprint_hidl_hal_test.cpp
rename to biometrics/fingerprint/2.1/vts/functional/VtsHalBiometricsFingerprintV2_1TargetTest.cpp
index 9138000..87d70bb 100644
--- a/biometrics/fingerprint/2.1/vts/functional/fingerprint_hidl_hal_test.cpp
+++ b/biometrics/fingerprint/2.1/vts/functional/VtsHalBiometricsFingerprintV2_1TargetTest.cpp
@@ -20,7 +20,7 @@
#include <android/hardware/biometrics/fingerprint/2.1/IBiometricsFingerprint.h>
#include <android/hardware/biometrics/fingerprint/2.1/IBiometricsFingerprintClientCallback.h>
#include <chrono>
-#include <gtest/gtest.h>
+#include <VtsHalHidlTargetBaseTest.h>
#include <hidl/HidlSupport.h>
#include <hidl/HidlTransportSupport.h>
@@ -34,7 +34,7 @@
#define SERVICE_NAME "fingerprint_hal"
-class FingerprintHidlTest : public ::testing::Test,
+class FingerprintHidlTest : public ::testing::VtsHalHidlTargetBaseTest,
public IBiometricsFingerprintClientCallback {
protected:
@@ -49,7 +49,7 @@
err(FingerprintError::ERROR_NO_ERROR), threshold(1) {}
virtual void SetUp() override {
- service = IBiometricsFingerprint::getService(SERVICE_NAME);
+ service = ::testing::VtsHalHidlTargetBaseTest::getService<IBiometricsFingerprint>(SERVICE_NAME);
ASSERT_NE(service, nullptr);
clearErr();
diff --git a/biometrics/fingerprint/2.1/vts/types.vts b/biometrics/fingerprint/2.1/vts/types.vts
deleted file mode 100644
index 9f9fd37..0000000
--- a/biometrics/fingerprint/2.1/vts/types.vts
+++ /dev/null
@@ -1,262 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 2.1
-component_name: "types"
-
-package: "android.hardware.biometrics.fingerprint"
-
-
-attribute: {
- name: "::android::hardware::biometrics::fingerprint::V2_1::RequestStatus"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "SYS_UNKNOWN"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "SYS_OK"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "SYS_ENOENT"
- scalar_value: {
- int32_t: -2
- }
- enumerator: "SYS_EINTR"
- scalar_value: {
- int32_t: -4
- }
- enumerator: "SYS_EIO"
- scalar_value: {
- int32_t: -5
- }
- enumerator: "SYS_EAGAIN"
- scalar_value: {
- int32_t: -11
- }
- enumerator: "SYS_ENOMEM"
- scalar_value: {
- int32_t: -12
- }
- enumerator: "SYS_EACCES"
- scalar_value: {
- int32_t: -13
- }
- enumerator: "SYS_EFAULT"
- scalar_value: {
- int32_t: -14
- }
- enumerator: "SYS_EBUSY"
- scalar_value: {
- int32_t: -16
- }
- enumerator: "SYS_EINVAL"
- scalar_value: {
- int32_t: -22
- }
- enumerator: "SYS_ENOSPC"
- scalar_value: {
- int32_t: -28
- }
- enumerator: "SYS_ETIMEDOUT"
- scalar_value: {
- int32_t: -110
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintError"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "ERROR_NO_ERROR"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "ERROR_HW_UNAVAILABLE"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "ERROR_UNABLE_TO_PROCESS"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "ERROR_TIMEOUT"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "ERROR_NO_SPACE"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "ERROR_CANCELED"
- scalar_value: {
- int32_t: 5
- }
- enumerator: "ERROR_UNABLE_TO_REMOVE"
- scalar_value: {
- int32_t: 6
- }
- enumerator: "ERROR_LOCKOUT"
- scalar_value: {
- int32_t: 7
- }
- enumerator: "ERROR_VENDOR"
- scalar_value: {
- int32_t: 8
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "ACQUIRED_GOOD"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "ACQUIRED_PARTIAL"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "ACQUIRED_INSUFFICIENT"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "ACQUIRED_IMAGER_DIRTY"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "ACQUIRED_TOO_SLOW"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "ACQUIRED_TOO_FAST"
- scalar_value: {
- int32_t: 5
- }
- enumerator: "ACQUIRED_VENDOR"
- scalar_value: {
- int32_t: 6
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintFingerId"
- type: TYPE_STRUCT
- struct_value: {
- name: "gid"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "fid"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintEnroll"
- type: TYPE_STRUCT
- struct_value: {
- name: "finger"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintFingerId"
- }
- struct_value: {
- name: "samplesRemaining"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "msg"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintIterator"
- type: TYPE_STRUCT
- struct_value: {
- name: "finger"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintFingerId"
- }
- struct_value: {
- name: "remainingTemplates"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintAcquired"
- type: TYPE_STRUCT
- struct_value: {
- name: "acquiredInfo"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo"
- }
-}
-
-attribute: {
- name: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintAuthenticated"
- type: TYPE_STRUCT
- struct_value: {
- name: "finger"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintFingerId"
- }
- struct_value: {
- name: "hat"
- type: TYPE_ARRAY
- vector_size: 69
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::biometrics::fingerprint::V2_1::FingerprintMsgType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "ERROR"
- scalar_value: {
- int32_t: -1
- }
- enumerator: "ACQUIRED"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "TEMPLATE_ENROLLING"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "TEMPLATE_REMOVED"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "AUTHENTICATED"
- scalar_value: {
- int32_t: 5
- }
- enumerator: "TEMPLATE_ENUMERATING"
- scalar_value: {
- int32_t: 6
- }
- }
-}
-
diff --git a/bluetooth/1.0/default/Android.bp b/bluetooth/1.0/default/Android.bp
index 4af079e..fb20195 100644
--- a/bluetooth/1.0/default/Android.bp
+++ b/bluetooth/1.0/default/Android.bp
@@ -15,9 +15,9 @@
cc_library_shared {
name: "android.hardware.bluetooth@1.0-impl",
+ proprietary: true,
relative_install_path: "hw",
srcs: [
- "async_fd_watcher.cc",
"bluetooth_hci.cc",
"bluetooth_address.cc",
"vendor_interface.cc",
@@ -27,18 +27,49 @@
"libbase",
"libcutils",
"libhardware",
- "libhwbinder",
"libhidlbase",
"libhidltransport",
"liblog",
"libutils",
],
+ static_libs: [
+ "android.hardware.bluetooth-async",
+ "android.hardware.bluetooth-hci",
+ ],
+}
+
+cc_library_static {
+ name: "android.hardware.bluetooth-async",
+ srcs: [
+ "async_fd_watcher.cc",
+ ],
+ export_include_dirs: ["."],
+ shared_libs: [
+ "libbase",
+ "libcutils",
+ "liblog",
+ "libutils",
+ ],
+}
+
+cc_library_static {
+ name: "android.hardware.bluetooth-hci",
+ srcs: [
+ "hci_packetizer.cc",
+ ],
+ export_include_dirs: ["."],
+ shared_libs: [
+ "libbase",
+ "libcutils",
+ "libhidlbase",
+ "liblog",
+ "libutils",
+ ],
}
cc_test {
name: "bluetooth-vendor-interface-unit-tests",
srcs: [
- "async_fd_watcher.cc",
"test/async_fd_watcher_unittest.cc",
],
local_include_dirs: [
@@ -48,6 +79,9 @@
"libbase",
"liblog",
],
+ static_libs: [
+ "android.hardware.bluetooth-async",
+ ],
}
cc_test_host {
diff --git a/bluetooth/1.0/default/Android.mk b/bluetooth/1.0/default/Android.mk
index 08bfb4e..7530925 100644
--- a/bluetooth/1.0/default/Android.mk
+++ b/bluetooth/1.0/default/Android.mk
@@ -17,6 +17,7 @@
include $(CLEAR_VARS)
LOCAL_MODULE_RELATIVE_PATH := hw
+LOCAL_PROPRIETARY_MODULE := true
LOCAL_MODULE := android.hardware.bluetooth@1.0-service
LOCAL_INIT_RC := android.hardware.bluetooth@1.0-service.rc
LOCAL_SRC_FILES := \
@@ -32,7 +33,6 @@
libhardware \
LOCAL_SHARED_LIBRARIES += \
- libhwbinder \
libhidlbase \
libhidltransport \
android.hardware.bluetooth@1.0 \
diff --git a/bluetooth/1.0/default/android.hardware.bluetooth@1.0-service.rc b/bluetooth/1.0/default/android.hardware.bluetooth@1.0-service.rc
index 8c5c02a..8545d2f 100644
--- a/bluetooth/1.0/default/android.hardware.bluetooth@1.0-service.rc
+++ b/bluetooth/1.0/default/android.hardware.bluetooth@1.0-service.rc
@@ -1,4 +1,4 @@
-service bluetooth-1-0 /system/bin/hw/android.hardware.bluetooth@1.0-service
+service bluetooth-1-0 /vendor/bin/hw/android.hardware.bluetooth@1.0-service
class hal
user bluetooth
group bluetooth
diff --git a/bluetooth/1.0/default/async_fd_watcher.cc b/bluetooth/1.0/default/async_fd_watcher.cc
index 161a74a..287d007 100644
--- a/bluetooth/1.0/default/async_fd_watcher.cc
+++ b/bluetooth/1.0/default/async_fd_watcher.cc
@@ -29,8 +29,7 @@
namespace android {
namespace hardware {
namespace bluetooth {
-namespace V1_0 {
-namespace implementation {
+namespace async {
int AsyncFdWatcher::WatchFdForNonBlockingReads(
int file_descriptor, const ReadCallback& on_read_fd_ready_callback) {
@@ -42,12 +41,7 @@
}
// Start the thread if not started yet
- int started = tryStartThread();
- if (started != 0) {
- return started;
- }
-
- return 0;
+ return tryStartThread();
}
int AsyncFdWatcher::ConfigureTimeout(
@@ -167,8 +161,7 @@
}
}
-} // namespace implementation
-} // namespace V1_0
+} // namespace async
} // namespace bluetooth
} // namespace hardware
} // namespace android
diff --git a/bluetooth/1.0/default/async_fd_watcher.h b/bluetooth/1.0/default/async_fd_watcher.h
index d6e112f..3f7ff54 100644
--- a/bluetooth/1.0/default/async_fd_watcher.h
+++ b/bluetooth/1.0/default/async_fd_watcher.h
@@ -22,8 +22,7 @@
namespace android {
namespace hardware {
namespace bluetooth {
-namespace V1_0 {
-namespace implementation {
+namespace async {
using ReadCallback = std::function<void(int)>;
using TimeoutCallback = std::function<void(void)>;
@@ -62,8 +61,7 @@
};
-} // namespace implementation
-} // namespace V1_0
+} // namespace async
} // namespace bluetooth
} // namespace hardware
} // namespace android
diff --git a/bluetooth/1.0/default/bluetooth_hci.cc b/bluetooth/1.0/default/bluetooth_hci.cc
index 6cea623..1d6e600 100644
--- a/bluetooth/1.0/default/bluetooth_hci.cc
+++ b/bluetooth/1.0/default/bluetooth_hci.cc
@@ -30,9 +30,13 @@
static const uint8_t HCI_DATA_TYPE_ACL = 2;
static const uint8_t HCI_DATA_TYPE_SCO = 3;
+BluetoothHci::BluetoothHci()
+ : deathRecipient(new BluetoothDeathRecipient(this)) {}
+
Return<void> BluetoothHci::initialize(
const ::android::sp<IBluetoothHciCallbacks>& cb) {
ALOGW("BluetoothHci::initialize()");
+ cb->linkToDeath(deathRecipient, 0);
event_cb_ = cb;
bool rc = VendorInterface::Initialize(
@@ -62,6 +66,7 @@
Return<void> BluetoothHci::close() {
ALOGW("BluetoothHci::close()");
+ event_cb_->unlinkToDeath(deathRecipient);
VendorInterface::Shutdown();
return Void();
}
diff --git a/bluetooth/1.0/default/bluetooth_hci.h b/bluetooth/1.0/default/bluetooth_hci.h
index da1b411..67d6c37 100644
--- a/bluetooth/1.0/default/bluetooth_hci.h
+++ b/bluetooth/1.0/default/bluetooth_hci.h
@@ -30,8 +30,20 @@
using ::android::hardware::Return;
using ::android::hardware::hidl_vec;
+struct BluetoothDeathRecipient : hidl_death_recipient {
+ BluetoothDeathRecipient(const sp<IBluetoothHci> hci) : mHci(hci) {}
+
+ virtual void serviceDied(
+ uint64_t /*cookie*/,
+ const wp<::android::hidl::base::V1_0::IBase>& /*who*/) {
+ mHci->close();
+ }
+ sp<IBluetoothHci> mHci;
+};
+
class BluetoothHci : public IBluetoothHci {
public:
+ BluetoothHci();
Return<void> initialize(
const ::android::sp<IBluetoothHciCallbacks>& cb) override;
Return<void> sendHciCommand(const hidl_vec<uint8_t>& packet) override;
@@ -42,6 +54,7 @@
private:
void sendDataToController(const uint8_t type, const hidl_vec<uint8_t>& data);
::android::sp<IBluetoothHciCallbacks> event_cb_;
+ ::android::sp<BluetoothDeathRecipient> deathRecipient;
};
extern "C" IBluetoothHci* HIDL_FETCH_IBluetoothHci(const char* name);
diff --git a/bluetooth/1.0/default/hci_internals.h b/bluetooth/1.0/default/hci_internals.h
index d5714be..1e1f300 100644
--- a/bluetooth/1.0/default/hci_internals.h
+++ b/bluetooth/1.0/default/hci_internals.h
@@ -16,6 +16,8 @@
#pragma once
+#include <stdlib.h>
+
// HCI UART transport packet types (Volume 4, Part A, 2)
enum HciPacketType {
HCI_PACKET_TYPE_UNKNOWN = 0,
diff --git a/bluetooth/1.0/default/hci_packetizer.cc b/bluetooth/1.0/default/hci_packetizer.cc
new file mode 100644
index 0000000..1a50196
--- /dev/null
+++ b/bluetooth/1.0/default/hci_packetizer.cc
@@ -0,0 +1,115 @@
+//
+// Copyright 2017 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.
+//
+
+#include "hci_packetizer.h"
+
+#define LOG_TAG "android.hardware.bluetooth.hci_packetizer"
+#include <android-base/logging.h>
+#include <cutils/properties.h>
+#include <utils/Log.h>
+
+#include <dlfcn.h>
+#include <fcntl.h>
+
+namespace {
+
+const size_t preamble_size_for_type[] = {
+ 0, HCI_COMMAND_PREAMBLE_SIZE, HCI_ACL_PREAMBLE_SIZE, HCI_SCO_PREAMBLE_SIZE,
+ HCI_EVENT_PREAMBLE_SIZE};
+const size_t packet_length_offset_for_type[] = {
+ 0, HCI_LENGTH_OFFSET_CMD, HCI_LENGTH_OFFSET_ACL, HCI_LENGTH_OFFSET_SCO,
+ HCI_LENGTH_OFFSET_EVT};
+
+size_t HciGetPacketLengthForType(HciPacketType type, const uint8_t* preamble) {
+ size_t offset = packet_length_offset_for_type[type];
+ if (type != HCI_PACKET_TYPE_ACL_DATA) return preamble[offset];
+ return (((preamble[offset + 1]) << 8) | preamble[offset]);
+}
+
+} // namespace
+
+namespace android {
+namespace hardware {
+namespace bluetooth {
+namespace hci {
+
+HciPacketType HciPacketizer::GetPacketType() const {
+ return hci_packet_type_;
+}
+
+const hidl_vec<uint8_t>& HciPacketizer::GetPacket() const {
+ return hci_packet_;
+}
+
+void HciPacketizer::OnDataReady(int fd) {
+ switch (hci_parser_state_) {
+ case HCI_IDLE: {
+ uint8_t buffer[1] = {0};
+ size_t bytes_read = TEMP_FAILURE_RETRY(read(fd, buffer, 1));
+ CHECK(bytes_read == 1);
+ hci_packet_type_ = static_cast<HciPacketType>(buffer[0]);
+ CHECK(hci_packet_type_ >= HCI_PACKET_TYPE_ACL_DATA &&
+ hci_packet_type_ <= HCI_PACKET_TYPE_EVENT)
+ << "buffer[0] = " << static_cast<unsigned int>(buffer[0]);
+ hci_parser_state_ = HCI_TYPE_READY;
+ hci_packet_bytes_remaining_ = preamble_size_for_type[hci_packet_type_];
+ hci_packet_bytes_read_ = 0;
+ break;
+ }
+
+ case HCI_TYPE_READY: {
+ size_t bytes_read = TEMP_FAILURE_RETRY(
+ read(fd, hci_packet_preamble_ + hci_packet_bytes_read_,
+ hci_packet_bytes_remaining_));
+ CHECK(bytes_read > 0);
+ hci_packet_bytes_remaining_ -= bytes_read;
+ hci_packet_bytes_read_ += bytes_read;
+ if (hci_packet_bytes_remaining_ == 0) {
+ size_t packet_length =
+ HciGetPacketLengthForType(hci_packet_type_, hci_packet_preamble_);
+ hci_packet_.resize(preamble_size_for_type[hci_packet_type_] +
+ packet_length);
+ memcpy(hci_packet_.data(), hci_packet_preamble_,
+ preamble_size_for_type[hci_packet_type_]);
+ hci_packet_bytes_remaining_ = packet_length;
+ hci_parser_state_ = HCI_PAYLOAD;
+ hci_packet_bytes_read_ = 0;
+ }
+ break;
+ }
+
+ case HCI_PAYLOAD: {
+ size_t bytes_read = TEMP_FAILURE_RETRY(
+ read(fd,
+ hci_packet_.data() + preamble_size_for_type[hci_packet_type_] +
+ hci_packet_bytes_read_,
+ hci_packet_bytes_remaining_));
+ CHECK(bytes_read > 0);
+ hci_packet_bytes_remaining_ -= bytes_read;
+ hci_packet_bytes_read_ += bytes_read;
+ if (hci_packet_bytes_remaining_ == 0) {
+ hci_packet_ready_cb_();
+ hci_parser_state_ = HCI_IDLE;
+ }
+ break;
+ }
+ }
+}
+
+} // namespace hci
+} // namespace bluetooth
+} // namespace hardware
+} // namespace android
diff --git a/bluetooth/1.0/default/hci_packetizer.h b/bluetooth/1.0/default/hci_packetizer.h
new file mode 100644
index 0000000..e9c01dc
--- /dev/null
+++ b/bluetooth/1.0/default/hci_packetizer.h
@@ -0,0 +1,54 @@
+//
+// Copyright 2017 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.
+//
+
+#pragma once
+
+#include <functional>
+
+#include <hidl/HidlSupport.h>
+
+#include "hci_internals.h"
+
+namespace android {
+namespace hardware {
+namespace bluetooth {
+namespace hci {
+
+using ::android::hardware::hidl_vec;
+using HciPacketReadyCallback = std::function<void(void)>;
+
+class HciPacketizer {
+ public:
+ HciPacketizer(HciPacketReadyCallback packet_cb) : hci_packet_ready_cb_(packet_cb) {};
+ void OnDataReady(int fd);
+ const hidl_vec<uint8_t>& GetPacket() const;
+ HciPacketType GetPacketType() const;
+
+ protected:
+ enum HciParserState { HCI_IDLE, HCI_TYPE_READY, HCI_PAYLOAD };
+ HciParserState hci_parser_state_{HCI_IDLE};
+ HciPacketType hci_packet_type_{HCI_PACKET_TYPE_UNKNOWN};
+ uint8_t hci_packet_preamble_[HCI_PREAMBLE_SIZE_MAX];
+ hidl_vec<uint8_t> hci_packet_;
+ size_t hci_packet_bytes_remaining_;
+ size_t hci_packet_bytes_read_;
+ HciPacketReadyCallback hci_packet_ready_cb_;
+};
+
+} // namespace hci
+} // namespace bluetooth
+} // namespace hardware
+} // namespace android
diff --git a/bluetooth/1.0/default/test/async_fd_watcher_unittest.cc b/bluetooth/1.0/default/test/async_fd_watcher_unittest.cc
index 49ea44a..a7f5bda 100644
--- a/bluetooth/1.0/default/test/async_fd_watcher_unittest.cc
+++ b/bluetooth/1.0/default/test/async_fd_watcher_unittest.cc
@@ -33,6 +33,8 @@
namespace V1_0 {
namespace implementation {
+using android::hardware::bluetooth::async::AsyncFdWatcher;
+
class AsyncFdWatcherSocketTest : public ::testing::Test {
public:
static const uint16_t kPort = 6111;
diff --git a/bluetooth/1.0/default/vendor_interface.cc b/bluetooth/1.0/default/vendor_interface.cc
index 7737dd2..3878129 100644
--- a/bluetooth/1.0/default/vendor_interface.cc
+++ b/bluetooth/1.0/default/vendor_interface.cc
@@ -51,19 +51,6 @@
VendorInterface* g_vendor_interface = nullptr;
-const size_t preamble_size_for_type[] = {
- 0, HCI_COMMAND_PREAMBLE_SIZE, HCI_ACL_PREAMBLE_SIZE, HCI_SCO_PREAMBLE_SIZE,
- HCI_EVENT_PREAMBLE_SIZE};
-const size_t packet_length_offset_for_type[] = {
- 0, HCI_LENGTH_OFFSET_CMD, HCI_LENGTH_OFFSET_ACL, HCI_LENGTH_OFFSET_SCO,
- HCI_LENGTH_OFFSET_EVT};
-
-size_t HciGetPacketLengthForType(HciPacketType type, const uint8_t* preamble) {
- size_t offset = packet_length_offset_for_type[type];
- if (type != HCI_PACKET_TYPE_ACL_DATA) return preamble[offset];
- return (((preamble[offset + 1]) << 8) | preamble[offset]);
-}
-
HC_BT_HDR* WrapPacketAndCopy(uint16_t event, const hidl_vec<uint8_t>& data) {
size_t packet_size = data.size() + sizeof(HC_BT_HDR);
HC_BT_HDR* packet = reinterpret_cast<HC_BT_HDR*>(new uint8_t[packet_size]);
@@ -274,7 +261,7 @@
ALOGI("%s UART fd: %d", __func__, uart_fd_);
fd_watcher_.WatchFdForNonBlockingReads(uart_fd_,
- [this](int fd) { OnDataReady(fd); });
+ [this](int fd) { hci_packetizer_.OnDataReady(fd); });
// Initially, the power management is off.
lpm_wake_deasserted = true;
@@ -370,72 +357,26 @@
recent_activity_flag = false;
}
-void VendorInterface::OnDataReady(int fd) {
- switch (hci_parser_state_) {
- case HCI_IDLE: {
- uint8_t buffer[1] = {0};
- size_t bytes_read = TEMP_FAILURE_RETRY(read(fd, buffer, 1));
- CHECK(bytes_read == 1);
- hci_packet_type_ = static_cast<HciPacketType>(buffer[0]);
- // TODO(eisenbach): Check for workaround(s)
- CHECK(hci_packet_type_ >= HCI_PACKET_TYPE_ACL_DATA &&
- hci_packet_type_ <= HCI_PACKET_TYPE_EVENT)
- << "buffer[0] = " << static_cast<unsigned int>(buffer[0]);
- hci_parser_state_ = HCI_TYPE_READY;
- hci_packet_bytes_remaining_ = preamble_size_for_type[hci_packet_type_];
- hci_packet_bytes_read_ = 0;
- break;
- }
+void VendorInterface::OnPacketReady() {
+ VendorInterface::get()->HandleIncomingPacket();
+}
- case HCI_TYPE_READY: {
- size_t bytes_read = TEMP_FAILURE_RETRY(
- read(fd, hci_packet_preamble_ + hci_packet_bytes_read_,
- hci_packet_bytes_remaining_));
- CHECK(bytes_read > 0);
- hci_packet_bytes_remaining_ -= bytes_read;
- hci_packet_bytes_read_ += bytes_read;
- if (hci_packet_bytes_remaining_ == 0) {
- size_t packet_length =
- HciGetPacketLengthForType(hci_packet_type_, hci_packet_preamble_);
- hci_packet_.resize(preamble_size_for_type[hci_packet_type_] +
- packet_length);
- memcpy(hci_packet_.data(), hci_packet_preamble_,
- preamble_size_for_type[hci_packet_type_]);
- hci_packet_bytes_remaining_ = packet_length;
- hci_parser_state_ = HCI_PAYLOAD;
- hci_packet_bytes_read_ = 0;
- }
- break;
- }
-
- case HCI_PAYLOAD: {
- size_t bytes_read = TEMP_FAILURE_RETRY(
- read(fd,
- hci_packet_.data() + preamble_size_for_type[hci_packet_type_] +
- hci_packet_bytes_read_,
- hci_packet_bytes_remaining_));
- CHECK(bytes_read > 0);
- hci_packet_bytes_remaining_ -= bytes_read;
- hci_packet_bytes_read_ += bytes_read;
- if (hci_packet_bytes_remaining_ == 0) {
+void VendorInterface::HandleIncomingPacket() {
+ HciPacketType hci_packet_type = hci_packetizer_.GetPacketType();
+ hidl_vec<uint8_t> hci_packet = hci_packetizer_.GetPacket();
if (internal_command.cb != nullptr &&
- hci_packet_type_ == HCI_PACKET_TYPE_EVENT &&
- internal_command_event_match(hci_packet_)) {
+ hci_packet_type == HCI_PACKET_TYPE_EVENT &&
+ internal_command_event_match(hci_packet)) {
HC_BT_HDR* bt_hdr =
- WrapPacketAndCopy(HCI_PACKET_TYPE_EVENT, hci_packet_);
+ WrapPacketAndCopy(HCI_PACKET_TYPE_EVENT, hci_packet);
// The callbacks can send new commands, so don't zero after calling.
tINT_CMD_CBACK saved_cb = internal_command.cb;
internal_command.cb = nullptr;
saved_cb(bt_hdr);
} else {
- packet_read_cb_(hci_packet_type_, hci_packet_);
+ packet_read_cb_(hci_packet_type, hci_packet);
}
- hci_parser_state_ = HCI_IDLE;
- }
- break;
- }
- }
}
} // namespace implementation
diff --git a/bluetooth/1.0/default/vendor_interface.h b/bluetooth/1.0/default/vendor_interface.h
index ce5769c..8115640 100644
--- a/bluetooth/1.0/default/vendor_interface.h
+++ b/bluetooth/1.0/default/vendor_interface.h
@@ -20,7 +20,7 @@
#include "async_fd_watcher.h"
#include "bt_vendor_lib.h"
-#include "hci_internals.h"
+#include "hci_packetizer.h"
namespace android {
namespace hardware {
@@ -46,6 +46,8 @@
void OnFirmwareConfigured(uint8_t result);
+ static void OnPacketReady();
+
private:
virtual ~VendorInterface() = default;
@@ -55,22 +57,16 @@
void OnTimeout();
- void OnDataReady(int fd);
+ void HandleIncomingPacket();
void *lib_handle_;
bt_vendor_interface_t *lib_interface_;
- AsyncFdWatcher fd_watcher_;
+ async::AsyncFdWatcher fd_watcher_;
int uart_fd_;
PacketReadCallback packet_read_cb_;
InitializeCompleteCallback initialize_complete_cb_;
- enum HciParserState { HCI_IDLE, HCI_TYPE_READY, HCI_PAYLOAD };
- HciParserState hci_parser_state_{HCI_IDLE};
- HciPacketType hci_packet_type_{HCI_PACKET_TYPE_UNKNOWN};
- uint8_t hci_packet_preamble_[HCI_PREAMBLE_SIZE_MAX];
- hidl_vec<uint8_t> hci_packet_;
- size_t hci_packet_bytes_remaining_;
- size_t hci_packet_bytes_read_;
+ hci::HciPacketizer hci_packetizer_ {VendorInterface::OnPacketReady};
FirmwareStartupTimer *firmware_startup_timer_;
};
diff --git a/bluetooth/1.0/vts/BluetoothHci.vts b/bluetooth/1.0/vts/BluetoothHci.vts
deleted file mode 100644
index 348c0ab..0000000
--- a/bluetooth/1.0/vts/BluetoothHci.vts
+++ /dev/null
@@ -1,87 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "IBluetoothHci"
-
-package: "android.hardware.bluetooth"
-
-import: "android.hardware.bluetooth@1.0::IBluetoothHciCallbacks"
-import: "android.hardware.bluetooth@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- api: {
- name: "initialize"
- arg: {
- type: TYPE_HIDL_INTERFACE
- predefined_type: "::android::hardware::bluetooth::V1_0::IBluetoothHciCallbacks"
- }
- callflow: {
- entry: true
- }
- callflow: {
- next: "sendHciCommand"
- next: "sendAclData"
- next: "sendScoData"
- next: "close"
- }
- }
-
- api: {
- name: "sendHciCommand"
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- callflow: {
- next: "sendHciCommand"
- next: "sendAclData"
- next: "sendScoData"
- next: "close"
- }
- }
-
- api: {
- name: "sendAclData"
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- callflow: {
- next: "sendHciCommand"
- next: "sendAclData"
- next: "sendScoData"
- next: "close"
- }
- }
-
- api: {
- name: "sendScoData"
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- callflow: {
- next: "sendHciCommand"
- next: "sendAclData"
- next: "sendScoData"
- next: "close"
- }
- }
-
- api: {
- name: "close"
- callflow: {
- exit: true
- }
- }
-
-}
diff --git a/bluetooth/1.0/vts/BluetoothHciCallbacks.vts b/bluetooth/1.0/vts/BluetoothHciCallbacks.vts
deleted file mode 100644
index 6b3dfd4..0000000
--- a/bluetooth/1.0/vts/BluetoothHciCallbacks.vts
+++ /dev/null
@@ -1,52 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "IBluetoothHciCallbacks"
-
-package: "android.hardware.bluetooth"
-
-import: "android.hardware.bluetooth@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- api: {
- name: "initializationComplete"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::bluetooth::V1_0::Status"
- }
- }
-
- api: {
- name: "hciEventReceived"
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "aclDataReceived"
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "scoDataReceived"
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
-}
diff --git a/bluetooth/1.0/vts/functional/Android.bp b/bluetooth/1.0/vts/functional/Android.bp
index 086ac99..a57a55a 100644
--- a/bluetooth/1.0/vts/functional/Android.bp
+++ b/bluetooth/1.0/vts/functional/Android.bp
@@ -15,21 +15,19 @@
//
cc_test {
- name: "bluetooth_hidl_hal_test",
- gtest: true,
- srcs: ["bluetooth_hidl_hal_test.cpp"],
+ name: "VtsHalBluetoothV1_0TargetTest",
+ srcs: ["VtsHalBluetoothV1_0TargetTest.cpp"],
shared_libs: [
"libbase",
"liblog",
"libcutils",
"libhidlbase",
"libhidltransport",
- "libhwbinder",
"libnativehelper",
"libutils",
"android.hardware.bluetooth@1.0",
],
- static_libs: ["libgtest"],
+ static_libs: ["VtsHalHidlTargetBaseTest"],
cflags: [
"-O0",
"-g",
diff --git a/bluetooth/1.0/vts/functional/bluetooth_hidl_hal_test.cpp b/bluetooth/1.0/vts/functional/VtsHalBluetoothV1_0TargetTest.cpp
similarity index 98%
rename from bluetooth/1.0/vts/functional/bluetooth_hidl_hal_test.cpp
rename to bluetooth/1.0/vts/functional/VtsHalBluetoothV1_0TargetTest.cpp
index eb1cdc1..c8c7cb5 100644
--- a/bluetooth/1.0/vts/functional/bluetooth_hidl_hal_test.cpp
+++ b/bluetooth/1.0/vts/functional/VtsHalBluetoothV1_0TargetTest.cpp
@@ -23,7 +23,7 @@
#include <hardware/bluetooth.h>
#include <utils/Log.h>
-#include <gtest/gtest.h>
+#include <VtsHalHidlTargetBaseTest.h>
#include <condition_variable>
#include <mutex>
#include <queue>
@@ -117,13 +117,13 @@
};
// The main test class for Bluetooth HIDL HAL.
-class BluetoothHidlTest : public ::testing::Test {
+class BluetoothHidlTest : public ::testing::VtsHalHidlTargetBaseTest {
public:
virtual void SetUp() override {
// currently test passthrough mode only
- bluetooth = IBluetoothHci::getService();
+ bluetooth = ::testing::VtsHalHidlTargetBaseTest::getService<IBluetoothHci>();
ASSERT_NE(bluetooth, nullptr);
- ALOGW("%s: getService() for bluetooth is %s", __func__,
+ ALOGI("%s: getService() for bluetooth is %s", __func__,
bluetooth->isRemote() ? "remote" : "local");
bluetooth_cb = new BluetoothHciCallbacks(*this);
@@ -255,7 +255,7 @@
virtual ~BluetoothHciCallbacks() = default;
Return<void> initializationComplete(Status status) override {
- parent_.initialized = true;
+ parent_.initialized = (status == Status::SUCCESS);
parent_.notify_initialized();
ALOGV("%s (status = %d)", __func__, static_cast<int>(status));
return Void();
diff --git a/bluetooth/1.0/vts/types.vts b/bluetooth/1.0/vts/types.vts
deleted file mode 100644
index 59eb3d4..0000000
--- a/bluetooth/1.0/vts/types.vts
+++ /dev/null
@@ -1,32 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "types"
-
-package: "android.hardware.bluetooth"
-
-
-attribute: {
- name: "::android::hardware::bluetooth::V1_0::Status"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "SUCCESS"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "TRANSPORT_ERROR"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "INITIALIZATION_ERROR"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "UNKNOWN"
- scalar_value: {
- int32_t: 3
- }
- }
-}
-
diff --git a/boot/1.0/default/Android.mk b/boot/1.0/default/Android.mk
index 99a6cf9..5e7ecb4 100644
--- a/boot/1.0/default/Android.mk
+++ b/boot/1.0/default/Android.mk
@@ -11,7 +11,6 @@
liblog \
libhidlbase \
libhidltransport \
- libhwbinder \
libhardware \
libutils \
android.hardware.boot@1.0 \
@@ -28,7 +27,6 @@
LOCAL_SHARED_LIBRARIES := \
liblog \
- libhwbinder \
libhardware \
libhidlbase \
libhidltransport \
diff --git a/boot/1.0/vts/BootControl.vts b/boot/1.0/vts/BootControl.vts
deleted file mode 100644
index b400f0e..0000000
--- a/boot/1.0/vts/BootControl.vts
+++ /dev/null
@@ -1,94 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "IBootControl"
-
-package: "android.hardware.boot"
-
-import: "android.hardware.boot@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- api: {
- name: "getNumberSlots"
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "getCurrentSlot"
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "markBootSuccessful"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::boot::V1_0::CommandResult"
- }
- }
-
- api: {
- name: "setActiveBootSlot"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::boot::V1_0::CommandResult"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "setSlotAsUnbootable"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::boot::V1_0::CommandResult"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "isSlotBootable"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::boot::V1_0::BoolResult"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "isSlotMarkedSuccessful"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::boot::V1_0::BoolResult"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "getSuffix"
- return_type_hidl: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
-}
diff --git a/boot/1.0/vts/functional/Android.bp b/boot/1.0/vts/functional/Android.bp
index 714a18b..7643e1d 100644
--- a/boot/1.0/vts/functional/Android.bp
+++ b/boot/1.0/vts/functional/Android.bp
@@ -15,26 +15,20 @@
//
cc_test {
- name: "boot_hidl_hal_test",
- gtest: true,
- srcs: ["boot_hidl_hal_test.cpp"],
+ name: "VtsHalBootV1_0TargetTest",
+ srcs: ["VtsHalBootV1_0TargetTest.cpp"],
shared_libs: [
"libbase",
"liblog",
"libcutils",
"libhidlbase",
- "libhwbinder",
"libnativehelper",
"libutils",
"android.hardware.boot@1.0",
],
- static_libs: ["libgtest"],
+ static_libs: ["VtsHalHidlTargetBaseTest"],
cflags: [
- "--coverage",
"-O0",
"-g",
- ],
- ldflags: [
- "--coverage"
]
}
diff --git a/boot/1.0/vts/functional/boot_hidl_hal_test.cpp b/boot/1.0/vts/functional/VtsHalBootV1_0TargetTest.cpp
similarity index 96%
rename from boot/1.0/vts/functional/boot_hidl_hal_test.cpp
rename to boot/1.0/vts/functional/VtsHalBootV1_0TargetTest.cpp
index 36142df..49eefb1 100644
--- a/boot/1.0/vts/functional/boot_hidl_hal_test.cpp
+++ b/boot/1.0/vts/functional/VtsHalBootV1_0TargetTest.cpp
@@ -21,7 +21,7 @@
#include <android/hardware/boot/1.0/IBootControl.h>
-#include <gtest/gtest.h>
+#include <VtsHalHidlTargetBaseTest.h>
using ::android::hardware::boot::V1_0::IBootControl;
using ::android::hardware::boot::V1_0::CommandResult;
@@ -32,10 +32,10 @@
using ::android::sp;
// The main test class for the Boot HIDL HAL.
-class BootHidlTest : public ::testing::Test {
+class BootHidlTest : public ::testing::VtsHalHidlTargetBaseTest {
public:
virtual void SetUp() override {
- boot = IBootControl::getService();
+ boot = ::testing::VtsHalHidlTargetBaseTest::getService<IBootControl>();
ASSERT_NE(boot, nullptr);
}
diff --git a/boot/1.0/vts/types.vts b/boot/1.0/vts/types.vts
deleted file mode 100644
index ebeaa60..0000000
--- a/boot/1.0/vts/types.vts
+++ /dev/null
@@ -1,42 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "types"
-
-package: "android.hardware.boot"
-
-
-attribute: {
- name: "::android::hardware::boot::V1_0::CommandResult"
- type: TYPE_STRUCT
- struct_value: {
- name: "success"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "errMsg"
- type: TYPE_STRING
- }
-}
-
-attribute: {
- name: "::android::hardware::boot::V1_0::BoolResult"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "FALSE"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "TRUE"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "INVALID_SLOT"
- scalar_value: {
- int32_t: -1
- }
- }
-}
-
diff --git a/broadcastradio/1.0/default/Android.mk b/broadcastradio/1.0/default/Android.mk
index 569291e..bb32595 100644
--- a/broadcastradio/1.0/default/Android.mk
+++ b/broadcastradio/1.0/default/Android.mk
@@ -13,7 +13,6 @@
LOCAL_SHARED_LIBRARIES := \
libhidlbase \
libhidltransport \
- libhwbinder \
libutils \
liblog \
libhardware \
diff --git a/broadcastradio/1.0/default/Tuner.cpp b/broadcastradio/1.0/default/Tuner.cpp
index b564d5a..ff643b8 100644
--- a/broadcastradio/1.0/default/Tuner.cpp
+++ b/broadcastradio/1.0/default/Tuner.cpp
@@ -22,7 +22,7 @@
#include "BroadcastRadio.h"
#include "Tuner.h"
#include "Utils.h"
-#include <system/radio_metadata.h>
+#include <system/RadioMetadataWrapper.h>
namespace android {
namespace hardware {
@@ -167,6 +167,7 @@
Return<void> Tuner::getProgramInformation(getProgramInformation_cb _hidl_cb) {
int rc;
radio_program_info_t halInfo;
+ RadioMetadataWrapper metadataWrapper(&halInfo.metadata);
ProgramInfo info;
ALOGV("%s", __FUNCTION__);
@@ -175,12 +176,10 @@
goto exit;
}
- radio_metadata_allocate(&halInfo.metadata, 0, 0);
rc = mHalTuner->get_program_information(mHalTuner, &halInfo);
if (rc == 0) {
Utils::convertProgramInfoFromHal(&info, &halInfo);
}
- radio_metadata_deallocate(halInfo.metadata);
exit:
_hidl_cb(Utils::convertHalResult(rc), info);
diff --git a/broadcastradio/1.0/vts/functional/Android.bp b/broadcastradio/1.0/vts/functional/Android.bp
index 0edfcab..25a6e22 100644
--- a/broadcastradio/1.0/vts/functional/Android.bp
+++ b/broadcastradio/1.0/vts/functional/Android.bp
@@ -15,21 +15,19 @@
//
cc_test {
- name: "broadcastradio_hidl_hal_test",
- gtest: true,
- srcs: ["broadcastradio_hidl_hal_test.cpp"],
+ name: "VtsHalBroadcastradioV1_0TargetTest",
+ srcs: ["VtsHalBroadcastradioV1_0TargetTest.cpp"],
shared_libs: [
"libbase",
"liblog",
"libcutils",
"libhidlbase",
"libhidltransport",
- "libhwbinder",
"libnativehelper",
"libutils",
"android.hardware.broadcastradio@1.0",
],
- static_libs: ["libgtest"],
+ static_libs: ["VtsHalHidlTargetBaseTest"],
cflags: [
"-O0",
"-g",
diff --git a/broadcastradio/1.0/vts/functional/broadcastradio_hidl_hal_test.cpp b/broadcastradio/1.0/vts/functional/VtsHalBroadcastradioV1_0TargetTest.cpp
similarity index 95%
rename from broadcastradio/1.0/vts/functional/broadcastradio_hidl_hal_test.cpp
rename to broadcastradio/1.0/vts/functional/VtsHalBroadcastradioV1_0TargetTest.cpp
index bcbfbb7..4212729 100644
--- a/broadcastradio/1.0/vts/functional/broadcastradio_hidl_hal_test.cpp
+++ b/broadcastradio/1.0/vts/functional/VtsHalBroadcastradioV1_0TargetTest.cpp
@@ -15,7 +15,7 @@
*/
#define LOG_TAG "BroadcastRadioHidlHalTest"
-#include <gtest/gtest.h>
+#include <VtsHalHidlTargetBaseTest.h>
#include <android-base/logging.h>
#include <cutils/native_handle.h>
#include <cutils/properties.h>
@@ -48,22 +48,13 @@
using ::android::hardware::broadcastradio::V1_0::MetaData;
-// The main test class for Sound Trigger HIDL HAL.
+// The main test class for Broadcast Radio HIDL HAL.
-class BroadcastRadioHidlTest : public ::testing::Test {
+class BroadcastRadioHidlTest : public ::testing::VtsHalHidlTargetBaseTest {
protected:
virtual void SetUp() override {
- bool getStub = false;
- char getsubProperty[PROPERTY_VALUE_MAX];
- if (property_get("vts.hidl.get_stub", getsubProperty, "") > 0) {
- if (!strcmp(getsubProperty, "true") ||
- !strcmp(getsubProperty, "True") ||
- !strcmp(getsubProperty, "1")) {
- getStub = true;
- }
- }
sp<IBroadcastRadioFactory> factory =
- IBroadcastRadioFactory::getService("broadcastradio", getStub);
+ ::testing::VtsHalHidlTargetBaseTest::getService<IBroadcastRadioFactory>();
if (factory != 0) {
factory->connectModule(Class::AM_FM,
[&](Result retval, const ::android::sp<IBroadcastRadio>& result) {
@@ -74,7 +65,6 @@
}
mTunerCallback = new MyCallback(this);
ASSERT_NE(nullptr, mRadio.get());
- ASSERT_EQ(!getStub, mRadio->isRemote());
ASSERT_NE(nullptr, mTunerCallback.get());
}
diff --git a/broadcastradio/1.1/Android.bp b/broadcastradio/1.1/Android.bp
new file mode 100644
index 0000000..c9a8b10
--- /dev/null
+++ b/broadcastradio/1.1/Android.bp
@@ -0,0 +1,76 @@
+// This file is autogenerated by hidl-gen. Do not edit manually.
+
+filegroup {
+ name: "android.hardware.broadcastradio@1.1_hal",
+ srcs: [
+ "types.hal",
+ "IBroadcastRadioFactory.hal",
+ "ITuner.hal",
+ "ITunerCallback.hal",
+ ],
+}
+
+genrule {
+ name: "android.hardware.broadcastradio@1.1_genc++",
+ tools: ["hidl-gen"],
+ cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.broadcastradio@1.1",
+ srcs: [
+ ":android.hardware.broadcastradio@1.1_hal",
+ ],
+ out: [
+ "android/hardware/broadcastradio/1.1/types.cpp",
+ "android/hardware/broadcastradio/1.1/BroadcastRadioFactoryAll.cpp",
+ "android/hardware/broadcastradio/1.1/TunerAll.cpp",
+ "android/hardware/broadcastradio/1.1/TunerCallbackAll.cpp",
+ ],
+}
+
+genrule {
+ name: "android.hardware.broadcastradio@1.1_genc++_headers",
+ tools: ["hidl-gen"],
+ cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.broadcastradio@1.1",
+ srcs: [
+ ":android.hardware.broadcastradio@1.1_hal",
+ ],
+ out: [
+ "android/hardware/broadcastradio/1.1/types.h",
+ "android/hardware/broadcastradio/1.1/IBroadcastRadioFactory.h",
+ "android/hardware/broadcastradio/1.1/IHwBroadcastRadioFactory.h",
+ "android/hardware/broadcastradio/1.1/BnHwBroadcastRadioFactory.h",
+ "android/hardware/broadcastradio/1.1/BpHwBroadcastRadioFactory.h",
+ "android/hardware/broadcastradio/1.1/BsBroadcastRadioFactory.h",
+ "android/hardware/broadcastradio/1.1/ITuner.h",
+ "android/hardware/broadcastradio/1.1/IHwTuner.h",
+ "android/hardware/broadcastradio/1.1/BnHwTuner.h",
+ "android/hardware/broadcastradio/1.1/BpHwTuner.h",
+ "android/hardware/broadcastradio/1.1/BsTuner.h",
+ "android/hardware/broadcastradio/1.1/ITunerCallback.h",
+ "android/hardware/broadcastradio/1.1/IHwTunerCallback.h",
+ "android/hardware/broadcastradio/1.1/BnHwTunerCallback.h",
+ "android/hardware/broadcastradio/1.1/BpHwTunerCallback.h",
+ "android/hardware/broadcastradio/1.1/BsTunerCallback.h",
+ ],
+}
+
+cc_library_shared {
+ name: "android.hardware.broadcastradio@1.1",
+ generated_sources: ["android.hardware.broadcastradio@1.1_genc++"],
+ generated_headers: ["android.hardware.broadcastradio@1.1_genc++_headers"],
+ export_generated_headers: ["android.hardware.broadcastradio@1.1_genc++_headers"],
+ shared_libs: [
+ "libhidlbase",
+ "libhidltransport",
+ "libhwbinder",
+ "liblog",
+ "libutils",
+ "libcutils",
+ "android.hardware.broadcastradio@1.0",
+ ],
+ export_shared_lib_headers: [
+ "libhidlbase",
+ "libhidltransport",
+ "libhwbinder",
+ "libutils",
+ "android.hardware.broadcastradio@1.0",
+ ],
+}
diff --git a/broadcastradio/1.1/Android.mk b/broadcastradio/1.1/Android.mk
new file mode 100644
index 0000000..0c4c55d
--- /dev/null
+++ b/broadcastradio/1.1/Android.mk
@@ -0,0 +1,19 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(call all-subdir-makefiles)
diff --git a/broadcastradio/1.1/IBroadcastRadioFactory.hal b/broadcastradio/1.1/IBroadcastRadioFactory.hal
new file mode 100644
index 0000000..fce1cc0
--- /dev/null
+++ b/broadcastradio/1.1/IBroadcastRadioFactory.hal
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2017 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@1.1;
+
+import @1.0::IBroadcastRadioFactory;
+
+/**
+ * To use 1.1 features you must cast specific interfaces after being returned from 1.0 HAL,
+ * for example V1_1::ITuner::castFrom() after retrieving it from IBroadcastRadio::openTuner().
+ * The 1.1 server must always return the 1.1 version of specific interface.
+ */
+interface IBroadcastRadioFactory extends @1.0::IBroadcastRadioFactory {
+};
diff --git a/broadcastradio/1.1/ITuner.hal b/broadcastradio/1.1/ITuner.hal
new file mode 100644
index 0000000..72b2847
--- /dev/null
+++ b/broadcastradio/1.1/ITuner.hal
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2017 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@1.1;
+
+import @1.0::ITuner;
+
+interface ITuner extends @1.0::ITuner {
+ /*
+ * Retrieve current station information.
+ * @return result OK if scan successfully started
+ * NOT_INITIALIZED if another error occurs
+ * @return info Current program information.
+ */
+ getProgramInformation_1_1() generates(Result result, ProgramInfo info);
+};
diff --git a/broadcastradio/1.1/ITunerCallback.hal b/broadcastradio/1.1/ITunerCallback.hal
new file mode 100644
index 0000000..4af6b1f
--- /dev/null
+++ b/broadcastradio/1.1/ITunerCallback.hal
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2017 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@1.1;
+
+import @1.0::ITunerCallback;
+
+/**
+ * Some methods of @1.1::ITunerCallback are updated versions of those from @1.0:ITunerCallback.
+ * All 1.1 drivers should call both (eg. tuneComplete and tuneComplete_1_1), while 1.1 clients
+ * should ignore 1.0 ones, to avoid receiving a callback twice.
+ */
+interface ITunerCallback extends @1.0::ITunerCallback {
+ /*
+ * Method called by the HAL when a tuning operation completes
+ * following a step(), scan() or tune() command.
+ * @param result OK if tune succeeded or TIMEOUT in case of time out.
+ * @param info A ProgramInfo structure describing the tuned station.
+ */
+ oneway tuneComplete_1_1(Result result, ProgramInfo info);
+
+ /*
+ * Method called by the HAL when a frequency switch occurs.
+ * @param info A ProgramInfo structure describing the new tuned station.
+ */
+ oneway afSwitch_1_1(ProgramInfo info);
+};
diff --git a/broadcastradio/1.1/WARNING b/broadcastradio/1.1/WARNING
new file mode 100644
index 0000000..e867cfa
--- /dev/null
+++ b/broadcastradio/1.1/WARNING
@@ -0,0 +1 @@
+This is experimental interface, do not use it yet.
diff --git a/broadcastradio/1.1/default/Android.mk b/broadcastradio/1.1/default/Android.mk
new file mode 100644
index 0000000..bb32d50
--- /dev/null
+++ b/broadcastradio/1.1/default/Android.mk
@@ -0,0 +1,46 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := android.hardware.broadcastradio@1.1-impl
+LOCAL_PROPRIETARY_MODULE := true
+LOCAL_MODULE_RELATIVE_PATH := hw
+LOCAL_CFLAGS += -Werror -Wall -Wextra
+LOCAL_SRC_FILES := \
+ BroadcastRadio.cpp \
+ BroadcastRadioFactory.cpp \
+ Tuner.cpp \
+ Utils.cpp
+
+LOCAL_SHARED_LIBRARIES := \
+ libhidlbase \
+ libhidltransport \
+ libutils \
+ liblog \
+ libhardware \
+ android.hardware.broadcastradio@1.0 \
+ android.hardware.broadcastradio@1.1 \
+ libradio_metadata
+
+ifeq ($(strip $(AUDIOSERVER_MULTILIB)),)
+LOCAL_MULTILIB := 32
+else
+LOCAL_MULTILIB := $(AUDIOSERVER_MULTILIB)
+endif
+
+include $(BUILD_SHARED_LIBRARY)
diff --git a/broadcastradio/1.1/default/BroadcastRadio.cpp b/broadcastradio/1.1/default/BroadcastRadio.cpp
new file mode 100644
index 0000000..611267b
--- /dev/null
+++ b/broadcastradio/1.1/default/BroadcastRadio.cpp
@@ -0,0 +1,140 @@
+/*
+ * Copyright (C) 2017 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.
+ */
+#define LOG_TAG "BroadcastRadio"
+//#define LOG_NDEBUG 0
+
+#include <log/log.h>
+
+#include "BroadcastRadio.h"
+#include "Tuner.h"
+#include "Utils.h"
+
+namespace android {
+namespace hardware {
+namespace broadcastradio {
+namespace V1_1 {
+namespace implementation {
+
+using ::android::sp;
+
+BroadcastRadio::BroadcastRadio(Class classId)
+ : mStatus(Result::NOT_INITIALIZED), mClassId(classId), mHwDevice(NULL)
+{
+}
+
+BroadcastRadio::~BroadcastRadio()
+{
+ if (mHwDevice != NULL) {
+ radio_hw_device_close(mHwDevice);
+ }
+}
+
+void BroadcastRadio::onFirstRef()
+{
+ const hw_module_t *mod;
+ int rc;
+ ALOGI("%s mClassId %d", __FUNCTION__, mClassId);
+
+ mHwDevice = NULL;
+ const char *classString = Utils::getClassString(mClassId);
+ if (classString == NULL) {
+ ALOGE("invalid class ID %d", mClassId);
+ mStatus = Result::INVALID_ARGUMENTS;
+ return;
+ }
+
+ ALOGI("%s RADIO_HARDWARE_MODULE_ID %s %s",
+ __FUNCTION__, RADIO_HARDWARE_MODULE_ID, classString);
+
+ rc = hw_get_module_by_class(RADIO_HARDWARE_MODULE_ID, classString, &mod);
+ if (rc != 0) {
+ ALOGE("couldn't load radio module %s.%s (%s)",
+ RADIO_HARDWARE_MODULE_ID, classString, strerror(-rc));
+ return;
+ }
+ rc = radio_hw_device_open(mod, &mHwDevice);
+ if (rc != 0) {
+ ALOGE("couldn't open radio hw device in %s.%s (%s)",
+ RADIO_HARDWARE_MODULE_ID, "primary", strerror(-rc));
+ mHwDevice = NULL;
+ return;
+ }
+ if (mHwDevice->common.version != RADIO_DEVICE_API_VERSION_CURRENT) {
+ ALOGE("wrong radio hw device version %04x", mHwDevice->common.version);
+ radio_hw_device_close(mHwDevice);
+ mHwDevice = NULL;
+ } else {
+ mStatus = Result::OK;
+ }
+}
+
+int BroadcastRadio::closeHalTuner(const struct radio_tuner *halTuner)
+{
+ ALOGV("%s", __FUNCTION__);
+ if (mHwDevice == NULL) {
+ return -ENODEV;
+ }
+ if (halTuner == 0) {
+ return -EINVAL;
+ }
+ return mHwDevice->close_tuner(mHwDevice, halTuner);
+}
+
+
+// Methods from ::android::hardware::broadcastradio::V1_0::IBroadcastRadio follow.
+Return<void> BroadcastRadio::getProperties(getProperties_cb _hidl_cb)
+{
+ int rc;
+ radio_hal_properties_t halProperties;
+ Properties properties;
+
+ if (mHwDevice == NULL) {
+ rc = -ENODEV;
+ goto exit;
+ }
+ rc = mHwDevice->get_properties(mHwDevice, &halProperties);
+ if (rc == 0) {
+ Utils::convertPropertiesFromHal(&properties, &halProperties);
+ }
+
+exit:
+ _hidl_cb(Utils::convertHalResult(rc), properties);
+ return Void();
+}
+
+Return<void> BroadcastRadio::openTuner(const BandConfig& config, bool audio,
+ const sp<V1_0::ITunerCallback>& callback, openTuner_cb _hidl_cb)
+{
+ sp<Tuner> tunerImpl = new Tuner(callback, this);
+
+ radio_hal_band_config_t halConfig;
+ const struct radio_tuner *halTuner;
+ Utils::convertBandConfigToHal(&halConfig, &config);
+ int rc = mHwDevice->open_tuner(mHwDevice, &halConfig, audio, Tuner::callback,
+ tunerImpl.get(), &halTuner);
+ if (rc == 0) {
+ tunerImpl->setHalTuner(halTuner);
+ }
+
+ _hidl_cb(Utils::convertHalResult(rc), tunerImpl);
+ return Void();
+}
+
+} // namespace implementation
+} // namespace V1_1
+} // namespace broadcastradio
+} // namespace hardware
+} // namespace android
diff --git a/broadcastradio/1.1/default/BroadcastRadio.h b/broadcastradio/1.1/default/BroadcastRadio.h
new file mode 100644
index 0000000..068979d
--- /dev/null
+++ b/broadcastradio/1.1/default/BroadcastRadio.h
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2017 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.
+ */
+#ifndef ANDROID_HARDWARE_BROADCASTRADIO_V1_1_BROADCASTRADIO_H
+#define ANDROID_HARDWARE_BROADCASTRADIO_V1_1_BROADCASTRADIO_H
+
+#include <android/hardware/broadcastradio/1.0/IBroadcastRadio.h>
+#include <android/hardware/broadcastradio/1.1/types.h>
+#include <hardware/radio.h>
+
+namespace android {
+namespace hardware {
+namespace broadcastradio {
+namespace V1_1 {
+namespace implementation {
+
+using V1_0::Class;
+using V1_0::BandConfig;
+using V1_0::Properties;
+
+struct BroadcastRadio : public V1_0::IBroadcastRadio {
+
+ BroadcastRadio(Class classId);
+
+ // Methods from ::android::hardware::broadcastradio::V1_0::IBroadcastRadio follow.
+ Return<void> getProperties(getProperties_cb _hidl_cb) override;
+ Return<void> openTuner(const BandConfig& config, bool audio,
+ const sp<V1_0::ITunerCallback>& callback, openTuner_cb _hidl_cb) override;
+
+ // RefBase
+ virtual void onFirstRef() override;
+
+ Result initCheck() { return mStatus; }
+ int closeHalTuner(const struct radio_tuner *halTuner);
+
+private:
+ virtual ~BroadcastRadio();
+
+ static const char * sClassModuleNames[];
+
+ Result convertHalResult(int rc);
+ void convertBandConfigFromHal(BandConfig *config,
+ const radio_hal_band_config_t *halConfig);
+ void convertPropertiesFromHal(Properties *properties,
+ const radio_hal_properties_t *halProperties);
+ void convertBandConfigToHal(radio_hal_band_config_t *halConfig,
+ const BandConfig *config);
+
+ Result mStatus;
+ Class mClassId;
+ struct radio_hw_device *mHwDevice;
+};
+
+} // namespace implementation
+} // namespace V1_1
+} // namespace broadcastradio
+} // namespace hardware
+} // namespace android
+
+#endif // ANDROID_HARDWARE_BROADCASTRADIO_V1_1_BROADCASTRADIO_H
diff --git a/broadcastradio/1.1/default/BroadcastRadioFactory.cpp b/broadcastradio/1.1/default/BroadcastRadioFactory.cpp
new file mode 100644
index 0000000..c8b6c39
--- /dev/null
+++ b/broadcastradio/1.1/default/BroadcastRadioFactory.cpp
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2017 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.
+ */
+#include "BroadcastRadioFactory.h"
+#include "BroadcastRadio.h"
+
+namespace android {
+namespace hardware {
+namespace broadcastradio {
+namespace V1_1 {
+namespace implementation {
+
+// Methods from ::android::hardware::broadcastradio::V1_0::IBroadcastRadioFactory follow.
+Return<void> BroadcastRadioFactory::connectModule(Class classId, connectModule_cb _hidl_cb) {
+ sp<BroadcastRadio> impl = new BroadcastRadio(classId);
+ Result retval = Result::NOT_INITIALIZED;
+ if (impl != 0) {
+ retval = impl->initCheck();
+ }
+ _hidl_cb(retval, impl);
+ return Void();
+}
+
+
+IBroadcastRadioFactory* HIDL_FETCH_IBroadcastRadioFactory(const char* /* name */) {
+ return new BroadcastRadioFactory();
+}
+
+} // namespace implementation
+} // namespace V1_1
+} // namespace broadcastradio
+} // namespace hardware
+} // namespace android
diff --git a/broadcastradio/1.1/default/BroadcastRadioFactory.h b/broadcastradio/1.1/default/BroadcastRadioFactory.h
new file mode 100644
index 0000000..8eb8514
--- /dev/null
+++ b/broadcastradio/1.1/default/BroadcastRadioFactory.h
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2017 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.
+ */
+#ifndef ANDROID_HARDWARE_BROADCASTRADIO_V1_1_BROADCASTRADIOFACTORY_H
+#define ANDROID_HARDWARE_BROADCASTRADIO_V1_1_BROADCASTRADIOFACTORY_H
+
+#include <android/hardware/broadcastradio/1.1/IBroadcastRadioFactory.h>
+#include <android/hardware/broadcastradio/1.1/types.h>
+
+namespace android {
+namespace hardware {
+namespace broadcastradio {
+namespace V1_1 {
+namespace implementation {
+
+using V1_0::Class;
+
+struct BroadcastRadioFactory : public IBroadcastRadioFactory {
+ // Methods from ::android::hardware::broadcastradio::V1_0::IBroadcastRadioFactory follow.
+ Return<void> connectModule(Class classId, connectModule_cb _hidl_cb) override;
+};
+
+extern "C" IBroadcastRadioFactory* HIDL_FETCH_IBroadcastRadioFactory(const char* name);
+
+} // namespace implementation
+} // namespace V1_1
+} // namespace broadcastradio
+} // namespace hardware
+} // namespace android
+
+#endif // ANDROID_HARDWARE_BROADCASTRADIO_V1_1_BROADCASTRADIOFACTORY_H
diff --git a/broadcastradio/1.1/default/Tuner.cpp b/broadcastradio/1.1/default/Tuner.cpp
new file mode 100644
index 0000000..6258569
--- /dev/null
+++ b/broadcastradio/1.1/default/Tuner.cpp
@@ -0,0 +1,207 @@
+/*
+ * Copyright (C) 2017 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.
+ */
+
+#define LOG_TAG "Tuner"
+//#define LOG_NDEBUG 0
+
+#include <log/log.h>
+
+#include "BroadcastRadio.h"
+#include "Tuner.h"
+#include "Utils.h"
+#include <system/RadioMetadataWrapper.h>
+
+namespace android {
+namespace hardware {
+namespace broadcastradio {
+namespace V1_1 {
+namespace implementation {
+
+void Tuner::onCallback(radio_hal_event_t *halEvent)
+{
+ BandConfig config;
+ ProgramInfo info;
+ hidl_vec<MetaData> metadata;
+
+ if (mCallback != 0) {
+ switch(halEvent->type) {
+ case RADIO_EVENT_CONFIG:
+ Utils::convertBandConfigFromHal(&config, &halEvent->config);
+ mCallback->configChange(Utils::convertHalResult(halEvent->status), config);
+ break;
+ case RADIO_EVENT_ANTENNA:
+ mCallback->antennaStateChange(halEvent->on);
+ break;
+ case RADIO_EVENT_TUNED:
+ Utils::convertProgramInfoFromHal(&info, &halEvent->info);
+ if (mCallback1_1 != nullptr) {
+ mCallback1_1->tuneComplete_1_1(Utils::convertHalResult(halEvent->status), info);
+ }
+ mCallback->tuneComplete(Utils::convertHalResult(halEvent->status), info.base);
+ break;
+ case RADIO_EVENT_METADATA: {
+ uint32_t channel;
+ uint32_t sub_channel;
+ if (radio_metadata_get_channel(halEvent->metadata, &channel, &sub_channel) == 0) {
+ Utils::convertMetaDataFromHal(metadata, halEvent->metadata);
+ mCallback->newMetadata(channel, sub_channel, metadata);
+ }
+ } break;
+ case RADIO_EVENT_TA:
+ mCallback->trafficAnnouncement(halEvent->on);
+ break;
+ case RADIO_EVENT_AF_SWITCH:
+ Utils::convertProgramInfoFromHal(&info, &halEvent->info);
+ if (mCallback1_1 != nullptr) {
+ mCallback1_1->afSwitch_1_1(info);
+ }
+ mCallback->afSwitch(info.base);
+ break;
+ case RADIO_EVENT_EA:
+ mCallback->emergencyAnnouncement(halEvent->on);
+ break;
+ case RADIO_EVENT_HW_FAILURE:
+ default:
+ mCallback->hardwareFailure();
+ break;
+ }
+ }
+}
+
+//static
+void Tuner::callback(radio_hal_event_t *halEvent, void *cookie)
+{
+ wp<Tuner> weak(reinterpret_cast<Tuner*>(cookie));
+ sp<Tuner> tuner = weak.promote();
+ if (tuner == 0) return;
+ tuner->onCallback(halEvent);
+}
+
+Tuner::Tuner(const sp<V1_0::ITunerCallback>& callback, const wp<BroadcastRadio>& parentDevice)
+ : mHalTuner(NULL), mCallback(callback), mCallback1_1(ITunerCallback::castFrom(callback)),
+ mParentDevice(parentDevice)
+{
+ ALOGV("%s", __FUNCTION__);
+}
+
+
+Tuner::~Tuner()
+{
+ ALOGV("%s", __FUNCTION__);
+ const sp<BroadcastRadio> parentDevice = mParentDevice.promote();
+ if (parentDevice != 0) {
+ parentDevice->closeHalTuner(mHalTuner);
+ }
+}
+
+// Methods from ::android::hardware::broadcastradio::V1_1::ITuner follow.
+Return<Result> Tuner::setConfiguration(const BandConfig& config) {
+ ALOGV("%s", __FUNCTION__);
+ if (mHalTuner == NULL) {
+ return Utils::convertHalResult(-ENODEV);
+ }
+ radio_hal_band_config_t halConfig;
+ Utils::convertBandConfigToHal(&halConfig, &config);
+ int rc = mHalTuner->set_configuration(mHalTuner, &halConfig);
+ return Utils::convertHalResult(rc);
+}
+
+Return<void> Tuner::getConfiguration(getConfiguration_cb _hidl_cb) {
+ int rc;
+ radio_hal_band_config_t halConfig;
+ BandConfig config;
+
+ ALOGV("%s", __FUNCTION__);
+ if (mHalTuner == NULL) {
+ rc = -ENODEV;
+ goto exit;
+ }
+ rc = mHalTuner->get_configuration(mHalTuner, &halConfig);
+ if (rc == 0) {
+ Utils::convertBandConfigFromHal(&config, &halConfig);
+ }
+
+exit:
+ _hidl_cb(Utils::convertHalResult(rc), config);
+ return Void();
+}
+
+Return<Result> Tuner::scan(Direction direction, bool skipSubChannel) {
+ if (mHalTuner == NULL) {
+ return Utils::convertHalResult(-ENODEV);
+ }
+ int rc = mHalTuner->scan(mHalTuner, static_cast<radio_direction_t>(direction), skipSubChannel);
+ return Utils::convertHalResult(rc);
+}
+
+Return<Result> Tuner::step(Direction direction, bool skipSubChannel) {
+ if (mHalTuner == NULL) {
+ return Utils::convertHalResult(-ENODEV);
+ }
+ int rc = mHalTuner->step(mHalTuner, static_cast<radio_direction_t>(direction), skipSubChannel);
+ return Utils::convertHalResult(rc);
+}
+
+Return<Result> Tuner::tune(uint32_t channel, uint32_t subChannel) {
+ if (mHalTuner == NULL) {
+ return Utils::convertHalResult(-ENODEV);
+ }
+ int rc = mHalTuner->tune(mHalTuner, channel, subChannel);
+ return Utils::convertHalResult(rc);
+}
+
+Return<Result> Tuner::cancel() {
+ if (mHalTuner == NULL) {
+ return Utils::convertHalResult(-ENODEV);
+ }
+ int rc = mHalTuner->cancel(mHalTuner);
+ return Utils::convertHalResult(rc);
+}
+
+Return<void> Tuner::getProgramInformation(getProgramInformation_cb _hidl_cb) {
+ ALOGV("%s", __FUNCTION__);
+ return getProgramInformation_1_1([&](Result result, const ProgramInfo& info) {
+ _hidl_cb(result, info.base);
+ });
+}
+
+Return<void> Tuner::getProgramInformation_1_1(getProgramInformation_1_1_cb _hidl_cb) {
+ int rc;
+ radio_program_info_t halInfo;
+ RadioMetadataWrapper metadataWrapper(&halInfo.metadata);
+ ProgramInfo info;
+
+ ALOGV("%s", __FUNCTION__);
+ if (mHalTuner == NULL) {
+ rc = -ENODEV;
+ goto exit;
+ }
+
+ rc = mHalTuner->get_program_information(mHalTuner, &halInfo);
+ if (rc == 0) {
+ Utils::convertProgramInfoFromHal(&info, &halInfo);
+ }
+
+exit:
+ _hidl_cb(Utils::convertHalResult(rc), info);
+ return Void();
+}
+
+} // namespace implementation
+} // namespace V1_1
+} // namespace broadcastradio
+} // namespace hardware
+} // namespace android
diff --git a/broadcastradio/1.1/default/Tuner.h b/broadcastradio/1.1/default/Tuner.h
new file mode 100644
index 0000000..1f3dc7f
--- /dev/null
+++ b/broadcastradio/1.1/default/Tuner.h
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2017 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.
+ */
+#ifndef ANDROID_HARDWARE_BROADCASTRADIO_V1_1_TUNER_H
+#define ANDROID_HARDWARE_BROADCASTRADIO_V1_1_TUNER_H
+
+#include <android/hardware/broadcastradio/1.1/ITuner.h>
+#include <android/hardware/broadcastradio/1.1/ITunerCallback.h>
+
+namespace android {
+namespace hardware {
+namespace broadcastradio {
+namespace V1_1 {
+namespace implementation {
+
+using V1_0::Direction;
+
+struct BroadcastRadio;
+
+struct Tuner : public ITuner {
+
+ Tuner(const sp<V1_0::ITunerCallback>& callback, const wp<BroadcastRadio>& mParentDevice);
+
+ // Methods from ::android::hardware::broadcastradio::V1_1::ITuner follow.
+ Return<Result> setConfiguration(const BandConfig& config) override;
+ Return<void> getConfiguration(getConfiguration_cb _hidl_cb) override;
+ Return<Result> scan(Direction direction, bool skipSubChannel) override;
+ Return<Result> step(Direction direction, bool skipSubChannel) override;
+ Return<Result> tune(uint32_t channel, uint32_t subChannel) override;
+ Return<Result> cancel() override;
+ Return<void> getProgramInformation(getProgramInformation_cb _hidl_cb) override;
+ Return<void> getProgramInformation_1_1(getProgramInformation_1_1_cb _hidl_cb) override;
+
+ static void callback(radio_hal_event_t *halEvent, void *cookie);
+ void onCallback(radio_hal_event_t *halEvent);
+
+ void setHalTuner(const struct radio_tuner *halTuner) { mHalTuner = halTuner; }
+ const struct radio_tuner *getHalTuner() { return mHalTuner; }
+
+private:
+ ~Tuner();
+
+ const struct radio_tuner *mHalTuner;
+ const sp<V1_0::ITunerCallback> mCallback;
+ const sp<V1_1::ITunerCallback> mCallback1_1;
+ const wp<BroadcastRadio> mParentDevice;
+};
+
+
+} // namespace implementation
+} // namespace V1_1
+} // namespace broadcastradio
+} // namespace hardware
+} // namespace android
+
+#endif // ANDROID_HARDWARE_BROADCASTRADIO_V1_1_TUNER_H
diff --git a/broadcastradio/1.1/default/Utils.cpp b/broadcastradio/1.1/default/Utils.cpp
new file mode 100644
index 0000000..6d4777d
--- /dev/null
+++ b/broadcastradio/1.1/default/Utils.cpp
@@ -0,0 +1,299 @@
+/*
+ * Copyright (C) 2017 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.
+ */
+#define LOG_TAG "BroadcastRadioHalUtils"
+//#define LOG_NDEBUG 0
+
+#include <log/log.h>
+#include <system/radio_metadata.h>
+
+#include "Utils.h"
+
+namespace android {
+namespace hardware {
+namespace broadcastradio {
+namespace V1_1 {
+namespace implementation {
+
+using V1_0::Band;
+using V1_0::Deemphasis;
+using V1_0::Direction;
+using V1_0::MetadataKey;
+using V1_0::MetadataType;
+using V1_0::Rds;
+
+const char *Utils::sClassModuleNames[] = {
+ RADIO_HARDWARE_MODULE_ID_FM, /* corresponds to RADIO_CLASS_AM_FM */
+ RADIO_HARDWARE_MODULE_ID_SAT, /* corresponds to RADIO_CLASS_SAT */
+ RADIO_HARDWARE_MODULE_ID_DT, /* corresponds to RADIO_CLASS_DT */
+};
+
+// make sure HIDL enum values are aligned with legacy values
+static_assert(RADIO_CLASS_AM_FM == static_cast<int>(Class::AM_FM),
+ "AM/FM class mismatch with legacy");
+static_assert(RADIO_CLASS_SAT == static_cast<int>(Class::SAT),
+ "SAT class mismatch with legacy");
+static_assert(RADIO_CLASS_DT == static_cast<int>(Class::DT),
+ "DT class mismatch with legacy");
+
+static_assert(RADIO_BAND_AM == static_cast<int>(Band::AM),
+ "AM band mismatch with legacy");
+static_assert(RADIO_BAND_FM == static_cast<int>(Band::FM),
+ "FM band mismatch with legacy");
+static_assert(RADIO_BAND_AM_HD == static_cast<int>(Band::AM_HD),
+ "AM HD band mismatch with legacy");
+static_assert(RADIO_BAND_FM_HD == static_cast<int>(Band::FM_HD),
+ "FM HD band mismatch with legacy");
+
+static_assert(RADIO_RDS_NONE == static_cast<int>(Rds::NONE),
+ "RDS NONE mismatch with legacy");
+static_assert(RADIO_RDS_WORLD == static_cast<int>(Rds::WORLD),
+ "RDS WORLD mismatch with legacy");
+static_assert(RADIO_RDS_US == static_cast<int>(Rds::US),
+ "RDS US mismatch with legacy");
+
+static_assert(RADIO_DEEMPHASIS_50 == static_cast<int>(Deemphasis::D50),
+ "De-emphasis 50 mismatch with legacy");
+static_assert(RADIO_DEEMPHASIS_75 == static_cast<int>(Deemphasis::D75),
+ "De-emphasis 75 mismatch with legacy");
+
+static_assert(RADIO_DIRECTION_UP == static_cast<int>(Direction::UP),
+ "Direction Up mismatch with legacy");
+static_assert(RADIO_DIRECTION_DOWN == static_cast<int>(Direction::DOWN),
+ "Direction Up mismatch with legacy");
+
+static_assert(RADIO_METADATA_TYPE_INVALID == static_cast<int>(MetadataType::INVALID),
+ "Metadata type INVALID mismatch with legacy");
+static_assert(RADIO_METADATA_TYPE_INT == static_cast<int>(MetadataType::INT),
+ "Metadata type INT mismatch with legacy");
+static_assert(RADIO_METADATA_TYPE_TEXT == static_cast<int>(MetadataType::TEXT),
+ "Metadata type TEXT mismatch with legacy");
+static_assert(RADIO_METADATA_TYPE_RAW == static_cast<int>(MetadataType::RAW),
+ "Metadata type RAW mismatch with legacy");
+static_assert(RADIO_METADATA_TYPE_CLOCK == static_cast<int>(MetadataType::CLOCK),
+ "Metadata type CLOCK mismatch with legacy");
+
+static_assert(RADIO_METADATA_KEY_INVALID == static_cast<int>(MetadataKey::INVALID),
+ "Metadata key INVALID mismatch with legacy");
+static_assert(RADIO_METADATA_KEY_RDS_PI == static_cast<int>(MetadataKey::RDS_PI),
+ "Metadata key RDS_PI mismatch with legacy");
+static_assert(RADIO_METADATA_KEY_RDS_PS == static_cast<int>(MetadataKey::RDS_PS),
+ "Metadata key RDS_PS mismatch with legacy");
+static_assert(RADIO_METADATA_KEY_RDS_PTY == static_cast<int>(MetadataKey::RDS_PTY),
+ "Metadata key RDS_PTY mismatch with legacy");
+static_assert(RADIO_METADATA_KEY_RBDS_PTY == static_cast<int>(MetadataKey::RBDS_PTY),
+ "Metadata key RBDS_PTY mismatch with legacy");
+static_assert(RADIO_METADATA_KEY_RDS_RT == static_cast<int>(MetadataKey::RDS_RT),
+ "Metadata key RDS_RT mismatch with legacy");
+static_assert(RADIO_METADATA_KEY_TITLE == static_cast<int>(MetadataKey::TITLE),
+ "Metadata key TITLE mismatch with legacy");
+static_assert(RADIO_METADATA_KEY_ARTIST == static_cast<int>(MetadataKey::ARTIST),
+ "Metadata key ARTIST mismatch with legacy");
+static_assert(RADIO_METADATA_KEY_ALBUM == static_cast<int>(MetadataKey::ALBUM),
+ "Metadata key ALBUM mismatch with legacy");
+static_assert(RADIO_METADATA_KEY_GENRE == static_cast<int>(MetadataKey::GENRE),
+ "Metadata key GENRE mismatch with legacy");
+static_assert(RADIO_METADATA_KEY_ICON == static_cast<int>(MetadataKey::ICON),
+ "Metadata key ICON mismatch with legacy");
+static_assert(RADIO_METADATA_KEY_ART == static_cast<int>(MetadataKey::ART),
+ "Metadata key ART mismatch with legacy");
+static_assert(RADIO_METADATA_KEY_CLOCK == static_cast<int>(MetadataKey::CLOCK),
+ "Metadata key CLOCK mismatch with legacy");
+
+
+//static
+const char * Utils::getClassString(Class ClassId)
+{
+ int id = static_cast<int>(ClassId);
+
+ if ((id < 0) ||
+ (id >= NELEM(sClassModuleNames))) {
+ ALOGE("invalid class ID %d", id);
+ return NULL;
+ }
+ return sClassModuleNames[id];
+}
+
+//static
+Result Utils::convertHalResult(int rc)
+{
+ switch (rc) {
+ case 0:
+ return Result::OK;
+ case -EINVAL:
+ return Result::INVALID_ARGUMENTS;
+ case -ENOSYS:
+ return Result::INVALID_STATE;
+ case -ETIMEDOUT:
+ return Result::TIMEOUT;
+ case -ENODEV:
+ default:
+ return Result::NOT_INITIALIZED;
+ }
+}
+
+//static
+void Utils::convertBandConfigFromHal(
+ BandConfig *config,
+ const radio_hal_band_config_t *halConfig)
+{
+
+ config->type = static_cast<Band>(halConfig->type);
+ config->antennaConnected = halConfig->antenna_connected;
+ config->lowerLimit = halConfig->lower_limit;
+ config->upperLimit = halConfig->upper_limit;
+ config->spacings.setToExternal(const_cast<unsigned int *>(&halConfig->spacings[0]),
+ halConfig->num_spacings * sizeof(uint32_t));
+ // FIXME: transfer buffer ownership. should have a method for that in hidl_vec
+ config->spacings.resize(halConfig->num_spacings);
+
+ if (config->type == Band::FM) {
+ config->ext.fm.deemphasis = static_cast<Deemphasis>(halConfig->fm.deemphasis);
+ config->ext.fm.stereo = halConfig->fm.stereo;
+ config->ext.fm.rds = static_cast<Rds>(halConfig->fm.rds);
+ config->ext.fm.ta = halConfig->fm.ta;
+ config->ext.fm.af = halConfig->fm.af;
+ config->ext.fm.ea = halConfig->fm.ea;
+ } else {
+ config->ext.am.stereo = halConfig->am.stereo;
+ }
+}
+
+//static
+void Utils::convertPropertiesFromHal(Properties *properties,
+ const radio_hal_properties_t *halProperties)
+{
+ properties->classId = static_cast<Class>(halProperties->class_id);
+ properties->implementor.setToExternal(halProperties->implementor, strlen(halProperties->implementor));
+ properties->product.setToExternal(halProperties->product, strlen(halProperties->product));
+ properties->version.setToExternal(halProperties->version, strlen(halProperties->version));
+ properties->serial.setToExternal(halProperties->serial, strlen(halProperties->serial));
+ properties->numTuners = halProperties->num_tuners;
+ properties->numAudioSources = halProperties->num_audio_sources;
+ properties->supportsCapture = halProperties->supports_capture;
+
+ BandConfig *bands =
+ new BandConfig[halProperties->num_bands];
+ for (size_t i = 0; i < halProperties->num_bands; i++) {
+ convertBandConfigFromHal(&bands[i], &halProperties->bands[i]);
+ }
+ properties->bands.setToExternal(bands, halProperties->num_bands);
+ // FIXME: transfer buffer ownership. should have a method for that in hidl_vec
+ properties->bands.resize(halProperties->num_bands);
+ delete[] bands;
+}
+
+//static
+void Utils::convertBandConfigToHal(radio_hal_band_config_t *halConfig, const BandConfig *config)
+{
+ halConfig->type = static_cast<radio_band_t>(config->type);
+ halConfig->antenna_connected = config->antennaConnected;
+ halConfig->lower_limit = config->lowerLimit;
+ halConfig->upper_limit = config->upperLimit;
+ halConfig->num_spacings = config->spacings.size();
+ if (halConfig->num_spacings > RADIO_NUM_SPACINGS_MAX) {
+ halConfig->num_spacings = RADIO_NUM_SPACINGS_MAX;
+ }
+ memcpy(halConfig->spacings, config->spacings.data(),
+ sizeof(uint32_t) * halConfig->num_spacings);
+
+ if (config->type == Band::FM) {
+ halConfig->fm.deemphasis = static_cast<radio_deemphasis_t>(config->ext.fm.deemphasis);
+ halConfig->fm.stereo = config->ext.fm.stereo;
+ halConfig->fm.rds = static_cast<radio_rds_t>(config->ext.fm.rds);
+ halConfig->fm.ta = config->ext.fm.ta;
+ halConfig->fm.af = config->ext.fm.af;
+ halConfig->fm.ea = config->ext.fm.ea;
+ } else {
+ halConfig->am.stereo = config->ext.am.stereo;
+ }
+}
+
+
+//static
+void Utils::convertProgramInfoFromHal(ProgramInfo *info, radio_program_info_t *halInfo)
+{
+ auto &info_1_1 = *info;
+ auto &info_1_0 = info->base;
+
+ info_1_0.channel = halInfo->channel;
+ info_1_0.subChannel = halInfo->sub_channel;
+ info_1_0.tuned = halInfo->tuned;
+ info_1_0.stereo = halInfo->stereo;
+ info_1_0.digital = halInfo->digital;
+ info_1_0.signalStrength = halInfo->signal_strength;
+ convertMetaDataFromHal(info_1_0.metadata, halInfo->metadata);
+ // TODO(b/34348946): add support for HAL 1.1 fields
+ info_1_1.digitalStatus = DigitalStatus::INVALID;
+}
+
+//static
+int Utils::convertMetaDataFromHal(hidl_vec<MetaData>& metadata, radio_metadata_t *halMetadata)
+{
+ if (halMetadata == NULL) {
+ ALOGE("Invalid argument: halMetadata is NULL");
+ return 0;
+ }
+
+ int count = radio_metadata_get_count(halMetadata);
+ if (count <= 0) {
+ return count;
+ }
+ MetaData *newMetadata = new MetaData[count];
+ int outCount = 0;
+ for (int i = 0; i < count; i++) {
+ radio_metadata_key_t key;
+ radio_metadata_type_t type;
+ void *value;
+ size_t size;
+ if (radio_metadata_get_at_index(halMetadata, i , &key, &type, &value, &size) != 0 ||
+ size == 0) {
+ continue;
+ }
+ switch (type) {
+ case RADIO_METADATA_TYPE_INT: {
+ newMetadata[outCount].intValue = *(static_cast<int32_t *>(value));
+ } break;
+ case RADIO_METADATA_TYPE_TEXT: {
+ newMetadata[outCount].stringValue = static_cast<char *>(value);
+ } break;
+ case RADIO_METADATA_TYPE_RAW: {
+ newMetadata[outCount].rawValue.setToExternal(static_cast<uint8_t *>(value), size);
+ // FIXME: transfer buffer ownership. should have a method for that in hidl_vec
+ newMetadata[outCount].rawValue.resize(size);
+ } break;
+ case RADIO_METADATA_TYPE_CLOCK: {
+ radio_metadata_clock_t *clock = static_cast<radio_metadata_clock_t *>(value);
+ newMetadata[outCount].clockValue.utcSecondsSinceEpoch =
+ clock->utc_seconds_since_epoch;
+ newMetadata[outCount].clockValue.timezoneOffsetInMinutes =
+ clock->timezone_offset_in_minutes;
+ } break;
+ }
+ newMetadata[outCount].type = static_cast<MetadataType>(type);
+ newMetadata[outCount].key = static_cast<MetadataKey>(key);
+ outCount++;
+ }
+ metadata.setToExternal(newMetadata, outCount);
+ // FIXME: transfer buffer ownership. should have a method for that in hidl_vec
+ metadata.resize(outCount);
+ return outCount;
+}
+
+} // namespace implementation
+} // namespace V1_1
+} // namespace broadcastradio
+} // namespace hardware
+} // namespace android
diff --git a/broadcastradio/1.1/default/Utils.h b/broadcastradio/1.1/default/Utils.h
new file mode 100644
index 0000000..22902ba
--- /dev/null
+++ b/broadcastradio/1.1/default/Utils.h
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2017 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.
+ */
+#ifndef ANDROID_HARDWARE_BROADCASTRADIO_V1_1_UTILS_H
+#define ANDROID_HARDWARE_BROADCASTRADIO_V1_1_UTILS_H
+
+#include <android/hardware/broadcastradio/1.1/types.h>
+#include <hardware/radio.h>
+
+namespace android {
+namespace hardware {
+namespace broadcastradio {
+namespace V1_1 {
+namespace implementation {
+
+using V1_0::Class;
+using V1_0::BandConfig;
+using V1_0::MetaData;
+using V1_0::Properties;
+
+class Utils {
+public:
+ static const char * getClassString(Class ClassId);
+ static Result convertHalResult(int rc);
+ static void convertBandConfigFromHal(BandConfig *config,
+ const radio_hal_band_config_t *halConfig);
+ static void convertPropertiesFromHal(Properties *properties,
+ const radio_hal_properties_t *halProperties);
+ static void convertBandConfigToHal(radio_hal_band_config_t *halConfig,
+ const BandConfig *config);
+ static void convertProgramInfoFromHal(ProgramInfo *info,
+ radio_program_info_t *halInfo);
+ static int convertMetaDataFromHal(hidl_vec<MetaData>& metadata,
+ radio_metadata_t *halMetadata);
+private:
+ static const char * sClassModuleNames[];
+
+};
+
+} // namespace implementation
+} // namespace V1_1
+} // namespace broadcastradio
+} // namespace hardware
+} // namespace android
+
+#endif // ANDROID_HARDWARE_BROADCASTRADIO_V1_1_UTILS_H
diff --git a/broadcastradio/1.1/types.hal b/broadcastradio/1.1/types.hal
new file mode 100644
index 0000000..38f4b39
--- /dev/null
+++ b/broadcastradio/1.1/types.hal
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2017 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@1.1;
+
+import @1.0::types;
+
+typedef @1.0::Result Result;
+
+enum DigitalStatus : int32_t {
+ INVALID = -1,
+ UNAVAILABLE = 1, // current program is analog-only
+ AVAILABLE = 2, // digital mode is available, but disabled
+ BUFFERING = 3, // digital mode is available and buffering has started
+ ACTIVE = 4, // digital mode is currently playing
+};
+
+/* Radio program information. Returned by the HAL with event RADIO_EVENT_TUNED.
+ * Contains information on currently tuned channel.
+ */
+struct ProgramInfo {
+ @1.0::ProgramInfo base;
+ DigitalStatus digitalStatus;
+};
diff --git a/broadcastradio/1.1/vts/Android.mk b/broadcastradio/1.1/vts/Android.mk
new file mode 100644
index 0000000..0c4c55d
--- /dev/null
+++ b/broadcastradio/1.1/vts/Android.mk
@@ -0,0 +1,19 @@
+#
+# Copyright (C) 2017 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(call all-subdir-makefiles)
diff --git a/broadcastradio/1.1/vts/functional/Android.bp b/broadcastradio/1.1/vts/functional/Android.bp
new file mode 100644
index 0000000..6d66f14
--- /dev/null
+++ b/broadcastradio/1.1/vts/functional/Android.bp
@@ -0,0 +1,36 @@
+//
+// Copyright (C) 2017 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.
+//
+
+cc_test {
+ name: "VtsHalBroadcastradioV1_1TargetTest",
+ srcs: ["VtsHalBroadcastradioV1_1TargetTest.cpp"],
+ shared_libs: [
+ "libbase",
+ "liblog",
+ "libcutils",
+ "libhidlbase",
+ "libhidltransport",
+ "libnativehelper",
+ "libutils",
+ "android.hardware.broadcastradio@1.0",
+ "android.hardware.broadcastradio@1.1",
+ ],
+ static_libs: ["VtsHalHidlTargetBaseTest"],
+ cflags: [
+ "-O0",
+ "-g",
+ ],
+}
diff --git a/broadcastradio/1.0/vts/functional/broadcastradio_hidl_hal_test.cpp b/broadcastradio/1.1/vts/functional/VtsHalBroadcastradioV1_1TargetTest.cpp
similarity index 81%
copy from broadcastradio/1.0/vts/functional/broadcastradio_hidl_hal_test.cpp
copy to broadcastradio/1.1/vts/functional/VtsHalBroadcastradioV1_1TargetTest.cpp
index bcbfbb7..b980d31 100644
--- a/broadcastradio/1.0/vts/functional/broadcastradio_hidl_hal_test.cpp
+++ b/broadcastradio/1.1/vts/functional/VtsHalBroadcastradioV1_1TargetTest.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2017 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.
@@ -15,66 +15,57 @@
*/
#define LOG_TAG "BroadcastRadioHidlHalTest"
-#include <gtest/gtest.h>
+#include <VtsHalHidlTargetBaseTest.h>
#include <android-base/logging.h>
#include <cutils/native_handle.h>
#include <cutils/properties.h>
#include <hidl/HidlTransportSupport.h>
#include <utils/threads.h>
-#include <android/hardware/broadcastradio/1.0/IBroadcastRadioFactory.h>
+#include <android/hardware/broadcastradio/1.1/IBroadcastRadioFactory.h>
#include <android/hardware/broadcastradio/1.0/IBroadcastRadio.h>
-#include <android/hardware/broadcastradio/1.0/ITuner.h>
-#include <android/hardware/broadcastradio/1.0/ITunerCallback.h>
-#include <android/hardware/broadcastradio/1.0/types.h>
+#include <android/hardware/broadcastradio/1.1/ITuner.h>
+#include <android/hardware/broadcastradio/1.1/ITunerCallback.h>
+#include <android/hardware/broadcastradio/1.1/types.h>
+namespace V1_0 = ::android::hardware::broadcastradio::V1_0;
+
using ::android::sp;
using ::android::Mutex;
using ::android::Condition;
using ::android::hardware::Return;
using ::android::hardware::Status;
using ::android::hardware::Void;
-using ::android::hardware::broadcastradio::V1_0::IBroadcastRadioFactory;
-using ::android::hardware::broadcastradio::V1_0::IBroadcastRadio;
-using ::android::hardware::broadcastradio::V1_0::ITuner;
-using ::android::hardware::broadcastradio::V1_0::ITunerCallback;
-using ::android::hardware::broadcastradio::V1_0::Result;
-using ::android::hardware::broadcastradio::V1_0::Class;
-using ::android::hardware::broadcastradio::V1_0::Properties;
using ::android::hardware::broadcastradio::V1_0::BandConfig;
+using ::android::hardware::broadcastradio::V1_0::Class;
using ::android::hardware::broadcastradio::V1_0::Direction;
-using ::android::hardware::broadcastradio::V1_0::ProgramInfo;
+using ::android::hardware::broadcastradio::V1_0::IBroadcastRadio;
using ::android::hardware::broadcastradio::V1_0::MetaData;
+using ::android::hardware::broadcastradio::V1_0::Properties;
+using ::android::hardware::broadcastradio::V1_1::IBroadcastRadioFactory;
+using ::android::hardware::broadcastradio::V1_1::ITuner;
+using ::android::hardware::broadcastradio::V1_1::ITunerCallback;
+using ::android::hardware::broadcastradio::V1_1::ProgramInfo;
+using ::android::hardware::broadcastradio::V1_1::Result;
-// The main test class for Sound Trigger HIDL HAL.
+// The main test class for Broadcast Radio HIDL HAL.
-class BroadcastRadioHidlTest : public ::testing::Test {
+class BroadcastRadioHidlTest : public ::testing::VtsHalHidlTargetBaseTest {
protected:
virtual void SetUp() override {
- bool getStub = false;
- char getsubProperty[PROPERTY_VALUE_MAX];
- if (property_get("vts.hidl.get_stub", getsubProperty, "") > 0) {
- if (!strcmp(getsubProperty, "true") ||
- !strcmp(getsubProperty, "True") ||
- !strcmp(getsubProperty, "1")) {
- getStub = true;
- }
- }
- sp<IBroadcastRadioFactory> factory =
- IBroadcastRadioFactory::getService("broadcastradio", getStub);
+ auto factory = ::testing::VtsHalHidlTargetBaseTest::getService<IBroadcastRadioFactory>();
if (factory != 0) {
factory->connectModule(Class::AM_FM,
[&](Result retval, const ::android::sp<IBroadcastRadio>& result) {
if (retval == Result::OK) {
- mRadio = result;
+ mRadio = IBroadcastRadio::castFrom(result);
}
});
}
mTunerCallback = new MyCallback(this);
ASSERT_NE(nullptr, mRadio.get());
- ASSERT_EQ(!getStub, mRadio->isRemote());
ASSERT_NE(nullptr, mTunerCallback.get());
}
@@ -99,13 +90,21 @@
return Void();
}
- virtual Return<void> tuneComplete(Result result, const ProgramInfo& info __unused) {
+ virtual Return<void> tuneComplete(Result result __unused, const V1_0::ProgramInfo& info __unused) {
+ return Void();
+ }
+
+ virtual Return<void> tuneComplete_1_1(Result result, const ProgramInfo& info __unused) {
ALOGI("%s result %d", __FUNCTION__, result);
mParentTest->onResultCallback(result);
return Void();
}
- virtual Return<void> afSwitch(const ProgramInfo& info __unused) {
+ virtual Return<void> afSwitch(const V1_0::ProgramInfo& info __unused) {
+ return Void();
+ }
+
+ virtual Return<void> afSwitch_1_1(const ProgramInfo& info __unused) {
return Void();
}
@@ -257,17 +256,16 @@
}
if (mTuner.get() == nullptr) {
Result halResult = Result::NOT_INITIALIZED;
- Return<void> hidlReturn =
- mRadio->openTuner(mHalProperties.bands[0], true, mTunerCallback,
- [&](Result result, const sp<ITuner>& tuner) {
- halResult = result;
- if (result == Result::OK) {
- mTuner = tuner;
- }
- });
+ auto hidlReturn = mRadio->openTuner(mHalProperties.bands[0], true, mTunerCallback,
+ [&](Result result, const sp<V1_0::ITuner>& tuner) {
+ halResult = result;
+ if (result == Result::OK) {
+ mTuner = ITuner::castFrom(tuner);
+ }
+ });
EXPECT_TRUE(hidlReturn.isOk());
EXPECT_EQ(Result::OK, halResult);
- EXPECT_EQ(true, waitForCallback(kConfigCallbacktimeoutNs));
+ EXPECT_TRUE(waitForCallback(kConfigCallbacktimeoutNs));
}
EXPECT_NE(nullptr, mTuner.get());
return nullptr != mTuner.get();
@@ -300,7 +298,7 @@
* - the implementation supports at one band
*/
TEST_F(BroadcastRadioHidlTest, GetProperties) {
- EXPECT_EQ(true, getProperties());
+ EXPECT_TRUE(getProperties());
}
/**
@@ -311,7 +309,7 @@
* - the method returns 0 (no error) and a valid ITuner interface
*/
TEST_F(BroadcastRadioHidlTest, OpenTuner) {
- EXPECT_EQ(true, openTuner());
+ EXPECT_TRUE(openTuner());
}
/**
@@ -324,13 +322,13 @@
* - the configuration read back from HAl has the same class Id
*/
TEST_F(BroadcastRadioHidlTest, SetAndGetConfiguration) {
- ASSERT_EQ(true, openTuner());
+ ASSERT_TRUE(openTuner());
// test setConfiguration
mCallbackCalled = false;
Return<Result> hidlResult = mTuner->setConfiguration(mHalProperties.bands[0]);
EXPECT_TRUE(hidlResult.isOk());
EXPECT_EQ(Result::OK, hidlResult);
- EXPECT_EQ(true, waitForCallback(kConfigCallbacktimeoutNs));
+ EXPECT_TRUE(waitForCallback(kConfigCallbacktimeoutNs));
EXPECT_EQ(Result::OK, mResultCallbackData);
// test getConfiguration
@@ -357,21 +355,21 @@
* - the tuned callback is received within kTuneCallbacktimeoutNs ns
*/
TEST_F(BroadcastRadioHidlTest, Scan) {
- ASSERT_EQ(true, openTuner());
+ ASSERT_TRUE(openTuner());
ASSERT_TRUE(checkAntenna());
// test scan UP
mCallbackCalled = false;
Return<Result> hidlResult = mTuner->scan(Direction::UP, true);
EXPECT_TRUE(hidlResult.isOk());
EXPECT_EQ(Result::OK, hidlResult);
- EXPECT_EQ(true, waitForCallback(kTuneCallbacktimeoutNs));
+ EXPECT_TRUE(waitForCallback(kTuneCallbacktimeoutNs));
// test scan DOWN
mCallbackCalled = false;
hidlResult = mTuner->scan(Direction::DOWN, true);
EXPECT_TRUE(hidlResult.isOk());
EXPECT_EQ(Result::OK, hidlResult);
- EXPECT_EQ(true, waitForCallback(kTuneCallbacktimeoutNs));
+ EXPECT_TRUE(waitForCallback(kTuneCallbacktimeoutNs));
}
/**
@@ -383,21 +381,21 @@
* - the tuned callback is received within kTuneCallbacktimeoutNs ns
*/
TEST_F(BroadcastRadioHidlTest, Step) {
- ASSERT_EQ(true, openTuner());
+ ASSERT_TRUE(openTuner());
ASSERT_TRUE(checkAntenna());
// test step UP
mCallbackCalled = false;
Return<Result> hidlResult = mTuner->step(Direction::UP, true);
EXPECT_TRUE(hidlResult.isOk());
EXPECT_EQ(Result::OK, hidlResult);
- EXPECT_EQ(true, waitForCallback(kTuneCallbacktimeoutNs));
+ EXPECT_TRUE(waitForCallback(kTuneCallbacktimeoutNs));
// test step DOWN
mCallbackCalled = false;
hidlResult = mTuner->step(Direction::DOWN, true);
EXPECT_TRUE(hidlResult.isOk());
EXPECT_EQ(Result::OK, hidlResult);
- EXPECT_EQ(true, waitForCallback(kTuneCallbacktimeoutNs));
+ EXPECT_TRUE(waitForCallback(kTuneCallbacktimeoutNs));
}
/**
@@ -409,7 +407,7 @@
* - the tuned callback is received within kTuneCallbacktimeoutNs ns after tune()
*/
TEST_F(BroadcastRadioHidlTest, TuneAndGetProgramInformationAndCancel) {
- ASSERT_EQ(true, openTuner());
+ ASSERT_TRUE(openTuner());
ASSERT_TRUE(checkAntenna());
// test tune
@@ -428,12 +426,12 @@
Return<Result> hidlResult = mTuner->tune(channel, 0);
EXPECT_TRUE(hidlResult.isOk());
EXPECT_EQ(Result::OK, hidlResult);
- EXPECT_EQ(true, waitForCallback(kTuneCallbacktimeoutNs));
+ EXPECT_TRUE(waitForCallback(kTuneCallbacktimeoutNs));
// test getProgramInformation
ProgramInfo halInfo;
Result halResult = Result::NOT_INITIALIZED;
- Return<void> hidlReturn = mTuner->getProgramInformation(
+ Return<void> hidlReturn = mTuner->getProgramInformation_1_1(
[&](Result result, const ProgramInfo& info) {
halResult = result;
if (result == Result::OK) {
@@ -442,12 +440,13 @@
});
EXPECT_TRUE(hidlReturn.isOk());
EXPECT_EQ(Result::OK, halResult);
+ auto &halInfo_1_1 = halInfo.base;
if (mResultCallbackData == Result::OK) {
- EXPECT_EQ(true, halInfo.tuned);
- EXPECT_LE(halInfo.channel, upperLimit);
- EXPECT_GE(halInfo.channel, lowerLimit);
+ EXPECT_TRUE(halInfo_1_1.tuned);
+ EXPECT_LE(halInfo_1_1.channel, upperLimit);
+ EXPECT_GE(halInfo_1_1.channel, lowerLimit);
} else {
- EXPECT_EQ(false, halInfo.tuned);
+ EXPECT_EQ(false, halInfo_1_1.tuned);
}
// test cancel
diff --git a/broadcastradio/Android.bp b/broadcastradio/Android.bp
index 33f70eb..5cacbf3 100644
--- a/broadcastradio/Android.bp
+++ b/broadcastradio/Android.bp
@@ -2,4 +2,6 @@
subdirs = [
"1.0",
"1.0/vts/functional",
+ "1.1",
+ "1.1/vts/functional",
]
diff --git a/camera/device/3.2/default/Android.bp b/camera/device/3.2/default/Android.bp
index 62e3c3e..f638f6f 100644
--- a/camera/device/3.2/default/Android.bp
+++ b/camera/device/3.2/default/Android.bp
@@ -6,7 +6,6 @@
shared_libs: [
"libhidlbase",
"libhidltransport",
- "libhwbinder",
"libutils",
"libcutils",
"android.hardware.camera.device@3.2",
diff --git a/camera/provider/2.4/default/Android.bp b/camera/provider/2.4/default/Android.bp
index e0ae12f..7315292 100644
--- a/camera/provider/2.4/default/Android.bp
+++ b/camera/provider/2.4/default/Android.bp
@@ -6,7 +6,6 @@
shared_libs: [
"libhidlbase",
"libhidltransport",
- "libhwbinder",
"libutils",
"libcutils",
"android.hardware.camera.device@1.0",
@@ -34,7 +33,6 @@
"libhidlbase",
"libhidltransport",
"liblog",
- "libhwbinder",
"libutils",
"libhardware",
"android.hardware.camera.device@1.0",
diff --git a/camera/provider/2.4/vts/functional/Android.bp b/camera/provider/2.4/vts/functional/Android.bp
index 4947c17..f478152 100644
--- a/camera/provider/2.4/vts/functional/Android.bp
+++ b/camera/provider/2.4/vts/functional/Android.bp
@@ -15,9 +15,8 @@
//
cc_test {
- name: "camera_hidl_hal_test",
- gtest: true,
- srcs: ["camera_hidl_hal_test.cpp"],
+ name: "VtsHalCameraProviderV2_4TargetTest",
+ srcs: ["VtsHalCameraProviderV2_4TargetTest.cpp"],
shared_libs: [
"liblog",
"libhidlbase",
@@ -26,9 +25,10 @@
"libutils",
"android.hardware.camera.provider@2.4",
"android.hardware.camera.device@3.2",
- "libcamera_metadata"
+ "libcamera_metadata",
+ "libui"
],
- static_libs: ["libgtest"],
+ static_libs: ["VtsHalHidlTargetBaseTest"],
cflags: [
"-O0",
"-g",
diff --git a/camera/provider/2.4/vts/functional/VtsHalCameraProviderV2_4TargetTest.cpp b/camera/provider/2.4/vts/functional/VtsHalCameraProviderV2_4TargetTest.cpp
new file mode 100644
index 0000000..19bc899
--- /dev/null
+++ b/camera/provider/2.4/vts/functional/VtsHalCameraProviderV2_4TargetTest.cpp
@@ -0,0 +1,1618 @@
+/*
+ * Copyright (C) 2016 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.
+ */
+
+#define LOG_TAG "camera_hidl_hal_test"
+#include <android/hardware/camera/provider/2.4/ICameraProvider.h>
+#include <android/hardware/camera/device/3.2/ICameraDevice.h>
+#include <android/log.h>
+#include <ui/GraphicBuffer.h>
+#include <VtsHalHidlTargetBaseTest.h>
+#include <regex>
+#include "system/camera_metadata.h"
+#include <hardware/gralloc.h>
+#include <hardware/gralloc1.h>
+#include <unordered_map>
+#include <mutex>
+#include <condition_variable>
+#include <chrono>
+#include <inttypes.h>
+
+using ::android::hardware::Return;
+using ::android::hardware::Void;
+using ::android::hardware::hidl_handle;
+using ::android::hardware::hidl_string;
+using ::android::hardware::hidl_vec;
+using ::android::sp;
+using ::android::GraphicBuffer;
+using ::android::hardware::graphics::common::V1_0::PixelFormat;
+using ::android::hardware::camera::common::V1_0::Status;
+using ::android::hardware::camera::common::V1_0::CameraDeviceStatus;
+using ::android::hardware::camera::common::V1_0::TorchMode;
+using ::android::hardware::camera::common::V1_0::TorchModeStatus;
+using ::android::hardware::camera::provider::V2_4::ICameraProvider;
+using ::android::hardware::camera::provider::V2_4::ICameraProviderCallback;
+using ::android::hardware::camera::device::V3_2::CaptureRequest;
+using ::android::hardware::camera::device::V3_2::CaptureResult;
+using ::android::hardware::camera::device::V3_2::ICameraDeviceCallback;
+using ::android::hardware::camera::device::V3_2::ICameraDeviceSession;
+using ::android::hardware::camera::device::V3_2::NotifyMsg;
+using ::android::hardware::camera::device::V3_2::RequestTemplate;
+using ::android::hardware::camera::device::V3_2::Stream;
+using ::android::hardware::camera::device::V3_2::StreamType;
+using ::android::hardware::camera::device::V3_2::StreamRotation;
+using ::android::hardware::camera::device::V3_2::StreamConfiguration;
+using ::android::hardware::camera::device::V3_2::StreamConfigurationMode;
+using ::android::hardware::camera::device::V3_2::CameraMetadata;
+using ::android::hardware::camera::device::V3_2::HalStreamConfiguration;
+using ::android::hardware::camera::device::V3_2::BufferStatus;
+using ::android::hardware::camera::device::V3_2::StreamBuffer;
+
+#define CAMERA_PASSTHROUGH_SERVICE_NAME "legacy/0"
+#define MAX_PREVIEW_WIDTH 1920
+#define MAX_PREVIEW_HEIGHT 1080
+#define MAX_VIDEO_WIDTH 4096
+#define MAX_VIDEO_HEIGHT 2160
+#define STREAM_BUFFER_TIMEOUT 3 // sec.
+#define DUMP_OUTPUT "/dev/null"
+
+struct AvailableStream {
+ int32_t width;
+ int32_t height;
+ int32_t format;
+};
+
+struct AvailableZSLInputOutput {
+ int32_t inputFormat;
+ int32_t outputFormat;
+};
+
+namespace {
+ // "device@<version>/legacy/<id>"
+ const char *kDeviceNameRE = "device@([0-9]+\\.[0-9]+)/legacy/(.+)";
+ const int CAMERA_DEVICE_API_VERSION_3_2 = 0x302;
+ const int CAMERA_DEVICE_API_VERSION_1_0 = 0x100;
+ const char *kHAL3_2 = "3.2";
+ const char *kHAL1_0 = "1.0";
+
+ bool matchDeviceName(const hidl_string& deviceName, std::smatch& sm) {
+ std::regex e(kDeviceNameRE);
+ std::string deviceNameStd(deviceName.c_str());
+ return std::regex_match(deviceNameStd, sm, e);
+ }
+
+ int getCameraDeviceVersion(const hidl_string& deviceName) {
+ std::smatch sm;
+ bool match = matchDeviceName(deviceName, sm);
+ if (!match) {
+ return -1;
+ }
+ if (sm[1].compare(kHAL3_2) == 0) {
+ // maybe switched to 3.4 or define the hidl version enumlater
+ return CAMERA_DEVICE_API_VERSION_3_2;
+ } else if (sm[1].compare(kHAL1_0) == 0) {
+ return CAMERA_DEVICE_API_VERSION_1_0;
+ }
+ return 0;
+ }
+}
+
+// Test environment for camera
+class CameraHidlEnvironment : public ::testing::Environment {
+public:
+ // get the test environment singleton
+ static CameraHidlEnvironment* Instance() {
+ static CameraHidlEnvironment* instance = new CameraHidlEnvironment;
+ return instance;
+ }
+
+ virtual void SetUp() override;
+ virtual void TearDown() override;
+
+ sp<ICameraProvider> mProvider;
+
+private:
+ CameraHidlEnvironment() {}
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(CameraHidlEnvironment);
+};
+
+void CameraHidlEnvironment::SetUp() {
+ // TODO: test the binderized mode
+ mProvider = ::testing::VtsHalHidlTargetBaseTest::getService<ICameraProvider>(CAMERA_PASSTHROUGH_SERVICE_NAME);
+ // TODO: handle the device doesn't have any camera case
+ ALOGI_IF(mProvider, "provider is not nullptr, %p", mProvider.get());
+ ASSERT_NE(mProvider, nullptr);
+}
+
+void CameraHidlEnvironment::TearDown() {
+ ALOGI("TearDown CameraHidlEnvironment");
+}
+
+// The main test class for camera HIDL HAL.
+class CameraHidlTest : public ::testing::VtsHalHidlTargetBaseTest {
+public:
+ virtual void SetUp() override {}
+ virtual void TearDown() override {}
+
+ hidl_vec<hidl_string> getCameraDeviceNames();
+
+ struct EmptyDeviceCb : public ICameraDeviceCallback {
+ virtual Return<void> processCaptureResult(const CaptureResult& /*result*/) override {
+ ALOGI("processCaptureResult callback");
+ ADD_FAILURE(); // Empty callback should not reach here
+ return Void();
+ }
+
+ virtual Return<void> notify(const NotifyMsg& /*msg*/) override {
+ ALOGI("notify callback");
+ ADD_FAILURE(); // Empty callback should not reach here
+ return Void();
+ }
+ };
+
+ struct DeviceCb : public ICameraDeviceCallback {
+ DeviceCb(CameraHidlTest *parent) : mParent(parent) {}
+ Return<void> processCaptureResult(const CaptureResult& result) override;
+ Return<void> notify(const NotifyMsg& msg) override;
+
+ private:
+ CameraHidlTest *mParent; // Parent object
+ };
+
+ static Status getAvailableOutputStreams(camera_metadata_t *staticMeta,
+ std::vector<AvailableStream> &outputStreams,
+ AvailableStream *threshold = nullptr);
+ static Status isConstrainedModeAvailable(camera_metadata_t *staticMeta);
+ static Status pickConstrainedModeSize(camera_metadata_t *staticMeta,
+ AvailableStream &hfrStream);
+ static Status isZSLModeAvailable(camera_metadata_t *staticMeta);
+ static Status getZSLInputOutputMap(camera_metadata_t *staticMeta,
+ std::vector<AvailableZSLInputOutput> &inputOutputMap);
+ static Status findLargestSize(
+ const std::vector<AvailableStream> &streamSizes,
+ int32_t format, AvailableStream &result);
+
+protected:
+ std::mutex mLock; // Synchronize access to member variables
+ std::condition_variable mResultCondition; // Condition variable for incoming results
+ uint32_t mResultFrameNumber; // Expected result frame number
+ std::vector<StreamBuffer> mResultBuffers; // Holds stream buffers from capture result
+};
+
+Return<void> CameraHidlTest::DeviceCb::processCaptureResult(
+ const CaptureResult& result) {
+ if (nullptr == mParent) {
+ return Void();
+ }
+
+ std::unique_lock<std::mutex> l(mParent->mLock);
+
+ if(mParent->mResultFrameNumber != result.frameNumber) {
+ ALOGE("%s: Unexpected frame number! Expected: %u received: %u",
+ __func__, mParent->mResultFrameNumber, result.frameNumber);
+ ADD_FAILURE();
+ }
+
+ size_t resultLength = result.outputBuffers.size();
+ for (size_t i = 0; i < resultLength; i++) {
+ mParent->mResultBuffers.push_back(result.outputBuffers[i]);
+ }
+
+ // TODO(epeev): Handle partial results in case client supports them and
+ // verify the result against request settings.
+
+ l.unlock();
+ mParent->mResultCondition.notify_one();
+
+ return Void();
+}
+
+Return<void> CameraHidlTest::DeviceCb::notify(
+ const NotifyMsg& /*msg*/) {
+ // TODO(epeev): Pending implementation.
+ ALOGI("notify callback");
+ return Void();
+}
+
+hidl_vec<hidl_string> CameraHidlTest::getCameraDeviceNames() {
+ CameraHidlEnvironment* env = CameraHidlEnvironment::Instance();
+ hidl_vec<hidl_string> cameraDeviceNames;
+ env->mProvider->getCameraIdList(
+ [&](auto status, const auto& idList) {
+ ALOGI("getCameraIdList returns status:%d", (int)status);
+ for (size_t i = 0; i < idList.size(); i++) {
+ ALOGI("Camera Id[%zu] is %s", i, idList[i].c_str());
+ }
+ ASSERT_EQ(Status::OK, status);
+ cameraDeviceNames = idList;
+ });
+ return cameraDeviceNames;
+}
+
+// Test if ICameraProvider::isTorchModeSupported returns Status::OK
+TEST_F(CameraHidlTest, isTorchModeSupported) {
+ CameraHidlEnvironment::Instance()->mProvider->isSetTorchModeSupported(
+ [&](auto status, bool support) {
+ ALOGI("isSetTorchModeSupported returns status:%d supported:%d",
+ (int)status, support);
+ ASSERT_EQ(Status::OK, status);
+ });
+}
+
+// TODO: consider removing this test if getCameraDeviceNames() has the same coverage
+TEST_F(CameraHidlTest, getCameraIdList) {
+ CameraHidlEnvironment::Instance()->mProvider->getCameraIdList(
+ [&](auto status, const auto& idList) {
+ ALOGI("getCameraIdList returns status:%d", (int)status);
+ for (size_t i = 0; i < idList.size(); i++) {
+ ALOGI("Camera Id[%zu] is %s", i, idList[i].c_str());
+ }
+ ASSERT_EQ(Status::OK, status);
+ // This is true for internal camera provider.
+ // Not necessary hold for external cameras providers
+ ASSERT_GT(idList.size(), 0u);
+ });
+}
+
+// Test if ICameraProvider::getVendorTags returns Status::OK
+TEST_F(CameraHidlTest, getVendorTags) {
+ CameraHidlEnvironment::Instance()->mProvider->getVendorTags(
+ [&](auto status, const auto& vendorTagSecs) {
+ ALOGI("getVendorTags returns status:%d numSections %zu",
+ (int)status, vendorTagSecs.size());
+ for (size_t i = 0; i < vendorTagSecs.size(); i++) {
+ ALOGI("Vendor tag section %zu name %s",
+ i, vendorTagSecs[i].sectionName.c_str());
+ for (size_t j = 0; j < vendorTagSecs[i].tags.size(); j++) {
+ const auto& tag = vendorTagSecs[i].tags[j];
+ ALOGI("Vendor tag id %u name %s type %d",
+ tag.tagId,
+ tag.tagName.c_str(),
+ (int) tag.tagType);
+ }
+ }
+ ASSERT_EQ(Status::OK, status);
+ });
+}
+
+// Test if ICameraProvider::setCallback returns Status::OK
+TEST_F(CameraHidlTest, setCallback) {
+ CameraHidlEnvironment* env = CameraHidlEnvironment::Instance();
+ struct ProviderCb : public ICameraProviderCallback {
+ virtual Return<void> cameraDeviceStatusChange(
+ const hidl_string& cameraDeviceName,
+ CameraDeviceStatus newStatus) override {
+ ALOGI("camera device status callback name %s, status %d",
+ cameraDeviceName.c_str(), (int) newStatus);
+ return Void();
+ }
+
+ virtual Return<void> torchModeStatusChange(
+ const hidl_string& cameraDeviceName,
+ TorchModeStatus newStatus) override {
+ ALOGI("Torch mode status callback name %s, status %d",
+ cameraDeviceName.c_str(), (int) newStatus);
+ return Void();
+ }
+ };
+ sp<ProviderCb> cb = new ProviderCb;
+ auto status = env->mProvider->setCallback(cb);
+ ASSERT_EQ(Status::OK, status);
+ // TODO: right now no callbacks are fired because there is no external camera
+ // or torch mode change. Need to test torch API in CameraDevice test later.
+}
+
+// Test if ICameraProvider::getCameraDeviceInterface_V3_x returns Status::OK and non-null device
+TEST_F(CameraHidlTest, getCameraDeviceInterface_V3_x) {
+ CameraHidlEnvironment* env = CameraHidlEnvironment::Instance();
+ hidl_vec<hidl_string> cameraDeviceNames = getCameraDeviceNames();
+
+ for (const auto& name : cameraDeviceNames) {
+ if (getCameraDeviceVersion(name) == CAMERA_DEVICE_API_VERSION_3_2) {
+ env->mProvider->getCameraDeviceInterface_V3_x(
+ name,
+ [&](auto status, const auto& device3_2) {
+ ALOGI("getCameraDeviceInterface_V3_x returns status:%d", (int)status);
+ ASSERT_EQ(Status::OK, status);
+ ASSERT_NE(device3_2, nullptr);
+ });
+ }
+ }
+}
+
+// Verify that the device resource cost can be retrieved and the values are
+// sane.
+TEST_F(CameraHidlTest, getResourceCost) {
+ CameraHidlEnvironment* env = CameraHidlEnvironment::Instance();
+ hidl_vec<hidl_string> cameraDeviceNames = getCameraDeviceNames();
+
+ for (const auto& name : cameraDeviceNames) {
+ if (getCameraDeviceVersion(name) == CAMERA_DEVICE_API_VERSION_3_2) {
+ ::android::sp<::android::hardware::camera::device::V3_2::ICameraDevice> device3_2;
+ ALOGI("getResourceCost: Testing camera device %s", name.c_str());
+ env->mProvider->getCameraDeviceInterface_V3_x(
+ name,
+ [&](auto status, const auto& device) {
+ ALOGI("getCameraDeviceInterface_V3_x returns status:%d", (int)status);
+ ASSERT_EQ(Status::OK, status);
+ ASSERT_NE(device, nullptr);
+ device3_2 = device;
+ });
+
+ device3_2->getResourceCost(
+ [&](auto status, const auto& resourceCost) {
+ ALOGI("getResourceCost returns status:%d", (int)status);
+ ASSERT_EQ(Status::OK, status);
+ ALOGI(" Resource cost is %d", resourceCost.resourceCost);
+ ASSERT_LE(resourceCost.resourceCost, 100u);
+ for (const auto& name : resourceCost.conflictingDevices) {
+ ALOGI(" Conflicting device: %s", name.c_str());
+ }
+ });
+ }
+ }
+}
+
+// Verify that the static camera characteristics can be retrieved
+// successfully.
+TEST_F(CameraHidlTest, getCameraCharacteristics) {
+ CameraHidlEnvironment* env = CameraHidlEnvironment::Instance();
+ hidl_vec<hidl_string> cameraDeviceNames = getCameraDeviceNames();
+
+ for (const auto& name : cameraDeviceNames) {
+ if (getCameraDeviceVersion(name) == CAMERA_DEVICE_API_VERSION_3_2) {
+ ::android::sp<::android::hardware::camera::device::V3_2::ICameraDevice> device3_2;
+ ALOGI("getCameraCharacteristics: Testing camera device %s", name.c_str());
+ env->mProvider->getCameraDeviceInterface_V3_x(
+ name,
+ [&](auto status, const auto& device) {
+ ALOGI("getCameraDeviceInterface_V3_x returns status:%d", (int)status);
+ ASSERT_EQ(Status::OK, status);
+ ASSERT_NE(device, nullptr);
+ device3_2 = device;
+ });
+
+ device3_2->getCameraCharacteristics(
+ [&](auto status, const auto& chars) {
+ ALOGI("getCameraCharacteristics returns status:%d", (int)status);
+ ASSERT_EQ(Status::OK, status);
+ const camera_metadata_t* metadata = (camera_metadata_t*) chars.data();
+ size_t expectedSize = chars.size();
+ ASSERT_EQ(0, validate_camera_metadata_structure(metadata, &expectedSize));
+ size_t entryCount = get_camera_metadata_entry_count(metadata);
+ // TODO: we can do better than 0 here. Need to check how many required
+ // characteristics keys we've defined.
+ ASSERT_GT(entryCount, 0u);
+ ALOGI("getCameraCharacteristics metadata entry count is %zu", entryCount);
+ });
+ }
+ }
+}
+
+//In case it is supported verify that torch can be enabled.
+TEST_F(CameraHidlTest, setTorchMode) {
+ CameraHidlEnvironment* env = CameraHidlEnvironment::Instance();
+ hidl_vec<hidl_string> cameraDeviceNames = getCameraDeviceNames();
+ bool torchControlSupported = false;
+
+ CameraHidlEnvironment::Instance()->mProvider->isSetTorchModeSupported(
+ [&](auto status, bool support) {
+ ALOGI("isSetTorchModeSupported returns status:%d supported:%d",
+ (int)status, support);
+ ASSERT_EQ(Status::OK, status);
+ torchControlSupported = support;
+ });
+
+ for (const auto& name : cameraDeviceNames) {
+ if (getCameraDeviceVersion(name) == CAMERA_DEVICE_API_VERSION_3_2) {
+ ::android::sp<::android::hardware::camera::device::V3_2::ICameraDevice> device3_2;
+ ALOGI("setTorchMode: Testing camera device %s", name.c_str());
+ env->mProvider->getCameraDeviceInterface_V3_x(
+ name,
+ [&](auto status, const auto& device) {
+ ALOGI("getCameraDeviceInterface_V3_x returns status:%d", (int)status);
+ ASSERT_EQ(Status::OK, status);
+ ASSERT_NE(device, nullptr);
+ device3_2 = device;
+ });
+
+ Status status = device3_2->setTorchMode(TorchMode::ON);
+ ALOGI("setTorchMode return status %d", (int)status);
+ if (!torchControlSupported) {
+ ASSERT_EQ(Status::METHOD_NOT_SUPPORTED, status);
+ } else {
+ ASSERT_TRUE(status == Status::OK || status == Status::OPERATION_NOT_SUPPORTED);
+ if (status == Status::OK) {
+ status = device3_2->setTorchMode(TorchMode::OFF);
+ ASSERT_EQ(Status::OK, status);
+ }
+ }
+ }
+ }
+}
+
+// Check dump functionality.
+TEST_F(CameraHidlTest, dumpState) {
+ CameraHidlEnvironment* env = CameraHidlEnvironment::Instance();
+ hidl_vec<hidl_string> cameraDeviceNames = getCameraDeviceNames();
+
+ for (const auto& name : cameraDeviceNames) {
+ if (getCameraDeviceVersion(name) == CAMERA_DEVICE_API_VERSION_3_2) {
+ ::android::sp<::android::hardware::camera::device::V3_2::ICameraDevice> device3_2;
+ ALOGI("dumpState: Testing camera device %s", name.c_str());
+ env->mProvider->getCameraDeviceInterface_V3_x(
+ name,
+ [&](auto status, const auto& device) {
+ ALOGI("getCameraDeviceInterface_V3_x returns status:%d", (int)status);
+ ASSERT_EQ(Status::OK, status);
+ ASSERT_NE(device, nullptr);
+ device3_2 = device;
+ });
+
+ native_handle_t* raw_handle = native_handle_create(1, 0);
+ raw_handle->data[0] = open(DUMP_OUTPUT, O_RDWR);
+ ASSERT_GE(raw_handle->data[0], 0);
+ hidl_handle handle = raw_handle;
+ device3_2->dumpState(handle);
+ close(raw_handle->data[0]);
+ native_handle_delete(raw_handle);
+ }
+ }
+}
+
+// Open, dumpStates, then close
+TEST_F(CameraHidlTest, openClose) {
+ CameraHidlEnvironment* env = CameraHidlEnvironment::Instance();
+ hidl_vec<hidl_string> cameraDeviceNames = getCameraDeviceNames();
+
+ for (const auto& name : cameraDeviceNames) {
+ if (getCameraDeviceVersion(name) == CAMERA_DEVICE_API_VERSION_3_2) {
+ ::android::sp<::android::hardware::camera::device::V3_2::ICameraDevice> device3_2;
+ ALOGI("openClose: Testing camera device %s", name.c_str());
+ env->mProvider->getCameraDeviceInterface_V3_x(
+ name,
+ [&](auto status, const auto& device) {
+ ALOGI("getCameraDeviceInterface_V3_x returns status:%d", (int)status);
+ ASSERT_EQ(Status::OK, status);
+ ASSERT_NE(device, nullptr);
+ device3_2 = device;
+ });
+
+ sp<EmptyDeviceCb> cb = new EmptyDeviceCb;
+ sp<ICameraDeviceSession> session;
+ device3_2->open(
+ cb,
+ [&](auto status, const auto& newSession) {
+ ALOGI("device::open returns status:%d", (int)status);
+ ASSERT_EQ(Status::OK, status);
+ ASSERT_NE(newSession, nullptr);
+ session = newSession;
+ });
+
+ native_handle_t* raw_handle = native_handle_create(1, 0);
+ raw_handle->data[0] = open(DUMP_OUTPUT, O_RDWR);
+ ASSERT_GE(raw_handle->data[0], 0);
+ hidl_handle handle = raw_handle;
+ device3_2->dumpState(handle);
+ close(raw_handle->data[0]);
+ native_handle_delete(raw_handle);
+
+ session->close();
+ // TODO: test all session API calls return INTERNAL_ERROR after close
+ // TODO: keep a wp copy here and verify session cannot be promoted out of this scope
+ }
+ }
+}
+
+// Check whether all common default request settings can be sucessfully
+// constructed.
+TEST_F(CameraHidlTest, constructDefaultRequestSettings) {
+ CameraHidlEnvironment* env = CameraHidlEnvironment::Instance();
+ hidl_vec<hidl_string> cameraDeviceNames = getCameraDeviceNames();
+
+ for (const auto& name : cameraDeviceNames) {
+ if (getCameraDeviceVersion(name) == CAMERA_DEVICE_API_VERSION_3_2) {
+ ::android::sp<::android::hardware::camera::device::V3_2::ICameraDevice> device3_2;
+ ALOGI("constructDefaultRequestSettings: Testing camera device %s", name.c_str());
+ env->mProvider->getCameraDeviceInterface_V3_x(
+ name,
+ [&](auto status, const auto& device) {
+ ALOGI("getCameraDeviceInterface_V3_x returns status:%d", (int)status);
+ ASSERT_EQ(Status::OK, status);
+ ASSERT_NE(device, nullptr);
+ device3_2 = device;
+ });
+
+ sp<EmptyDeviceCb> cb = new EmptyDeviceCb;
+ sp<ICameraDeviceSession> session;
+ device3_2->open(
+ cb,
+ [&](auto status, const auto& newSession) {
+ ALOGI("device::open returns status:%d", (int)status);
+ ASSERT_EQ(Status::OK, status);
+ ASSERT_NE(newSession, nullptr);
+ session = newSession;
+ });
+
+ for (uint32_t t = (uint32_t) RequestTemplate::PREVIEW;
+ t <= (uint32_t) RequestTemplate::MANUAL; t++) {
+ RequestTemplate reqTemplate = (RequestTemplate) t;
+ session->constructDefaultRequestSettings(
+ reqTemplate,
+ [&](auto status, const auto& req) {
+ ALOGI("constructDefaultRequestSettings returns status:%d", (int)status);
+ if (reqTemplate == RequestTemplate::ZERO_SHUTTER_LAG ||
+ reqTemplate == RequestTemplate::MANUAL) {
+ // optional templates
+ ASSERT_TRUE(status == Status::OK || status == Status::ILLEGAL_ARGUMENT);
+ } else {
+ ASSERT_EQ(Status::OK, status);
+ }
+
+ if (status == Status::OK) {
+ const camera_metadata_t* metadata =
+ (camera_metadata_t*) req.data();
+ size_t expectedSize = req.size();
+ ASSERT_EQ(0, validate_camera_metadata_structure(
+ metadata, &expectedSize));
+ size_t entryCount = get_camera_metadata_entry_count(metadata);
+ // TODO: we can do better than 0 here. Need to check how many required
+ // request keys we've defined for each template
+ ASSERT_GT(entryCount, 0u);
+ ALOGI("template %u metadata entry count is %zu", t, entryCount);
+ } else {
+ ASSERT_EQ(0u, req.size());
+ }
+ });
+ }
+ session->close();
+ }
+ }
+}
+
+// Verify that all supported stream formats and sizes can be configured
+// successfully.
+TEST_F(CameraHidlTest, configureStreamsAvailableOutputs) {
+ CameraHidlEnvironment* env = CameraHidlEnvironment::Instance();
+ hidl_vec<hidl_string> cameraDeviceNames = getCameraDeviceNames();
+ std::vector<AvailableStream> outputStreams;
+
+ for (const auto& name : cameraDeviceNames) {
+ if (getCameraDeviceVersion(name) == CAMERA_DEVICE_API_VERSION_3_2) {
+ ::android::sp<::android::hardware::camera::device::V3_2::ICameraDevice> device3_2;
+ ALOGI("configureStreams: Testing camera device %s", name.c_str());
+ env->mProvider->getCameraDeviceInterface_V3_x(
+ name,
+ [&](auto status, const auto& device) {
+ ALOGI("getCameraDeviceInterface_V3_x returns status:%d", (int)status);
+ ASSERT_EQ(Status::OK, status);
+ ASSERT_NE(device, nullptr);
+ device3_2 = device;
+ });
+
+ sp<EmptyDeviceCb> cb = new EmptyDeviceCb;
+ sp<ICameraDeviceSession> session;
+ device3_2->open(
+ cb,
+ [&](auto status, const auto& newSession) {
+ ALOGI("device::open returns status:%d", (int)status);
+ ASSERT_EQ(Status::OK, status);
+ ASSERT_NE(newSession, nullptr);
+ session = newSession;
+ });
+
+ camera_metadata_t *staticMeta;
+ device3_2->getCameraCharacteristics([&] (Status s,
+ CameraMetadata metadata) {
+ ASSERT_EQ(Status::OK, s);
+ staticMeta =
+ reinterpret_cast<camera_metadata_t*>(metadata.data());
+ });
+ outputStreams.clear();
+ ASSERT_EQ(Status::OK, getAvailableOutputStreams(staticMeta,
+ outputStreams));
+ ASSERT_NE(0u, outputStreams.size());
+
+ int32_t streamId = 0;
+ for (auto &it : outputStreams) {
+ Stream stream = {streamId, StreamType::OUTPUT,
+ static_cast<uint32_t> (it.width),
+ static_cast<uint32_t> (it.height),
+ static_cast<PixelFormat> (it.format), 0, 0,
+ StreamRotation::ROTATION_0};
+ ::android::hardware::hidl_vec<Stream> streams = {stream};
+ StreamConfiguration config = {streams,
+ StreamConfigurationMode::NORMAL_MODE};
+ session->configureStreams(config, [streamId] (Status s,
+ HalStreamConfiguration halConfig) {
+ ASSERT_EQ(Status::OK, s);
+ ASSERT_EQ(1u, halConfig.streams.size());
+ ASSERT_EQ(halConfig.streams[0].id, streamId);
+ });
+ streamId++;
+ }
+
+ session->close();
+ }
+ }
+}
+
+// Check for correct handling of invalid/incorrect configuration parameters.
+TEST_F(CameraHidlTest, configureStreamsInvalidOutputs) {
+ CameraHidlEnvironment* env = CameraHidlEnvironment::Instance();
+ hidl_vec<hidl_string> cameraDeviceNames = getCameraDeviceNames();
+ std::vector<AvailableStream> outputStreams;
+
+ for (const auto& name : cameraDeviceNames) {
+ if (getCameraDeviceVersion(name) == CAMERA_DEVICE_API_VERSION_3_2) {
+ ::android::sp<::android::hardware::camera::device::V3_2::ICameraDevice> device3_2;
+ ALOGI("configureStreams: Testing camera device %s", name.c_str());
+ env->mProvider->getCameraDeviceInterface_V3_x(
+ name,
+ [&](auto status, const auto& device) {
+ ALOGI("getCameraDeviceInterface_V3_x returns status:%d", (int)status);
+ ASSERT_EQ(Status::OK, status);
+ ASSERT_NE(device, nullptr);
+ device3_2 = device;
+ });
+
+ sp<EmptyDeviceCb> cb = new EmptyDeviceCb;
+ sp<ICameraDeviceSession> session;
+ device3_2->open(
+ cb,
+ [&](auto status, const auto& newSession) {
+ ALOGI("device::open returns status:%d", (int)status);
+ ASSERT_EQ(Status::OK, status);
+ ASSERT_NE(newSession, nullptr);
+ session = newSession;
+ });
+
+ camera_metadata_t *staticMeta;
+ device3_2->getCameraCharacteristics([&] (Status s,
+ CameraMetadata metadata) {
+ ASSERT_EQ(Status::OK, s);
+ staticMeta =
+ reinterpret_cast<camera_metadata_t*>(metadata.data());
+ });
+ outputStreams.clear();
+ ASSERT_EQ(Status::OK, getAvailableOutputStreams(staticMeta,
+ outputStreams));
+ ASSERT_NE(0u, outputStreams.size());
+
+ int32_t streamId = 0;
+ Stream stream = {streamId++, StreamType::OUTPUT,
+ static_cast<uint32_t> (0),
+ static_cast<uint32_t> (0),
+ static_cast<PixelFormat> (outputStreams[0].format),
+ 0, 0, StreamRotation::ROTATION_0};
+ ::android::hardware::hidl_vec<Stream> streams = {stream};
+ StreamConfiguration config = {streams,
+ StreamConfigurationMode::NORMAL_MODE};
+ session->configureStreams(config, [] (Status s,
+ HalStreamConfiguration) {
+ ASSERT_EQ(Status::ILLEGAL_ARGUMENT, s);
+ });
+
+ stream = {streamId++, StreamType::OUTPUT,
+ static_cast<uint32_t> (UINT32_MAX),
+ static_cast<uint32_t> (UINT32_MAX),
+ static_cast<PixelFormat> (outputStreams[0].format),
+ 0, 0, StreamRotation::ROTATION_0};
+ streams[0] = stream;
+ config = {streams,
+ StreamConfigurationMode::NORMAL_MODE};
+ session->configureStreams(config, [] (Status s,
+ HalStreamConfiguration) {
+ ASSERT_EQ(Status::ILLEGAL_ARGUMENT, s);
+ });
+
+ for (auto &it : outputStreams) {
+ stream = {streamId++, StreamType::OUTPUT,
+ static_cast<uint32_t> (it.width),
+ static_cast<uint32_t> (it.height),
+ static_cast<PixelFormat> (UINT32_MAX),
+ 0, 0, StreamRotation::ROTATION_0};
+ streams[0] = stream;
+ config = {streams,
+ StreamConfigurationMode::NORMAL_MODE};
+ session->configureStreams(config, [] (Status s,
+ HalStreamConfiguration) {
+ ASSERT_EQ(Status::ILLEGAL_ARGUMENT, s);
+ });
+
+ stream = {streamId++, StreamType::OUTPUT,
+ static_cast<uint32_t> (it.width),
+ static_cast<uint32_t> (it.height),
+ static_cast<PixelFormat> (it.format),
+ 0, 0, static_cast<StreamRotation> (UINT32_MAX)};
+ streams[0] = stream;
+ config = {streams,
+ StreamConfigurationMode::NORMAL_MODE};
+ session->configureStreams(config, [] (Status s,
+ HalStreamConfiguration) {
+ ASSERT_EQ(Status::ILLEGAL_ARGUMENT, s);
+ });
+ }
+
+ session->close();
+ }
+ }
+}
+
+// Check whether all supported ZSL output stream combinations can be
+// configured successfully.
+TEST_F(CameraHidlTest, configureStreamsZSLInputOutputs) {
+ CameraHidlEnvironment* env = CameraHidlEnvironment::Instance();
+ hidl_vec<hidl_string> cameraDeviceNames = getCameraDeviceNames();
+ std::vector<AvailableStream> inputStreams;
+ std::vector<AvailableZSLInputOutput> inputOutputMap;
+
+ for (const auto& name : cameraDeviceNames) {
+ if (getCameraDeviceVersion(name) == CAMERA_DEVICE_API_VERSION_3_2) {
+ ::android::sp<::android::hardware::camera::device::V3_2::ICameraDevice> device3_2;
+ ALOGI("configureStreams: Testing camera device %s", name.c_str());
+ env->mProvider->getCameraDeviceInterface_V3_x(
+ name,
+ [&](auto status, const auto& device) {
+ ALOGI("getCameraDeviceInterface_V3_x returns status:%d", (int)status);
+ ASSERT_EQ(Status::OK, status);
+ ASSERT_NE(device, nullptr);
+ device3_2 = device;
+ });
+
+ sp<EmptyDeviceCb> cb = new EmptyDeviceCb;
+ sp<ICameraDeviceSession> session;
+ device3_2->open(
+ cb,
+ [&](auto status, const auto& newSession) {
+ ALOGI("device::open returns status:%d", (int)status);
+ ASSERT_EQ(Status::OK, status);
+ ASSERT_NE(newSession, nullptr);
+ session = newSession;
+ });
+
+ camera_metadata_t *staticMeta;
+ device3_2->getCameraCharacteristics([&] (Status s,
+ CameraMetadata metadata) {
+ ASSERT_EQ(Status::OK, s);
+ staticMeta =
+ reinterpret_cast<camera_metadata_t*>(metadata.data());
+ });
+ Status ret = isZSLModeAvailable(staticMeta);
+ if (Status::METHOD_NOT_SUPPORTED == ret) {
+ session->close();
+ continue;
+ }
+ ASSERT_EQ(Status::OK, ret);
+
+ inputStreams.clear();
+ ASSERT_EQ(Status::OK, getAvailableOutputStreams(staticMeta,
+ inputStreams));
+ ASSERT_NE(0u, inputStreams.size());
+
+ inputOutputMap.clear();
+ ASSERT_EQ(Status::OK, getZSLInputOutputMap(staticMeta,
+ inputOutputMap));
+ ASSERT_NE(0u, inputOutputMap.size());
+
+ int32_t streamId = 0;
+ for (auto &inputIter : inputOutputMap) {
+ AvailableStream input, output;
+ ASSERT_EQ(Status::OK,
+ findLargestSize(inputStreams, inputIter.inputFormat, input));
+ ASSERT_NE(0u, inputStreams.size());
+
+ AvailableStream outputThreshold = {INT32_MAX, INT32_MAX,
+ inputIter.outputFormat};
+ std::vector<AvailableStream> outputStreams;
+ ASSERT_EQ(Status::OK, getAvailableOutputStreams(staticMeta,
+ outputStreams, &outputThreshold));
+ for (auto &outputIter : outputStreams) {
+ Stream zslStream = {streamId++, StreamType::OUTPUT,
+ static_cast<uint32_t> (input.width),
+ static_cast<uint32_t> (input.height),
+ static_cast<PixelFormat> (input.format),
+ GRALLOC_USAGE_HW_CAMERA_ZSL, 0,
+ StreamRotation::ROTATION_0};
+ Stream inputStream = {streamId++, StreamType::INPUT,
+ static_cast<uint32_t> (input.width),
+ static_cast<uint32_t> (input.height),
+ static_cast<PixelFormat> (input.format), 0, 0,
+ StreamRotation::ROTATION_0};
+ Stream outputStream = {streamId++, StreamType::OUTPUT,
+ static_cast<uint32_t> (outputIter.width),
+ static_cast<uint32_t> (outputIter.height),
+ static_cast<PixelFormat> (outputIter.format), 0, 0,
+ StreamRotation::ROTATION_0};
+
+ ::android::hardware::hidl_vec<Stream> streams = {
+ inputStream, zslStream, outputStream};
+ StreamConfiguration config = {streams,
+ StreamConfigurationMode::NORMAL_MODE};
+ session->configureStreams(config, [streamId] (Status s,
+ HalStreamConfiguration halConfig) {
+ ASSERT_EQ(Status::OK, s);
+ ASSERT_EQ(3u, halConfig.streams.size());
+ });
+ }
+ }
+
+ session->close();
+ }
+ }
+}
+
+// Verify that all supported preview + still capture stream combinations
+// can be configured successfully.
+TEST_F(CameraHidlTest, configureStreamsPreviewStillOutputs) {
+ CameraHidlEnvironment* env = CameraHidlEnvironment::Instance();
+ hidl_vec<hidl_string> cameraDeviceNames = getCameraDeviceNames();
+ std::vector<AvailableStream> outputBlobStreams;
+ std::vector<AvailableStream> outputPreviewStreams;
+ AvailableStream previewThreshold = {MAX_PREVIEW_WIDTH, MAX_PREVIEW_HEIGHT,
+ static_cast<int32_t>(PixelFormat::IMPLEMENTATION_DEFINED)};
+ AvailableStream blobThreshold = {INT32_MAX, INT32_MAX,
+ static_cast<int32_t>(PixelFormat::BLOB)};
+
+ for (const auto& name : cameraDeviceNames) {
+ if (getCameraDeviceVersion(name) == CAMERA_DEVICE_API_VERSION_3_2) {
+ ::android::sp<::android::hardware::camera::device::V3_2::ICameraDevice> device3_2;
+ ALOGI("configureStreams: Testing camera device %s", name.c_str());
+ env->mProvider->getCameraDeviceInterface_V3_x(
+ name,
+ [&](auto status, const auto& device) {
+ ALOGI("getCameraDeviceInterface_V3_x returns status:%d", (int)status);
+ ASSERT_EQ(Status::OK, status);
+ ASSERT_NE(device, nullptr);
+ device3_2 = device;
+ });
+
+ sp<EmptyDeviceCb> cb = new EmptyDeviceCb;
+ sp<ICameraDeviceSession> session;
+ device3_2->open(
+ cb,
+ [&](auto status, const auto& newSession) {
+ ALOGI("device::open returns status:%d", (int)status);
+ ASSERT_EQ(Status::OK, status);
+ ASSERT_NE(newSession, nullptr);
+ session = newSession;
+ });
+
+ camera_metadata_t *staticMeta;
+ device3_2->getCameraCharacteristics([&] (Status s,
+ CameraMetadata metadata) {
+ ASSERT_EQ(Status::OK, s);
+ staticMeta =
+ reinterpret_cast<camera_metadata_t*>(metadata.data());
+ });
+ outputBlobStreams.clear();
+ ASSERT_EQ(Status::OK, getAvailableOutputStreams(staticMeta,
+ outputBlobStreams, &blobThreshold));
+ ASSERT_NE(0u, outputBlobStreams.size());
+
+ outputPreviewStreams.clear();
+ ASSERT_EQ(Status::OK, getAvailableOutputStreams(staticMeta,
+ outputPreviewStreams, &previewThreshold));
+ ASSERT_NE(0u, outputPreviewStreams.size());
+
+ int32_t streamId = 0;
+ for (auto &blobIter : outputBlobStreams) {
+ for (auto &previewIter : outputPreviewStreams) {
+ Stream previewStream = {streamId++, StreamType::OUTPUT,
+ static_cast<uint32_t> (previewIter.width),
+ static_cast<uint32_t> (previewIter.height),
+ static_cast<PixelFormat> (previewIter.format), 0, 0,
+ StreamRotation::ROTATION_0};
+ Stream blobStream = {streamId++, StreamType::OUTPUT,
+ static_cast<uint32_t> (blobIter.width),
+ static_cast<uint32_t> (blobIter.height),
+ static_cast<PixelFormat> (blobIter.format), 0, 0,
+ StreamRotation::ROTATION_0};
+ ::android::hardware::hidl_vec<Stream> streams = {
+ previewStream, blobStream};
+ StreamConfiguration config = {streams,
+ StreamConfigurationMode::NORMAL_MODE};
+ session->configureStreams(config, [streamId] (Status s,
+ HalStreamConfiguration halConfig) {
+ ASSERT_EQ(Status::OK, s);
+ ASSERT_EQ(2u, halConfig.streams.size());
+ });
+ }
+ }
+
+ session->close();
+ }
+ }
+}
+
+// In case constrained mode is supported, test whether it can be
+// configured. Additionally check for common invalid inputs when
+// using this mode.
+TEST_F(CameraHidlTest, configureStreamsConstrainedOutputs) {
+ CameraHidlEnvironment* env = CameraHidlEnvironment::Instance();
+ hidl_vec<hidl_string> cameraDeviceNames = getCameraDeviceNames();
+
+ for (const auto& name : cameraDeviceNames) {
+ if (getCameraDeviceVersion(name) == CAMERA_DEVICE_API_VERSION_3_2) {
+ ::android::sp<::android::hardware::camera::device::V3_2::ICameraDevice> device3_2;
+ ALOGI("configureStreams: Testing camera device %s", name.c_str());
+ env->mProvider->getCameraDeviceInterface_V3_x(
+ name,
+ [&](auto status, const auto& device) {
+ ALOGI("getCameraDeviceInterface_V3_x returns status:%d", (int)status);
+ ASSERT_EQ(Status::OK, status);
+ ASSERT_NE(device, nullptr);
+ device3_2 = device;
+ });
+
+ sp<EmptyDeviceCb> cb = new EmptyDeviceCb;
+ sp<ICameraDeviceSession> session;
+ device3_2->open(
+ cb,
+ [&](auto status, const auto& newSession) {
+ ALOGI("device::open returns status:%d", (int)status);
+ ASSERT_EQ(Status::OK, status);
+ ASSERT_NE(newSession, nullptr);
+ session = newSession;
+ });
+
+ camera_metadata_t *staticMeta;
+ device3_2->getCameraCharacteristics([&] (Status s,
+ CameraMetadata metadata) {
+ ASSERT_EQ(Status::OK, s);
+ staticMeta =
+ reinterpret_cast<camera_metadata_t*>(metadata.data());
+ });
+ Status rc = isConstrainedModeAvailable(staticMeta);
+ if (Status::METHOD_NOT_SUPPORTED == rc) {
+ session->close();
+ continue;
+ }
+ ASSERT_EQ(Status::OK, rc);
+
+ AvailableStream hfrStream;
+ rc = pickConstrainedModeSize(staticMeta, hfrStream);
+ ASSERT_EQ(Status::OK, rc);
+
+ int32_t streamId = 0;
+ Stream stream = {streamId, StreamType::OUTPUT,
+ static_cast<uint32_t> (hfrStream.width),
+ static_cast<uint32_t> (hfrStream.height),
+ static_cast<PixelFormat> (hfrStream.format), 0, 0,
+ StreamRotation::ROTATION_0};
+ ::android::hardware::hidl_vec<Stream> streams = {stream};
+ StreamConfiguration config = {streams,
+ StreamConfigurationMode::CONSTRAINED_HIGH_SPEED_MODE};
+ session->configureStreams(config, [streamId] (Status s,
+ HalStreamConfiguration halConfig) {
+ ASSERT_EQ(Status::OK, s);
+ ASSERT_EQ(1u, halConfig.streams.size());
+ ASSERT_EQ(halConfig.streams[0].id, streamId);
+ });
+
+ stream = {streamId++, StreamType::OUTPUT,
+ static_cast<uint32_t> (0),
+ static_cast<uint32_t> (0),
+ static_cast<PixelFormat> (hfrStream.format), 0, 0,
+ StreamRotation::ROTATION_0};
+ streams[0] = stream;
+ config = {streams,
+ StreamConfigurationMode::CONSTRAINED_HIGH_SPEED_MODE};
+ session->configureStreams(config, [streamId] (Status s,
+ HalStreamConfiguration) {
+ ASSERT_EQ(Status::ILLEGAL_ARGUMENT, s);
+ });
+
+ stream = {streamId++, StreamType::OUTPUT,
+ static_cast<uint32_t> (UINT32_MAX),
+ static_cast<uint32_t> (UINT32_MAX),
+ static_cast<PixelFormat> (hfrStream.format), 0, 0,
+ StreamRotation::ROTATION_0};
+ streams[0] = stream;
+ config = {streams,
+ StreamConfigurationMode::CONSTRAINED_HIGH_SPEED_MODE};
+ session->configureStreams(config, [streamId] (Status s,
+ HalStreamConfiguration) {
+ ASSERT_EQ(Status::ILLEGAL_ARGUMENT, s);
+ });
+
+ stream = {streamId++, StreamType::OUTPUT,
+ static_cast<uint32_t> (hfrStream.width),
+ static_cast<uint32_t> (hfrStream.height),
+ static_cast<PixelFormat> (UINT32_MAX), 0, 0,
+ StreamRotation::ROTATION_0};
+ streams[0] = stream;
+ config = {streams,
+ StreamConfigurationMode::CONSTRAINED_HIGH_SPEED_MODE};
+ session->configureStreams(config, [streamId] (Status s,
+ HalStreamConfiguration) {
+ ASSERT_EQ(Status::ILLEGAL_ARGUMENT, s);
+ });
+
+ session->close();
+ }
+ }
+}
+
+// Verify that all supported video + snapshot stream combinations can
+// be configured successfully.
+TEST_F(CameraHidlTest, configureStreamsVideoStillOutputs) {
+ CameraHidlEnvironment* env = CameraHidlEnvironment::Instance();
+ hidl_vec<hidl_string> cameraDeviceNames = getCameraDeviceNames();
+ std::vector<AvailableStream> outputBlobStreams;
+ std::vector<AvailableStream> outputVideoStreams;
+ AvailableStream videoThreshold = {MAX_VIDEO_WIDTH, MAX_VIDEO_HEIGHT,
+ static_cast<int32_t>(PixelFormat::IMPLEMENTATION_DEFINED)};
+ AvailableStream blobThreshold = {MAX_VIDEO_WIDTH, MAX_VIDEO_HEIGHT,
+ static_cast<int32_t>(PixelFormat::BLOB)};
+
+ for (const auto& name : cameraDeviceNames) {
+ if (getCameraDeviceVersion(name) == CAMERA_DEVICE_API_VERSION_3_2) {
+ ::android::sp<::android::hardware::camera::device::V3_2::ICameraDevice> device3_2;
+ ALOGI("configureStreams: Testing camera device %s", name.c_str());
+ env->mProvider->getCameraDeviceInterface_V3_x(
+ name,
+ [&](auto status, const auto& device) {
+ ALOGI("getCameraDeviceInterface_V3_x returns status:%d", (int)status);
+ ASSERT_EQ(Status::OK, status);
+ ASSERT_NE(device, nullptr);
+ device3_2 = device;
+ });
+
+ sp<EmptyDeviceCb> cb = new EmptyDeviceCb;
+ sp<ICameraDeviceSession> session;
+ device3_2->open(
+ cb,
+ [&](auto status, const auto& newSession) {
+ ALOGI("device::open returns status:%d", (int)status);
+ ASSERT_EQ(Status::OK, status);
+ ASSERT_NE(newSession, nullptr);
+ session = newSession;
+ });
+
+ camera_metadata_t *staticMeta;
+ device3_2->getCameraCharacteristics([&] (Status s,
+ CameraMetadata metadata) {
+ ASSERT_EQ(Status::OK, s);
+ staticMeta =
+ reinterpret_cast<camera_metadata_t*>(metadata.data());
+ });
+ outputBlobStreams.clear();
+ ASSERT_EQ(Status::OK, getAvailableOutputStreams(staticMeta,
+ outputBlobStreams, &blobThreshold));
+ ASSERT_NE(0u, outputBlobStreams.size());
+
+ outputVideoStreams.clear();
+ ASSERT_EQ(Status::OK, getAvailableOutputStreams(staticMeta,
+ outputVideoStreams, &videoThreshold));
+ ASSERT_NE(0u, outputVideoStreams.size());
+
+ int32_t streamId = 0;
+ for (auto &blobIter : outputBlobStreams) {
+ for (auto &videoIter : outputVideoStreams) {
+ Stream videoStream = {streamId++, StreamType::OUTPUT,
+ static_cast<uint32_t> (videoIter.width),
+ static_cast<uint32_t> (videoIter.height),
+ static_cast<PixelFormat> (videoIter.format), 0, 0,
+ StreamRotation::ROTATION_0};
+ Stream blobStream = {streamId++, StreamType::OUTPUT,
+ static_cast<uint32_t> (blobIter.width),
+ static_cast<uint32_t> (blobIter.height),
+ static_cast<PixelFormat> (blobIter.format),
+ GRALLOC_USAGE_HW_VIDEO_ENCODER, 0,
+ StreamRotation::ROTATION_0};
+ ::android::hardware::hidl_vec<Stream> streams = {
+ videoStream, blobStream};
+ StreamConfiguration config = {streams,
+ StreamConfigurationMode::NORMAL_MODE};
+ session->configureStreams(config, [streamId] (Status s,
+ HalStreamConfiguration halConfig) {
+ ASSERT_EQ(Status::OK, s);
+ ASSERT_EQ(2u, halConfig.streams.size());
+ });
+ }
+ }
+
+ session->close();
+ }
+ }
+}
+
+// Generate and verify a camera capture request
+TEST_F(CameraHidlTest, processCaptureRequestPreview) {
+ CameraHidlEnvironment* env = CameraHidlEnvironment::Instance();
+ hidl_vec<hidl_string> cameraDeviceNames = getCameraDeviceNames();
+ std::vector<AvailableStream> outputPreviewStreams;
+ AvailableStream previewThreshold = {MAX_PREVIEW_WIDTH, MAX_PREVIEW_HEIGHT,
+ static_cast<int32_t>(PixelFormat::IMPLEMENTATION_DEFINED)};
+ int32_t streamId = 0;
+ uint64_t bufferId = 1;
+ uint32_t frameNumber = 1;
+ ::android::hardware::hidl_vec<uint8_t> settings;
+
+ for (const auto& name : cameraDeviceNames) {
+ if (getCameraDeviceVersion(name) == CAMERA_DEVICE_API_VERSION_3_2) {
+ ::android::sp<::android::hardware::camera::device::V3_2::ICameraDevice> device3_2;
+ ALOGI("configureStreams: Testing camera device %s", name.c_str());
+ env->mProvider->getCameraDeviceInterface_V3_x(
+ name,
+ [&](auto status, const auto& device) {
+ ALOGI("getCameraDeviceInterface_V3_x returns status:%d", (int)status);
+ ASSERT_EQ(Status::OK, status);
+ ASSERT_NE(device, nullptr);
+ device3_2 = device;
+ });
+
+ sp<DeviceCb> cb = new DeviceCb(this);
+ sp<ICameraDeviceSession> session;
+ device3_2->open(
+ cb,
+ [&](auto status, const auto& newSession) {
+ ALOGI("device::open returns status:%d", (int)status);
+ ASSERT_EQ(Status::OK, status);
+ ASSERT_NE(newSession, nullptr);
+ session = newSession;
+ });
+
+ camera_metadata_t *staticMeta;
+ device3_2->getCameraCharacteristics([&] (Status s,
+ CameraMetadata metadata) {
+ ASSERT_EQ(Status::OK, s);
+ staticMeta =
+ reinterpret_cast<camera_metadata_t*>(metadata.data());
+ });
+
+ outputPreviewStreams.clear();
+ ASSERT_EQ(Status::OK, getAvailableOutputStreams(staticMeta,
+ outputPreviewStreams, &previewThreshold));
+ ASSERT_NE(0u, outputPreviewStreams.size());
+
+ HalStreamConfiguration halStreamConfig;
+ Stream previewStream = {streamId, StreamType::OUTPUT,
+ static_cast<uint32_t> (outputPreviewStreams[0].width),
+ static_cast<uint32_t> (outputPreviewStreams[0].height),
+ static_cast<PixelFormat> (outputPreviewStreams[0].format),
+ 0, 0, StreamRotation::ROTATION_0};
+ ::android::hardware::hidl_vec<Stream> streams = {previewStream};
+ StreamConfiguration config = {streams,
+ StreamConfigurationMode::NORMAL_MODE};
+ session->configureStreams(config, [&] (Status s,
+ HalStreamConfiguration halConfig) {
+ ASSERT_EQ(Status::OK, s);
+ ASSERT_EQ(1u, halConfig.streams.size());
+ halStreamConfig = halConfig;
+ });
+
+ RequestTemplate reqTemplate = RequestTemplate::PREVIEW;
+ session->constructDefaultRequestSettings(reqTemplate,
+ [&](auto status, const auto& req) {
+ ASSERT_EQ(Status::OK, status);
+ settings = req; });
+
+ sp<GraphicBuffer> gb = new GraphicBuffer(previewStream.width,
+ previewStream.height,
+ static_cast<int32_t> (halStreamConfig.streams[0].overrideFormat),
+ 1, halStreamConfig.streams[0].producerUsage,
+ halStreamConfig.streams[0].consumerUsage);
+ ASSERT_NE(nullptr, gb.get());
+ StreamBuffer outputBuffer = {halStreamConfig.streams[0].id,
+ bufferId, hidl_handle(gb->getNativeBuffer()->handle),
+ BufferStatus::OK, nullptr, nullptr};
+ ::android::hardware::hidl_vec<StreamBuffer> outputBuffers = {
+ outputBuffer};
+ CaptureRequest request = {frameNumber, settings,
+ {-1, 0, nullptr, BufferStatus::ERROR, nullptr, nullptr},
+ outputBuffers};
+
+ std::unique_lock<std::mutex> l(mLock);
+ mResultBuffers.clear();
+ mResultFrameNumber = frameNumber;
+ l.unlock();
+
+ ASSERT_EQ(Status::OK, session->processCaptureRequest(request));
+
+ l.lock();
+ while (0 == mResultBuffers.size()) {
+ auto timeout = std::chrono::system_clock::now() +
+ std::chrono::seconds(STREAM_BUFFER_TIMEOUT);
+ ASSERT_NE(std::cv_status::timeout,
+ mResultCondition.wait_until(l, timeout));
+ }
+
+ ASSERT_EQ(BufferStatus::OK, mResultBuffers[0].status);
+ ASSERT_EQ(previewStream.id, mResultBuffers[0].streamId);
+
+ request.frameNumber++;
+ //Empty settings should be supported after the first call
+ //for repeating requests.
+ request.settings.setToExternal(nullptr, 0, true);
+ mResultBuffers.clear();
+ mResultFrameNumber++;
+ l.unlock();
+
+ ASSERT_EQ(Status::OK, session->processCaptureRequest(request));
+
+ l.lock();
+ while (0 == mResultBuffers.size()) {
+ auto timeout = std::chrono::system_clock::now() +
+ std::chrono::seconds(STREAM_BUFFER_TIMEOUT);
+ ASSERT_NE(std::cv_status::timeout,
+ mResultCondition.wait_until(l, timeout));
+ }
+ ASSERT_EQ(BufferStatus::OK, mResultBuffers[0].status);
+ ASSERT_EQ(previewStream.id, mResultBuffers[0].streamId);
+
+ session->close();
+ }
+ }
+}
+
+// Test whether an incorrect capture request with missing settings will
+// be reported correctly.
+TEST_F(CameraHidlTest, processCaptureRequestInvalidSinglePreview) {
+ CameraHidlEnvironment* env = CameraHidlEnvironment::Instance();
+ hidl_vec<hidl_string> cameraDeviceNames = getCameraDeviceNames();
+ std::vector<AvailableStream> outputPreviewStreams;
+ AvailableStream previewThreshold = {MAX_PREVIEW_WIDTH, MAX_PREVIEW_HEIGHT,
+ static_cast<int32_t>(PixelFormat::IMPLEMENTATION_DEFINED)};
+ int32_t streamId = 0;
+ uint64_t bufferId = 1;
+ uint32_t frameNumber = 1;
+ ::android::hardware::hidl_vec<uint8_t> settings;
+
+ for (const auto& name : cameraDeviceNames) {
+ if (getCameraDeviceVersion(name) == CAMERA_DEVICE_API_VERSION_3_2) {
+ ::android::sp<::android::hardware::camera::device::V3_2::ICameraDevice> device3_2;
+ ALOGI("configureStreams: Testing camera device %s", name.c_str());
+ env->mProvider->getCameraDeviceInterface_V3_x(
+ name,
+ [&](auto status, const auto& device) {
+ ALOGI("getCameraDeviceInterface_V3_x returns status:%d", (int)status);
+ ASSERT_EQ(Status::OK, status);
+ ASSERT_NE(device, nullptr);
+ device3_2 = device;
+ });
+
+ sp<DeviceCb> cb = new DeviceCb(this);
+ sp<ICameraDeviceSession> session;
+ device3_2->open(
+ cb,
+ [&](auto status, const auto& newSession) {
+ ALOGI("device::open returns status:%d", (int)status);
+ ASSERT_EQ(Status::OK, status);
+ ASSERT_NE(newSession, nullptr);
+ session = newSession;
+ });
+
+ camera_metadata_t *staticMeta;
+ device3_2->getCameraCharacteristics([&] (Status s,
+ CameraMetadata metadata) {
+ ASSERT_EQ(Status::OK, s);
+ staticMeta =
+ reinterpret_cast<camera_metadata_t*>(metadata.data());
+ });
+
+ outputPreviewStreams.clear();
+ ASSERT_EQ(Status::OK, getAvailableOutputStreams(staticMeta,
+ outputPreviewStreams, &previewThreshold));
+ ASSERT_NE(0u, outputPreviewStreams.size());
+
+ HalStreamConfiguration halStreamConfig;
+ Stream previewStream = {streamId, StreamType::OUTPUT,
+ static_cast<uint32_t> (outputPreviewStreams[0].width),
+ static_cast<uint32_t> (outputPreviewStreams[0].height),
+ static_cast<PixelFormat> (outputPreviewStreams[0].format),
+ 0, 0, StreamRotation::ROTATION_0};
+ ::android::hardware::hidl_vec<Stream> streams = {previewStream};
+ StreamConfiguration config = {streams,
+ StreamConfigurationMode::NORMAL_MODE};
+ session->configureStreams(config, [&] (Status s,
+ HalStreamConfiguration halConfig) {
+ ASSERT_EQ(Status::OK, s);
+ ASSERT_EQ(1u, halConfig.streams.size());
+ halStreamConfig = halConfig;
+ });
+
+ sp<GraphicBuffer> gb = new GraphicBuffer(previewStream.width,
+ previewStream.height,
+ static_cast<int32_t> (halStreamConfig.streams[0].overrideFormat),
+ 1, halStreamConfig.streams[0].producerUsage,
+ halStreamConfig.streams[0].consumerUsage);
+
+ StreamBuffer outputBuffer = {halStreamConfig.streams[0].id,
+ bufferId, hidl_handle(gb->getNativeBuffer()->handle),
+ BufferStatus::OK, nullptr, nullptr};
+ ::android::hardware::hidl_vec<StreamBuffer> outputBuffers = {
+ outputBuffer};
+ CaptureRequest request = {frameNumber, settings,
+ {-1, 0, nullptr, BufferStatus::ERROR, nullptr, nullptr},
+ outputBuffers};
+
+ //Settings were not correctly initialized, we should fail here
+ ASSERT_EQ(Status::INTERNAL_ERROR,
+ session->processCaptureRequest(request));
+
+ session->close();
+ }
+ }
+}
+
+// Check whether an invalid capture request with missing output buffers
+// will be reported correctly.
+TEST_F(CameraHidlTest, processCaptureRequestInvalidSingleSnapshot) {
+ CameraHidlEnvironment* env = CameraHidlEnvironment::Instance();
+ hidl_vec<hidl_string> cameraDeviceNames = getCameraDeviceNames();
+ std::vector<AvailableStream> outputBlobStreams;
+ AvailableStream blobThreshold = {INT32_MAX, INT32_MAX,
+ static_cast<int32_t>(PixelFormat::BLOB)};
+ int32_t streamId = 0;
+ uint64_t bufferId = 1;
+ uint32_t frameNumber = 1;
+ ::android::hardware::hidl_vec<uint8_t> settings;
+
+ for (const auto& name : cameraDeviceNames) {
+ if (getCameraDeviceVersion(name) == CAMERA_DEVICE_API_VERSION_3_2) {
+ ::android::sp<::android::hardware::camera::device::V3_2::ICameraDevice> device3_2;
+ ALOGI("configureStreams: Testing camera device %s", name.c_str());
+ env->mProvider->getCameraDeviceInterface_V3_x(
+ name,
+ [&](auto status, const auto& device) {
+ ALOGI("getCameraDeviceInterface_V3_x returns status:%d", (int)status);
+ ASSERT_EQ(Status::OK, status);
+ ASSERT_NE(device, nullptr);
+ device3_2 = device;
+ });
+
+ sp<DeviceCb> cb = new DeviceCb(this);
+ sp<ICameraDeviceSession> session;
+ device3_2->open(
+ cb,
+ [&](auto status, const auto& newSession) {
+ ALOGI("device::open returns status:%d", (int)status);
+ ASSERT_EQ(Status::OK, status);
+ ASSERT_NE(newSession, nullptr);
+ session = newSession;
+ });
+
+ camera_metadata_t *staticMeta;
+ device3_2->getCameraCharacteristics([&] (Status s,
+ CameraMetadata metadata) {
+ ASSERT_EQ(Status::OK, s);
+ staticMeta =
+ reinterpret_cast<camera_metadata_t*>(metadata.data());
+ });
+
+ outputBlobStreams.clear();
+ ASSERT_EQ(Status::OK, getAvailableOutputStreams(staticMeta,
+ outputBlobStreams, &blobThreshold));
+ ASSERT_NE(0u, outputBlobStreams.size());
+
+ HalStreamConfiguration halStreamConfig;
+ Stream previewStream = {streamId, StreamType::OUTPUT,
+ static_cast<uint32_t> (outputBlobStreams[0].width),
+ static_cast<uint32_t> (outputBlobStreams[0].height),
+ static_cast<PixelFormat> (outputBlobStreams[0].format),
+ 0, 0, StreamRotation::ROTATION_0};
+ ::android::hardware::hidl_vec<Stream> streams = {previewStream};
+ StreamConfiguration config = {streams,
+ StreamConfigurationMode::NORMAL_MODE};
+ session->configureStreams(config, [&] (Status s,
+ HalStreamConfiguration halConfig) {
+ ASSERT_EQ(Status::OK, s);
+ ASSERT_EQ(1u, halConfig.streams.size());
+ halStreamConfig = halConfig;
+ });
+
+ RequestTemplate reqTemplate = RequestTemplate::STILL_CAPTURE;
+ session->constructDefaultRequestSettings(reqTemplate,
+ [&](auto status, const auto& req) {
+ ASSERT_EQ(Status::OK, status);
+ settings = req; });
+
+ StreamBuffer outputBuffer = {halStreamConfig.streams[0].id,
+ bufferId, hidl_handle(nullptr), BufferStatus::OK,
+ nullptr, nullptr};
+ ::android::hardware::hidl_vec<StreamBuffer> outputBuffers;
+ CaptureRequest request = {frameNumber, settings,
+ {-1, 0, nullptr, BufferStatus::ERROR, nullptr, nullptr},
+ outputBuffers};
+
+ //Output buffers are missing, we should fail here
+ ASSERT_EQ(Status::INTERNAL_ERROR,
+ session->processCaptureRequest(request));
+
+ session->close();
+ }
+ }
+}
+
+// Retrieve all valid output stream resolutions from the camera
+// static characteristics.
+Status CameraHidlTest::getAvailableOutputStreams(camera_metadata_t *staticMeta,
+ std::vector<AvailableStream> &outputStreams,
+ AvailableStream *threshold) {
+ if (nullptr == staticMeta) {
+ return Status::ILLEGAL_ARGUMENT;
+ }
+
+ camera_metadata_ro_entry entry;
+ int rc = find_camera_metadata_ro_entry(staticMeta,
+ ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS, &entry);
+ if ((0 != rc) || (0 != (entry.count % 4))) {
+ return Status::ILLEGAL_ARGUMENT;
+ }
+
+ for (size_t i = 0; i < entry.count; i+=4) {
+ if (ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT ==
+ entry.data.i32[i + 3]) {
+ if(nullptr == threshold) {
+ AvailableStream s = {entry.data.i32[i+1],
+ entry.data.i32[i+2], entry.data.i32[i]};
+ outputStreams.push_back(s);
+ } else {
+ if ((threshold->format == entry.data.i32[i]) &&
+ (threshold->width >= entry.data.i32[i+1]) &&
+ (threshold->height >= entry.data.i32[i+2])) {
+ AvailableStream s = {entry.data.i32[i+1],
+ entry.data.i32[i+2], threshold->format};
+ outputStreams.push_back(s);
+ }
+ }
+ }
+
+ }
+
+ return Status::OK;
+}
+
+// Check if constrained mode is supported by using the static
+// camera characteristics.
+Status CameraHidlTest::isConstrainedModeAvailable(camera_metadata_t *staticMeta) {
+ Status ret = Status::METHOD_NOT_SUPPORTED;
+ if (nullptr == staticMeta) {
+ return Status::ILLEGAL_ARGUMENT;
+ }
+
+ camera_metadata_ro_entry entry;
+ int rc = find_camera_metadata_ro_entry(staticMeta,
+ ANDROID_REQUEST_AVAILABLE_CAPABILITIES, &entry);
+ if (0 != rc) {
+ return Status::ILLEGAL_ARGUMENT;
+ }
+
+ for (size_t i = 0; i < entry.count; i++) {
+ if (ANDROID_REQUEST_AVAILABLE_CAPABILITIES_CONSTRAINED_HIGH_SPEED_VIDEO ==
+ entry.data.u8[i]) {
+ ret = Status::OK;
+ break;
+ }
+ }
+
+ return ret;
+}
+
+// Pick the largest supported HFR mode from the static camera
+// characteristics.
+Status CameraHidlTest::pickConstrainedModeSize(camera_metadata_t *staticMeta,
+ AvailableStream &hfrStream) {
+ if (nullptr == staticMeta) {
+ return Status::ILLEGAL_ARGUMENT;
+ }
+
+ camera_metadata_ro_entry entry;
+ int rc = find_camera_metadata_ro_entry(staticMeta,
+ ANDROID_CONTROL_AVAILABLE_HIGH_SPEED_VIDEO_CONFIGURATIONS, &entry);
+ if (0 != rc) {
+ return Status::METHOD_NOT_SUPPORTED;
+ } else if (0 != (entry.count % 5)) {
+ return Status::ILLEGAL_ARGUMENT;
+ }
+
+ hfrStream = {0, 0,
+ static_cast<uint32_t>(PixelFormat::IMPLEMENTATION_DEFINED)};
+ for (size_t i = 0; i < entry.count; i+=5) {
+ int32_t w = entry.data.i32[i];
+ int32_t h = entry.data.i32[i+1];
+ if ((hfrStream.width * hfrStream.height) < (w *h)) {
+ hfrStream.width = w;
+ hfrStream.height = h;
+ }
+ }
+
+ return Status::OK;
+}
+
+// Check whether ZSL is available using the static camera
+// characteristics.
+Status CameraHidlTest::isZSLModeAvailable(camera_metadata_t *staticMeta) {
+ Status ret = Status::METHOD_NOT_SUPPORTED;
+ if (nullptr == staticMeta) {
+ return Status::ILLEGAL_ARGUMENT;
+ }
+
+ camera_metadata_ro_entry entry;
+ int rc = find_camera_metadata_ro_entry(staticMeta,
+ ANDROID_REQUEST_AVAILABLE_CAPABILITIES, &entry);
+ if (0 != rc) {
+ return Status::ILLEGAL_ARGUMENT;
+ }
+
+ for (size_t i = 0; i < entry.count; i++) {
+ if ((ANDROID_REQUEST_AVAILABLE_CAPABILITIES_PRIVATE_REPROCESSING ==
+ entry.data.u8[i]) ||
+ (ANDROID_REQUEST_AVAILABLE_CAPABILITIES_YUV_REPROCESSING ==
+ entry.data.u8[i]) ){
+ ret = Status::OK;
+ break;
+ }
+ }
+
+ return ret;
+}
+
+// Retrieve the reprocess input-output format map from the static
+// camera characteristics.
+Status CameraHidlTest::getZSLInputOutputMap(camera_metadata_t *staticMeta,
+ std::vector<AvailableZSLInputOutput> &inputOutputMap) {
+ if (nullptr == staticMeta) {
+ return Status::ILLEGAL_ARGUMENT;
+ }
+
+ camera_metadata_ro_entry entry;
+ int rc = find_camera_metadata_ro_entry(staticMeta,
+ ANDROID_SCALER_AVAILABLE_INPUT_OUTPUT_FORMATS_MAP, &entry);
+ if ((0 != rc) || (0 >= entry.count)) {
+ return Status::ILLEGAL_ARGUMENT;
+ }
+
+ const int32_t* contents = &entry.data.i32[0];
+ for (size_t i = 0; i < entry.count; ) {
+ int32_t inputFormat = contents[i++];
+ int32_t length = contents[i++];
+ for (int32_t j = 0; j < length; j++) {
+ int32_t outputFormat = contents[i+j];
+ AvailableZSLInputOutput zslEntry = {inputFormat, outputFormat};
+ inputOutputMap.push_back(zslEntry);
+ }
+ i += length;
+ }
+
+ return Status::OK;
+}
+
+// Search for the largest stream size for a given format.
+Status CameraHidlTest::findLargestSize(
+ const std::vector<AvailableStream> &streamSizes, int32_t format,
+ AvailableStream &result) {
+ result = {0, 0, 0};
+ for (auto &iter : streamSizes) {
+ if (format == iter.format) {
+ if ((result.width * result.height) < (iter.width * iter.height)) {
+ result = iter;
+ }
+ }
+ }
+
+ return (result.format == format) ? Status::OK : Status::ILLEGAL_ARGUMENT;
+}
+
+int main(int argc, char **argv) {
+ ::testing::AddGlobalTestEnvironment(CameraHidlEnvironment::Instance());
+ ::testing::InitGoogleTest(&argc, argv);
+ int status = RUN_ALL_TESTS();
+ ALOGI("Test result = %d", status);
+ return status;
+}
diff --git a/camera/provider/2.4/vts/functional/camera_hidl_hal_test.cpp b/camera/provider/2.4/vts/functional/camera_hidl_hal_test.cpp
deleted file mode 100644
index 0186371..0000000
--- a/camera/provider/2.4/vts/functional/camera_hidl_hal_test.cpp
+++ /dev/null
@@ -1,515 +0,0 @@
-/*
- * Copyright (C) 2016 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.
- */
-
-#define LOG_TAG "camera_hidl_hal_test"
-#include <android/hardware/camera/provider/2.4/ICameraProvider.h>
-#include <android/hardware/camera/device/3.2/ICameraDevice.h>
-#include <android/log.h>
-#include <gtest/gtest.h>
-#include <regex>
-#include "system/camera_metadata.h"
-
-using ::android::hardware::Return;
-using ::android::hardware::Void;
-using ::android::hardware::hidl_handle;
-using ::android::hardware::hidl_string;
-using ::android::hardware::hidl_vec;
-using ::android::sp;
-using ::android::hardware::camera::common::V1_0::Status;
-using ::android::hardware::camera::common::V1_0::CameraDeviceStatus;
-using ::android::hardware::camera::common::V1_0::TorchMode;
-using ::android::hardware::camera::common::V1_0::TorchModeStatus;
-using ::android::hardware::camera::provider::V2_4::ICameraProvider;
-using ::android::hardware::camera::provider::V2_4::ICameraProviderCallback;
-using ::android::hardware::camera::device::V3_2::CaptureRequest;
-using ::android::hardware::camera::device::V3_2::CaptureResult;
-using ::android::hardware::camera::device::V3_2::ICameraDeviceCallback;
-using ::android::hardware::camera::device::V3_2::ICameraDeviceSession;
-using ::android::hardware::camera::device::V3_2::NotifyMsg;
-using ::android::hardware::camera::device::V3_2::RequestTemplate;
-
-#define CAMERA_PASSTHROUGH_SERVICE_NAME "legacy/0"
-
-namespace {
- // "device@<version>/legacy/<id>"
- const char *kDeviceNameRE = "device@([0-9]+\\.[0-9]+)/legacy/(.+)";
- const int CAMERA_DEVICE_API_VERSION_3_2 = 0x302;
- const int CAMERA_DEVICE_API_VERSION_1_0 = 0x100;
- const char *kHAL3_2 = "3.2";
- const char *kHAL1_0 = "1.0";
-
- bool matchDeviceName(const hidl_string& deviceName, std::smatch& sm) {
- std::regex e(kDeviceNameRE);
- std::string deviceNameStd(deviceName.c_str());
- return std::regex_match(deviceNameStd, sm, e);
- }
-
- int getCameraDeviceVersion(const hidl_string& deviceName) {
- std::smatch sm;
- bool match = matchDeviceName(deviceName, sm);
- if (!match) {
- return -1;
- }
- if (sm[1].compare(kHAL3_2) == 0) {
- // maybe switched to 3.4 or define the hidl version enumlater
- return CAMERA_DEVICE_API_VERSION_3_2;
- } else if (sm[1].compare(kHAL1_0) == 0) {
- return CAMERA_DEVICE_API_VERSION_1_0;
- }
- return 0;
- }
-}
-
-// Test environment for camera
-class CameraHidlEnvironment : public ::testing::Environment {
-public:
- // get the test environment singleton
- static CameraHidlEnvironment* Instance() {
- static CameraHidlEnvironment* instance = new CameraHidlEnvironment;
- return instance;
- }
-
- virtual void SetUp() override;
- virtual void TearDown() override;
-
- sp<ICameraProvider> mProvider;
-
-private:
- CameraHidlEnvironment() {}
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(CameraHidlEnvironment);
-};
-
-void CameraHidlEnvironment::SetUp() {
- // TODO: test the binderized mode
- mProvider = ICameraProvider::getService(CAMERA_PASSTHROUGH_SERVICE_NAME);
- // TODO: handle the device doesn't have any camera case
- ALOGI_IF(mProvider, "provider is not nullptr, %p", mProvider.get());
- ASSERT_NE(mProvider, nullptr);
-}
-
-void CameraHidlEnvironment::TearDown() {
- ALOGI("TearDown CameraHidlEnvironment");
-}
-
-// The main test class for camera HIDL HAL.
-class CameraHidlTest : public ::testing::Test {
-public:
- virtual void SetUp() override {}
- virtual void TearDown() override {}
-
- hidl_vec<hidl_string> getCameraDeviceNames();
-
- struct EmptyDeviceCb : public ICameraDeviceCallback {
- virtual Return<void> processCaptureResult(const CaptureResult& /*result*/) override {
- ALOGI("processCaptureResult callback");
- ADD_FAILURE(); // Empty callback should not reach here
- return Void();
- }
-
- virtual Return<void> notify(const NotifyMsg& /*msg*/) override {
- ALOGI("notify callback");
- ADD_FAILURE(); // Empty callback should not reach here
- return Void();
- }
- };
-};
-
-hidl_vec<hidl_string> CameraHidlTest::getCameraDeviceNames() {
- CameraHidlEnvironment* env = CameraHidlEnvironment::Instance();
- hidl_vec<hidl_string> cameraDeviceNames;
- env->mProvider->getCameraIdList(
- [&](auto status, const auto& idList) {
- ALOGI("getCameraIdList returns status:%d", (int)status);
- for (size_t i = 0; i < idList.size(); i++) {
- ALOGI("Camera Id[%zu] is %s", i, idList[i].c_str());
- }
- ASSERT_EQ(Status::OK, status);
- cameraDeviceNames = idList;
- });
- return cameraDeviceNames;
-}
-
-// Test if ICameraProvider::isTorchModeSupported returns Status::OK
-TEST_F(CameraHidlTest, isTorchModeSupported) {
- CameraHidlEnvironment::Instance()->mProvider->isSetTorchModeSupported(
- [&](auto status, bool support) {
- ALOGI("isSetTorchModeSupported returns status:%d supported:%d",
- (int)status, support);
- ASSERT_EQ(Status::OK, status);
- });
-}
-
-// TODO: consider removing this test if getCameraDeviceNames() has the same coverage
-TEST_F(CameraHidlTest, getCameraIdList) {
- CameraHidlEnvironment::Instance()->mProvider->getCameraIdList(
- [&](auto status, const auto& idList) {
- ALOGI("getCameraIdList returns status:%d", (int)status);
- for (size_t i = 0; i < idList.size(); i++) {
- ALOGI("Camera Id[%zu] is %s", i, idList[i].c_str());
- }
- ASSERT_EQ(Status::OK, status);
- // This is true for internal camera provider.
- // Not necessary hold for external cameras providers
- ASSERT_GT(idList.size(), 0u);
- });
-}
-
-// Test if ICameraProvider::getVendorTags returns Status::OK
-TEST_F(CameraHidlTest, getVendorTags) {
- CameraHidlEnvironment::Instance()->mProvider->getVendorTags(
- [&](auto status, const auto& vendorTagSecs) {
- ALOGI("getVendorTags returns status:%d numSections %zu",
- (int)status, vendorTagSecs.size());
- for (size_t i = 0; i < vendorTagSecs.size(); i++) {
- ALOGI("Vendor tag section %zu name %s",
- i, vendorTagSecs[i].sectionName.c_str());
- for (size_t j = 0; j < vendorTagSecs[i].tags.size(); j++) {
- const auto& tag = vendorTagSecs[i].tags[j];
- ALOGI("Vendor tag id %u name %s type %d",
- tag.tagId,
- tag.tagName.c_str(),
- (int) tag.tagType);
- }
- }
- ASSERT_EQ(Status::OK, status);
- });
-}
-
-// Test if ICameraProvider::setCallback returns Status::OK
-TEST_F(CameraHidlTest, setCallback) {
- CameraHidlEnvironment* env = CameraHidlEnvironment::Instance();
- struct ProviderCb : public ICameraProviderCallback {
- virtual Return<void> cameraDeviceStatusChange(
- const hidl_string& cameraDeviceName,
- CameraDeviceStatus newStatus) override {
- ALOGI("camera device status callback name %s, status %d",
- cameraDeviceName.c_str(), (int) newStatus);
- return Void();
- }
-
- virtual Return<void> torchModeStatusChange(
- const hidl_string& cameraDeviceName,
- TorchModeStatus newStatus) override {
- ALOGI("Torch mode status callback name %s, status %d",
- cameraDeviceName.c_str(), (int) newStatus);
- return Void();
- }
- };
- sp<ProviderCb> cb = new ProviderCb;
- auto status = env->mProvider->setCallback(cb);
- ASSERT_EQ(Status::OK, status);
- // TODO: right now no callbacks are fired because there is no external camera
- // or torch mode change. Need to test torch API in CameraDevice test later.
-}
-
-// Test if ICameraProvider::getCameraDeviceInterface_V3_x returns Status::OK and non-null device
-TEST_F(CameraHidlTest, getCameraDeviceInterface_V3_x) {
- CameraHidlEnvironment* env = CameraHidlEnvironment::Instance();
- hidl_vec<hidl_string> cameraDeviceNames = getCameraDeviceNames();
-
- for (const auto& name : cameraDeviceNames) {
- if (getCameraDeviceVersion(name) == CAMERA_DEVICE_API_VERSION_3_2) {
- env->mProvider->getCameraDeviceInterface_V3_x(
- name,
- [&](auto status, const auto& device3_2) {
- ALOGI("getCameraDeviceInterface_V3_x returns status:%d", (int)status);
- ASSERT_EQ(Status::OK, status);
- ASSERT_NE(device3_2, nullptr);
- });
- }
- }
-}
-
-TEST_F(CameraHidlTest, getResourceCost) {
- CameraHidlEnvironment* env = CameraHidlEnvironment::Instance();
- hidl_vec<hidl_string> cameraDeviceNames = getCameraDeviceNames();
-
- for (const auto& name : cameraDeviceNames) {
- if (getCameraDeviceVersion(name) == CAMERA_DEVICE_API_VERSION_3_2) {
- ::android::sp<::android::hardware::camera::device::V3_2::ICameraDevice> device3_2;
- ALOGI("getResourceCost: Testing camera device %s", name.c_str());
- env->mProvider->getCameraDeviceInterface_V3_x(
- name,
- [&](auto status, const auto& device) {
- ALOGI("getCameraDeviceInterface_V3_x returns status:%d", (int)status);
- ASSERT_EQ(Status::OK, status);
- ASSERT_NE(device, nullptr);
- device3_2 = device;
- });
-
- device3_2->getResourceCost(
- [&](auto status, const auto& resourceCost) {
- ALOGI("getResourceCost returns status:%d", (int)status);
- ASSERT_EQ(Status::OK, status);
- ALOGI(" Resource cost is %d", resourceCost.resourceCost);
- ASSERT_LE(resourceCost.resourceCost, 100u);
- for (const auto& name : resourceCost.conflictingDevices) {
- ALOGI(" Conflicting device: %s", name.c_str());
- }
- });
- }
- }
-}
-
-TEST_F(CameraHidlTest, getCameraCharacteristics) {
- CameraHidlEnvironment* env = CameraHidlEnvironment::Instance();
- hidl_vec<hidl_string> cameraDeviceNames = getCameraDeviceNames();
-
- for (const auto& name : cameraDeviceNames) {
- if (getCameraDeviceVersion(name) == CAMERA_DEVICE_API_VERSION_3_2) {
- ::android::sp<::android::hardware::camera::device::V3_2::ICameraDevice> device3_2;
- ALOGI("getCameraCharacteristics: Testing camera device %s", name.c_str());
- env->mProvider->getCameraDeviceInterface_V3_x(
- name,
- [&](auto status, const auto& device) {
- ALOGI("getCameraDeviceInterface_V3_x returns status:%d", (int)status);
- ASSERT_EQ(Status::OK, status);
- ASSERT_NE(device, nullptr);
- device3_2 = device;
- });
-
- device3_2->getCameraCharacteristics(
- [&](auto status, const auto& chars) {
- ALOGI("getCameraCharacteristics returns status:%d", (int)status);
- ASSERT_EQ(Status::OK, status);
- const camera_metadata_t* metadata = (camera_metadata_t*) chars.data();
- size_t expectedSize = chars.size();
- ASSERT_EQ(0, validate_camera_metadata_structure(metadata, &expectedSize));
- size_t entryCount = get_camera_metadata_entry_count(metadata);
- // TODO: we can do better than 0 here. Need to check how many required
- // characteristics keys we've defined.
- ASSERT_GT(entryCount, 0u);
- ALOGI("getCameraCharacteristics metadata entry count is %zu", entryCount);
- });
- }
- }
-}
-
-TEST_F(CameraHidlTest, setTorchMode) {
- CameraHidlEnvironment* env = CameraHidlEnvironment::Instance();
- hidl_vec<hidl_string> cameraDeviceNames = getCameraDeviceNames();
- bool torchControlSupported = false;
-
- CameraHidlEnvironment::Instance()->mProvider->isSetTorchModeSupported(
- [&](auto status, bool support) {
- ALOGI("isSetTorchModeSupported returns status:%d supported:%d",
- (int)status, support);
- ASSERT_EQ(Status::OK, status);
- torchControlSupported = support;
- });
-
- for (const auto& name : cameraDeviceNames) {
- if (getCameraDeviceVersion(name) == CAMERA_DEVICE_API_VERSION_3_2) {
- ::android::sp<::android::hardware::camera::device::V3_2::ICameraDevice> device3_2;
- ALOGI("setTorchMode: Testing camera device %s", name.c_str());
- env->mProvider->getCameraDeviceInterface_V3_x(
- name,
- [&](auto status, const auto& device) {
- ALOGI("getCameraDeviceInterface_V3_x returns status:%d", (int)status);
- ASSERT_EQ(Status::OK, status);
- ASSERT_NE(device, nullptr);
- device3_2 = device;
- });
-
- Status status = device3_2->setTorchMode(TorchMode::ON);
- ALOGI("setTorchMode return status %d", (int)status);
- if (!torchControlSupported) {
- ASSERT_EQ(Status::METHOD_NOT_SUPPORTED, status);
- } else {
- ASSERT_TRUE(status == Status::OK || status == Status::OPERATION_NOT_SUPPORTED);
- if (status == Status::OK) {
- status = device3_2->setTorchMode(TorchMode::OFF);
- ASSERT_EQ(Status::OK, status);
- }
- }
- }
- }
-}
-
-TEST_F(CameraHidlTest, dumpState) {
- CameraHidlEnvironment* env = CameraHidlEnvironment::Instance();
- hidl_vec<hidl_string> cameraDeviceNames = getCameraDeviceNames();
-
- for (const auto& name : cameraDeviceNames) {
- if (getCameraDeviceVersion(name) == CAMERA_DEVICE_API_VERSION_3_2) {
- ::android::sp<::android::hardware::camera::device::V3_2::ICameraDevice> device3_2;
- ALOGI("dumpState: Testing camera device %s", name.c_str());
- env->mProvider->getCameraDeviceInterface_V3_x(
- name,
- [&](auto status, const auto& device) {
- ALOGI("getCameraDeviceInterface_V3_x returns status:%d", (int)status);
- ASSERT_EQ(Status::OK, status);
- ASSERT_NE(device, nullptr);
- device3_2 = device;
- });
-
- native_handle_t* raw_handle = native_handle_create(1, 0);
- raw_handle->data[0] = 1; // std out
- hidl_handle handle = raw_handle;
- device3_2->dumpState(handle);
- native_handle_delete(raw_handle);
- }
- }
-}
-
-// Open, dumpStates, then close
-TEST_F(CameraHidlTest, openClose) {
- CameraHidlEnvironment* env = CameraHidlEnvironment::Instance();
- hidl_vec<hidl_string> cameraDeviceNames = getCameraDeviceNames();
-
- for (const auto& name : cameraDeviceNames) {
- if (getCameraDeviceVersion(name) == CAMERA_DEVICE_API_VERSION_3_2) {
- ::android::sp<::android::hardware::camera::device::V3_2::ICameraDevice> device3_2;
- ALOGI("openClose: Testing camera device %s", name.c_str());
- env->mProvider->getCameraDeviceInterface_V3_x(
- name,
- [&](auto status, const auto& device) {
- ALOGI("getCameraDeviceInterface_V3_x returns status:%d", (int)status);
- ASSERT_EQ(Status::OK, status);
- ASSERT_NE(device, nullptr);
- device3_2 = device;
- });
-
- sp<EmptyDeviceCb> cb = new EmptyDeviceCb;
- sp<ICameraDeviceSession> session;
- device3_2->open(
- cb,
- [&](auto status, const auto& newSession) {
- ALOGI("device::open returns status:%d", (int)status);
- ASSERT_EQ(Status::OK, status);
- ASSERT_NE(newSession, nullptr);
- session = newSession;
- });
-
- native_handle_t* raw_handle = native_handle_create(1, 0);
- raw_handle->data[0] = 1; // std out
- hidl_handle handle = raw_handle;
- device3_2->dumpState(handle);
- native_handle_delete(raw_handle);
-
- session->close();
- // TODO: test all session API calls return INTERNAL_ERROR after close
- // TODO: keep a wp copy here and verify session cannot be promoted out of this scope
- }
- }
-}
-
-TEST_F(CameraHidlTest, constructDefaultRequestSettings) {
- CameraHidlEnvironment* env = CameraHidlEnvironment::Instance();
- hidl_vec<hidl_string> cameraDeviceNames = getCameraDeviceNames();
-
- for (const auto& name : cameraDeviceNames) {
- if (getCameraDeviceVersion(name) == CAMERA_DEVICE_API_VERSION_3_2) {
- ::android::sp<::android::hardware::camera::device::V3_2::ICameraDevice> device3_2;
- ALOGI("constructDefaultRequestSettings: Testing camera device %s", name.c_str());
- env->mProvider->getCameraDeviceInterface_V3_x(
- name,
- [&](auto status, const auto& device) {
- ALOGI("getCameraDeviceInterface_V3_x returns status:%d", (int)status);
- ASSERT_EQ(Status::OK, status);
- ASSERT_NE(device, nullptr);
- device3_2 = device;
- });
-
- sp<EmptyDeviceCb> cb = new EmptyDeviceCb;
- sp<ICameraDeviceSession> session;
- device3_2->open(
- cb,
- [&](auto status, const auto& newSession) {
- ALOGI("device::open returns status:%d", (int)status);
- ASSERT_EQ(Status::OK, status);
- ASSERT_NE(newSession, nullptr);
- session = newSession;
- });
-
- for (uint32_t t = (uint32_t) RequestTemplate::PREVIEW;
- t <= (uint32_t) RequestTemplate::MANUAL; t++) {
- RequestTemplate reqTemplate = (RequestTemplate) t;
- session->constructDefaultRequestSettings(
- reqTemplate,
- [&](auto status, const auto& req) {
- ALOGI("constructDefaultRequestSettings returns status:%d", (int)status);
- if (reqTemplate == RequestTemplate::ZERO_SHUTTER_LAG ||
- reqTemplate == RequestTemplate::MANUAL) {
- // optional templates
- ASSERT_TRUE(status == Status::OK || status == Status::ILLEGAL_ARGUMENT);
- } else {
- ASSERT_EQ(Status::OK, status);
- }
-
- if (status == Status::OK) {
- const camera_metadata_t* metadata =
- (camera_metadata_t*) req.data();
- size_t expectedSize = req.size();
- ASSERT_EQ(0, validate_camera_metadata_structure(
- metadata, &expectedSize));
- size_t entryCount = get_camera_metadata_entry_count(metadata);
- // TODO: we can do better than 0 here. Need to check how many required
- // request keys we've defined for each template
- ASSERT_GT(entryCount, 0u);
- ALOGI("template %u metadata entry count is %zu", t, entryCount);
- } else {
- ASSERT_EQ(0u, req.size());
- }
- });
- }
- session->close();
- }
- }
-}
-
-TEST_F(CameraHidlTest, configureStreams) {
- CameraHidlEnvironment* env = CameraHidlEnvironment::Instance();
- hidl_vec<hidl_string> cameraDeviceNames = getCameraDeviceNames();
-
- for (const auto& name : cameraDeviceNames) {
- if (getCameraDeviceVersion(name) == CAMERA_DEVICE_API_VERSION_3_2) {
- ::android::sp<::android::hardware::camera::device::V3_2::ICameraDevice> device3_2;
- ALOGI("configureStreams: Testing camera device %s", name.c_str());
- env->mProvider->getCameraDeviceInterface_V3_x(
- name,
- [&](auto status, const auto& device) {
- ALOGI("getCameraDeviceInterface_V3_x returns status:%d", (int)status);
- ASSERT_EQ(Status::OK, status);
- ASSERT_NE(device, nullptr);
- device3_2 = device;
- });
-
- sp<EmptyDeviceCb> cb = new EmptyDeviceCb;
- sp<ICameraDeviceSession> session;
- device3_2->open(
- cb,
- [&](auto status, const auto& newSession) {
- ALOGI("device::open returns status:%d", (int)status);
- ASSERT_EQ(Status::OK, status);
- ASSERT_NE(newSession, nullptr);
- session = newSession;
- });
-
-
- session->close();
- }
- }
-}
-
-int main(int argc, char **argv) {
- ::testing::AddGlobalTestEnvironment(CameraHidlEnvironment::Instance());
- ::testing::InitGoogleTest(&argc, argv);
- int status = RUN_ALL_TESTS();
- ALOGI("Test result = %d", status);
- return status;
-}
diff --git a/configstore/1.0/ISurfaceFlingerConfigs.hal b/configstore/1.0/ISurfaceFlingerConfigs.hal
index 97dc915..4403a90 100644
--- a/configstore/1.0/ISurfaceFlingerConfigs.hal
+++ b/configstore/1.0/ISurfaceFlingerConfigs.hal
@@ -17,4 +17,5 @@
interface ISurfaceFlingerConfigs {
vsyncEventPhaseOffsetNs() generates (OptionalInt64 value);
+ useTripleFramebuffer() generates (OptionalBool value);
};
diff --git a/configstore/1.0/default/Android.mk b/configstore/1.0/default/Android.mk
index 116126d..b168029 100644
--- a/configstore/1.0/default/Android.mk
+++ b/configstore/1.0/default/Android.mk
@@ -13,7 +13,6 @@
libbase \
libhidlbase \
libhidltransport \
- libhwbinder \
libutils \
android.hardware.configstore@1.0 \
android.hidl.base@1.0
@@ -35,7 +34,6 @@
libutils \
libhidlbase \
libhidltransport \
- libhwbinder \
android.hardware.configstore@1.0 \
include $(BUILD_EXECUTABLE)
diff --git a/configstore/1.0/default/SurfaceFlingerConfigs.cpp b/configstore/1.0/default/SurfaceFlingerConfigs.cpp
index fc75182..5d62b15 100644
--- a/configstore/1.0/default/SurfaceFlingerConfigs.cpp
+++ b/configstore/1.0/default/SurfaceFlingerConfigs.cpp
@@ -19,6 +19,15 @@
return Void();
}
+Return<void> SurfaceFlingerConfigs::useTripleFramebuffer(useTripleFramebuffer_cb _hidl_cb) {
+ bool value = false;
+#ifdef USE_TRIPLE_FRAMEBUFFER
+ value = true;
+#endif
+ _hidl_cb({true, value});
+ LOG(INFO) << "SurfaceFlinger FrameBuffer: " << (value ? "triple" : "double");
+ return Void();
+}
// Methods from ::android::hidl::base::V1_0::IBase follow.
diff --git a/configstore/1.0/default/SurfaceFlingerConfigs.h b/configstore/1.0/default/SurfaceFlingerConfigs.h
index 5c754a0..c9652fc 100644
--- a/configstore/1.0/default/SurfaceFlingerConfigs.h
+++ b/configstore/1.0/default/SurfaceFlingerConfigs.h
@@ -25,6 +25,7 @@
struct SurfaceFlingerConfigs : public ISurfaceFlingerConfigs {
// Methods from ::android::hardware::configstore::V1_0::ISurfaceFlingerConfigs follow.
Return<void> vsyncEventPhaseOffsetNs(vsyncEventPhaseOffsetNs_cb _hidl_cb) override;
+ Return<void> useTripleFramebuffer(useTripleFramebuffer_cb _hidl_cb) override;
// Methods from ::android::hidl::base::V1_0::IBase follow.
diff --git a/configstore/1.0/default/surfaceflinger.mk b/configstore/1.0/default/surfaceflinger.mk
index 42fa191..5a946f4 100644
--- a/configstore/1.0/default/surfaceflinger.mk
+++ b/configstore/1.0/default/surfaceflinger.mk
@@ -4,3 +4,7 @@
ifneq ($(VSYNC_EVENT_PHASE_OFFSET_NS),)
LOCAL_CFLAGS += -DVSYNC_EVENT_PHASE_OFFSET_NS=$(VSYNC_EVENT_PHASE_OFFSET_NS)
endif
+
+ifeq ($(NUM_FRAMEBUFFER_SURFACE_BUFFERS),3)
+ LOCAL_CFLAGS += -DUSE_TRIPLE_FRAMEBUFFER
+endif
diff --git a/configstore/Android.bp b/configstore/Android.bp
index bbb3e4b..79b63f6 100644
--- a/configstore/Android.bp
+++ b/configstore/Android.bp
@@ -1,4 +1,5 @@
// This is an autogenerated file, do not edit.
subdirs = [
"1.0",
+ "utils",
]
diff --git a/configstore/utils/Android.bp b/configstore/utils/Android.bp
new file mode 100644
index 0000000..09ab5b2
--- /dev/null
+++ b/configstore/utils/Android.bp
@@ -0,0 +1,26 @@
+//
+// Copyright (C) 2017 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.
+//
+
+cc_library_headers {
+ name: "android.hardware.configstore-utils",
+ export_include_dirs: ["include"],
+ shared_libs: [
+ "libhidlbase"
+ ],
+ export_shared_lib_headers: [
+ "libhidlbase"
+ ],
+}
diff --git a/configstore/utils/include/configstore/Utils.h b/configstore/utils/include/configstore/Utils.h
new file mode 100644
index 0000000..98ccae9
--- /dev/null
+++ b/configstore/utils/include/configstore/Utils.h
@@ -0,0 +1,94 @@
+//
+// Copyright (C) 2017 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.
+//
+
+#ifndef ANDROID_HARDWARE_CONFIGSTORE_UTILS_H
+#define ANDROID_HARDWARE_CONFIGSTORE_UTILS_H
+
+#include <hidl/Status.h>
+#include <stdatomic.h>
+
+namespace android {
+namespace hardware {
+namespace configstore {
+// arguments V: type for the value (i.e., OptionalXXX)
+// I: interface class name
+// func: member function pointer
+using namespace V1_0;
+
+template<typename V, typename I, android::hardware::Return<void> (I::* func)
+ (std::function<void(const V&)>)>
+decltype(V::value) get(const decltype(V::value) &defValue) {
+ auto getHelper = []()->V {
+ V ret;
+ sp<I> configs = I::getService();
+
+ if (!configs.get()) {
+ // fallback to the default value
+ ret.specified = false;
+ } else {
+ (*configs.*func)([&ret](V v) {
+ ret = v;
+ });
+ }
+
+ return ret;
+ };
+ static V cachedValue = getHelper();
+
+ return cachedValue.specified ? cachedValue.value : defValue;
+}
+
+template<typename I, android::hardware::Return<void> (I::* func)
+ (std::function<void(const OptionalBool&)>)>
+bool getBool(const bool defValue) {
+ return get<OptionalBool, I, func>(defValue);
+}
+
+template<typename I, android::hardware::Return<void> (I::* func)
+ (std::function<void(const OptionalInt32&)>)>
+int32_t getInt32(const int32_t defValue) {
+ return get<OptionalInt32, I, func>(defValue);
+}
+
+template<typename I, android::hardware::Return<void> (I::* func)
+ (std::function<void(const OptionalUInt32&)>)>
+uint32_t getUInt32(const uint32_t defValue) {
+ return get<OptionalUInt32, I, func>(defValue);
+}
+
+template<typename I, android::hardware::Return<void> (I::* func)
+ (std::function<void(const OptionalInt64&)>)>
+int64_t getInt64(const int64_t defValue) {
+ return get<OptionalInt64, I, func>(defValue);
+}
+
+template<typename I, android::hardware::Return<void> (I::* func)
+ (std::function<void(const OptionalUInt64&)>)>
+uint64_t getUInt64(const uint64_t defValue) {
+ return get<OptionalUInt64, I, func>(defValue);
+}
+
+template<typename I, android::hardware::Return<void> (I::* func)
+ (std::function<void(const OptionalString&)>)>
+std::string getString(const std::string &defValue) {
+ return get<OptionalString, I, func>(defValue);
+}
+
+} // namespace configstore
+} // namespace hardware
+} // namespace android
+
+#endif // ANDROID_HARDWARE_CONFIGSTORE_UTILS_H
diff --git a/contexthub/1.0/default/Android.bp b/contexthub/1.0/default/Android.bp
index 0e1dc77..32ab0e0 100644
--- a/contexthub/1.0/default/Android.bp
+++ b/contexthub/1.0/default/Android.bp
@@ -23,7 +23,6 @@
"liblog",
"libcutils",
"libhardware",
- "libhwbinder",
"libbase",
"libcutils",
"libutils",
diff --git a/contexthub/1.0/default/Android.mk b/contexthub/1.0/default/Android.mk
index cc36b7f..538a6b2 100644
--- a/contexthub/1.0/default/Android.mk
+++ b/contexthub/1.0/default/Android.mk
@@ -16,7 +16,6 @@
libhardware_legacy \
libhidlbase \
libhidltransport \
- libhwbinder \
liblog \
libutils \
android.hardware.contexthub@1.0 \
diff --git a/contexthub/1.0/default/service.cpp b/contexthub/1.0/default/service.cpp
index db9a4e7..8c676b4 100644
--- a/contexthub/1.0/default/service.cpp
+++ b/contexthub/1.0/default/service.cpp
@@ -23,5 +23,5 @@
using android::hardware::defaultPassthroughServiceImplementation;
int main() {
- return defaultPassthroughServiceImplementation<IContexthub>("context_hub");
+ return defaultPassthroughServiceImplementation<IContexthub>();
}
diff --git a/contexthub/1.0/vts/Contexthub.vts b/contexthub/1.0/vts/Contexthub.vts
deleted file mode 100644
index a5cdc81..0000000
--- a/contexthub/1.0/vts/Contexthub.vts
+++ /dev/null
@@ -1,147 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "IContexthub"
-
-package: "android.hardware.contexthub"
-
-import: "android.hardware.contexthub@1.0::IContexthubCallback"
-import: "android.hardware.contexthub@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- api: {
- name: "getHubs"
- return_type_hidl: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::contexthub::V1_0::ContextHub"
- }
- }
- }
-
- api: {
- name: "registerCallback"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::contexthub::V1_0::Result"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_HIDL_CALLBACK
- predefined_type: "::android::hardware::contexthub::V1_0::IContexthubCallback"
- }
- }
-
- api: {
- name: "sendMessageToHub"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::contexthub::V1_0::Result"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::contexthub::V1_0::ContextHubMsg"
- }
- }
-
- api: {
- name: "loadNanoApp"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::contexthub::V1_0::Result"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::contexthub::V1_0::NanoAppBinary"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "unloadNanoApp"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::contexthub::V1_0::Result"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "enableNanoApp"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::contexthub::V1_0::Result"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "disableNanoApp"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::contexthub::V1_0::Result"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "queryApps"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::contexthub::V1_0::Result"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
-}
diff --git a/contexthub/1.0/vts/ContexthubCallback.vts b/contexthub/1.0/vts/ContexthubCallback.vts
deleted file mode 100644
index 59ff2fe..0000000
--- a/contexthub/1.0/vts/ContexthubCallback.vts
+++ /dev/null
@@ -1,62 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "IContexthubCallback"
-
-package: "android.hardware.contexthub"
-
-import: "android.hardware.contexthub@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- api: {
- name: "handleClientMsg"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::contexthub::V1_0::ContextHubMsg"
- }
- }
-
- api: {
- name: "handleTxnResult"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::contexthub::V1_0::TransactionResult"
- }
- }
-
- api: {
- name: "handleHubEvent"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::contexthub::V1_0::AsyncEventType"
- }
- }
-
- api: {
- name: "handleAppAbort"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "handleAppsInfo"
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::contexthub::V1_0::HubAppInfo"
- }
- }
- }
-
-}
diff --git a/contexthub/1.0/vts/functional/Android.bp b/contexthub/1.0/vts/functional/Android.bp
index e78898e..8ef5f62 100644
--- a/contexthub/1.0/vts/functional/Android.bp
+++ b/contexthub/1.0/vts/functional/Android.bp
@@ -15,9 +15,8 @@
//
cc_test {
- name: "contexthub_hidl_hal_test",
- gtest: true,
- srcs: ["contexthub_hidl_hal_test.cpp"],
+ name: "VtsHalContexthubV1_0TargetTest",
+ srcs: ["VtsHalContexthubV1_0TargetTest.cpp"],
shared_libs: [
"liblog",
"libhidlbase",
@@ -25,14 +24,10 @@
"libutils",
"android.hardware.contexthub@1.0",
],
- static_libs: ["libgtest"],
+ static_libs: ["VtsHalHidlTargetBaseTest"],
cflags: [
- "--coverage",
"-O0",
"-g",
- ],
- ldflags: [
- "--coverage",
- ],
+ ]
}
diff --git a/contexthub/1.0/vts/functional/contexthub_hidl_hal_test.cpp b/contexthub/1.0/vts/functional/VtsHalContexthubV1_0TargetTest.cpp
similarity index 97%
rename from contexthub/1.0/vts/functional/contexthub_hidl_hal_test.cpp
rename to contexthub/1.0/vts/functional/VtsHalContexthubV1_0TargetTest.cpp
index e4dea4f..c5eea89 100644
--- a/contexthub/1.0/vts/functional/contexthub_hidl_hal_test.cpp
+++ b/contexthub/1.0/vts/functional/VtsHalContexthubV1_0TargetTest.cpp
@@ -21,7 +21,7 @@
#include <android/hardware/contexthub/1.0/IContexthubCallback.h>
#include <android/hardware/contexthub/1.0/types.h>
#include <android/log.h>
-#include <gtest/gtest.h>
+#include <VtsHalHidlTargetBaseTest.h>
#include <cinttypes>
#include <future>
@@ -80,7 +80,7 @@
static std::vector<uint32_t> hubIds;
if (hubIds.size() == 0) {
- sp<IContexthub> hubApi = IContexthub::getService(CONTEXTHUB_SERVICE_NAME);
+ sp<IContexthub> hubApi = ::testing::VtsHalHidlTargetBaseTest::getService<IContexthub>(CONTEXTHUB_SERVICE_NAME);
if (hubApi != nullptr) {
for (ContextHub hub : getHubsSync(hubApi)) {
@@ -95,10 +95,10 @@
// Base test fixture that initializes the HAL and makes the context hub API
// handle available
-class ContexthubHidlTestBase : public ::testing::Test {
+class ContexthubHidlTestBase : public ::testing::VtsHalHidlTargetBaseTest {
public:
virtual void SetUp() override {
- hubApi = IContexthub::getService(CONTEXTHUB_SERVICE_NAME);
+ hubApi = ::testing::VtsHalHidlTargetBaseTest::getService<IContexthub>(CONTEXTHUB_SERVICE_NAME);
ASSERT_NE(hubApi, nullptr);
// getHubs() must be called at least once for proper initialization of the
diff --git a/contexthub/1.0/vts/types.vts b/contexthub/1.0/vts/types.vts
deleted file mode 100644
index 4f5dfcf..0000000
--- a/contexthub/1.0/vts/types.vts
+++ /dev/null
@@ -1,477 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "types"
-
-package: "android.hardware.contexthub"
-
-
-attribute: {
- name: "::android::hardware::contexthub::V1_0::Result"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "OK"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "UNKNOWN_FAILURE"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "BAD_PARAMS"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "NOT_INIT"
- scalar_value: {
- uint32_t: 3
- }
- enumerator: "TRANSACTION_FAILED"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "TRANSACTION_PENDING"
- scalar_value: {
- uint32_t: 5
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::contexthub::V1_0::NanoAppFlags"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "SIGNED"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "ENCRYPTED"
- scalar_value: {
- uint32_t: 2
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::contexthub::V1_0::NanoAppBinary"
- type: TYPE_STRUCT
- struct_value: {
- name: "appId"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- struct_value: {
- name: "appVersion"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "flags"
- type: TYPE_MASK
- scalar_type: "uint32_t"
- predefined_type: "::android::hardware::contexthub::V1_0::NanoAppFlags"
- }
- struct_value: {
- name: "targetChreApiMajorVersion"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "targetChreApiMinorVersion"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "customBinary"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::contexthub::V1_0::SensorType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "RESERVED"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "ACCELEROMETER"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "GYROSCOPE"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "MAGNETOMETER"
- scalar_value: {
- uint32_t: 3
- }
- enumerator: "BAROMETER"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "PROXIMITY_SENSOR"
- scalar_value: {
- uint32_t: 5
- }
- enumerator: "AMBIENT_LIGHT_SENSOR"
- scalar_value: {
- uint32_t: 6
- }
- enumerator: "STATIONARY_DETECT"
- scalar_value: {
- uint32_t: 7
- }
- enumerator: "INSTANT_MOTION_DETECT"
- scalar_value: {
- uint32_t: 8
- }
- enumerator: "GPS"
- scalar_value: {
- uint32_t: 256
- }
- enumerator: "WIFI"
- scalar_value: {
- uint32_t: 512
- }
- enumerator: "AUDIO"
- scalar_value: {
- uint32_t: 768
- }
- enumerator: "CAMERA"
- scalar_value: {
- uint32_t: 1024
- }
- enumerator: "BLE"
- scalar_value: {
- uint32_t: 1280
- }
- enumerator: "WWAN"
- scalar_value: {
- uint32_t: 1536
- }
- enumerator: "PRIVATE_SENSOR_BASE"
- scalar_value: {
- uint32_t: 65536
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::contexthub::V1_0::PhysicalSensor"
- type: TYPE_STRUCT
- struct_value: {
- name: "sensorType"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::contexthub::V1_0::SensorType"
- }
- struct_value: {
- name: "type"
- type: TYPE_STRING
- }
- struct_value: {
- name: "name"
- type: TYPE_STRING
- }
- struct_value: {
- name: "vendor"
- type: TYPE_STRING
- }
- struct_value: {
- name: "version"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "fifoReservedCount"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "fifoMaxCount"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "minDelayMs"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- struct_value: {
- name: "maxDelayMs"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- struct_value: {
- name: "peakPowerMw"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::contexthub::V1_0::ContextHub"
- type: TYPE_STRUCT
- struct_value: {
- name: "name"
- type: TYPE_STRING
- }
- struct_value: {
- name: "vendor"
- type: TYPE_STRING
- }
- struct_value: {
- name: "toolchain"
- type: TYPE_STRING
- }
- struct_value: {
- name: "platformVersion"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "toolchainVersion"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "hubId"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "peakMips"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- struct_value: {
- name: "stoppedPowerDrawMw"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- struct_value: {
- name: "sleepPowerDrawMw"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- struct_value: {
- name: "peakPowerDrawMw"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- struct_value: {
- name: "connectedSensors"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::contexthub::V1_0::PhysicalSensor"
- }
- }
- struct_value: {
- name: "maxSupportedMsgLen"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "chrePlatformId"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- struct_value: {
- name: "chreApiMajorVersion"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "chreApiMinorVersion"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "chrePatchVersion"
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::contexthub::V1_0::HostEndPoint"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint16_t"
-
- enumerator: "BROADCAST"
- scalar_value: {
- uint16_t: 65535
- }
- enumerator: "UNSPECIFIED"
- scalar_value: {
- uint16_t: 65534
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::contexthub::V1_0::ContextHubMsg"
- type: TYPE_STRUCT
- struct_value: {
- name: "appName"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- struct_value: {
- name: "hostEndPoint"
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- struct_value: {
- name: "msgType"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "msg"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::contexthub::V1_0::HubMemoryType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "MAIN"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "SECONDARY"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "TCM"
- scalar_value: {
- uint32_t: 2
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::contexthub::V1_0::HubMemoryFlag"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "READ"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "WRITE"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "EXEC"
- scalar_value: {
- uint32_t: 4
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::contexthub::V1_0::MemRange"
- type: TYPE_STRUCT
- struct_value: {
- name: "totalBytes"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "freeBytes"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "type"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::contexthub::V1_0::HubMemoryType"
- }
- struct_value: {
- name: "flags"
- type: TYPE_MASK
- scalar_type: "uint32_t"
- predefined_type: "::android::hardware::contexthub::V1_0::HubMemoryFlag"
- }
-}
-
-attribute: {
- name: "::android::hardware::contexthub::V1_0::AsyncEventType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "RESTARTED"
- scalar_value: {
- uint32_t: 1
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::contexthub::V1_0::TransactionResult"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "SUCCESS"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "FAILURE"
- scalar_value: {
- int32_t: 1
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::contexthub::V1_0::HubAppInfo"
- type: TYPE_STRUCT
- struct_value: {
- name: "appId"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- struct_value: {
- name: "version"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "memUsage"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::contexthub::V1_0::MemRange"
- }
- }
- struct_value: {
- name: "enabled"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
-}
-
diff --git a/drm/1.0/ICryptoPlugin.hal b/drm/1.0/ICryptoPlugin.hal
index d66151e..ca8fa50 100644
--- a/drm/1.0/ICryptoPlugin.hal
+++ b/drm/1.0/ICryptoPlugin.hal
@@ -62,8 +62,16 @@
* After the shared buffer base is established, the decrypt() method
* receives SharedBuffer instances which specify the buffer address range
* for decrypt source and destination addresses.
+ *
+ * There can be multiple shared buffers per crypto plugin. The buffers
+ * are distinguished by the bufferId.
+ *
+ * @param base the base IMemory of the memory buffer identified by
+ * bufferId
+ * @param bufferId identifies the specific shared buffer for which
+ * the base is being set.
*/
- setSharedBufferBase(memory base);
+ setSharedBufferBase(memory base, uint32_t bufferId);
/**
* Decrypt an array of subsamples from the source memory buffer to the
diff --git a/drm/1.0/default/Android.mk b/drm/1.0/default/Android.mk
index ea6cca0..f2334a0 100644
--- a/drm/1.0/default/Android.mk
+++ b/drm/1.0/default/Android.mk
@@ -32,7 +32,6 @@
libhidlbase \
libhidltransport \
libhardware \
- libhwbinder \
liblog \
libutils \
@@ -64,7 +63,6 @@
libhidlbase \
libhidlmemory \
libhidltransport \
- libhwbinder \
liblog \
libmediadrm \
libstagefright_foundation \
diff --git a/drm/1.0/default/CryptoPlugin.cpp b/drm/1.0/default/CryptoPlugin.cpp
index fb61ede..9c51b15 100644
--- a/drm/1.0/default/CryptoPlugin.cpp
+++ b/drm/1.0/default/CryptoPlugin.cpp
@@ -49,8 +49,9 @@
return toStatus(mLegacyPlugin->setMediaDrmSession(toVector(sessionId)));
}
- Return<void> CryptoPlugin::setSharedBufferBase(const hidl_memory& base) {
- mSharedBufferBase = mapMemory(base);
+ Return<void> CryptoPlugin::setSharedBufferBase(const hidl_memory& base,
+ uint32_t bufferId) {
+ mSharedBufferMap[bufferId] = mapMemory(base);
return Void();
}
@@ -62,11 +63,19 @@
const DestinationBuffer& destination,
decrypt_cb _hidl_cb) {
- if (mSharedBufferBase == NULL) {
- _hidl_cb(Status::BAD_VALUE, 0, "decrypt buffer base not set");
+ if (mSharedBufferMap.find(source.bufferId) == mSharedBufferMap.end()) {
+ _hidl_cb(Status::ERROR_DRM_CANNOT_HANDLE, 0, "source decrypt buffer base not set");
return Void();
}
+ if (destination.type == BufferType::SHARED_MEMORY) {
+ const SharedBuffer& dest = destination.nonsecureMemory;
+ if (mSharedBufferMap.find(dest.bufferId) == mSharedBufferMap.end()) {
+ _hidl_cb(Status::ERROR_DRM_CANNOT_HANDLE, 0, "destination decrypt buffer base not set");
+ return Void();
+ }
+ }
+
android::CryptoPlugin::Mode legacyMode;
switch(mode) {
case Mode::UNENCRYPTED:
@@ -97,20 +106,22 @@
}
AString detailMessage;
+ sp<IMemory> sourceBase = mSharedBufferMap[source.bufferId];
- if (source.offset + offset + source.size > mSharedBufferBase->getSize()) {
+ if (source.offset + offset + source.size > sourceBase->getSize()) {
_hidl_cb(Status::ERROR_DRM_CANNOT_HANDLE, 0, "invalid buffer size");
return Void();
}
uint8_t *base = static_cast<uint8_t *>
- (static_cast<void *>(mSharedBufferBase->getPointer()));
+ (static_cast<void *>(sourceBase->getPointer()));
void *srcPtr = static_cast<void *>(base + source.offset + offset);
void *destPtr = NULL;
if (destination.type == BufferType::SHARED_MEMORY) {
const SharedBuffer& destBuffer = destination.nonsecureMemory;
- if (destBuffer.offset + destBuffer.size > mSharedBufferBase->getSize()) {
+ sp<IMemory> destBase = mSharedBufferMap[destBuffer.bufferId];
+ if (destBuffer.offset + destBuffer.size > destBase->getSize()) {
_hidl_cb(Status::ERROR_DRM_CANNOT_HANDLE, 0, "invalid buffer size");
return Void();
}
@@ -133,7 +144,7 @@
status = android::OK;
bytesWritten = result;
} else {
- status = -result;
+ status = result;
bytesWritten = 0;
}
diff --git a/drm/1.0/default/CryptoPlugin.h b/drm/1.0/default/CryptoPlugin.h
index f805f09..11cc2aa 100644
--- a/drm/1.0/default/CryptoPlugin.h
+++ b/drm/1.0/default/CryptoPlugin.h
@@ -57,8 +57,8 @@
Return<Status> setMediaDrmSession(const hidl_vec<uint8_t>& sessionId)
override;
- Return<void> setSharedBufferBase(const ::android::hardware::hidl_memory& base)
- override;
+ Return<void> setSharedBufferBase(const ::android::hardware::hidl_memory& base,
+ uint32_t bufferId) override;
Return<void> decrypt(bool secure, const hidl_array<uint8_t, 16>& keyId,
const hidl_array<uint8_t, 16>& iv, Mode mode, const Pattern& pattern,
@@ -68,7 +68,7 @@
private:
android::CryptoPlugin *mLegacyPlugin;
- sp<IMemory> mSharedBufferBase;
+ std::map<uint32_t, sp<IMemory> > mSharedBufferMap;
CryptoPlugin() = delete;
CryptoPlugin(const CryptoPlugin &) = delete;
diff --git a/drm/1.0/default/DrmPlugin.cpp b/drm/1.0/default/DrmPlugin.cpp
index 1b2f90e..6f51e0e 100644
--- a/drm/1.0/default/DrmPlugin.cpp
+++ b/drm/1.0/default/DrmPlugin.cpp
@@ -321,6 +321,7 @@
Return<void> DrmPlugin::setListener(const sp<IDrmPluginListener>& listener) {
mListener = listener;
+ mLegacyPlugin->setListener(listener == NULL ? NULL : this);
return Void();
}
@@ -372,8 +373,10 @@
break;
}
if (sendEvent) {
- mListener->sendEvent(eventType, toHidlVec(*sessionId),
- toHidlVec(*data));
+ Vector<uint8_t> emptyVector;
+ mListener->sendEvent(eventType,
+ toHidlVec(sessionId == NULL ? emptyVector: *sessionId),
+ toHidlVec(data == NULL ? emptyVector: *data));
}
}
diff --git a/drm/1.0/types.hal b/drm/1.0/types.hal
index 33bbf9a..5273044 100644
--- a/drm/1.0/types.hal
+++ b/drm/1.0/types.hal
@@ -293,12 +293,18 @@
};
/**
- * A SharedBuffer describes a decrypt buffer which is defined by an offset and
- * a size. The offset is relative to the shared memory base which is established
- * using setSharedMemoryBase().
+ * SharedBuffer describes a decrypt buffer which is defined by a bufferId, an
+ * offset and a size. The offset is relative to the shared memory base for the
+ * memory region identified by bufferId, which is established by
+ * setSharedMemoryBase().
*/
struct SharedBuffer {
/**
+ * The unique buffer identifier
+ */
+ uint32_t bufferId;
+
+ /**
* The offset from the shared memory base
*/
uint64_t offset;
diff --git a/dumpstate/1.0/default/Android.mk b/dumpstate/1.0/default/Android.mk
index ed9ef97..0b07f49 100644
--- a/dumpstate/1.0/default/Android.mk
+++ b/dumpstate/1.0/default/Android.mk
@@ -16,7 +16,6 @@
libdumpstateutil \
libhidlbase \
libhidltransport \
- libhwbinder \
liblog \
libutils
diff --git a/dumpstate/1.0/default/service.cpp b/dumpstate/1.0/default/service.cpp
index 0d5bd94..85bea12 100644
--- a/dumpstate/1.0/default/service.cpp
+++ b/dumpstate/1.0/default/service.cpp
@@ -29,6 +29,6 @@
int main (int /* argc */, char * /* argv */ []) {
sp<IDumpstateDevice> dumpstate = new DumpstateDevice;
configureRpcThreadpool(1, true);
- dumpstate->registerAsService("dumpstate");
+ dumpstate->registerAsService();
joinRpcThreadpool();
}
diff --git a/evs/1.0/default/Android.bp b/evs/1.0/default/Android.bp
index 7be365a..c47f035 100644
--- a/evs/1.0/default/Android.bp
+++ b/evs/1.0/default/Android.bp
@@ -19,7 +19,6 @@
"libhardware",
"libhidlbase",
"libhidltransport",
- "libhwbinder",
"liblog",
"libutils",
],
diff --git a/evs/1.0/default/EvsCamera.cpp b/evs/1.0/default/EvsCamera.cpp
index a539b23..df7e844 100644
--- a/evs/1.0/default/EvsCamera.cpp
+++ b/evs/1.0/default/EvsCamera.cpp
@@ -69,7 +69,8 @@
mHeight = (mDescription.defaultVerResolution) ? mDescription.defaultVerResolution : 480;
mFormat = HAL_PIXEL_FORMAT_RGBA_8888;
- mUsage = GRALLOC_USAGE_HW_TEXTURE | GRALLOC_USAGE_HW_CAMERA_WRITE;
+ mUsage = GRALLOC_USAGE_HW_TEXTURE | GRALLOC_USAGE_HW_CAMERA_WRITE |
+ GRALLOC_USAGE_SW_READ_RARELY | GRALLOC_USAGE_SW_WRITE_RARELY;
}
@@ -440,7 +441,7 @@
}
-void EvsCamera::fillTestFrame(BufferDesc buff) {
+void EvsCamera::fillTestFrame(const BufferDesc& buff) {
// Lock our output buffer for writing
uint32_t *pixels = nullptr;
GraphicBufferMapper &mapper = GraphicBufferMapper::get();
@@ -474,7 +475,8 @@
pixels[col] = expectedPixel;
}
// Point to the next row
- pixels = pixels + (buff.stride / sizeof(*pixels));
+ // NOTE: stride retrieved from gralloc is in units of pixels
+ pixels = pixels + buff.stride;
}
// Release our output buffer
diff --git a/evs/1.0/default/EvsCamera.h b/evs/1.0/default/EvsCamera.h
index 8d644a0..02a677c 100644
--- a/evs/1.0/default/EvsCamera.h
+++ b/evs/1.0/default/EvsCamera.h
@@ -58,7 +58,7 @@
unsigned decreaseAvailableFrames_Locked(unsigned numToRemove);
void generateFrames();
- void fillTestFrame(BufferDesc buff);
+ void fillTestFrame(const BufferDesc& buff);
CameraDesc mDescription = {}; // The properties of this camera
diff --git a/evs/1.0/default/EvsDisplay.cpp b/evs/1.0/default/EvsDisplay.cpp
index 7208395..bbfff35 100644
--- a/evs/1.0/default/EvsDisplay.cpp
+++ b/evs/1.0/default/EvsDisplay.cpp
@@ -169,7 +169,7 @@
mBuffer.memHandle = handle;
mFrameBusy = false;
ALOGD("Allocated new buffer %p with stride %u",
- mBuffer.memHandle.getNativeHandle(), mStride);
+ mBuffer.memHandle.getNativeHandle(), mBuffer.stride);
}
// Do we have a frame available?
@@ -263,7 +263,8 @@
continue;
}
// Walk across this row (we'll step rows below)
- if (pixels[col] != expectedPixel) {
+ uint32_t receivedPixel = pixels[col];
+ if (receivedPixel != expectedPixel) {
ALOGE("Pixel check mismatch in frame buffer");
frameLooksGood = false;
break;
@@ -274,8 +275,8 @@
break;
}
- // Point to the next row
- pixels = pixels + (mStride / sizeof(*pixels));
+ // Point to the next row (NOTE: gralloc reports stride in units of pixels)
+ pixels = pixels + mBuffer.stride;
}
// Ensure we don't see the same buffer twice without it being rewritten
diff --git a/evs/1.0/default/EvsDisplay.h b/evs/1.0/default/EvsDisplay.h
index 6e0111e..f4d7ee9 100644
--- a/evs/1.0/default/EvsDisplay.h
+++ b/evs/1.0/default/EvsDisplay.h
@@ -42,7 +42,6 @@
private:
DisplayDesc mInfo = {};
BufferDesc mBuffer = {}; // A graphics buffer into which we'll store images
- uint32_t mStride = 0; // Bytes per line in the buffer
bool mFrameBusy = false; // A flag telling us our buffer is in use
DisplayState mRequestedState = DisplayState::NOT_VISIBLE;
diff --git a/example/extension/light/2.0/Android.bp b/example/extension/light/2.0/Android.bp
deleted file mode 100644
index cf345da..0000000
--- a/example/extension/light/2.0/Android.bp
+++ /dev/null
@@ -1,62 +0,0 @@
-// This file is autogenerated by hidl-gen. Do not edit manually.
-
-filegroup {
- name: "android.hardware.example.extension.light@2.0_hal",
- srcs: [
- "types.hal",
- "IExtLight.hal",
- ],
-}
-
-genrule {
- name: "android.hardware.example.extension.light@2.0_genc++",
- tools: ["hidl-gen"],
- cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.example.extension.light@2.0",
- srcs: [
- ":android.hardware.example.extension.light@2.0_hal",
- ],
- out: [
- "android/hardware/example/extension/light/2.0/types.cpp",
- "android/hardware/example/extension/light/2.0/ExtLightAll.cpp",
- ],
-}
-
-genrule {
- name: "android.hardware.example.extension.light@2.0_genc++_headers",
- tools: ["hidl-gen"],
- cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.example.extension.light@2.0",
- srcs: [
- ":android.hardware.example.extension.light@2.0_hal",
- ],
- out: [
- "android/hardware/example/extension/light/2.0/types.h",
- "android/hardware/example/extension/light/2.0/IExtLight.h",
- "android/hardware/example/extension/light/2.0/IHwExtLight.h",
- "android/hardware/example/extension/light/2.0/BnHwExtLight.h",
- "android/hardware/example/extension/light/2.0/BpHwExtLight.h",
- "android/hardware/example/extension/light/2.0/BsExtLight.h",
- ],
-}
-
-cc_library_shared {
- name: "android.hardware.example.extension.light@2.0",
- generated_sources: ["android.hardware.example.extension.light@2.0_genc++"],
- generated_headers: ["android.hardware.example.extension.light@2.0_genc++_headers"],
- export_generated_headers: ["android.hardware.example.extension.light@2.0_genc++_headers"],
- shared_libs: [
- "libhidlbase",
- "libhidltransport",
- "libhwbinder",
- "liblog",
- "libutils",
- "libcutils",
- "android.hardware.light@2.0",
- ],
- export_shared_lib_headers: [
- "libhidlbase",
- "libhidltransport",
- "libhwbinder",
- "libutils",
- "android.hardware.light@2.0",
- ],
-}
diff --git a/example/extension/light/2.0/default/Android.mk b/example/extension/light/2.0/default/Android.mk
deleted file mode 100644
index acd9638..0000000
--- a/example/extension/light/2.0/default/Android.mk
+++ /dev/null
@@ -1,19 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := android.hardware.example.extension.light@2.0-service
-LOCAL_INIT_RC := android.hardware.example.extension.light@2.0-service.rc
-LOCAL_PROPRIETARY_MODULE := true
-LOCAL_MODULE_RELATIVE_PATH := hw
-LOCAL_SRC_FILES := \
- Light.cpp \
-
-LOCAL_SHARED_LIBRARIES := \
- libhidlbase \
- libhidltransport \
- libhwbinder \
- libutils \
- android.hardware.light@2.0 \
- android.hardware.example.extension.light@2.0 \
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/example/extension/light/2.0/default/android.hardware.example.extension.light@2.0-service.rc b/example/extension/light/2.0/default/android.hardware.example.extension.light@2.0-service.rc
deleted file mode 100644
index 7480a7e..0000000
--- a/example/extension/light/2.0/default/android.hardware.example.extension.light@2.0-service.rc
+++ /dev/null
@@ -1,4 +0,0 @@
-service light-ext-2-0 /vendor/bin/hw/android.hardware.example.extension.light@2.0-service
- class hal
- user system
- group system readproc
\ No newline at end of file
diff --git a/gatekeeper/1.0/default/Android.mk b/gatekeeper/1.0/default/Android.mk
index 94dc1ea..d084535 100644
--- a/gatekeeper/1.0/default/Android.mk
+++ b/gatekeeper/1.0/default/Android.mk
@@ -14,7 +14,6 @@
libhardware \
libhidlbase \
libhidltransport \
- libhwbinder \
libutils \
liblog \
@@ -35,7 +34,6 @@
libhardware \
libhidlbase \
libhidltransport \
- libhwbinder \
libutils \
liblog \
diff --git a/gatekeeper/1.0/default/service.cpp b/gatekeeper/1.0/default/service.cpp
index 407cf71..5cbdafb 100644
--- a/gatekeeper/1.0/default/service.cpp
+++ b/gatekeeper/1.0/default/service.cpp
@@ -24,5 +24,5 @@
using android::hardware::defaultPassthroughServiceImplementation;
int main() {
- return defaultPassthroughServiceImplementation<IGatekeeper>("gatekeeper");
+ return defaultPassthroughServiceImplementation<IGatekeeper>();
}
diff --git a/gatekeeper/1.0/vts/Gatekeeper.vts b/gatekeeper/1.0/vts/Gatekeeper.vts
deleted file mode 100644
index 9e63488..0000000
--- a/gatekeeper/1.0/vts/Gatekeeper.vts
+++ /dev/null
@@ -1,94 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "IGatekeeper"
-
-package: "android.hardware.gatekeeper"
-
-import: "android.hardware.gatekeeper@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- api: {
- name: "enroll"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::gatekeeper::V1_0::GatekeeperResponse"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "verify"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::gatekeeper::V1_0::GatekeeperResponse"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "deleteUser"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::gatekeeper::V1_0::GatekeeperResponse"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "deleteAllUsers"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::gatekeeper::V1_0::GatekeeperResponse"
- }
- }
-
-}
diff --git a/gatekeeper/1.0/vts/functional/Android.bp b/gatekeeper/1.0/vts/functional/Android.bp
index e79e40e..c2c32a6 100644
--- a/gatekeeper/1.0/vts/functional/Android.bp
+++ b/gatekeeper/1.0/vts/functional/Android.bp
@@ -15,27 +15,21 @@
//
cc_test {
- name: "gatekeeper_hidl_hal_test",
- gtest: true,
- srcs: ["gatekeeper_hidl_hal_test.cpp"],
+ name: "VtsHalGatekeeperV1_0TargetTest",
+ srcs: ["VtsHalGatekeeperV1_0TargetTest.cpp"],
shared_libs: [
"libbase",
"liblog",
"libcutils",
"libhidlbase",
"libhidltransport",
- "libhwbinder",
"libnativehelper",
"libutils",
"android.hardware.gatekeeper@1.0",
],
- static_libs: ["libgtest"],
+ static_libs: ["VtsHalHidlTargetBaseTest"],
cflags: [
- "--coverage",
"-O0",
"-g",
- ],
- ldflags: [
- "--coverage"
]
}
diff --git a/gatekeeper/1.0/vts/functional/gatekeeper_hidl_hal_test.cpp b/gatekeeper/1.0/vts/functional/VtsHalGatekeeperV1_0TargetTest.cpp
similarity index 91%
rename from gatekeeper/1.0/vts/functional/gatekeeper_hidl_hal_test.cpp
rename to gatekeeper/1.0/vts/functional/VtsHalGatekeeperV1_0TargetTest.cpp
index 67b4482..8d6f726 100644
--- a/gatekeeper/1.0/vts/functional/gatekeeper_hidl_hal_test.cpp
+++ b/gatekeeper/1.0/vts/functional/VtsHalGatekeeperV1_0TargetTest.cpp
@@ -30,7 +30,7 @@
#include <android/hardware/gatekeeper/1.0/IGatekeeper.h>
#include <android/hardware/gatekeeper/1.0/types.h>
-#include <gtest/gtest.h>
+#include <VtsHalHidlTargetBaseTest.h>
using ::android::hardware::hidl_string;
using ::android::hardware::hidl_vec;
@@ -76,7 +76,7 @@
}
// The main test class for Gatekeeper HIDL HAL.
-class GatekeeperHidlTest : public ::testing::Test {
+class GatekeeperHidlTest : public ::testing::VtsHalHidlTargetBaseTest {
protected:
void setUid(uint32_t uid) { uid_ = uid; }
@@ -187,7 +187,7 @@
GatekeeperHidlTest() : uid_(0) {}
virtual void SetUp() override {
GatekeeperResponse rsp;
- gatekeeper_ = IGatekeeper::getService("gatekeeper");
+ gatekeeper_ = ::testing::VtsHalHidlTargetBaseTest::getService<IGatekeeper>();
ASSERT_NE(nullptr, gatekeeper_.get());
doDeleteAllUsers(rsp);
}
@@ -281,7 +281,6 @@
*/
TEST_F(GatekeeperHidlTest, UntrustedReenroll) {
GatekeeperResponse enrollRsp;
- GatekeeperRequest reenrollReq;
GatekeeperResponse reenrollRsp;
GatekeeperResponse verifyRsp;
GatekeeperResponse reenrollVerifyRsp;
@@ -349,6 +348,37 @@
}
/**
+ * Ensure we can not delete a user that does not exist
+ */
+TEST_F(GatekeeperHidlTest, DeleteInvalidUserTest) {
+ hidl_vec<uint8_t> password;
+ GatekeeperResponse enrollRsp;
+ GatekeeperResponse verifyRsp;
+ GatekeeperResponse delRsp1;
+ GatekeeperResponse delRsp2;
+ ALOGI("Testing deleteUser (expected failure)");
+ setUid(10002);
+ generatePassword(password, 0);
+ enrollNewPassword(password, enrollRsp, true);
+ verifyPassword(password, enrollRsp.data, 0, verifyRsp, true);
+ ALOGI("Enroll+Verify done");
+
+ // Delete the user
+ doDeleteUser(delRsp1);
+ EXPECT_EQ(UINT32_C(0), delRsp1.data.size());
+ EXPECT_TRUE(delRsp1.code == GatekeeperStatusCode::ERROR_NOT_IMPLEMENTED ||
+ delRsp1.code == GatekeeperStatusCode::STATUS_OK);
+
+ // Delete the user again
+ doDeleteUser(delRsp2);
+ EXPECT_EQ(UINT32_C(0), delRsp2.data.size());
+ EXPECT_TRUE(delRsp2.code == GatekeeperStatusCode::ERROR_NOT_IMPLEMENTED ||
+ delRsp2.code == GatekeeperStatusCode::ERROR_GENERAL_FAILURE);
+ ALOGI("DeleteUser done");
+ ALOGI("Testing deleteUser done: rsp=%" PRIi32, delRsp2.code);
+}
+
+/**
* Ensure we can not verify passwords after we enrolled them and then deleted
* all users
*/
diff --git a/gatekeeper/1.0/vts/types.vts b/gatekeeper/1.0/vts/types.vts
deleted file mode 100644
index 3de9a14..0000000
--- a/gatekeeper/1.0/vts/types.vts
+++ /dev/null
@@ -1,59 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "types"
-
-package: "android.hardware.gatekeeper"
-
-
-attribute: {
- name: "::android::hardware::gatekeeper::V1_0::GatekeeperStatusCode"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "STATUS_REENROLL"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "STATUS_OK"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "ERROR_GENERAL_FAILURE"
- scalar_value: {
- int32_t: -1
- }
- enumerator: "ERROR_RETRY_TIMEOUT"
- scalar_value: {
- int32_t: -2
- }
- enumerator: "ERROR_NOT_IMPLEMENTED"
- scalar_value: {
- int32_t: -3
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::gatekeeper::V1_0::GatekeeperResponse"
- type: TYPE_STRUCT
- struct_value: {
- name: "code"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::gatekeeper::V1_0::GatekeeperStatusCode"
- }
- struct_value: {
- name: "timeout"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "data"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
-}
-
diff --git a/gnss/1.0/default/AGnss.cpp b/gnss/1.0/default/AGnss.cpp
index 52fdc26..29c6ddd 100644
--- a/gnss/1.0/default/AGnss.cpp
+++ b/gnss/1.0/default/AGnss.cpp
@@ -41,6 +41,7 @@
AGnss::~AGnss() {
sThreadFuncArgsList.clear();
+ sInterfaceExists = false;
}
void AGnss::statusCb(AGpsStatus* status) {
@@ -78,7 +79,10 @@
/*
* Callback to client with agnssStatusIpV4Cb.
*/
- sAGnssCbIface->agnssStatusIpV4Cb(aGnssStatusIpV4);
+ auto ret = sAGnssCbIface->agnssStatusIpV4Cb(aGnssStatusIpV4);
+ if (!ret.isOk()) {
+ ALOGE("%s: Unable to invoke callback", __func__);
+ }
break;
}
case AF_INET6:
@@ -96,7 +100,10 @@
&(status->addr));
memcpy(&(aGnssStatusIpV6.ipV6Addr[0]), in6->sin6_addr.s6_addr,
aGnssStatusIpV6.ipV6Addr.size());
- sAGnssCbIface->agnssStatusIpV6Cb(aGnssStatusIpV6);
+ auto ret = sAGnssCbIface->agnssStatusIpV6Cb(aGnssStatusIpV6);
+ if (!ret.isOk()) {
+ ALOGE("%s: Unable to invoke callback", __func__);
+ }
break;
}
default:
@@ -117,7 +124,10 @@
/*
* Callback to client with agnssStatusIpV4Cb.
*/
- sAGnssCbIface->agnssStatusIpV4Cb(aGnssStatusIpV4);
+ auto ret = sAGnssCbIface->agnssStatusIpV4Cb(aGnssStatusIpV4);
+ if (!ret.isOk()) {
+ ALOGE("%s: Unable to invoke callback", __func__);
+ }
} else {
ALOGE("%s: Invalid size for AGPS Status", __func__);
}
diff --git a/gnss/1.0/default/AGnssRil.cpp b/gnss/1.0/default/AGnssRil.cpp
index 480571d..1458327 100644
--- a/gnss/1.0/default/AGnssRil.cpp
+++ b/gnss/1.0/default/AGnssRil.cpp
@@ -42,6 +42,7 @@
AGnssRil::~AGnssRil() {
sThreadFuncArgsList.clear();
+ sInterfaceExists = false;
}
void AGnssRil::requestSetId(uint32_t flags) {
@@ -50,7 +51,10 @@
return;
}
- sAGnssRilCbIface->requestSetIdCb(flags);
+ auto ret = sAGnssRilCbIface->requestSetIdCb(flags);
+ if (!ret.isOk()) {
+ ALOGE("%s: Unable to invoke callback", __func__);
+ }
}
void AGnssRil::requestRefLoc(uint32_t /*flags*/) {
@@ -59,7 +63,10 @@
return;
}
- sAGnssRilCbIface->requestRefLocCb();
+ auto ret = sAGnssRilCbIface->requestRefLocCb();
+ if (!ret.isOk()) {
+ ALOGE("%s: Unable to invoke callback", __func__);
+ }
}
pthread_t AGnssRil::createThreadCb(const char* name, void (*start)(void*), void* arg) {
diff --git a/gnss/1.0/default/Android.mk b/gnss/1.0/default/Android.mk
index 73889b5..5ad5e50 100644
--- a/gnss/1.0/default/Android.mk
+++ b/gnss/1.0/default/Android.mk
@@ -23,11 +23,12 @@
liblog \
libhidlbase \
libhidltransport \
- libhwbinder \
libutils \
android.hardware.gnss@1.0 \
libhardware
+LOCAL_CFLAGS += -Werror
+
include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
@@ -48,7 +49,6 @@
libhardware \
LOCAL_SHARED_LIBRARIES += \
- libhwbinder \
libhidlbase \
libhidltransport \
android.hardware.gnss@1.0 \
diff --git a/gnss/1.0/default/Gnss.cpp b/gnss/1.0/default/Gnss.cpp
index a2a99a0..9493737 100644
--- a/gnss/1.0/default/Gnss.cpp
+++ b/gnss/1.0/default/Gnss.cpp
@@ -60,6 +60,7 @@
}
Gnss::~Gnss() {
+ sInterfaceExists = false;
sThreadFuncArgsList.clear();
}
@@ -75,7 +76,10 @@
}
android::hardware::gnss::V1_0::GnssLocation gnssLocation = convertToGnssLocation(location);
- sGnssCbIface->gnssLocationCb(gnssLocation);
+ auto ret = sGnssCbIface->gnssLocationCb(gnssLocation);
+ if (!ret.isOk()) {
+ ALOGE("%s: Unable to invoke callback", __func__);
+ }
}
void Gnss::statusCb(GpsStatus* gnssStatus) {
@@ -92,7 +96,10 @@
IGnssCallback::GnssStatusValue status =
static_cast<IGnssCallback::GnssStatusValue>(gnssStatus->status);
- sGnssCbIface->gnssStatusCb(status);
+ auto ret = sGnssCbIface->gnssStatusCb(status);
+ if (!ret.isOk()) {
+ ALOGE("%s: Unable to invoke callback", __func__);
+ }
}
void Gnss::gnssSvStatusCb(GnssSvStatus* status) {
@@ -131,7 +138,10 @@
svStatus.gnssSvList[i] = gnssSvInfo;
}
- sGnssCbIface->gnssSvStatusCb(svStatus);
+ auto ret = sGnssCbIface->gnssSvStatusCb(svStatus);
+ if (!ret.isOk()) {
+ ALOGE("%s: Unable to invoke callback", __func__);
+ }
}
/*
@@ -231,7 +241,10 @@
}
}
- sGnssCbIface->gnssSvStatusCb(svStatus);
+ auto ret = sGnssCbIface->gnssSvStatusCb(svStatus);
+ if (!ret.isOk()) {
+ ALOGE("%s: Unable to invoke callback", __func__);
+ }
}
void Gnss::nmeaCb(GpsUtcTime timestamp, const char* nmea, int length) {
@@ -242,7 +255,10 @@
android::hardware::hidl_string nmeaString;
nmeaString.setToExternal(nmea, length);
- sGnssCbIface->gnssNmeaCb(timestamp, nmeaString);
+ auto ret = sGnssCbIface->gnssNmeaCb(timestamp, nmeaString);
+ if (!ret.isOk()) {
+ ALOGE("%s: Unable to invoke callback", __func__);
+ }
}
void Gnss::setCapabilitiesCb(uint32_t capabilities) {
@@ -251,7 +267,10 @@
return;
}
- sGnssCbIface->gnssSetCapabilitesCb(capabilities);
+ auto ret = sGnssCbIface->gnssSetCapabilitesCb(capabilities);
+ if (!ret.isOk()) {
+ ALOGE("%s: Unable to invoke callback", __func__);
+ }
}
void Gnss::acquireWakelockCb() {
@@ -298,7 +317,10 @@
ALOGI("%s: GNSS HAL Wakelock acquired due to gps: %d, fused: %d", __func__,
sWakelockHeldGnss, sWakelockHeldFused);
sWakelockHeld = true;
- sGnssCbIface->gnssAcquireWakelockCb();
+ auto ret = sGnssCbIface->gnssAcquireWakelockCb();
+ if (!ret.isOk()) {
+ ALOGE("%s: Unable to invoke callback", __func__);
+ }
}
} else {
if (sWakelockHeld) {
@@ -309,7 +331,10 @@
ALOGW("%s: GNSS HAL Wakelock released, duplicate request", __func__);
}
sWakelockHeld = false;
- sGnssCbIface->gnssReleaseWakelockCb();
+ auto ret = sGnssCbIface->gnssReleaseWakelockCb();
+ if (!ret.isOk()) {
+ ALOGE("%s: Unable to invoke callback", __func__);
+ }
}
}
@@ -319,7 +344,10 @@
return;
}
- sGnssCbIface->gnssRequestTimeCb();
+ auto ret = sGnssCbIface->gnssRequestTimeCb();
+ if (!ret.isOk()) {
+ ALOGE("%s: Unable to invoke callback", __func__);
+ }
}
pthread_t Gnss::createThreadCb(const char* name, void (*start)(void*), void* arg) {
@@ -341,7 +369,10 @@
.yearOfHw = info->year_of_hw
};
- sGnssCbIface->gnssSetSystemInfoCb(gnssInfo);
+ auto ret = sGnssCbIface->gnssSetSystemInfoCb(gnssInfo);
+ if (!ret.isOk()) {
+ ALOGE("%s: Unable to invoke callback", __func__);
+ }
}
@@ -434,7 +465,10 @@
Return<sp<IAGnssRil>> Gnss::getExtensionAGnssRil() {
if (mGnssIface == nullptr) {
ALOGE("%s: Gnss interface is unavailable", __func__);
- } else {
+ return nullptr;
+ }
+
+ if (mGnssRil == nullptr) {
const AGpsRilInterface* agpsRilIface = static_cast<const AGpsRilInterface*>(
mGnssIface->get_extension(AGPS_RIL_INTERFACE));
if (agpsRilIface == nullptr) {
@@ -449,7 +483,10 @@
Return<sp<IGnssConfiguration>> Gnss::getExtensionGnssConfiguration() {
if (mGnssIface == nullptr) {
ALOGE("%s: Gnss interface is unavailable", __func__);
- } else {
+ return nullptr;
+ }
+
+ if (mGnssConfig == nullptr) {
const GnssConfigurationInterface* gnssConfigIface =
static_cast<const GnssConfigurationInterface*>(
mGnssIface->get_extension(GNSS_CONFIGURATION_INTERFACE));
@@ -462,10 +499,14 @@
}
return mGnssConfig;
}
+
Return<sp<IGnssGeofencing>> Gnss::getExtensionGnssGeofencing() {
if (mGnssIface == nullptr) {
ALOGE("%s: Gnss interface is unavailable", __func__);
- } else {
+ return nullptr;
+ }
+
+ if (mGnssGeofencingIface == nullptr) {
const GpsGeofencingInterface* gpsGeofencingIface =
static_cast<const GpsGeofencingInterface*>(
mGnssIface->get_extension(GPS_GEOFENCING_INTERFACE));
@@ -483,7 +524,10 @@
Return<sp<IAGnss>> Gnss::getExtensionAGnss() {
if (mGnssIface == nullptr) {
ALOGE("%s: Gnss interface is unavailable", __func__);
- } else {
+ return nullptr;
+ }
+
+ if (mAGnssIface == nullptr) {
const AGpsInterface* agpsIface = static_cast<const AGpsInterface*>(
mGnssIface->get_extension(AGPS_INTERFACE));
if (agpsIface == nullptr) {
@@ -498,7 +542,10 @@
Return<sp<IGnssNi>> Gnss::getExtensionGnssNi() {
if (mGnssIface == nullptr) {
ALOGE("%s: Gnss interface is unavailable", __func__);
- } else {
+ return nullptr;
+ }
+
+ if (mGnssNi == nullptr) {
const GpsNiInterface* gpsNiIface = static_cast<const GpsNiInterface*>(
mGnssIface->get_extension(GPS_NI_INTERFACE));
if (gpsNiIface == nullptr) {
@@ -513,7 +560,10 @@
Return<sp<IGnssMeasurement>> Gnss::getExtensionGnssMeasurement() {
if (mGnssIface == nullptr) {
ALOGE("%s: Gnss interface is unavailable", __func__);
- } else {
+ return nullptr;
+ }
+
+ if (mGnssMeasurement == nullptr) {
const GpsMeasurementInterface* gpsMeasurementIface =
static_cast<const GpsMeasurementInterface*>(
mGnssIface->get_extension(GPS_MEASUREMENT_INTERFACE));
@@ -530,7 +580,10 @@
Return<sp<IGnssNavigationMessage>> Gnss::getExtensionGnssNavigationMessage() {
if (mGnssIface == nullptr) {
ALOGE("%s: Gnss interface is unavailable", __func__);
- } else {
+ return nullptr;
+ }
+
+ if (mGnssNavigationMessage == nullptr) {
const GpsNavigationMessageInterface* gpsNavigationMessageIface =
static_cast<const GpsNavigationMessageInterface*>(
mGnssIface->get_extension(GPS_NAVIGATION_MESSAGE_INTERFACE));
@@ -549,7 +602,10 @@
Return<sp<IGnssXtra>> Gnss::getExtensionXtra() {
if (mGnssIface == nullptr) {
ALOGE("%s: Gnss interface is unavailable", __func__);
- } else {
+ return nullptr;
+ }
+
+ if (mGnssXtraIface == nullptr) {
const GpsXtraInterface* gpsXtraIface = static_cast<const GpsXtraInterface*>(
mGnssIface->get_extension(GPS_XTRA_INTERFACE));
@@ -566,7 +622,10 @@
Return<sp<IGnssDebug>> Gnss::getExtensionGnssDebug() {
if (mGnssIface == nullptr) {
ALOGE("%s: Gnss interface is unavailable", __func__);
- } else {
+ return nullptr;
+ }
+
+ if (mGnssDebug == nullptr) {
const GpsDebugInterface* gpsDebugIface = static_cast<const GpsDebugInterface*>(
mGnssIface->get_extension(GPS_DEBUG_INTERFACE));
@@ -583,7 +642,10 @@
Return<sp<IGnssBatching>> Gnss::getExtensionGnssBatching() {
if (mGnssIface == nullptr) {
ALOGE("%s: Gnss interface is unavailable", __func__);
- } else {
+ return nullptr;
+ }
+
+ if (mGnssBatching == nullptr) {
hw_module_t* module;
const FlpLocationInterface* flpLocationIface = nullptr;
int err = hw_get_module(FUSED_LOCATION_HARDWARE_MODULE_ID, (hw_module_t const**)&module);
@@ -614,7 +676,7 @@
return mGnssBatching;
}
-IGnss* HIDL_FETCH_IGnss(const char* hal) {
+IGnss* HIDL_FETCH_IGnss(const char* /* hal */) {
hw_module_t* module;
IGnss* iface = nullptr;
int err = hw_get_module(GPS_HARDWARE_MODULE_ID, (hw_module_t const**)&module);
@@ -625,10 +687,10 @@
if (err == 0) {
iface = new Gnss(reinterpret_cast<gps_device_t*>(device));
} else {
- ALOGE("gnssDevice open %s failed: %d", hal, err);
+ ALOGE("gnssDevice open %s failed: %d", GPS_HARDWARE_MODULE_ID, err);
}
} else {
- ALOGE("gnss hw_get_module %s failed: %d", hal, err);
+ ALOGE("gnss hw_get_module %s failed: %d", GPS_HARDWARE_MODULE_ID, err);
}
return iface;
}
diff --git a/gnss/1.0/default/GnssBatching.cpp b/gnss/1.0/default/GnssBatching.cpp
index 95c5e60..02b38cb 100644
--- a/gnss/1.0/default/GnssBatching.cpp
+++ b/gnss/1.0/default/GnssBatching.cpp
@@ -103,7 +103,10 @@
gnssLocations.push_back(convertToGnssLocation(locations[iLocation]));
}
- sGnssBatchingCbIface->gnssLocationBatchCb(gnssLocations);
+ auto ret = sGnssBatchingCbIface->gnssLocationBatchCb(gnssLocations);
+ if (!ret.isOk()) {
+ ALOGE("%s: Unable to invoke callback", __func__);
+ }
}
void GnssBatching::acquireWakelockCb() {
@@ -115,7 +118,7 @@
}
// this can just return success, because threads are now set up on demand in the jni layer
-int32_t GnssBatching::setThreadEventCb(ThreadEvent event) {
+int32_t GnssBatching::setThreadEventCb(ThreadEvent /*event*/) {
return FLP_RESULT_SUCCESS;
}
diff --git a/gnss/1.0/default/GnssGeofencing.cpp b/gnss/1.0/default/GnssGeofencing.cpp
index f42de42..54c4aaa 100644
--- a/gnss/1.0/default/GnssGeofencing.cpp
+++ b/gnss/1.0/default/GnssGeofencing.cpp
@@ -48,6 +48,7 @@
GnssGeofencing::~GnssGeofencing() {
sThreadFuncArgsList.clear();
+ sInterfaceExists = false;
}
void GnssGeofencing::gnssGfTransitionCb(int32_t geofenceId,
GpsLocation* location,
@@ -64,11 +65,14 @@
}
GnssLocation gnssLocation = convertToGnssLocation(location);
- mGnssGeofencingCbIface->gnssGeofenceTransitionCb(
+ auto ret = mGnssGeofencingCbIface->gnssGeofenceTransitionCb(
geofenceId,
gnssLocation,
static_cast<IGnssGeofenceCallback::GeofenceTransition>(transition),
timestamp);
+ if (!ret.isOk()) {
+ ALOGE("%s: Unable to invoke callback", __func__);
+ }
}
void GnssGeofencing::gnssGfStatusCb(int32_t status, GpsLocation* location) {
@@ -85,8 +89,11 @@
gnssLocation = {};
}
- mGnssGeofencingCbIface->gnssGeofenceStatusCb(
+ auto ret = mGnssGeofencingCbIface->gnssGeofenceStatusCb(
static_cast<IGnssGeofenceCallback::GeofenceAvailability>(status), gnssLocation);
+ if (!ret.isOk()) {
+ ALOGE("%s: Unable to invoke callback", __func__);
+ }
}
void GnssGeofencing::gnssGfAddCb(int32_t geofenceId, int32_t status) {
@@ -95,8 +102,11 @@
return;
}
- mGnssGeofencingCbIface->gnssGeofenceAddCb(
+ auto ret = mGnssGeofencingCbIface->gnssGeofenceAddCb(
geofenceId, static_cast<IGnssGeofenceCallback::GeofenceStatus>(status));
+ if (!ret.isOk()) {
+ ALOGE("%s: Unable to invoke callback", __func__);
+ }
}
void GnssGeofencing::gnssGfRemoveCb(int32_t geofenceId, int32_t status) {
@@ -105,8 +115,11 @@
return;
}
- mGnssGeofencingCbIface->gnssGeofenceRemoveCb(
- geofenceId, static_cast<IGnssGeofenceCallback::GeofenceStatus>(status));
+ auto ret = mGnssGeofencingCbIface->gnssGeofenceRemoveCb(
+ geofenceId, static_cast<IGnssGeofenceCallback::GeofenceStatus>(status));
+ if (!ret.isOk()) {
+ ALOGE("%s: Unable to invoke callback", __func__);
+ }
}
void GnssGeofencing::gnssGfPauseCb(int32_t geofenceId, int32_t status) {
@@ -115,8 +128,11 @@
return;
}
- mGnssGeofencingCbIface->gnssGeofencePauseCb(
+ auto ret = mGnssGeofencingCbIface->gnssGeofencePauseCb(
geofenceId, static_cast<IGnssGeofenceCallback::GeofenceStatus>(status));
+ if (!ret.isOk()) {
+ ALOGE("%s: Unable to invoke callback", __func__);
+ }
}
void GnssGeofencing::gnssGfResumeCb(int32_t geofenceId, int32_t status) {
@@ -125,8 +141,11 @@
return;
}
- mGnssGeofencingCbIface->gnssGeofenceResumeCb(
+ auto ret = mGnssGeofencingCbIface->gnssGeofenceResumeCb(
geofenceId, static_cast<IGnssGeofenceCallback::GeofenceStatus>(status));
+ if (!ret.isOk()) {
+ ALOGE("%s: Unable to invoke callback", __func__);
+ }
}
pthread_t GnssGeofencing::createThreadCb(const char* name, void (*start)(void*), void* arg) {
diff --git a/gnss/1.0/default/GnssMeasurement.cpp b/gnss/1.0/default/GnssMeasurement.cpp
index 67f6d8d..6c9b838 100644
--- a/gnss/1.0/default/GnssMeasurement.cpp
+++ b/gnss/1.0/default/GnssMeasurement.cpp
@@ -96,7 +96,10 @@
.hwClockDiscontinuityCount = clockVal.hw_clock_discontinuity_count
};
- sGnssMeasureCbIface->GnssMeasurementCb(gnssData);
+ auto ret = sGnssMeasureCbIface->GnssMeasurementCb(gnssData);
+ if (!ret.isOk()) {
+ ALOGE("%s: Unable to invoke callback", __func__);
+ }
}
/*
@@ -223,7 +226,10 @@
gnssData.clock.driftUncertaintyNsps = clockVal.drift_uncertainty_nsps;
gnssData.clock.gnssClockFlags = clockVal.flags;
- sGnssMeasureCbIface->GnssMeasurementCb(gnssData);
+ auto ret = sGnssMeasureCbIface->GnssMeasurementCb(gnssData);
+ if (!ret.isOk()) {
+ ALOGE("%s: Unable to invoke callback", __func__);
+ }
}
// Methods from ::android::hardware::gnss::V1_0::IGnssMeasurement follow.
diff --git a/gnss/1.0/default/GnssNavigationMessage.cpp b/gnss/1.0/default/GnssNavigationMessage.cpp
index c98abf6..6f509d0 100644
--- a/gnss/1.0/default/GnssNavigationMessage.cpp
+++ b/gnss/1.0/default/GnssNavigationMessage.cpp
@@ -59,7 +59,10 @@
navigationMsg.submessageId = message->submessage_id;
navigationMsg.data.setToExternal(message->data, message->data_length);
- sGnssNavigationMsgCbIface->gnssNavigationMessageCb(navigationMsg);
+ auto ret = sGnssNavigationMsgCbIface->gnssNavigationMessageCb(navigationMsg);
+ if (!ret.isOk()) {
+ ALOGE("%s: Unable to invoke callback", __func__);
+ }
}
// Methods from ::android::hardware::gnss::V1_0::IGnssNavigationMessage follow.
diff --git a/gnss/1.0/default/GnssNi.cpp b/gnss/1.0/default/GnssNi.cpp
index ec57e8c..d17891d 100644
--- a/gnss/1.0/default/GnssNi.cpp
+++ b/gnss/1.0/default/GnssNi.cpp
@@ -41,6 +41,7 @@
GnssNi::~GnssNi() {
sThreadFuncArgsList.clear();
+ sInterfaceExists = false;
}
pthread_t GnssNi::createThreadCb(const char* name, void (*start)(void*), void* arg) {
@@ -73,7 +74,10 @@
static_cast<IGnssNiCallback::GnssNiEncodingType>(notification->text_encoding)
};
- sGnssNiCbIface->niNotifyCb(notificationGnss);
+ auto ret = sGnssNiCbIface->niNotifyCb(notificationGnss);
+ if (!ret.isOk()) {
+ ALOGE("%s: Unable to invoke callback", __func__);
+ }
}
// Methods from ::android::hardware::gnss::V1_0::IGnssNi follow.
diff --git a/gnss/1.0/default/GnssXtra.cpp b/gnss/1.0/default/GnssXtra.cpp
index 065bb33..d124ce1 100644
--- a/gnss/1.0/default/GnssXtra.cpp
+++ b/gnss/1.0/default/GnssXtra.cpp
@@ -35,6 +35,7 @@
GnssXtra::~GnssXtra() {
sThreadFuncArgsList.clear();
+ sInterfaceExists = false;
}
pthread_t GnssXtra::createThreadCb(const char* name, void (*start)(void*), void* arg) {
@@ -53,7 +54,10 @@
return;
}
- sGnssXtraCbIface->downloadRequestCb();
+ auto ret = sGnssXtraCbIface->downloadRequestCb();
+ if (!ret.isOk()) {
+ ALOGE("%s: Unable to invoke callback", __func__);
+ }
}
// Methods from ::android::hardware::gnss::V1_0::IGnssXtra follow.
diff --git a/gnss/1.0/default/service.cpp b/gnss/1.0/default/service.cpp
index 4e040c5..5a8acc1 100644
--- a/gnss/1.0/default/service.cpp
+++ b/gnss/1.0/default/service.cpp
@@ -8,5 +8,5 @@
using android::hardware::defaultPassthroughServiceImplementation;
int main() {
- return defaultPassthroughServiceImplementation<IGnss>("gnss");
+ return defaultPassthroughServiceImplementation<IGnss>();
}
diff --git a/gnss/1.0/vts/functional/Android.bp b/gnss/1.0/vts/functional/Android.bp
new file mode 100644
index 0000000..2c8a6aa
--- /dev/null
+++ b/gnss/1.0/vts/functional/Android.bp
@@ -0,0 +1,35 @@
+//
+// Copyright (C) 2017 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.
+//
+
+cc_test {
+ name: "VtsHalGnssV1_0TargetTest",
+ srcs: ["VtsHalGnssV1_0TargetTest.cpp"],
+ shared_libs: [
+ "android.hardware.gnss@1.0",
+ "libbase",
+ "libcutils",
+ "libhidlbase",
+ "libhidltransport",
+ "liblog",
+ "libnativehelper",
+ "libutils",
+ ],
+ static_libs: ["VtsHalHidlTargetBaseTest"],
+ cflags: [
+ "-O0",
+ "-g",
+ ],
+}
\ No newline at end of file
diff --git a/gnss/1.0/vts/functional/VtsHalGnssV1_0TargetTest.cpp b/gnss/1.0/vts/functional/VtsHalGnssV1_0TargetTest.cpp
new file mode 100644
index 0000000..38c2715
--- /dev/null
+++ b/gnss/1.0/vts/functional/VtsHalGnssV1_0TargetTest.cpp
@@ -0,0 +1,279 @@
+/*
+ * Copyright (C) 2017 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.
+ */
+
+#define LOG_TAG "VtsHalGnssV1_0TargetTest"
+#include <android/hardware/gnss/1.0/IGnss.h>
+#include <android/log.h>
+
+#include <VtsHalHidlTargetBaseTest.h>
+
+#include <chrono>
+#include <condition_variable>
+#include <mutex>
+
+using android::hardware::Return;
+using android::hardware::Void;
+
+using android::hardware::gnss::V1_0::GnssLocation;
+using android::hardware::gnss::V1_0::GnssLocationFlags;
+using android::hardware::gnss::V1_0::IGnss;
+using android::hardware::gnss::V1_0::IGnssCallback;
+using android::sp;
+
+#define TIMEOUT_SECONDS 5 // for basic commands/responses
+
+// The main test class for GNSS HAL.
+class GnssHalTest : public ::testing::VtsHalHidlTargetBaseTest {
+ public:
+ virtual void SetUp() override {
+ /* TODO(b/35678469): Setup the init.rc for VTS such that there's a
+ * single caller
+ * to the GNSS HAL - as part of confirming that the info & capabilities
+ * callbacks trigger.
+ */
+
+ gnss_hal_ = ::testing::VtsHalHidlTargetBaseTest::getService<IGnss>();
+ ASSERT_NE(gnss_hal_, nullptr);
+
+ gnss_cb_ = new GnssCallback(*this);
+ ASSERT_NE(gnss_cb_, nullptr);
+
+ auto result = gnss_hal_->setCallback(gnss_cb_);
+ if (!result.isOk()) {
+ ALOGE("result of failed callback set %s", result.description().c_str());
+ }
+
+ ASSERT_TRUE(result.isOk());
+ ASSERT_TRUE(result);
+
+ /* TODO(b/35678469): Implement the capabilities & info (year) checks &
+ * value store here.
+ */
+ }
+
+ virtual void TearDown() override {
+ if (gnss_hal_ != nullptr) {
+ gnss_hal_->cleanup();
+ }
+ }
+
+ /* Used as a mechanism to inform the test that a callback has occurred */
+ inline void notify() {
+ std::unique_lock<std::mutex> lock(mtx_);
+ count++;
+ cv_.notify_one();
+ }
+
+ /* Test code calls this function to wait for a callback */
+ inline std::cv_status wait(int timeoutSeconds) {
+ std::unique_lock<std::mutex> lock(mtx_);
+
+ std::cv_status status = std::cv_status::no_timeout;
+ auto now = std::chrono::system_clock::now();
+ while (count == 0) {
+ status = cv_.wait_until(lock, now + std::chrono::seconds(timeoutSeconds));
+ if (status == std::cv_status::timeout) return status;
+ }
+ count--;
+ return status;
+ }
+
+ /* Callback class for data & Event. */
+ class GnssCallback : public IGnssCallback {
+ GnssHalTest& parent_;
+
+ public:
+ GnssCallback(GnssHalTest& parent) : parent_(parent){};
+
+ virtual ~GnssCallback() = default;
+
+ // Dummy callback handlers
+ Return<void> gnssStatusCb(
+ const IGnssCallback::GnssStatusValue status) override {
+ return Void();
+ }
+ Return<void> gnssSvStatusCb(
+ const IGnssCallback::GnssSvStatus& svStatus) override {
+ return Void();
+ }
+ Return<void> gnssNmeaCb(
+ int64_t timestamp,
+ const android::hardware::hidl_string& nmea) override {
+ return Void();
+ }
+ Return<void> gnssAcquireWakelockCb() override { return Void(); }
+ Return<void> gnssReleaseWakelockCb() override { return Void(); }
+ Return<void> gnssRequestTimeCb() override { return Void(); }
+
+ // Actual (test) callback handlers
+ Return<void> gnssLocationCb(const GnssLocation& location) override {
+ ALOGI("Location received");
+ parent_.location_called_count_++;
+ parent_.last_location_ = location;
+ parent_.notify();
+ return Void();
+ }
+
+ Return<void> gnssSetCapabilitesCb(uint32_t capabilities) override {
+ ALOGI("Capabilities received %d", capabilities);
+ parent_.capabilities_called_count_++;
+ parent_.last_capabilities_ = capabilities;
+ parent_.notify();
+ return Void();
+ }
+
+ Return<void> gnssSetSystemInfoCb(
+ const IGnssCallback::GnssSystemInfo& info) override {
+ ALOGI("Info received, year %d", info.yearOfHw);
+ parent_.info_called_count_++;
+ parent_.last_info_ = info;
+ parent_.notify();
+ return Void();
+ }
+ };
+
+ sp<IGnss> gnss_hal_; // GNSS HAL to call into
+ sp<IGnssCallback> gnss_cb_; // Primary callback interface
+
+ /* Count of calls to set the following items, and the latest item (used by
+ * test.)
+ */
+ int capabilities_called_count_;
+ uint32_t last_capabilities_;
+
+ int location_called_count_;
+ GnssLocation last_location_;
+
+ int info_called_count_;
+ IGnssCallback::GnssSystemInfo last_info_;
+
+ private:
+ std::mutex mtx_;
+ std::condition_variable cv_;
+ int count;
+};
+
+/*
+ * SetCallbackCapabilitiesCleanup:
+ * Sets up the callback, awaits the capabilities, and calls cleanup
+ *
+ * Since this is just the basic operation of SetUp() and TearDown(),
+ * the function definition is intentionally kept empty
+ */
+TEST_F(GnssHalTest, SetCallbackCapabilitiesCleanup) {}
+
+void CheckLocation(GnssLocation& location) {
+ EXPECT_TRUE(location.gnssLocationFlags & GnssLocationFlags::HAS_LAT_LONG);
+ EXPECT_TRUE(location.gnssLocationFlags & GnssLocationFlags::HAS_ALTITUDE);
+ EXPECT_TRUE(location.gnssLocationFlags & GnssLocationFlags::HAS_SPEED);
+ EXPECT_TRUE(location.gnssLocationFlags &
+ GnssLocationFlags::HAS_HORIZONTAL_ACCURACY);
+ EXPECT_GE(location.latitudeDegrees, -90.0);
+ EXPECT_LE(location.latitudeDegrees, 90.0);
+ EXPECT_GE(location.longitudeDegrees, -180.0);
+ EXPECT_LE(location.longitudeDegrees, 180.0);
+ EXPECT_GE(location.altitudeMeters, -1000.0);
+ EXPECT_LE(location.altitudeMeters, 30000.0);
+ EXPECT_GE(location.speedMetersPerSec, 0.0);
+ EXPECT_LE(location.speedMetersPerSec, 5.0); // VTS tests are stationary.
+
+ /*
+ * Tolerating some especially high values for accuracy estimate, in case of
+ * first fix with especially poor geoemtry (happens occasionally)
+ */
+ EXPECT_GT(location.horizontalAccuracyMeters, 0.0);
+ EXPECT_LE(location.horizontalAccuracyMeters, 200.0);
+
+ /*
+ * Some devices may define bearing as -180 to +180, others as 0 to 360.
+ * Both are okay & understandable.
+ */
+ if (location.gnssLocationFlags & GnssLocationFlags::HAS_BEARING) {
+ EXPECT_GE(location.bearingDegrees, -180.0);
+ EXPECT_LE(location.bearingDegrees, 360.0);
+ }
+ if (location.gnssLocationFlags & GnssLocationFlags::HAS_VERTICAL_ACCURACY) {
+ EXPECT_GT(location.verticalAccuracyMeters, 0.0);
+ EXPECT_LE(location.verticalAccuracyMeters, 500.0);
+ }
+ if (location.gnssLocationFlags & GnssLocationFlags::HAS_SPEED_ACCURACY) {
+ EXPECT_GT(location.speedAccuracyMetersPerSecond, 0.0);
+ EXPECT_LE(location.speedAccuracyMetersPerSecond, 50.0);
+ }
+ if (location.gnssLocationFlags & GnssLocationFlags::HAS_BEARING_ACCURACY) {
+ EXPECT_GT(location.bearingAccuracyDegrees, 0.0);
+ EXPECT_LE(location.bearingAccuracyDegrees, 360.0);
+ }
+
+ // Check timestamp > 1.48e12 (47 years in msec - 1970->2017+)
+ EXPECT_GT(location.timestamp, 1.48e12);
+
+ /* TODO(b/35678469): Check if the hardware year is 2017+, and if so,
+ * that bearing, plus vertical, speed & bearing accuracy are present.
+ * And allow bearing to be not present, only if associated with a speed of 0.0
+ */
+}
+
+/*
+ * GetLocation:
+ * Turns on location, waits 45 second for at least 5 locations,
+ * and checks them for reasonable validity.
+ */
+TEST_F(GnssHalTest, GetLocation) {
+#define MIN_INTERVAL_MSEC 500
+#define PREFERRED_ACCURACY 0 // Ideally perfect (matches GnssLocationProvider)
+#define PREFERRED_TIME_MSEC 0 // Ideally immediate
+
+#define LOCATION_TIMEOUT_FIRST_SEC 45
+#define LOCATION_TIMEOUT_SUBSEQUENT_SEC 3
+#define LOCATIONS_TO_CHECK 5
+
+ auto result = gnss_hal_->setPositionMode(
+ IGnss::GnssPositionMode::MS_BASED,
+ IGnss::GnssPositionRecurrence::RECURRENCE_PERIODIC, MIN_INTERVAL_MSEC,
+ PREFERRED_ACCURACY, PREFERRED_TIME_MSEC);
+
+ ASSERT_TRUE(result.isOk());
+ ASSERT_TRUE(result);
+
+ result = gnss_hal_->start();
+
+ ASSERT_TRUE(result.isOk());
+ ASSERT_TRUE(result);
+
+ EXPECT_EQ(std::cv_status::no_timeout, wait(LOCATION_TIMEOUT_FIRST_SEC));
+ EXPECT_EQ(location_called_count_, 1);
+ CheckLocation(last_location_);
+
+ for (int i = 1; i < LOCATIONS_TO_CHECK; i++) {
+ EXPECT_EQ(std::cv_status::no_timeout,
+ wait(LOCATION_TIMEOUT_SUBSEQUENT_SEC));
+ EXPECT_EQ(location_called_count_, i + 1);
+ CheckLocation(last_location_);
+ }
+
+ result = gnss_hal_->stop();
+
+ ASSERT_TRUE(result.isOk());
+ ASSERT_TRUE(result);
+}
+
+int main(int argc, char** argv) {
+ ::testing::InitGoogleTest(&argc, argv);
+ int status = RUN_ALL_TESTS();
+ ALOGI("Test result = %d", status);
+ return status;
+}
diff --git a/gnss/Android.bp b/gnss/Android.bp
index bbb3e4b..33f70eb 100644
--- a/gnss/Android.bp
+++ b/gnss/Android.bp
@@ -1,4 +1,5 @@
// This is an autogenerated file, do not edit.
subdirs = [
"1.0",
+ "1.0/vts/functional",
]
diff --git a/graphics/allocator/2.0/default/Android.bp b/graphics/allocator/2.0/default/Android.bp
index 315893f..67409d7 100644
--- a/graphics/allocator/2.0/default/Android.bp
+++ b/graphics/allocator/2.0/default/Android.bp
@@ -11,7 +11,6 @@
"libhardware",
"libhidlbase",
"libhidltransport",
- "libhwbinder",
"liblog",
"libutils",
],
@@ -28,7 +27,6 @@
"android.hardware.graphics.allocator@2.0",
"libhidlbase",
"libhidltransport",
- "libhwbinder",
"liblog",
"libutils",
],
diff --git a/graphics/allocator/2.0/default/service.cpp b/graphics/allocator/2.0/default/service.cpp
index 525b342..a43740c 100644
--- a/graphics/allocator/2.0/default/service.cpp
+++ b/graphics/allocator/2.0/default/service.cpp
@@ -24,5 +24,5 @@
using android::hardware::defaultPassthroughServiceImplementation;
int main() {
- return defaultPassthroughServiceImplementation<IAllocator>("gralloc");
+ return defaultPassthroughServiceImplementation<IAllocator>();
}
diff --git a/graphics/allocator/2.0/vts/Allocator.vts b/graphics/allocator/2.0/vts/Allocator.vts
deleted file mode 100644
index b26876d..0000000
--- a/graphics/allocator/2.0/vts/Allocator.vts
+++ /dev/null
@@ -1,88 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 2.0
-component_name: "IAllocator"
-
-package: "android.hardware.graphics.allocator"
-
-import: "android.hardware.graphics.allocator@2.0::IAllocatorClient"
-import: "android.hardware.graphics.allocator@2.0::types"
-import: "android.hardware.graphics.common@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- attribute: {
- name: "::android::hardware::graphics::allocator::V2_0::IAllocator::Capability"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "INVALID"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "TEST_ALLOCATE"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "LAYERED_BUFFERS"
- scalar_value: {
- int32_t: 2
- }
- }
- }
-
- api: {
- name: "getCapabilities"
- return_type_hidl: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::allocator::V2_0::IAllocator::Capability"
- }
- }
- callflow: {
- entry: true
- }
- callflow: {
- exit: true
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "dumpDebugInfo"
- return_type_hidl: {
- type: TYPE_STRING
- }
- callflow: {
- entry: true
- }
- callflow: {
- exit: true
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "createClient"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::allocator::V2_0::Error"
- }
- return_type_hidl: {
- type: TYPE_HIDL_INTERFACE
- predefined_type: "::android::hardware::graphics::allocator::V2_0::IAllocatorClient"
- }
- callflow: {
- entry: true
- }
- callflow: {
- next: "*"
- }
- }
-
-}
diff --git a/graphics/allocator/2.0/vts/AllocatorClient.vts b/graphics/allocator/2.0/vts/AllocatorClient.vts
deleted file mode 100644
index 585c36c..0000000
--- a/graphics/allocator/2.0/vts/AllocatorClient.vts
+++ /dev/null
@@ -1,170 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 2.0
-component_name: "IAllocatorClient"
-
-package: "android.hardware.graphics.allocator"
-
-import: "android.hardware.graphics.allocator@2.0::types"
-import: "android.hardware.graphics.common@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- attribute: {
- name: "::android::hardware::graphics::allocator::V2_0::IAllocatorClient::BufferDescriptorInfo"
- type: TYPE_STRUCT
- struct_value: {
- name: "width"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "height"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "layerCount"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "format"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::common::V1_0::PixelFormat"
- }
- struct_value: {
- name: "producerUsageMask"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- struct_value: {
- name: "consumerUsageMask"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- }
-
- api: {
- name: "createDescriptor"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::allocator::V2_0::Error"
- }
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::graphics::allocator::V2_0::IAllocatorClient::BufferDescriptorInfo"
- }
- callflow: {
- entry: true
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "destroyDescriptor"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::allocator::V2_0::Error"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- callflow: {
- exit: true
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "testAllocate"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::allocator::V2_0::Error"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- }
- callflow: {
- next: "allocate"
- }
- }
-
- api: {
- name: "allocate"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::allocator::V2_0::Error"
- }
- return_type_hidl: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- }
- callflow: {
- next: "exportHandle"
- }
- }
-
- api: {
- name: "free"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::allocator::V2_0::Error"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- callflow: {
- exit: true
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "exportHandle"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::allocator::V2_0::Error"
- }
- return_type_hidl: {
- type: TYPE_HANDLE
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- callflow: {
- next: "free"
- }
- }
-
-}
diff --git a/graphics/allocator/2.0/vts/functional/Android.bp b/graphics/allocator/2.0/vts/functional/Android.bp
index 194b228..fdc91ae 100644
--- a/graphics/allocator/2.0/vts/functional/Android.bp
+++ b/graphics/allocator/2.0/vts/functional/Android.bp
@@ -15,27 +15,21 @@
//
cc_test {
- name: "graphics_allocator_hidl_hal_test",
- gtest: true,
- srcs: ["graphics_allocator_hidl_hal_test.cpp"],
+ name: "VtsHalGraphicsAllocatorV2_0TargetTest",
+ srcs: ["VtsHalGraphicsAllocatorV2_0TargetTest.cpp"],
shared_libs: [
"libbase",
"liblog",
"libcutils",
"libhidlbase",
"libhidltransport",
- "libhwbinder",
"libnativehelper",
"libutils",
"android.hardware.graphics.allocator@2.0",
],
- static_libs: ["libgtest"],
+ static_libs: ["VtsHalHidlTargetBaseTest"],
cflags: [
- "--coverage",
"-O0",
"-g",
- ],
- ldflags: [
- "--coverage",
- ],
+ ]
}
diff --git a/graphics/allocator/2.0/vts/functional/graphics_allocator_hidl_hal_test.cpp b/graphics/allocator/2.0/vts/functional/VtsHalGraphicsAllocatorV2_0TargetTest.cpp
similarity index 97%
rename from graphics/allocator/2.0/vts/functional/graphics_allocator_hidl_hal_test.cpp
rename to graphics/allocator/2.0/vts/functional/VtsHalGraphicsAllocatorV2_0TargetTest.cpp
index a0443d6..a8ced8c 100644
--- a/graphics/allocator/2.0/vts/functional/graphics_allocator_hidl_hal_test.cpp
+++ b/graphics/allocator/2.0/vts/functional/VtsHalGraphicsAllocatorV2_0TargetTest.cpp
@@ -20,7 +20,7 @@
#include <android-base/logging.h>
#include <android/hardware/graphics/allocator/2.0/IAllocator.h>
-#include <gtest/gtest.h>
+#include <VtsHalHidlTargetBaseTest.h>
namespace android {
namespace hardware {
@@ -69,10 +69,10 @@
BufferDescriptor mDescriptor;
};
-class GraphicsAllocatorHidlTest : public ::testing::Test {
+class GraphicsAllocatorHidlTest : public ::testing::VtsHalHidlTargetBaseTest {
protected:
void SetUp() override {
- mAllocator = IAllocator::getService("gralloc");
+ mAllocator = ::testing::VtsHalHidlTargetBaseTest::getService<IAllocator>();
ASSERT_NE(mAllocator, nullptr);
mAllocator->createClient([this](const auto& error, const auto& client) {
diff --git a/graphics/allocator/2.0/vts/types.vts b/graphics/allocator/2.0/vts/types.vts
deleted file mode 100644
index 4a8376c..0000000
--- a/graphics/allocator/2.0/vts/types.vts
+++ /dev/null
@@ -1,142 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 2.0
-component_name: "types"
-
-package: "android.hardware.graphics.allocator"
-
-
-attribute: {
- name: "::android::hardware::graphics::allocator::V2_0::Error"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "NONE"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "BAD_DESCRIPTOR"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "BAD_BUFFER"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "BAD_VALUE"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "NOT_SHARED"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "NO_RESOURCES"
- scalar_value: {
- int32_t: 5
- }
- enumerator: "UNDEFINED"
- scalar_value: {
- int32_t: 6
- }
- enumerator: "UNSUPPORTED"
- scalar_value: {
- int32_t: 7
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::graphics::allocator::V2_0::ProducerUsage"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint64_t"
-
- enumerator: "CPU_READ"
- scalar_value: {
- uint64_t: 2
- }
- enumerator: "CPU_READ_OFTEN"
- scalar_value: {
- uint64_t: 4
- }
- enumerator: "CPU_WRITE"
- scalar_value: {
- uint64_t: 32
- }
- enumerator: "CPU_WRITE_OFTEN"
- scalar_value: {
- uint64_t: 64
- }
- enumerator: "GPU_RENDER_TARGET"
- scalar_value: {
- uint64_t: 512
- }
- enumerator: "PROTECTED"
- scalar_value: {
- uint64_t: 16384
- }
- enumerator: "CAMERA"
- scalar_value: {
- uint64_t: 131072
- }
- enumerator: "VIDEO_DECODER"
- scalar_value: {
- uint64_t: 4194304
- }
- enumerator: "SENSOR_DIRECT_DATA"
- scalar_value: {
- uint64_t: 8388608
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::graphics::allocator::V2_0::ConsumerUsage"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint64_t"
-
- enumerator: "CPU_READ"
- scalar_value: {
- uint64_t: 2
- }
- enumerator: "CPU_READ_OFTEN"
- scalar_value: {
- uint64_t: 4
- }
- enumerator: "GPU_TEXTURE"
- scalar_value: {
- uint64_t: 256
- }
- enumerator: "HWCOMPOSER"
- scalar_value: {
- uint64_t: 2048
- }
- enumerator: "CLIENT_TARGET"
- scalar_value: {
- uint64_t: 4096
- }
- enumerator: "CURSOR"
- scalar_value: {
- uint64_t: 32768
- }
- enumerator: "VIDEO_ENCODER"
- scalar_value: {
- uint64_t: 65536
- }
- enumerator: "CAMERA"
- scalar_value: {
- uint64_t: 262144
- }
- enumerator: "RENDERSCRIPT"
- scalar_value: {
- uint64_t: 1048576
- }
- enumerator: "GPU_DATA_BUFFER"
- scalar_value: {
- uint64_t: 8388608
- }
- }
-}
-
diff --git a/graphics/composer/2.1/default/Android.bp b/graphics/composer/2.1/default/Android.bp
index 4a5c70d..d1173eb 100644
--- a/graphics/composer/2.1/default/Android.bp
+++ b/graphics/composer/2.1/default/Android.bp
@@ -11,7 +11,6 @@
"libhardware",
"libhidlbase",
"libhidltransport",
- "libhwbinder",
"liblog",
"libsync",
"libutils",
@@ -33,7 +32,6 @@
"libhardware",
"libhidlbase",
"libhidltransport",
- "libhwbinder",
"liblog",
"libsync",
"libutils",
@@ -57,7 +55,6 @@
"libhardware",
"libhidlbase",
"libhidltransport",
- "libhwbinder",
"liblog",
"libsync",
"libutils",
diff --git a/graphics/composer/2.1/default/ComposerClient.cpp b/graphics/composer/2.1/default/ComposerClient.cpp
index 7a2cb25..72ba8f8 100644
--- a/graphics/composer/2.1/default/ComposerClient.cpp
+++ b/graphics/composer/2.1/default/ComposerClient.cpp
@@ -230,6 +230,8 @@
ComposerClient::~ComposerClient()
{
+ ALOGD("client destroyed");
+
mHal.enableCallback(false);
mHal.removeClient();
@@ -275,17 +277,23 @@
}
}
- mCallback->onHotplug(display, connected);
+ auto ret = mCallback->onHotplug(display, connected);
+ ALOGE_IF(!ret.isOk(), "failed to send onHotplug: %s",
+ ret.description().c_str());
}
void ComposerClient::onRefresh(Display display)
{
- mCallback->onRefresh(display);
+ auto ret = mCallback->onRefresh(display);
+ ALOGE_IF(!ret.isOk(), "failed to send onRefresh: %s",
+ ret.description().c_str());
}
void ComposerClient::onVsync(Display display, int64_t timestamp)
{
- mCallback->onVsync(display, timestamp);
+ auto ret = mCallback->onVsync(display, timestamp);
+ ALOGE_IF(!ret.isOk(), "failed to send onVsync: %s",
+ ret.description().c_str());
}
Return<void> ComposerClient::registerCallback(
diff --git a/graphics/composer/2.1/default/service.cpp b/graphics/composer/2.1/default/service.cpp
index 656673e..712dac1 100644
--- a/graphics/composer/2.1/default/service.cpp
+++ b/graphics/composer/2.1/default/service.cpp
@@ -39,5 +39,5 @@
ALOGE("Couldn't set SCHED_FIFO: %d", errno);
}
- return defaultPassthroughServiceImplementation<IComposer>("hwcomposer");
+ return defaultPassthroughServiceImplementation<IComposer>();
}
diff --git a/graphics/composer/2.1/vts/Composer.vts b/graphics/composer/2.1/vts/Composer.vts
deleted file mode 100644
index e60e39c..0000000
--- a/graphics/composer/2.1/vts/Composer.vts
+++ /dev/null
@@ -1,89 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 2.1
-component_name: "IComposer"
-
-package: "android.hardware.graphics.composer"
-
-import: "android.hardware.graphics.common@1.0::types"
-import: "android.hardware.graphics.composer@2.1::IComposerCallback"
-import: "android.hardware.graphics.composer@2.1::IComposerClient"
-import: "android.hardware.graphics.composer@2.1::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- attribute: {
- name: "::android::hardware::graphics::composer::V2_1::IComposer::Capability"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "INVALID"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "SIDEBAND_STREAM"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "SKIP_CLIENT_COLOR_TRANSFORM"
- scalar_value: {
- int32_t: 2
- }
- }
- }
-
- api: {
- name: "getCapabilities"
- return_type_hidl: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::composer::V2_1::IComposer::Capability"
- }
- }
- callflow: {
- entry: true
- }
- callflow: {
- exit: true
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "dumpDebugInfo"
- return_type_hidl: {
- type: TYPE_STRING
- }
- callflow: {
- entry: true
- }
- callflow: {
- exit: true
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "createClient"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::composer::V2_1::Error"
- }
- return_type_hidl: {
- type: TYPE_HIDL_INTERFACE
- predefined_type: "::android::hardware::graphics::composer::V2_1::IComposerClient"
- }
- callflow: {
- entry: true
- }
- callflow: {
- next: "*"
- }
- }
-
-}
diff --git a/graphics/composer/2.1/vts/ComposerCallback.vts b/graphics/composer/2.1/vts/ComposerCallback.vts
deleted file mode 100644
index b83cf94..0000000
--- a/graphics/composer/2.1/vts/ComposerCallback.vts
+++ /dev/null
@@ -1,73 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 2.1
-component_name: "IComposerCallback"
-
-package: "android.hardware.graphics.composer"
-
-import: "android.hardware.graphics.composer@2.1::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- attribute: {
- name: "::android::hardware::graphics::composer::V2_1::IComposerCallback::Connection"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "INVALID"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "CONNECTED"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "DISCONNECTED"
- scalar_value: {
- int32_t: 2
- }
- }
- }
-
- api: {
- name: "onHotplug"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::composer::V2_1::IComposerCallback::Connection"
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "onRefresh"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "onVsync"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int64_t"
- }
- callflow: {
- next: "*"
- }
- }
-
-}
diff --git a/graphics/composer/2.1/vts/ComposerClient.vts b/graphics/composer/2.1/vts/ComposerClient.vts
deleted file mode 100644
index ac1d7fb..0000000
--- a/graphics/composer/2.1/vts/ComposerClient.vts
+++ /dev/null
@@ -1,916 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 2.1
-component_name: "IComposerClient"
-
-package: "android.hardware.graphics.composer"
-
-import: "android.hardware.graphics.common@1.0::types"
-import: "android.hardware.graphics.composer@2.1::IComposerCallback"
-import: "android.hardware.graphics.composer@2.1::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- attribute: {
- name: "::android::hardware::graphics::composer::V2_1::IComposerClient::Attribute"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "INVALID"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "WIDTH"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "HEIGHT"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "VSYNC_PERIOD"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "DPI_X"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "DPI_Y"
- scalar_value: {
- int32_t: 5
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::graphics::composer::V2_1::IComposerClient::DisplayRequest"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "FLIP_CLIENT_TARGET"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "WRITE_CLIENT_TARGET_TO_OUTPUT"
- scalar_value: {
- uint32_t: 2
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::graphics::composer::V2_1::IComposerClient::LayerRequest"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "CLEAR_CLIENT_TARGET"
- scalar_value: {
- uint32_t: 1
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::graphics::composer::V2_1::IComposerClient::PowerMode"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "OFF"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "DOZE"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "DOZE_SUSPEND"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "ON"
- scalar_value: {
- int32_t: 2
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::graphics::composer::V2_1::IComposerClient::Vsync"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "INVALID"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "ENABLE"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "DISABLE"
- scalar_value: {
- int32_t: 2
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::graphics::composer::V2_1::IComposerClient::BlendMode"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "INVALID"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "NONE"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "PREMULTIPLIED"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "COVERAGE"
- scalar_value: {
- int32_t: 3
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::graphics::composer::V2_1::IComposerClient::Composition"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "INVALID"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "CLIENT"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "DEVICE"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "SOLID_COLOR"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "CURSOR"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "SIDEBAND"
- scalar_value: {
- int32_t: 5
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::graphics::composer::V2_1::IComposerClient::DisplayType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "INVALID"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "PHYSICAL"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "VIRTUAL"
- scalar_value: {
- int32_t: 2
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::graphics::composer::V2_1::IComposerClient::HandleIndex"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "EMPTY"
- scalar_value: {
- int32_t: -1
- }
- enumerator: "CACHED"
- scalar_value: {
- int32_t: -2
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::graphics::composer::V2_1::IComposerClient::Rect"
- type: TYPE_STRUCT
- struct_value: {
- name: "left"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "top"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "right"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "bottom"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- attribute: {
- name: "::android::hardware::graphics::composer::V2_1::IComposerClient::FRect"
- type: TYPE_STRUCT
- struct_value: {
- name: "left"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- struct_value: {
- name: "top"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- struct_value: {
- name: "right"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- struct_value: {
- name: "bottom"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- }
-
- attribute: {
- name: "::android::hardware::graphics::composer::V2_1::IComposerClient::Color"
- type: TYPE_STRUCT
- struct_value: {
- name: "r"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "g"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "b"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "a"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
-
- attribute: {
- name: "::android::hardware::graphics::composer::V2_1::IComposerClient::Command"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "LENGTH_MASK"
- scalar_value: {
- int32_t: 65535
- }
- enumerator: "OPCODE_SHIFT"
- scalar_value: {
- int32_t: 16
- }
- enumerator: "OPCODE_MASK"
- scalar_value: {
- int32_t: -65536
- }
- enumerator: "SELECT_DISPLAY"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "SELECT_LAYER"
- scalar_value: {
- int32_t: 65536
- }
- enumerator: "SET_ERROR"
- scalar_value: {
- int32_t: 16777216
- }
- enumerator: "SET_CHANGED_COMPOSITION_TYPES"
- scalar_value: {
- int32_t: 16842752
- }
- enumerator: "SET_DISPLAY_REQUESTS"
- scalar_value: {
- int32_t: 16908288
- }
- enumerator: "SET_PRESENT_FENCE"
- scalar_value: {
- int32_t: 16973824
- }
- enumerator: "SET_RELEASE_FENCES"
- scalar_value: {
- int32_t: 17039360
- }
- enumerator: "SET_COLOR_TRANSFORM"
- scalar_value: {
- int32_t: 33554432
- }
- enumerator: "SET_CLIENT_TARGET"
- scalar_value: {
- int32_t: 33619968
- }
- enumerator: "SET_OUTPUT_BUFFER"
- scalar_value: {
- int32_t: 33685504
- }
- enumerator: "VALIDATE_DISPLAY"
- scalar_value: {
- int32_t: 33751040
- }
- enumerator: "ACCEPT_DISPLAY_CHANGES"
- scalar_value: {
- int32_t: 33816576
- }
- enumerator: "PRESENT_DISPLAY"
- scalar_value: {
- int32_t: 33882112
- }
- enumerator: "SET_LAYER_CURSOR_POSITION"
- scalar_value: {
- int32_t: 50331648
- }
- enumerator: "SET_LAYER_BUFFER"
- scalar_value: {
- int32_t: 50397184
- }
- enumerator: "SET_LAYER_SURFACE_DAMAGE"
- scalar_value: {
- int32_t: 50462720
- }
- enumerator: "SET_LAYER_BLEND_MODE"
- scalar_value: {
- int32_t: 67108864
- }
- enumerator: "SET_LAYER_COLOR"
- scalar_value: {
- int32_t: 67174400
- }
- enumerator: "SET_LAYER_COMPOSITION_TYPE"
- scalar_value: {
- int32_t: 67239936
- }
- enumerator: "SET_LAYER_DATASPACE"
- scalar_value: {
- int32_t: 67305472
- }
- enumerator: "SET_LAYER_DISPLAY_FRAME"
- scalar_value: {
- int32_t: 67371008
- }
- enumerator: "SET_LAYER_PLANE_ALPHA"
- scalar_value: {
- int32_t: 67436544
- }
- enumerator: "SET_LAYER_SIDEBAND_STREAM"
- scalar_value: {
- int32_t: 67502080
- }
- enumerator: "SET_LAYER_SOURCE_CROP"
- scalar_value: {
- int32_t: 67567616
- }
- enumerator: "SET_LAYER_TRANSFORM"
- scalar_value: {
- int32_t: 67633152
- }
- enumerator: "SET_LAYER_VISIBLE_REGION"
- scalar_value: {
- int32_t: 67698688
- }
- enumerator: "SET_LAYER_Z_ORDER"
- scalar_value: {
- int32_t: 67764224
- }
- }
- }
-
- api: {
- name: "registerCallback"
- arg: {
- type: TYPE_HIDL_CALLBACK
- predefined_type: "::android::hardware::graphics::composer::V2_1::IComposerCallback"
- }
- callflow: {
- entry: true
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "getMaxVirtualDisplayCount"
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "createVirtualDisplay"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::composer::V2_1::Error"
- }
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::common::V1_0::PixelFormat"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::common::V1_0::PixelFormat"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "destroyVirtualDisplay"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::composer::V2_1::Error"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "createLayer"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::composer::V2_1::Error"
- }
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "destroyLayer"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::composer::V2_1::Error"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "getActiveConfig"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::composer::V2_1::Error"
- }
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "getClientTargetSupport"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::composer::V2_1::Error"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::common::V1_0::PixelFormat"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::common::V1_0::Dataspace"
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "getColorModes"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::composer::V2_1::Error"
- }
- return_type_hidl: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::common::V1_0::ColorMode"
- }
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "getDisplayAttribute"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::composer::V2_1::Error"
- }
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::composer::V2_1::IComposerClient::Attribute"
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "getDisplayConfigs"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::composer::V2_1::Error"
- }
- return_type_hidl: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "getDisplayName"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::composer::V2_1::Error"
- }
- return_type_hidl: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "getDisplayType"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::composer::V2_1::Error"
- }
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::composer::V2_1::IComposerClient::DisplayType"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "getDozeSupport"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::composer::V2_1::Error"
- }
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "getHdrCapabilities"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::composer::V2_1::Error"
- }
- return_type_hidl: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::common::V1_0::Hdr"
- }
- }
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "setClientTargetSlotCount"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::composer::V2_1::Error"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "setActiveConfig"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::composer::V2_1::Error"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "setColorMode"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::composer::V2_1::Error"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::common::V1_0::ColorMode"
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "setPowerMode"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::composer::V2_1::Error"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::composer::V2_1::IComposerClient::PowerMode"
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "setVsyncEnabled"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::composer::V2_1::Error"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::composer::V2_1::IComposerClient::Vsync"
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "setInputCommandQueue"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::composer::V2_1::Error"
- }
- arg: {
- type: TYPE_FMQ_SYNC
- fmq_value: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "getOutputCommandQueue"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::composer::V2_1::Error"
- }
- return_type_hidl: {
- type: TYPE_FMQ_SYNC
- fmq_value: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "executeCommands"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::composer::V2_1::Error"
- }
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- return_type_hidl: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_HANDLE
- }
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_HANDLE
- }
- }
- callflow: {
- next: "*"
- }
- }
-
-}
diff --git a/graphics/composer/2.1/vts/functional/Android.bp b/graphics/composer/2.1/vts/functional/Android.bp
index c3f7636..9be04d1 100644
--- a/graphics/composer/2.1/vts/functional/Android.bp
+++ b/graphics/composer/2.1/vts/functional/Android.bp
@@ -15,9 +15,8 @@
//
cc_test {
- name: "graphics_composer_hidl_hal_test",
- gtest: true,
- srcs: ["graphics_composer_hidl_hal_test.cpp"],
+ name: "VtsHalGraphicsComposerV2_1TargetTest",
+ srcs: ["VtsHalGraphicsComposerV2_1TargetTest.cpp"],
shared_libs: [
"android.hardware.graphics.allocator@2.0",
"android.hardware.graphics.composer@2.1",
@@ -27,19 +26,14 @@
"libfmq",
"libhidlbase",
"libhidltransport",
- "libhwbinder",
"liblog",
"libnativehelper",
"libsync",
"libutils",
],
- static_libs: ["libgtest", "libhwcomposer-command-buffer"],
+ static_libs: ["VtsHalHidlTargetBaseTest", "libhwcomposer-command-buffer"],
cflags: [
- "--coverage",
"-O0",
"-g",
- ],
- ldflags: [
- "--coverage",
- ],
+ ]
}
diff --git a/graphics/composer/2.1/vts/functional/graphics_composer_hidl_hal_test.cpp b/graphics/composer/2.1/vts/functional/VtsHalGraphicsComposerV2_1TargetTest.cpp
similarity index 98%
rename from graphics/composer/2.1/vts/functional/graphics_composer_hidl_hal_test.cpp
rename to graphics/composer/2.1/vts/functional/VtsHalGraphicsComposerV2_1TargetTest.cpp
index e3e35bb..a565845 100644
--- a/graphics/composer/2.1/vts/functional/graphics_composer_hidl_hal_test.cpp
+++ b/graphics/composer/2.1/vts/functional/VtsHalGraphicsComposerV2_1TargetTest.cpp
@@ -22,7 +22,7 @@
#include <android/hardware/graphics/composer/2.1/IComposer.h>
#include <android/hardware/graphics/mapper/2.0/IMapper.h>
-#include <gtest/gtest.h>
+#include <VtsHalHidlTargetBaseTest.h>
#include <unistd.h>
#include <algorithm>
@@ -131,10 +131,10 @@
int mInvalidVsyncCount = 0;
};
-class GraphicsComposerHidlTest : public ::testing::Test {
+class GraphicsComposerHidlTest : public ::testing::VtsHalHidlTargetBaseTest {
protected:
void SetUp() override {
- mComposer = IComposer::getService("hwcomposer");
+ mComposer = ::testing::VtsHalHidlTargetBaseTest::getService<IComposer>();
ASSERT_NE(nullptr, mComposer.get());
mComposerClient = createClient();
@@ -749,7 +749,7 @@
private:
void SetUpGralloc() {
- mAllocator = IAllocator::getService("gralloc");
+ mAllocator = ::testing::VtsHalHidlTargetBaseTest::getService<IAllocator>();
ASSERT_NE(nullptr, mAllocator.get());
mAllocator->createClient([this](const auto& error, const auto& client) {
@@ -759,7 +759,7 @@
});
ASSERT_NE(nullptr, mAllocatorClient.get());
- mMapper = IMapper::getService("gralloc-mapper");
+ mMapper = ::testing::VtsHalHidlTargetBaseTest::getService<IMapper>();
ASSERT_NE(nullptr, mMapper.get());
ASSERT_FALSE(mMapper->isRemote());
}
diff --git a/graphics/composer/2.1/vts/types.vts b/graphics/composer/2.1/vts/types.vts
deleted file mode 100644
index ccbd9d8..0000000
--- a/graphics/composer/2.1/vts/types.vts
+++ /dev/null
@@ -1,48 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 2.1
-component_name: "types"
-
-package: "android.hardware.graphics.composer"
-
-
-attribute: {
- name: "::android::hardware::graphics::composer::V2_1::Error"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "NONE"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "BAD_CONFIG"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "BAD_DISPLAY"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "BAD_LAYER"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "BAD_PARAMETER"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "NO_RESOURCES"
- scalar_value: {
- int32_t: 6
- }
- enumerator: "NOT_VALIDATED"
- scalar_value: {
- int32_t: 7
- }
- enumerator: "UNSUPPORTED"
- scalar_value: {
- int32_t: 8
- }
- }
-}
-
diff --git a/graphics/mapper/2.0/default/Android.bp b/graphics/mapper/2.0/default/Android.bp
index ca15961..7e98faa 100644
--- a/graphics/mapper/2.0/default/Android.bp
+++ b/graphics/mapper/2.0/default/Android.bp
@@ -27,7 +27,6 @@
"libhardware",
"libhidlbase",
"libhidltransport",
- "libhwbinder",
"liblog",
"libutils",
],
diff --git a/graphics/mapper/2.0/vts/Mapper.vts b/graphics/mapper/2.0/vts/Mapper.vts
deleted file mode 100644
index baf95dc..0000000
--- a/graphics/mapper/2.0/vts/Mapper.vts
+++ /dev/null
@@ -1,281 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 2.0
-component_name: "IMapper"
-
-package: "android.hardware.graphics.mapper"
-
-import: "android.hardware.graphics.allocator@2.0::types"
-import: "android.hardware.graphics.common@1.0::types"
-import: "android.hardware.graphics.mapper@2.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- attribute: {
- name: "::android::hardware::graphics::mapper::V2_0::IMapper::Rect"
- type: TYPE_STRUCT
- struct_value: {
- name: "left"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "top"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "width"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "height"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "retain"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::allocator::V2_0::Error"
- }
- arg: {
- type: TYPE_HANDLE
- }
- callflow: {
- entry: true
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "release"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::allocator::V2_0::Error"
- }
- arg: {
- type: TYPE_HANDLE
- }
- callflow: {
- exit: true
- }
- }
-
- api: {
- name: "getDimensions"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::allocator::V2_0::Error"
- }
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_HANDLE
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "getFormat"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::allocator::V2_0::Error"
- }
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::common::V1_0::PixelFormat"
- }
- arg: {
- type: TYPE_HANDLE
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "getLayerCount"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::allocator::V2_0::Error"
- }
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_HANDLE
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "getProducerUsageMask"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::allocator::V2_0::Error"
- }
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- arg: {
- type: TYPE_HANDLE
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "getConsumerUsageMask"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::allocator::V2_0::Error"
- }
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- arg: {
- type: TYPE_HANDLE
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "getBackingStore"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::allocator::V2_0::Error"
- }
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- arg: {
- type: TYPE_HANDLE
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "getStride"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::allocator::V2_0::Error"
- }
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_HANDLE
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "lock"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::allocator::V2_0::Error"
- }
- return_type_hidl: {
- type: TYPE_POINTER
- }
- arg: {
- type: TYPE_HANDLE
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::graphics::mapper::V2_0::IMapper::Rect"
- }
- arg: {
- type: TYPE_HANDLE
- }
- callflow: {
- next: "unlock"
- }
- }
-
- api: {
- name: "lockFlex"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::allocator::V2_0::Error"
- }
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::graphics::mapper::V2_0::FlexLayout"
- }
- arg: {
- type: TYPE_HANDLE
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::graphics::mapper::V2_0::IMapper::Rect"
- }
- arg: {
- type: TYPE_HANDLE
- }
- callflow: {
- next: "unlock"
- }
- }
-
- api: {
- name: "unlock"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::allocator::V2_0::Error"
- }
- return_type_hidl: {
- type: TYPE_HANDLE
- }
- arg: {
- type: TYPE_HANDLE
- }
- callflow: {
- next: "*"
- }
- }
-
-}
diff --git a/graphics/mapper/2.0/vts/functional/Android.bp b/graphics/mapper/2.0/vts/functional/Android.bp
index 27ea350..24cd1be 100644
--- a/graphics/mapper/2.0/vts/functional/Android.bp
+++ b/graphics/mapper/2.0/vts/functional/Android.bp
@@ -15,16 +15,14 @@
//
cc_test {
- name: "graphics_mapper_hidl_hal_test",
- gtest: true,
- srcs: ["graphics_mapper_hidl_hal_test.cpp"],
+ name: "VtsHalGraphicsMapperV2_0TargetTest",
+ srcs: ["VtsHalGraphicsMapperV2_0TargetTest.cpp"],
shared_libs: [
"libbase",
"liblog",
"libcutils",
"libhidlbase",
"libhidltransport",
- "libhwbinder",
"libnativehelper",
"libsync",
"libutils",
@@ -32,13 +30,9 @@
"android.hardware.graphics.mapper@2.0",
"android.hardware.graphics.common@1.0",
],
- static_libs: ["libgtest"],
+ static_libs: ["VtsHalHidlTargetBaseTest"],
cflags: [
- "--coverage",
"-O0",
"-g",
- ],
- ldflags: [
- "--coverage",
- ],
+ ]
}
diff --git a/graphics/mapper/2.0/vts/functional/graphics_mapper_hidl_hal_test.cpp b/graphics/mapper/2.0/vts/functional/VtsHalGraphicsMapperV2_0TargetTest.cpp
similarity index 96%
rename from graphics/mapper/2.0/vts/functional/graphics_mapper_hidl_hal_test.cpp
rename to graphics/mapper/2.0/vts/functional/VtsHalGraphicsMapperV2_0TargetTest.cpp
index 840da1a..b2a37dd 100644
--- a/graphics/mapper/2.0/vts/functional/graphics_mapper_hidl_hal_test.cpp
+++ b/graphics/mapper/2.0/vts/functional/VtsHalGraphicsMapperV2_0TargetTest.cpp
@@ -19,7 +19,7 @@
#include <android-base/logging.h>
#include <android/hardware/graphics/allocator/2.0/IAllocator.h>
#include <android/hardware/graphics/mapper/2.0/IMapper.h>
-#include <gtest/gtest.h>
+#include <VtsHalHidlTargetBaseTest.h>
#include <sync/sync.h>
namespace android {
@@ -33,10 +33,10 @@
using namespace android::hardware::graphics::allocator::V2_0;
using namespace android::hardware::graphics::common::V1_0;
-class GraphicsMapperHidlTest : public ::testing::Test {
+class GraphicsMapperHidlTest : public ::testing::VtsHalHidlTargetBaseTest {
protected:
void SetUp() override {
- mAllocator = IAllocator::getService("gralloc");
+ mAllocator = ::testing::VtsHalHidlTargetBaseTest::getService<IAllocator>();
ASSERT_NE(mAllocator, nullptr);
mAllocator->createClient([this](const auto& error, const auto& client) {
@@ -46,7 +46,7 @@
});
ASSERT_NE(mAllocatorClient, nullptr);
- mMapper = IMapper::getService("gralloc-mapper");
+ mMapper = ::testing::VtsHalHidlTargetBaseTest::getService<IMapper>();
ASSERT_NE(nullptr, mMapper.get());
ASSERT_FALSE(mMapper->isRemote());
diff --git a/graphics/mapper/2.0/vts/types.vts b/graphics/mapper/2.0/vts/types.vts
deleted file mode 100644
index fee8535..0000000
--- a/graphics/mapper/2.0/vts/types.vts
+++ /dev/null
@@ -1,139 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 2.0
-component_name: "types"
-
-package: "android.hardware.graphics.mapper"
-
-
-attribute: {
- name: "::android::hardware::graphics::mapper::V2_0::FlexComponent"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "Y"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "CB"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "CR"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "R"
- scalar_value: {
- int32_t: 1024
- }
- enumerator: "G"
- scalar_value: {
- int32_t: 2048
- }
- enumerator: "B"
- scalar_value: {
- int32_t: 4096
- }
- enumerator: "A"
- scalar_value: {
- int32_t: 1073741824
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::graphics::mapper::V2_0::FlexFormat"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "INVALID"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "Y"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "YCBCR"
- scalar_value: {
- int32_t: 7
- }
- enumerator: "YCBCRA"
- scalar_value: {
- int32_t: 1073741831
- }
- enumerator: "RGB"
- scalar_value: {
- int32_t: 7168
- }
- enumerator: "RGBA"
- scalar_value: {
- int32_t: 1073748992
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::graphics::mapper::V2_0::FlexPlane"
- type: TYPE_STRUCT
- struct_value: {
- name: "topLeft"
- type: TYPE_POINTER
- }
- struct_value: {
- name: "component"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::mapper::V2_0::FlexComponent"
- }
- struct_value: {
- name: "bitsPerComponent"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "bitsUsed"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "hIncrement"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "vIncrement"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "hSubsampling"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "vSubsampling"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::graphics::mapper::V2_0::FlexLayout"
- type: TYPE_STRUCT
- struct_value: {
- name: "format"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::graphics::mapper::V2_0::FlexFormat"
- }
- struct_value: {
- name: "planes"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::graphics::mapper::V2_0::FlexPlane"
- }
- }
-}
-
diff --git a/health/1.0/default/Android.mk b/health/1.0/default/Android.mk
index 3c97185..96ff91f 100644
--- a/health/1.0/default/Android.mk
+++ b/health/1.0/default/Android.mk
@@ -12,7 +12,6 @@
libcutils \
libhidlbase \
libhidltransport \
- libhwbinder \
liblog \
libutils \
android.hardware.health@1.0 \
@@ -51,7 +50,6 @@
libdl \
libbase \
libutils \
- libhwbinder \
libhidlbase \
libhidltransport \
android.hardware.health@1.0 \
diff --git a/health/1.0/default/HealthService.cpp b/health/1.0/default/HealthService.cpp
index 107f33d..55848d2 100644
--- a/health/1.0/default/HealthService.cpp
+++ b/health/1.0/default/HealthService.cpp
@@ -23,5 +23,5 @@
using android::hardware::defaultPassthroughServiceImplementation;
int main() {
- return defaultPassthroughServiceImplementation<IHealth>("health");
+ return defaultPassthroughServiceImplementation<IHealth>();
}
diff --git a/ir/1.0/default/Android.bp b/ir/1.0/default/Android.bp
index ed0b807..151a9af 100644
--- a/ir/1.0/default/Android.bp
+++ b/ir/1.0/default/Android.bp
@@ -21,7 +21,6 @@
"libhidlbase",
"libhidltransport",
"libhardware",
- "libhwbinder",
"liblog",
"libutils",
"android.hardware.ir@1.0",
@@ -37,7 +36,6 @@
shared_libs: [
"liblog",
- "libhwbinder",
"libhardware",
"libhidlbase",
"libhidltransport",
diff --git a/ir/1.0/vts/ConsumerIr.vts b/ir/1.0/vts/ConsumerIr.vts
deleted file mode 100644
index c31331e..0000000
--- a/ir/1.0/vts/ConsumerIr.vts
+++ /dev/null
@@ -1,45 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "IConsumerIr"
-
-package: "android.hardware.ir"
-
-import: "android.hardware.ir@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- api: {
- name: "transmit"
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
- }
-
- api: {
- name: "getCarrierFreqs"
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- return_type_hidl: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::ir::V1_0::ConsumerIrFreqRange"
- }
- }
- }
-
-}
diff --git a/ir/1.0/vts/functional/Android.bp b/ir/1.0/vts/functional/Android.bp
index 1acd2a0..fe0a595 100644
--- a/ir/1.0/vts/functional/Android.bp
+++ b/ir/1.0/vts/functional/Android.bp
@@ -15,20 +15,18 @@
//
cc_test {
- name: "ir_hidl_hal_test",
- gtest: true,
- srcs: ["ir_hidl_hal_test.cpp"],
+ name: "VtsHalIrV1_0TargetTest",
+ srcs: ["VtsHalIrV1_0TargetTest.cpp"],
shared_libs: [
"libbase",
"liblog",
"libcutils",
"libhidlbase",
"libhidltransport",
- "libhwbinder",
"libutils",
"android.hardware.ir@1.0",
],
- static_libs: ["libgtest"],
+ static_libs: ["VtsHalHidlTargetBaseTest"],
cflags: [
"-O0",
"-g",
diff --git a/ir/1.0/vts/functional/ir_hidl_hal_test.cpp b/ir/1.0/vts/functional/VtsHalIrV1_0TargetTest.cpp
similarity index 92%
rename from ir/1.0/vts/functional/ir_hidl_hal_test.cpp
rename to ir/1.0/vts/functional/VtsHalIrV1_0TargetTest.cpp
index 08c7974..605eabb 100644
--- a/ir/1.0/vts/functional/ir_hidl_hal_test.cpp
+++ b/ir/1.0/vts/functional/VtsHalIrV1_0TargetTest.cpp
@@ -21,7 +21,7 @@
#include <android/hardware/ir/1.0/IConsumerIr.h>
#include <android/hardware/ir/1.0/types.h>
-#include <gtest/gtest.h>
+#include <VtsHalHidlTargetBaseTest.h>
#include <algorithm>
using ::android::hardware::ir::V1_0::IConsumerIr;
@@ -31,10 +31,10 @@
using ::android::sp;
// The main test class for IR HIDL HAL.
-class ConsumerIrHidlTest : public ::testing::Test {
+class ConsumerIrHidlTest : public ::testing::VtsHalHidlTargetBaseTest {
public:
virtual void SetUp() override {
- ir = IConsumerIr::getService();
+ ir = ::testing::VtsHalHidlTargetBaseTest::getService<IConsumerIr>();
ASSERT_NE(ir, nullptr);
}
diff --git a/ir/1.0/vts/types.vts b/ir/1.0/vts/types.vts
deleted file mode 100644
index f1e9cbe..0000000
--- a/ir/1.0/vts/types.vts
+++ /dev/null
@@ -1,22 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "types"
-
-package: "android.hardware.ir"
-
-
-attribute: {
- name: "::android::hardware::ir::V1_0::ConsumerIrFreqRange"
- type: TYPE_STRUCT
- struct_value: {
- name: "min"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "max"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
-}
-
diff --git a/keymaster/3.0/default/Android.mk b/keymaster/3.0/default/Android.mk
index 87a8a05..c537346 100644
--- a/keymaster/3.0/default/Android.mk
+++ b/keymaster/3.0/default/Android.mk
@@ -14,7 +14,6 @@
libkeymaster1 \
libhidlbase \
libhidltransport \
- libhwbinder \
libutils \
libhardware \
android.hardware.keymaster@3.0
@@ -37,7 +36,6 @@
libutils \
libhardware_legacy \
libhardware \
- libhwbinder \
libhidlbase \
libhidltransport \
android.hardware.keymaster@3.0
diff --git a/keymaster/3.0/default/service.cpp b/keymaster/3.0/default/service.cpp
index c4387c3..a6a9a93 100644
--- a/keymaster/3.0/default/service.cpp
+++ b/keymaster/3.0/default/service.cpp
@@ -29,5 +29,5 @@
using android::hardware::defaultPassthroughServiceImplementation;
int main() {
- return defaultPassthroughServiceImplementation<IKeymasterDevice>("keymaster", 1);
+ return defaultPassthroughServiceImplementation<IKeymasterDevice>();
}
diff --git a/light/2.0/default/Android.mk b/light/2.0/default/Android.mk
index 7bd096c..3439c9b 100644
--- a/light/2.0/default/Android.mk
+++ b/light/2.0/default/Android.mk
@@ -10,7 +10,6 @@
LOCAL_SHARED_LIBRARIES := \
libhidlbase \
libhidltransport \
- libhwbinder \
libutils \
liblog \
libcutils \
@@ -39,7 +38,6 @@
libhardware \
LOCAL_SHARED_LIBRARIES += \
- libhwbinder \
libhidlbase \
libhidltransport \
android.hardware.light@2.0 \
diff --git a/light/2.0/vts/Light.vts b/light/2.0/vts/Light.vts
deleted file mode 100644
index 163405f..0000000
--- a/light/2.0/vts/Light.vts
+++ /dev/null
@@ -1,38 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 2.0
-component_name: "ILight"
-
-package: "android.hardware.light"
-
-import: "android.hardware.light@2.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- api: {
- name: "setLight"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::light::V2_0::Status"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::light::V2_0::Type"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::light::V2_0::LightState"
- }
- }
-
- api: {
- name: "getSupportedTypes"
- return_type_hidl: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::light::V2_0::Type"
- }
- }
- }
-
-}
diff --git a/light/2.0/vts/functional/Android.bp b/light/2.0/vts/functional/Android.bp
index 889457f..c21aa6b 100644
--- a/light/2.0/vts/functional/Android.bp
+++ b/light/2.0/vts/functional/Android.bp
@@ -15,9 +15,8 @@
//
cc_test {
- name: "light_hidl_hal_test",
- gtest: true,
- srcs: ["light_hidl_hal_test.cpp"],
+ name: "VtsHalLightV2_0TargetTest",
+ srcs: ["VtsHalLightV2_0TargetTest.cpp"],
shared_libs: [
"libbase",
"libhidlbase",
@@ -25,14 +24,10 @@
"libutils",
"android.hardware.light@2.0",
],
- static_libs: ["libgtest"],
+ static_libs: ["VtsHalHidlTargetBaseTest"],
cflags: [
- "--coverage",
"-O0",
"-g",
- ],
- ldflags: [
- "--coverage"
]
}
diff --git a/light/2.0/vts/functional/light_hidl_hal_test.cpp b/light/2.0/vts/functional/VtsHalLightV2_0TargetTest.cpp
similarity index 82%
rename from light/2.0/vts/functional/light_hidl_hal_test.cpp
rename to light/2.0/vts/functional/VtsHalLightV2_0TargetTest.cpp
index 71a8b4e..50b6d5f 100644
--- a/light/2.0/vts/functional/light_hidl_hal_test.cpp
+++ b/light/2.0/vts/functional/VtsHalLightV2_0TargetTest.cpp
@@ -19,7 +19,7 @@
#include <android-base/logging.h>
#include <android/hardware/light/2.0/ILight.h>
#include <android/hardware/light/2.0/types.h>
-#include <gtest/gtest.h>
+#include <VtsHalHidlTargetBaseTest.h>
#include <set>
#include <unistd.h>
@@ -37,31 +37,6 @@
#define ASSERT_OK(ret) ASSERT_TRUE(ret.isOk())
#define EXPECT_OK(ret) EXPECT_TRUE(ret.isOk())
-class LightHidlTest : public ::testing::Test {
-public:
- virtual void SetUp() override {
- light = ILight::getService();
-
- ASSERT_NE(light, nullptr);
- LOG(INFO) << "Test is remote " << light->isRemote();
-
- ASSERT_OK(light->getSupportedTypes([this](const hidl_vec<Type> &types) {
- supportedTypes = types;
- }));
- }
-
- virtual void TearDown() override {}
-
- sp<ILight> light;
- std::vector<Type> supportedTypes;
-};
-
-class LightHidlEnvironment : public ::testing::Environment {
-public:
- virtual void SetUp() {}
- virtual void TearDown() {}
-};
-
const static LightState kWhite = {
.color = 0xFFFFFFFF,
.flashMode = Flash::TIMED,
@@ -97,6 +72,41 @@
Type::WIFI
};
+class LightHidlTest : public ::testing::VtsHalHidlTargetBaseTest {
+public:
+ virtual void SetUp() override {
+ light = ::testing::VtsHalHidlTargetBaseTest::getService<ILight>();
+
+ ASSERT_NE(light, nullptr);
+ LOG(INFO) << "Test is remote " << light->isRemote();
+
+ ASSERT_OK(light->getSupportedTypes([this](const hidl_vec<Type> &types) {
+ supportedTypes = types;
+ }));
+ }
+
+ sp<ILight> light;
+ std::vector<Type> supportedTypes;
+
+ virtual void TearDown() override {
+ for (const Type& type: supportedTypes) {
+ Return<Status> ret = light->setLight(type, kOff);
+ EXPECT_OK(ret);
+ EXPECT_EQ(Status::SUCCESS, static_cast<Status>(ret));
+ }
+
+ // must leave the device in a useable condition
+ if (std::find(supportedTypes.begin(),
+ supportedTypes.end(),
+ Type::BACKLIGHT) != supportedTypes.end()) {
+ Return<Status> ret = light->setLight(Type::BACKLIGHT, kWhite);
+ EXPECT_OK(ret);
+ EXPECT_EQ(Status::SUCCESS, static_cast<Status>(ret));
+ }
+ }
+
+};
+
/**
* Ensure all lights which are reported as supported work.
*/
@@ -106,12 +116,6 @@
EXPECT_OK(ret);
EXPECT_EQ(Status::SUCCESS, static_cast<Status>(ret));
}
-
- for (const Type& type: supportedTypes) {
- Return<Status> ret = light->setLight(type, kOff);
- EXPECT_OK(ret);
- EXPECT_EQ(Status::SUCCESS, static_cast<Status>(ret));
- }
}
/**
@@ -126,12 +130,6 @@
EXPECT_TRUE(Status::SUCCESS == status ||
Status::BRIGHTNESS_NOT_SUPPORTED == status);
}
-
- for (const Type& type: supportedTypes) {
- Return<Status> ret = light->setLight(type, kOff);
- EXPECT_OK(ret);
- EXPECT_EQ(Status::SUCCESS, static_cast<Status>(ret));
- }
}
/**
@@ -151,7 +149,6 @@
}
int main(int argc, char **argv) {
- ::testing::AddGlobalTestEnvironment(new LightHidlEnvironment);
::testing::InitGoogleTest(&argc, argv);
int status = RUN_ALL_TESTS();
LOG(INFO) << "Test result = " << status;
diff --git a/light/2.0/vts/types.vts b/light/2.0/vts/types.vts
deleted file mode 100644
index a9c8cab..0000000
--- a/light/2.0/vts/types.vts
+++ /dev/null
@@ -1,149 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 2.0
-component_name: "types"
-
-package: "android.hardware.light"
-
-
-attribute: {
- name: "::android::hardware::light::V2_0::Status"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "SUCCESS"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "LIGHT_NOT_SUPPORTED"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "BRIGHTNESS_NOT_SUPPORTED"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "UNKNOWN"
- scalar_value: {
- int32_t: 3
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::light::V2_0::Flash"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "NONE"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "TIMED"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "HARDWARE"
- scalar_value: {
- int32_t: 2
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::light::V2_0::Brightness"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "USER"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "SENSOR"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "LOW_PERSISTENCE"
- scalar_value: {
- int32_t: 2
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::light::V2_0::Type"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "BACKLIGHT"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "KEYBOARD"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "BUTTONS"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "BATTERY"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "NOTIFICATIONS"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "ATTENTION"
- scalar_value: {
- int32_t: 5
- }
- enumerator: "BLUETOOTH"
- scalar_value: {
- int32_t: 6
- }
- enumerator: "WIFI"
- scalar_value: {
- int32_t: 7
- }
- enumerator: "COUNT"
- scalar_value: {
- int32_t: 8
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::light::V2_0::LightState"
- type: TYPE_STRUCT
- struct_value: {
- name: "color"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "flashMode"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::light::V2_0::Flash"
- }
- struct_value: {
- name: "flashOnMs"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "flashOffMs"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "brightnessMode"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::light::V2_0::Brightness"
- }
-}
-
diff --git a/media/omx/1.0/IGraphicBufferSource.hal b/media/omx/1.0/IGraphicBufferSource.hal
index 9b3ab0c..4dbfd32 100644
--- a/media/omx/1.0/IGraphicBufferSource.hal
+++ b/media/omx/1.0/IGraphicBufferSource.hal
@@ -31,7 +31,7 @@
configure(IOmxNode omxNode, Dataspace dataspace);
- setSuspend(bool suspend);
+ setSuspend(bool suspend, int64_t timeUs);
setRepeatPreviousFrameDelayUs(int64_t repeatAfterUs);
@@ -41,6 +41,8 @@
setStartTimeUs(int64_t startTimeUs);
+ setStopTimeUs(int64_t stopTimeUs);
+
setColorAspects(ColorAspects aspects);
setTimeOffsetUs(int64_t timeOffsetUs);
diff --git a/media/omx/1.0/IOmxBufferProducer.hal b/media/omx/1.0/IOmxBufferProducer.hal
index d4cf5f7..7e2172b 100644
--- a/media/omx/1.0/IOmxBufferProducer.hal
+++ b/media/omx/1.0/IOmxBufferProducer.hal
@@ -72,12 +72,27 @@
};
/**
+ * Ref: frameworks/native/include/gui/FrameTimestamp.h: CompositorTiming
+ *
+ * The most recent compositor timing info sent from consumer to producer
+ * through a HIDL interface.
+ */
+ struct CompositorTiming {
+ int64_t deadlineNs;
+ int64_t intervalNs;
+ int64_t presentLatencyNs;
+ };
+
+ /**
* Ref: frameworks/native/include/gui/FrameTimestamp.h: FrameEventHistoryDelta
*
* A collection of updates from consumer to producer that can be sent
* through a HIDL interface.
*/
- typedef vec<FrameEventsDelta> FrameEventHistoryDelta;
+ struct FrameEventHistoryDelta {
+ vec<FrameEventsDelta> deltas;
+ CompositorTiming compositorTiming;
+ };
/**
* Modes for disconnection.
diff --git a/memtrack/1.0/default/Android.bp b/memtrack/1.0/default/Android.bp
index b43a159..dcb5025 100644
--- a/memtrack/1.0/default/Android.bp
+++ b/memtrack/1.0/default/Android.bp
@@ -24,7 +24,6 @@
"libhidlbase",
"libhidltransport",
"libhardware",
- "libhwbinder",
"libutils",
"android.hardware.memtrack@1.0",
],
@@ -46,7 +45,6 @@
"libhardware",
"libhidlbase",
"libhidltransport",
- "libhwbinder",
"android.hardware.memtrack@1.0",
],
diff --git a/memtrack/1.0/vts/Memtrack.vts b/memtrack/1.0/vts/Memtrack.vts
deleted file mode 100644
index 42a422e..0000000
--- a/memtrack/1.0/vts/Memtrack.vts
+++ /dev/null
@@ -1,34 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "IMemtrack"
-
-package: "android.hardware.memtrack"
-
-import: "android.hardware.memtrack@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- api: {
- name: "getMemory"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::memtrack::V1_0::MemtrackStatus"
- }
- return_type_hidl: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::memtrack::V1_0::MemtrackRecord"
- }
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::memtrack::V1_0::MemtrackType"
- }
- }
-
-}
diff --git a/memtrack/1.0/vts/functional/Android.bp b/memtrack/1.0/vts/functional/Android.bp
index b3e560a..27781af 100644
--- a/memtrack/1.0/vts/functional/Android.bp
+++ b/memtrack/1.0/vts/functional/Android.bp
@@ -15,26 +15,20 @@
//
cc_test {
- name: "memtrack_hidl_hal_test",
- gtest: true,
- srcs: ["memtrack_hidl_hal_test.cpp"],
+ name: "VtsHalMemtrackV1_0TargetTest",
+ srcs: ["VtsHalMemtrackV1_0TargetTest.cpp"],
shared_libs: [
"libbase",
"liblog",
"libcutils",
"libhardware",
"libhidlbase",
- "libhwbinder",
"libutils",
"android.hardware.memtrack@1.0",
],
- static_libs: ["libgtest"],
+ static_libs: ["VtsHalHidlTargetBaseTest"],
cflags: [
- "--coverage",
"-O0",
"-g",
- ],
- ldflags: [
- "--coverage"
]
}
diff --git a/memtrack/1.0/vts/functional/memtrack_hidl_hal_test.cpp b/memtrack/1.0/vts/functional/VtsHalMemtrackV1_0TargetTest.cpp
similarity index 96%
rename from memtrack/1.0/vts/functional/memtrack_hidl_hal_test.cpp
rename to memtrack/1.0/vts/functional/VtsHalMemtrackV1_0TargetTest.cpp
index a4b4fa9..1113f42 100644
--- a/memtrack/1.0/vts/functional/memtrack_hidl_hal_test.cpp
+++ b/memtrack/1.0/vts/functional/VtsHalMemtrackV1_0TargetTest.cpp
@@ -18,7 +18,7 @@
#include <android-base/logging.h>
#include <android/hardware/memtrack/1.0/IMemtrack.h>
-#include <gtest/gtest.h>
+#include <VtsHalHidlTargetBaseTest.h>
#include <algorithm>
#include <vector>
@@ -34,10 +34,10 @@
using std::vector;
using std::count_if;
-class MemtrackHidlTest : public ::testing::Test {
+class MemtrackHidlTest : public ::testing::VtsHalHidlTargetBaseTest {
public:
virtual void SetUp() override {
- memtrack = IMemtrack::getService();
+ memtrack = ::testing::VtsHalHidlTargetBaseTest::getService<IMemtrack>();
ASSERT_NE(memtrack, nullptr);
}
diff --git a/memtrack/1.0/vts/types.vts b/memtrack/1.0/vts/types.vts
deleted file mode 100644
index bec090f..0000000
--- a/memtrack/1.0/vts/types.vts
+++ /dev/null
@@ -1,121 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "types"
-
-package: "android.hardware.memtrack"
-
-
-attribute: {
- name: "::android::hardware::memtrack::V1_0::MemtrackFlag"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "SMAPS_ACCOUNTED"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "SMAPS_UNACCOUNTED"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "SHARED"
- scalar_value: {
- uint32_t: 8
- }
- enumerator: "SHARED_PSS"
- scalar_value: {
- uint32_t: 16
- }
- enumerator: "PRIVATE"
- scalar_value: {
- uint32_t: 32
- }
- enumerator: "SYSTEM"
- scalar_value: {
- uint32_t: 64
- }
- enumerator: "DEDICATED"
- scalar_value: {
- uint32_t: 128
- }
- enumerator: "NONSECURE"
- scalar_value: {
- uint32_t: 256
- }
- enumerator: "SECURE"
- scalar_value: {
- uint32_t: 512
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::memtrack::V1_0::MemtrackType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "OTHER"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "GL"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "GRAPHICS"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "MULTIMEDIA"
- scalar_value: {
- uint32_t: 3
- }
- enumerator: "CAMERA"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "NUM_TYPES"
- scalar_value: {
- uint32_t: 5
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::memtrack::V1_0::MemtrackStatus"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "SUCCESS"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "MEMORY_TRACKING_NOT_SUPPORTED"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "TYPE_NOT_SUPPORTED"
- scalar_value: {
- uint32_t: 2
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::memtrack::V1_0::MemtrackRecord"
- type: TYPE_STRUCT
- struct_value: {
- name: "sizeInBytes"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- struct_value: {
- name: "flags"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
-}
-
diff --git a/nfc/1.0/default/Android.bp b/nfc/1.0/default/Android.bp
index 02f5664..051ca54 100644
--- a/nfc/1.0/default/Android.bp
+++ b/nfc/1.0/default/Android.bp
@@ -7,7 +7,6 @@
"liblog",
"libcutils",
"libhardware",
- "libhwbinder",
"libbase",
"libcutils",
"libutils",
diff --git a/nfc/1.0/default/Android.mk b/nfc/1.0/default/Android.mk
index fbb340f..2e1f17f 100644
--- a/nfc/1.0/default/Android.mk
+++ b/nfc/1.0/default/Android.mk
@@ -18,7 +18,6 @@
libhardware \
LOCAL_SHARED_LIBRARIES += \
- libhwbinder \
libhidlbase \
libhidltransport \
android.hardware.nfc@1.0 \
diff --git a/nfc/1.0/default/Nfc.cpp b/nfc/1.0/default/Nfc.cpp
index 3bd5e41..c610406 100644
--- a/nfc/1.0/default/Nfc.cpp
+++ b/nfc/1.0/default/Nfc.cpp
@@ -14,12 +14,14 @@
sp<INfcClientCallback> Nfc::mCallback = NULL;
-Nfc::Nfc(nfc_nci_device_t* device) : mDevice(device) {
+Nfc::Nfc(nfc_nci_device_t* device) : mDevice(device),
+ mDeathRecipient(new NfcDeathRecipient(this)) {
}
// Methods from ::android::hardware::nfc::V1_0::INfc follow.
::android::hardware::Return<NfcStatus> Nfc::open(const sp<INfcClientCallback>& clientCallback) {
mCallback = clientCallback;
+ mCallback->linkToDeath(mDeathRecipient, 0 /*cookie*/);
int ret = mDevice->open(mDevice, eventCallback, dataCallback);
return ret == 0 ? NfcStatus::OK : NfcStatus::FAILED;
}
@@ -39,6 +41,7 @@
}
::android::hardware::Return<NfcStatus> Nfc::close() {
+ mCallback->unlinkToDeath(mDeathRecipient);
return mDevice->close(mDevice) ? NfcStatus::FAILED : NfcStatus::OK;
}
diff --git a/nfc/1.0/default/Nfc.h b/nfc/1.0/default/Nfc.h
index 13004a5..d8787fd 100644
--- a/nfc/1.0/default/Nfc.h
+++ b/nfc/1.0/default/Nfc.h
@@ -19,6 +19,16 @@
using ::android::hardware::hidl_string;
using ::android::sp;
+struct NfcDeathRecipient : hidl_death_recipient {
+ NfcDeathRecipient(const sp<INfc> nfc) : mNfc(nfc) {
+ }
+
+ virtual void serviceDied(uint64_t /*cookie*/, const wp<::android::hidl::base::V1_0::IBase>& /*who*/) {
+ mNfc->close();
+ }
+ sp<INfc> mNfc;
+};
+
struct Nfc : public INfc {
Nfc(nfc_nci_device_t* device);
::android::hardware::Return<NfcStatus> open(const sp<INfcClientCallback>& clientCallback) override;
@@ -31,21 +41,28 @@
static void eventCallback(uint8_t event, uint8_t status) {
if (mCallback != nullptr) {
- mCallback->sendEvent(
+ auto ret = mCallback->sendEvent(
(::android::hardware::nfc::V1_0::NfcEvent) event,
(::android::hardware::nfc::V1_0::NfcStatus) status);
+ if (!ret.isOk()) {
+ ALOGW("Failed to call back into NFC process.");
+ }
}
}
static void dataCallback(uint16_t data_len, uint8_t* p_data) {
hidl_vec<uint8_t> data;
data.setToExternal(p_data, data_len);
if (mCallback != nullptr) {
- mCallback->sendData(data);
+ auto ret = mCallback->sendData(data);
+ if (!ret.isOk()) {
+ ALOGW("Failed to call back into NFC process.");
+ }
}
}
private:
static sp<INfcClientCallback> mCallback;
const nfc_nci_device_t* mDevice;
+ sp<NfcDeathRecipient> mDeathRecipient;
};
extern "C" INfc* HIDL_FETCH_INfc(const char* name);
diff --git a/nfc/1.0/vts/Nfc.vts b/nfc/1.0/vts/Nfc.vts
deleted file mode 100644
index 48b2750..0000000
--- a/nfc/1.0/vts/Nfc.vts
+++ /dev/null
@@ -1,133 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "INfc"
-
-package: "android.hardware.nfc"
-
-import: "android.hardware.nfc@1.0::INfcClientCallback"
-import: "android.hardware.nfc@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- api: {
- name: "open"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::nfc::V1_0::NfcStatus"
- }
- arg: {
- type: TYPE_HIDL_CALLBACK
- predefined_type: "::android::hardware::nfc::V1_0::INfcClientCallback"
- }
- callflow: {
- entry: true
- }
- callflow: {
- next: "write"
- next: "coreInitialized"
- next: "prediscover"
- next: "powerCycle"
- next: "controlGranted"
- }
- }
-
- api: {
- name: "write"
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- callflow: {
- next: "write"
- next: "prediscover"
- next: "coreInitialized"
- next: "close"
- next: "powerCycle"
- next: "controlGranted"
- }
- }
-
- api: {
- name: "coreInitialized"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::nfc::V1_0::NfcStatus"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- callflow: {
- next: "write"
- next: "prediscover"
- next: "close"
- }
- }
-
- api: {
- name: "prediscover"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::nfc::V1_0::NfcStatus"
- }
- callflow: {
- next: "write"
- next: "close"
- next: "coreInitialized"
- next: "powerCycle"
- next: "controlGranted"
- }
- }
-
- api: {
- name: "close"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::nfc::V1_0::NfcStatus"
- }
- callflow: {
- exit: true
- }
- }
-
- api: {
- name: "controlGranted"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::nfc::V1_0::NfcStatus"
- }
- callflow: {
- next: "write"
- next: "close"
- next: "prediscover"
- next: "coreInitialized"
- next: "powerCycle"
- }
- }
-
- api: {
- name: "powerCycle"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::nfc::V1_0::NfcStatus"
- }
- callflow: {
- next: "write"
- next: "coreInitialized"
- next: "prediscover"
- next: "controlGranted"
- next: "close"
- }
- }
-
-}
diff --git a/nfc/1.0/vts/NfcClientCallback.vts b/nfc/1.0/vts/NfcClientCallback.vts
deleted file mode 100644
index b06f12b..0000000
--- a/nfc/1.0/vts/NfcClientCallback.vts
+++ /dev/null
@@ -1,34 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "INfcClientCallback"
-
-package: "android.hardware.nfc"
-
-import: "android.hardware.nfc@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- api: {
- name: "sendEvent"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::nfc::V1_0::NfcEvent"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::nfc::V1_0::NfcStatus"
- }
- }
-
- api: {
- name: "sendData"
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
-}
diff --git a/nfc/1.0/vts/functional/Android.bp b/nfc/1.0/vts/functional/Android.bp
index 0f9eb3d..0ab8dc5 100644
--- a/nfc/1.0/vts/functional/Android.bp
+++ b/nfc/1.0/vts/functional/Android.bp
@@ -15,21 +15,19 @@
//
cc_test {
- name: "nfc_hidl_hal_test",
- gtest: true,
- srcs: ["nfc_hidl_hal_test.cpp"],
+ name: "VtsHalNfcV1_0TargetTest",
+ srcs: ["VtsHalNfcV1_0TargetTest.cpp"],
shared_libs: [
"libbase",
"liblog",
"libcutils",
"libhidlbase",
"libhidltransport",
- "libhwbinder",
"libnativehelper",
"libutils",
"android.hardware.nfc@1.0",
],
- static_libs: ["libgtest"],
+ static_libs: ["VtsHalHidlTargetBaseTest"],
cflags: [
"-O0",
"-g",
diff --git a/nfc/1.0/vts/functional/nfc_hidl_hal_test.cpp b/nfc/1.0/vts/functional/VtsHalNfcV1_0TargetTest.cpp
similarity index 98%
rename from nfc/1.0/vts/functional/nfc_hidl_hal_test.cpp
rename to nfc/1.0/vts/functional/VtsHalNfcV1_0TargetTest.cpp
index a0c5f1a..5b6089d 100644
--- a/nfc/1.0/vts/functional/nfc_hidl_hal_test.cpp
+++ b/nfc/1.0/vts/functional/VtsHalNfcV1_0TargetTest.cpp
@@ -22,7 +22,7 @@
#include <android/hardware/nfc/1.0/types.h>
#include <hardware/nfc.h>
-#include <gtest/gtest.h>
+#include <VtsHalHidlTargetBaseTest.h>
#include <chrono>
#include <condition_variable>
#include <mutex>
@@ -56,10 +56,10 @@
#define TIMEOUT_PERIOD 5
// The main test class for NFC HIDL HAL.
-class NfcHidlTest : public ::testing::Test {
+class NfcHidlTest : public ::testing::VtsHalHidlTargetBaseTest {
public:
virtual void SetUp() override {
- nfc_ = INfc::getService();
+ nfc_ = ::testing::VtsHalHidlTargetBaseTest::getService<INfc>();
ASSERT_NE(nfc_, nullptr);
nfc_cb_ = new NfcClientCallback(*this);
diff --git a/nfc/1.0/vts/types.vts b/nfc/1.0/vts/types.vts
deleted file mode 100644
index e43db1e..0000000
--- a/nfc/1.0/vts/types.vts
+++ /dev/null
@@ -1,73 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "types"
-
-package: "android.hardware.nfc"
-
-
-attribute: {
- name: "::android::hardware::nfc::V1_0::NfcEvent"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "OPEN_CPLT"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "CLOSE_CPLT"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "POST_INIT_CPLT"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "PRE_DISCOVER_CPLT"
- scalar_value: {
- uint32_t: 3
- }
- enumerator: "REQUEST_CONTROL"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "RELEASE_CONTROL"
- scalar_value: {
- uint32_t: 5
- }
- enumerator: "ERROR"
- scalar_value: {
- uint32_t: 6
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::nfc::V1_0::NfcStatus"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "OK"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "FAILED"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "ERR_TRANSPORT"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "ERR_CMD_TIMEOUT"
- scalar_value: {
- uint32_t: 3
- }
- enumerator: "REFUSED"
- scalar_value: {
- uint32_t: 4
- }
- }
-}
-
diff --git a/power/1.0/default/Android.bp b/power/1.0/default/Android.bp
index 71daaeb..b3876df 100644
--- a/power/1.0/default/Android.bp
+++ b/power/1.0/default/Android.bp
@@ -28,7 +28,6 @@
"libhardware",
"libhidlbase",
"libhidltransport",
- "libhwbinder",
"libutils",
"android.hardware.power@1.0",
],
@@ -54,7 +53,6 @@
"libhardware",
"libhidlbase",
"libhidltransport",
- "libhwbinder",
"android.hardware.power@1.0",
],
diff --git a/power/1.0/vts/Power.vts b/power/1.0/vts/Power.vts
deleted file mode 100644
index 4d3d4ff..0000000
--- a/power/1.0/vts/Power.vts
+++ /dev/null
@@ -1,58 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "IPower"
-
-package: "android.hardware.power"
-
-import: "android.hardware.power@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- api: {
- name: "setInteractive"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "powerHint"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::power::V1_0::PowerHint"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "setFeature"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::power::V1_0::Feature"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "getPlatformLowPowerStats"
- return_type_hidl: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::power::V1_0::PowerStatePlatformSleepState"
- }
- }
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::power::V1_0::Status"
- }
- }
-
-}
diff --git a/power/1.0/vts/functional/Android.bp b/power/1.0/vts/functional/Android.bp
index 81dc316..984f9e3 100644
--- a/power/1.0/vts/functional/Android.bp
+++ b/power/1.0/vts/functional/Android.bp
@@ -15,27 +15,21 @@
//
cc_test {
- name: "power_hidl_hal_test",
- gtest: true,
- srcs: ["power_hidl_hal_test.cpp"],
+ name: "VtsHalPowerV1_0TargetTest",
+ srcs: ["VtsHalPowerV1_0TargetTest.cpp"],
shared_libs: [
"libbase",
"liblog",
"libcutils",
"libhidlbase",
"libhidltransport",
- "libhwbinder",
"libnativehelper",
"libutils",
"android.hardware.power@1.0",
],
- static_libs: ["libgtest"],
+ static_libs: ["VtsHalHidlTargetBaseTest"],
cflags: [
- "--coverage",
"-O0",
"-g",
- ],
- ldflags: [
- "--coverage"
]
}
diff --git a/power/1.0/vts/functional/VtsHalPowerV1_0TargetTest.cpp b/power/1.0/vts/functional/VtsHalPowerV1_0TargetTest.cpp
new file mode 100644
index 0000000..757367b
--- /dev/null
+++ b/power/1.0/vts/functional/VtsHalPowerV1_0TargetTest.cpp
@@ -0,0 +1,183 @@
+/*
+ * Copyright (C) 2016 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.
+ */
+
+#define LOG_TAG "power_hidl_hal_test"
+#include <android-base/logging.h>
+
+#include <cutils/properties.h>
+
+#include <android-base/unique_fd.h>
+#include <android/hardware/power/1.0/IPower.h>
+
+#include <VtsHalHidlTargetBaseTest.h>
+
+#include <algorithm>
+
+using ::android::hardware::power::V1_0::IPower;
+using ::android::hardware::power::V1_0::Feature;
+using ::android::hardware::power::V1_0::PowerHint;
+using ::android::hardware::power::V1_0::PowerStatePlatformSleepState;
+using ::android::hardware::power::V1_0::Status;
+using ::android::hardware::hidl_vec;
+using ::android::hardware::Return;
+using ::android::sp;
+using ::android::base::unique_fd;
+
+using std::vector;
+
+#define CPU_GOVERNOR_PATH \
+ "/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor"
+#define AVAILABLE_GOVERNORS_PATH \
+ "/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors"
+
+class PowerHidlTest : public ::testing::VtsHalHidlTargetBaseTest {
+ public:
+ virtual void SetUp() override {
+ power = ::testing::VtsHalHidlTargetBaseTest::getService<IPower>();
+ ASSERT_NE(power, nullptr);
+ }
+
+ virtual void TearDown() override {}
+
+ sp<IPower> power;
+};
+
+// Sanity check Power::setInteractive.
+TEST_F(PowerHidlTest, SetInteractive) {
+ Return<void> ret;
+
+ ret = power->setInteractive(true);
+ ASSERT_TRUE(ret.isOk());
+
+ ret = power->setInteractive(false);
+ ASSERT_TRUE(ret.isOk());
+}
+
+// Test Power::setInteractive and Power::powerHint(Launch)
+// with each available CPU governor, if available
+TEST_F(PowerHidlTest, TryDifferentGovernors) {
+ Return<void> ret;
+
+ unique_fd fd1(open(CPU_GOVERNOR_PATH, O_RDWR));
+ unique_fd fd2(open(AVAILABLE_GOVERNORS_PATH, O_RDONLY));
+ if (fd1 < 0 || fd2 < 0) {
+ // Files don't exist, so skip the rest of the test case
+ SUCCEED();
+ }
+
+ char old_governor[80];
+ ASSERT_LE(0, read(fd1, old_governor, 80));
+
+ char governors[1024];
+ unsigned len = read(fd2, governors, 1024);
+ ASSERT_LE(0, len);
+ governors[len] = '\0';
+
+ char *saveptr;
+ char *name = strtok_r(governors, " \n", &saveptr);
+ while (name) {
+ ASSERT_LE(0, write(fd1, name, strlen(name)));
+ ret = power->setInteractive(true);
+ ASSERT_TRUE(ret.isOk());
+
+ ret = power->setInteractive(false);
+ ASSERT_TRUE(ret.isOk());
+
+ ret = power->setInteractive(false);
+ ASSERT_TRUE(ret.isOk());
+
+ power->powerHint(PowerHint::LAUNCH, 1);
+ power->powerHint(PowerHint::LAUNCH, 0);
+
+ name = strtok_r(NULL, " \n", &saveptr);
+ }
+
+ ASSERT_LE(0, write(fd1, old_governor, strlen(old_governor)));
+}
+
+// Sanity check Power::powerHint on good and bad inputs.
+TEST_F(PowerHidlTest, PowerHint) {
+ PowerHint badHint = static_cast<PowerHint>(0xA);
+ auto hints = {PowerHint::VSYNC, PowerHint::INTERACTION,
+ PowerHint::VIDEO_ENCODE, PowerHint::VIDEO_DECODE,
+ PowerHint::LOW_POWER, PowerHint::SUSTAINED_PERFORMANCE,
+ PowerHint::VR_MODE, PowerHint::LAUNCH,
+ badHint};
+ Return<void> ret;
+ for (auto hint : hints) {
+ ret = power->powerHint(hint, 30000);
+ ASSERT_TRUE(ret.isOk());
+
+ ret = power->powerHint(hint, 0);
+ ASSERT_TRUE(ret.isOk());
+ }
+
+ // Turning these hints on in different orders triggers different code paths,
+ // so iterate over possible orderings.
+ std::vector<PowerHint> hints2 = {PowerHint::LAUNCH, PowerHint::VR_MODE,
+ PowerHint::SUSTAINED_PERFORMANCE,
+ PowerHint::INTERACTION};
+ auto compareHints = [](PowerHint l, PowerHint r) {
+ return static_cast<uint32_t>(l) < static_cast<uint32_t>(r);
+ };
+ std::sort(hints2.begin(), hints2.end(), compareHints);
+ do {
+ for (auto iter = hints2.begin(); iter != hints2.end(); iter++) {
+ ret = power->powerHint(*iter, 0);
+ ASSERT_TRUE(ret.isOk());
+ }
+ for (auto iter = hints2.begin(); iter != hints2.end(); iter++) {
+ ret = power->powerHint(*iter, 30000);
+ ASSERT_TRUE(ret.isOk());
+ }
+ } while (std::next_permutation(hints2.begin(), hints2.end(), compareHints));
+}
+
+// Sanity check Power::setFeature() on good and bad inputs.
+TEST_F(PowerHidlTest, SetFeature) {
+ Return<void> ret;
+ ret = power->setFeature(Feature::POWER_FEATURE_DOUBLE_TAP_TO_WAKE, true);
+ ASSERT_TRUE(ret.isOk());
+ ret = power->setFeature(Feature::POWER_FEATURE_DOUBLE_TAP_TO_WAKE, false);
+ ASSERT_TRUE(ret.isOk());
+
+ Feature badFeature = static_cast<Feature>(0x2);
+ ret = power->setFeature(badFeature, true);
+ ASSERT_TRUE(ret.isOk());
+ ret = power->setFeature(badFeature, false);
+ ASSERT_TRUE(ret.isOk());
+}
+
+// Sanity check Power::getPlatformLowPowerStats().
+TEST_F(PowerHidlTest, GetPlatformLowPowerStats) {
+ hidl_vec<PowerStatePlatformSleepState> vec;
+ Status s;
+ auto cb = [&vec, &s](hidl_vec<PowerStatePlatformSleepState> states,
+ Status status) {
+ vec = states;
+ s = status;
+ };
+ Return<void> ret = power->getPlatformLowPowerStats(cb);
+ ASSERT_TRUE(ret.isOk());
+ ASSERT_TRUE(s == Status::SUCCESS || s == Status::FILESYSTEM_ERROR);
+}
+
+int main(int argc, char **argv) {
+ ::testing::InitGoogleTest(&argc, argv);
+ int status = RUN_ALL_TESTS();
+ LOG(INFO) << "Test result = " << status;
+ return status;
+}
diff --git a/power/1.0/vts/functional/power_hidl_hal_test.cpp b/power/1.0/vts/functional/power_hidl_hal_test.cpp
deleted file mode 100644
index b114944..0000000
--- a/power/1.0/vts/functional/power_hidl_hal_test.cpp
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright (C) 2016 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.
- */
-
-#define LOG_TAG "power_hidl_hal_test"
-#include <android-base/logging.h>
-
-#include <cutils/properties.h>
-
-#include <android/hardware/power/1.0/IPower.h>
-
-#include <gtest/gtest.h>
-
-using ::android::hardware::power::V1_0::IPower;
-using ::android::hardware::power::V1_0::Feature;
-using ::android::hardware::power::V1_0::PowerHint;
-using ::android::hardware::power::V1_0::PowerStatePlatformSleepState;
-using ::android::hardware::power::V1_0::Status;
-using ::android::hardware::hidl_vec;
-using ::android::hardware::Return;
-using ::android::sp;
-
-class PowerHidlTest : public ::testing::Test {
- public:
- virtual void SetUp() override {
- power = IPower::getService();
- ASSERT_NE(power, nullptr);
- }
-
- virtual void TearDown() override {}
-
- sp<IPower> power;
-};
-
-// Sanity check Power::setInteractive.
-TEST_F(PowerHidlTest, SetInteractive) {
- Return<void> ret;
-
- ret = power->setInteractive(true);
- ASSERT_TRUE(ret.isOk());
-
- ret = power->setInteractive(false);
- ASSERT_TRUE(ret.isOk());
-}
-
-// Sanity check Power::powerHint on good and bad inputs.
-TEST_F(PowerHidlTest, PowerHint) {
- PowerHint badHint = static_cast<PowerHint>(0xA);
- auto hints = {PowerHint::VSYNC, PowerHint::INTERACTION,
- PowerHint::VIDEO_ENCODE, PowerHint::VIDEO_DECODE,
- PowerHint::LOW_POWER, PowerHint::SUSTAINED_PERFORMANCE,
- PowerHint::VR_MODE, PowerHint::LAUNCH,
- badHint};
- Return<void> ret;
- for (auto hint : hints) {
- ret = power->powerHint(hint, 1);
- ASSERT_TRUE(ret.isOk());
-
- ret = power->powerHint(hint, 0);
- ASSERT_TRUE(ret.isOk());
- }
-}
-
-// Sanity check Power::setFeature() on good and bad inputs.
-TEST_F(PowerHidlTest, SetFeature) {
- Return<void> ret;
- ret = power->setFeature(Feature::POWER_FEATURE_DOUBLE_TAP_TO_WAKE, true);
- ASSERT_TRUE(ret.isOk());
- ret = power->setFeature(Feature::POWER_FEATURE_DOUBLE_TAP_TO_WAKE, false);
- ASSERT_TRUE(ret.isOk());
-
- Feature badFeature = static_cast<Feature>(0x2);
- ret = power->setFeature(badFeature, true);
- ASSERT_TRUE(ret.isOk());
- ret = power->setFeature(badFeature, false);
- ASSERT_TRUE(ret.isOk());
-}
-
-// Sanity check Power::getPlatformLowPowerStats().
-TEST_F(PowerHidlTest, GetPlatformLowPowerStats) {
- hidl_vec<PowerStatePlatformSleepState> vec;
- Status s;
- auto cb = [&vec, &s](hidl_vec<PowerStatePlatformSleepState> states,
- Status status) {
- vec = states;
- s = status;
- };
- Return<void> ret = power->getPlatformLowPowerStats(cb);
- ASSERT_TRUE(ret.isOk());
- ASSERT_TRUE(s == Status::SUCCESS || s == Status::FILESYSTEM_ERROR);
-}
-
-int main(int argc, char **argv) {
- ::testing::InitGoogleTest(&argc, argv);
- int status = RUN_ALL_TESTS();
- LOG(INFO) << "Test result = " << status;
- return status;
-}
diff --git a/power/1.0/vts/types.vts b/power/1.0/vts/types.vts
deleted file mode 100644
index 5724946..0000000
--- a/power/1.0/vts/types.vts
+++ /dev/null
@@ -1,129 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "types"
-
-package: "android.hardware.power"
-
-
-attribute: {
- name: "::android::hardware::power::V1_0::PowerHint"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "VSYNC"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "INTERACTION"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "VIDEO_ENCODE"
- scalar_value: {
- uint32_t: 3
- }
- enumerator: "VIDEO_DECODE"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "LOW_POWER"
- scalar_value: {
- uint32_t: 5
- }
- enumerator: "SUSTAINED_PERFORMANCE"
- scalar_value: {
- uint32_t: 6
- }
- enumerator: "VR_MODE"
- scalar_value: {
- uint32_t: 7
- }
- enumerator: "LAUNCH"
- scalar_value: {
- uint32_t: 8
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::power::V1_0::Feature"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "POWER_FEATURE_DOUBLE_TAP_TO_WAKE"
- scalar_value: {
- uint32_t: 1
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::power::V1_0::Status"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "SUCCESS"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "FILESYSTEM_ERROR"
- scalar_value: {
- uint32_t: 1
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::power::V1_0::PowerStateVoter"
- type: TYPE_STRUCT
- struct_value: {
- name: "name"
- type: TYPE_STRING
- }
- struct_value: {
- name: "totalTimeInMsecVotedForSinceBoot"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- struct_value: {
- name: "totalNumberOfTimesVotedSinceBoot"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::power::V1_0::PowerStatePlatformSleepState"
- type: TYPE_STRUCT
- struct_value: {
- name: "name"
- type: TYPE_STRING
- }
- struct_value: {
- name: "residencyInMsecSinceBoot"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- struct_value: {
- name: "totalTransitions"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- struct_value: {
- name: "supportedOnlyInSuspend"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "voters"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::power::V1_0::PowerStateVoter"
- }
- }
-}
-
diff --git a/radio/1.0/Android.mk b/radio/1.0/Android.mk
index 7f4c7d4..94072fb 100644
--- a/radio/1.0/Android.mk
+++ b/radio/1.0/Android.mk
@@ -929,6 +929,25 @@
LOCAL_GENERATED_SOURCES += $(GEN)
#
+# Build types.hal (CellIdentity)
+#
+GEN := $(intermediates)/android/hardware/radio/V1_0/CellIdentity.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.radio@1.0::types.CellIdentity
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
# Build types.hal (CellIdentityCdma)
#
GEN := $(intermediates)/android/hardware/radio/V1_0/CellIdentityCdma.java
@@ -3944,6 +3963,25 @@
LOCAL_GENERATED_SOURCES += $(GEN)
#
+# Build types.hal (CellIdentity)
+#
+GEN := $(intermediates)/android/hardware/radio/V1_0/CellIdentity.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.radio@1.0::types.CellIdentity
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
# Build types.hal (CellIdentityCdma)
#
GEN := $(intermediates)/android/hardware/radio/V1_0/CellIdentityCdma.java
diff --git a/radio/1.0/IRadio.hal b/radio/1.0/IRadio.hal
index 04d93db..a8c9d93 100644
--- a/radio/1.0/IRadio.hal
+++ b/radio/1.0/IRadio.hal
@@ -378,13 +378,18 @@
* @param radioTechnology Radio technology to use.
* @param dataProfileInfo data profile info.
* @param modemCognitive Indicating this profile was sent to the modem through setDataProfile
- * earlier.
+ * earlier.
* @param roamingAllowed Indicating data roaming is allowed or not by the user.
+ * @param isRoaming Indicating the device is roaming or not. The 'protocol' parameter in the old
+ * RIL API must be filled accordingly based on the roaming condition.
+ * Note this is for backward compatibility with the old radio modem. The modem
+ * must not use this param for any other reason.
*
* Response function is IRadioResponse.setupDataCallResponse()
*/
oneway setupDataCall(int32_t serial, RadioTechnology radioTechnology,
- DataProfileInfo dataProfileInfo, bool modemCognitive, bool roamingAllowed);
+ DataProfileInfo dataProfileInfo, bool modemCognitive, bool roamingAllowed,
+ bool isRoaming);
/*
* Request ICC I/O operation.
@@ -726,26 +731,6 @@
oneway getDataCallList(int32_t serial);
/*
- * This request is reserved for OEM-specific uses. It passes raw byte arrays back and forth.
- *
- * @param serial Serial number of request.
- * @param data data passed as raw bytes to oem
- *
- * Response function is IRadioResponse.sendOemRadioRequestRawResponse()
- */
- oneway sendOemRadioRequestRaw(int32_t serial, vec<uint8_t> data);
-
- /*
- * This request is reserved for OEM-specific uses. It passes strings back and forth.
- *
- * @param serial Serial number of request.
- * @param data data passed as strings to oem
- *
- * Response function is IRadioResponse.sendOemRadioRequestStringsResponse()
- */
- oneway sendOemRadioRequestStrings(int32_t serial, vec<string> data);
-
- /*
* Indicates the current state of the screen. When the screen is off, the
* Radio must notify the baseband to suppress certain notifications (eg,
* signal strength and changes in LAC/CID or BID/SID/NID/latitude/longitude)
@@ -1159,7 +1144,7 @@
oneway reportSmsMemoryStatus(int32_t serial, bool available);
/*
- * Indicates that the StkSerivce is running and is
+ * Indicates that the StkService is running and is
* ready to receive unsolicited stkXXXXX commands.
*
* @param serial Serial number of request.
@@ -1261,13 +1246,17 @@
*
* @param serial Serial number of request.
* @param dataProfileInfo data profile containing APN settings
- * @param modemCognitive is indicating the data profile was sent to the modem through
- * setDataProfile earlier.
+ * @param modemCognitive indicating the data profile was sent to the modem through
+ * setDataProfile earlier.
+ * @param isRoaming Indicating the device is roaming or not. The 'protocol' parameter in the old
+ * RIL_InitialAttachApn must be filled accordingly based on the roaming
+ * condition. Note this is for backward compatibility with the old radio modem.
+ * The modem must not use this param for any other reason.
*
* Response callback is IRadioResponse.setInitialAttachApnResponse()
*/
oneway setInitialAttachApn(int32_t serial, DataProfileInfo dataProfileInfo,
- bool modemCognitive);
+ bool modemCognitive, bool isRoaming);
/*
* Request current IMS registration state
@@ -1433,10 +1422,14 @@
*
* @param serial Serial number of request.
* @param profiles Array of DataProfiles to set.
+ * @param isRoaming Indicating the device is roaming or not. The 'protocol' parameter in the old
+ * RIL API RIL_DataProfileInfo must be filled accordingly based on the
+ * roaming condition. Note this is for backward compatibility with the old
+ * radio modem. The modem must not use this param for any other reason.
*
* Response callback is IRadioResponse.setDataProfileResponse()
*/
- oneway setDataProfile(int32_t serial, vec<DataProfileInfo> profiles);
+ oneway setDataProfile(int32_t serial, vec<DataProfileInfo> profiles, bool isRoaming);
/*
* Device is shutting down. All further commands are ignored
@@ -1449,7 +1442,7 @@
oneway requestShutdown(int32_t serial);
/*
- * Used to get phone radio capablility.
+ * Used to get phone radio capability.
*
* @param serial Serial number of request.
*
@@ -1572,6 +1565,20 @@
oneway setIndicationFilter(int32_t serial, bitfield<IndicationFilter> indicationFilter);
/*
+ * Set SIM card power state.
+ * Request is equivalent to inserting or removing the card.
+ *
+ * The radio modem must generate IRadioIndication.simStatusChanged() as if the SIM had been
+ * inserted or removed.
+ *
+ * @param serial Serial number of request
+ * @param powerUp True if powering up the sim card
+ *
+ * Response callback is IRadioResponse.setSimCardPowerResponse()
+ */
+ oneway setSimCardPower(int32_t serial, bool powerUp);
+
+ /*
* When response type received from a radio indication or radio response is
* RadioIndicationType:UNSOLICITED_ACK_EXP or RadioResponseType:SOLICITED_ACK_EXP respectively,
* acknowledge the receipt of those messages by sending responseAcknowledgement().
diff --git a/radio/1.0/IRadioIndication.hal b/radio/1.0/IRadioIndication.hal
index 81ac13a..0b95821 100644
--- a/radio/1.0/IRadioIndication.hal
+++ b/radio/1.0/IRadioIndication.hal
@@ -293,14 +293,6 @@
oneway cdmaInfoRec(RadioIndicationType type, CdmaInformationRecords records);
/*
- * This is for OEM specific use.
- *
- * @param type Type of radio indication
- * @param data data passed as raw bytes
- */
- oneway oemHookRaw(RadioIndicationType type, vec<uint8_t> data);
-
- /*
* Indicates that nework doesn't have in-band information, need to
* play out-band tone.
*
diff --git a/radio/1.0/IRadioResponse.hal b/radio/1.0/IRadioResponse.hal
index dafd264..11a1d03 100644
--- a/radio/1.0/IRadioResponse.hal
+++ b/radio/1.0/IRadioResponse.hal
@@ -923,30 +923,6 @@
/*
* @param info Response info struct containing response type, serial no. and error
- * @param data data returned by oem
- *
- * Valid errors returned:
- * RadioError:NONE
- * RadioError:RADIO_NOT_AVAILABLE
- * RadioError:INVALID_ARGUMENTS
- * RadioError:OEM_ERROR_X
- */
- oneway sendOemRilRequestRawResponse(RadioResponseInfo info, vec<uint8_t> data);
-
- /*
- * @param info Response info struct containing response type, serial no. and error
- * @param data data returned by oem
- *
- * Valid errors returned:
- * RadioError:NONE
- * RadioError:RADIO_NOT_AVAILABLE
- * RadioError:INVALID_ARGUMENTS
- * RadioError:OEM_ERROR_X
- */
- oneway sendOemRilRequestStringsResponse(RadioResponseInfo info, vec<string> data);
-
- /*
- * @param info Response info struct containing response type, serial no. and error
*
* Valid errors returned:
* RadioError:NONE
@@ -1968,6 +1944,18 @@
oneway setIndicationFilterResponse(RadioResponseInfo info);
/*
+ * @param info Response info struct containing response type, serial no. and error
+ *
+ * Valid errors returned:
+ * RadioError:NONE
+ * RadioError:RADIO_NOT_AVAILABLE
+ * RadioError:REQUEST_NOT_SUPPORTED
+ * RadioError:SIM_ABSENT
+ * RadioError:INVALID_ARGUMENTS
+ */
+ oneway setSimCardPowerResponse(RadioResponseInfo info);
+
+ /*
* Acknowledge the receipt of radio request sent to the vendor. This must be sent only for
* radio request which take long time to respond.
* For more details, refer https://source.android.com/devices/tech/connect/ril.html
diff --git a/radio/1.0/types.hal b/radio/1.0/types.hal
index 91030ef..7c1d143 100644
--- a/radio/1.0/types.hal
+++ b/radio/1.0/types.hal
@@ -499,21 +499,21 @@
* "managed roaming"
*/
enum RegState : int32_t {
- NOT_REG_MT_NOT_SEARCHING_OP, // Not registered, MT is not currently searching
+ NOT_REG_MT_NOT_SEARCHING_OP = 0, // Not registered, MT is not currently searching
// a new operator to register
- REG_HOME, // Registered, home network
- NOT_REG_MT_SEARCHING_OP, // Not registered, but MT is currently searching
+ REG_HOME = 1, // Registered, home network
+ NOT_REG_MT_SEARCHING_OP = 2, // Not registered, but MT is currently searching
// a new operator to register
- REG_DENIED, // Registration denied
- UNKNOWN, // Unknown
- REG_ROAMING, // Registered, roaming
- NOT_REG_MT_NOT_SEARCHING_OP_EM, // Same as NOT_REG_MT_NOT_SEARCHING_OP but indicates that
+ REG_DENIED = 3, // Registration denied
+ UNKNOWN = 4, // Unknown
+ REG_ROAMING = 5, // Registered, roaming
+ NOT_REG_MT_NOT_SEARCHING_OP_EM = 10, // Same as NOT_REG_MT_NOT_SEARCHING_OP but indicates that
// emergency calls are enabled.
- NOT_REG_MT_SEARCHING_OP_EM, // Same as NOT_REG_MT_SEARCHING_OP but indicates that
+ NOT_REG_MT_SEARCHING_OP_EM = 12, // Same as NOT_REG_MT_SEARCHING_OP but indicates that
// emergency calls are enabled.
- REG_DENIED_EM, // Same as REG_DENIED but indicates that
+ REG_DENIED_EM = 13, // Same as REG_DENIED but indicates that
// emergency calls are enabled.
- UNKNOWN_EM, // Same as UNKNOWN but indicates that
+ UNKNOWN_EM = 14, // Same as UNKNOWN but indicates that
// emergency calls are enabled.
};
@@ -815,6 +815,7 @@
};
enum CellInfoType : int32_t {
+ NONE = 0,
GSM = 1,
CDMA = 2,
LTE = 3,
@@ -1281,11 +1282,11 @@
};
struct SetupDataCallResult {
- int32_t status; // A RadioDataCallFailCause, 0 which is
- // RadioDataCallFailCause:NONE if no error
- int32_t suggestedRetryTime; // If status != 0, this fields indicates the suggested
- // retry back-off timer value RIL wants to override the
- // one pre-configured in FW.
+ DataCallFailCause status; // Data call fail cause. DataCallFailCause.NONE if no
+ // error.
+ int32_t suggestedRetryTime; // If status != DataCallFailCause.NONE, this field
+ // indicates the suggested retry back-off timer value RIL
+ // wants to override the one pre-configured in FW.
// The unit is milliseconds.
// The value < 0 means no value is suggested.
// The value 0 means retry must be done ASAP.
@@ -1296,8 +1297,8 @@
string type; // One of the PDP_type values in TS 27.007 section 10.1.1.
// For example, "IP", "IPV6", "IPV4V6", or "PPP". If
// status is
- // RadioDataCallFailCause:ONLY_SINGLE_BEARER_ALLOWED this
- // is the type supported such as "IP" or "IPV6"
+ // DataCallFailCause.ONLY_SINGLE_BEARER_ALLOWED, this
+ // is the type supported such as "IP" or "IPV6".
string ifname; // The network interface name
string addresses; // A space-delimited list of addresses with optional "/"
// prefix length, e.g., "192.0.1.3" or
@@ -1343,125 +1344,6 @@
// Base64 format, see 3GPP TS 31.102 7.1.2
};
-struct VoiceRegStateResult {
- RegState regState;
- int32_t lac; // LAC if registered on a GSM/WCDMA system or
- // -1 if not.Valid LAC are 0x0000 - 0xffff
- int32_t cid; // CID. if registered on a * GSM/WCDMA or -1 if not
- // Valid CID are 0x00000000 - 0xffffffff
- // In GSM, CID is Cell ID (see TS 27.007) in 16 bits
- // In UMTS, CID is UMTS Cell Identity (see TS 25.331)
- // in 28 bits
- int32_t rat; // indicates the available voice radio technology,
- // valid values as defined by RadioTechnology.
- int32_t baseStationId; // Base Station ID. if registered on a CDMA
- // system or -1 if not. Base Station ID in decimal format
- int32_t baseStationLatitude; // Base Station latitude. if registered on a
- // CDMA system or -1 if not. Base Station latitude is a
- // decimal number as specified in 3GPP2 C.S0005-A v6.0.
- // It is represented in units of 0.25 seconds and ranges
- // from -1296000 to 1296000, both values inclusive
- // (corresponding to a range of -90 to +90 degrees).
- int32_t baseStationLongitude; // Base Station longitude. if registered on a
- // CDMA system or -1 if not. Base Station
- // longitude is a decimal number as specified in
- // 3GPP2 C.S0005-A v6.0. It is represented in
- // units of 0.25 seconds and ranges from -2592000
- // to 2592000, both values inclusive (corresponding
- // to a range of -180 to +180 degrees).
- bool cssSupported; // concurrent services support indicator. if
- // registered on a CDMA system.
- // false - Concurrent services not supported,
- // true - Concurrent services supported
- int32_t systemId; // System ID. if registered on a CDMA system or
- // -1 if not. Valid System ID are 0 - 32767
- int32_t networkId; // Network ID. if registered on a CDMA system or
- // -1 if not. Valid System ID are 0 - 65535
- int32_t roamingIndicator; // TSB-58 Roaming Indicator if registered
- // on a CDMA or EVDO system or -1 if not.
- // Valid values are 0-255.
- int32_t systemIsInPrl; // indicates whether the current system is in the
- // PRL if registered on a CDMA or EVDO system or -1 if
- // not. 0=not in the PRL, 1=in the PRL
- int32_t defaultRoamingIndicator; // default Roaming Indicator from the PRL,
- // if registered on a CDMA or EVDO system or -1 if not.
- // Valid values are 0-255.
- int32_t reasonForDenial; // reasonForDenial if registration state is 3
- // (Registration denied) this is an enumerated reason why
- // registration was denied. See 3GPP TS 24.008,
- // 10.5.3.6 and Annex G.
- // 0 - General
- // 1 - Authentication Failure
- // 2 - IMSI unknown in HLR
- // 3 - Illegal MS
- // 4 - Illegal ME
- // 5 - PLMN not allowed
- // 6 - Location area not allowed
- // 7 - Roaming not allowed
- // 8 - No Suitable Cells in this Location Area
- // 9 - Network failure
- // 10 - Persistent location update reject
- // 11 - PLMN not allowed
- // 12 - Location area not allowed
- // 13 - Roaming not allowed in this Location Area
- // 15 - No Suitable Cells in this Location Area
- // 17 - Network Failure
- // 20 - MAC Failure
- // 21 - Sync Failure
- // 22 - Congestion
- // 23 - GSM Authentication unacceptable
- // 25 - Not Authorized for this CSG
- // 32 - Service option not supported
- // 33 - Requested service option not subscribed
- // 34 - Service option temporarily out of order
- // 38 - Call cannot be identified
- // 48-63 - Retry upon entry into a new cell
- // 95 - Semantically incorrect message
- // 96 - Invalid mandatory information
- // 97 - Message type non-existent or not implemented
- // 98 - Message type not compatible with protocol state
- // 99 - Information element non-existent or not implemented
- // 100 - Conditional IE error
- // 101 - Message not compatible with protocol state
- // 111 - Protocol error, unspecified
- int32_t psc; // Primary Scrambling Code of the current
- // cell as described in TS 25.331, in hexadecimal
- // format, or -1 if unknown or not registered
- // to a UMTS network.
-};
-
-struct DataRegStateResult {
- RegState regState; // Valid reg states are NOT_REG_MT_NOT_SEARCHING_OP,
- // REG_HOME, NOT_REG_MT_SEARCHING_OP, REG_DENIED,
- // UNKNOWN, REG_ROAMING defined in RegState
- int32_t lac; // LAC if registered or -1 if not
- // valid LAC are 0x0000 - 0xffff
- int32_t cid; // CID if registered or -1 if not
- // valid CID are 0x00000000 - 0x0fffffff
- int32_t rat; // indicates the available data radio technology,
- // valid values as defined by RadioTechnology.
- int32_t reasonDataDenied; // if registration state is 3 (Registration
- // denied) this is an enumerated reason why
- // registration was denied. See 3GPP TS 24.008,
- // Annex G.6 "Additional cause codes for GMM".
- // 7 == GPRS services not allowed
- // 8 == GPRS services and non-GPRS services not allowed
- // 9 == MS identity cannot be derived by the network
- // 10 == Implicitly detached
- // 14 == GPRS services not allowed in this PLMN
- // 16 == MSC temporarily not reachable
- // 40 == No PDP context activated
- int32_t maxDataCalls; // The maximum number of simultaneous Data Calls that
- // must be established using setupDataCall().
- // The values below are optional LTE location information in decimal.
- // If a value is unknown that value must be -1.
- int32_t tac; // a 16-bit Tracking Area Code.
- int32_t phyCid; // a 0-503 Physical Cell Identifier.
- int32_t eci; // a 28-bit E-UTRAN Cell Identifier.
- int32_t csgid; // a 27-bit Closed Subscriber Group Identity.
- int32_t tadv; // a 6-bit timing advance value.
-};
-
// See also com.android.internal.telephony.gsm.CallForwardInfo
struct CallForwardInfo {
CallForwardInfoStatus status; // For queryCallForwardStatus()
@@ -1687,6 +1569,100 @@
// empty
};
+struct CellIdentity {
+ CellInfoType cellInfoType; // cell type for selecting from union CellInfo
+ // Only one of the below vectors must be of size 1, based on a valid CellInfoType and
+ // others must be of size 0. If cell info type is NONE, then all the vectors
+ // must be of size 0.
+ vec<CellIdentityGsm> cellIdentityGsm;
+ vec<CellIdentityWcdma> cellIdentityWcdma;
+ vec<CellIdentityCdma> cellIdentityCdma;
+ vec<CellIdentityLte> cellIdentityLte;
+ vec<CellIdentityTdscdma> cellIdentityTdscdma;
+};
+
+struct VoiceRegStateResult {
+ RegState regState; // Valid reg states are NOT_REG_MT_NOT_SEARCHING_OP,
+ // REG_HOME, NOT_REG_MT_SEARCHING_OP, REG_DENIED,
+ // UNKNOWN, REG_ROAMING defined in RegState
+ int32_t rat; // indicates the available voice radio technology,
+ // valid values as defined by RadioTechnology.
+ bool cssSupported; // concurrent services support indicator. if
+ // registered on a CDMA system.
+ // false - Concurrent services not supported,
+ // true - Concurrent services supported
+ int32_t roamingIndicator; // TSB-58 Roaming Indicator if registered
+ // on a CDMA or EVDO system or -1 if not.
+ // Valid values are 0-255.
+ int32_t systemIsInPrl; // indicates whether the current system is in the
+ // PRL if registered on a CDMA or EVDO system or -1 if
+ // not. 0=not in the PRL, 1=in the PRL
+ int32_t defaultRoamingIndicator; // default Roaming Indicator from the PRL,
+ // if registered on a CDMA or EVDO system or -1 if not.
+ // Valid values are 0-255.
+ int32_t reasonForDenial; // reasonForDenial if registration state is 3
+ // (Registration denied) this is an enumerated reason why
+ // registration was denied. See 3GPP TS 24.008,
+ // 10.5.3.6 and Annex G.
+ // 0 - General
+ // 1 - Authentication Failure
+ // 2 - IMSI unknown in HLR
+ // 3 - Illegal MS
+ // 4 - Illegal ME
+ // 5 - PLMN not allowed
+ // 6 - Location area not allowed
+ // 7 - Roaming not allowed
+ // 8 - No Suitable Cells in this Location Area
+ // 9 - Network failure
+ // 10 - Persistent location update reject
+ // 11 - PLMN not allowed
+ // 12 - Location area not allowed
+ // 13 - Roaming not allowed in this Location Area
+ // 15 - No Suitable Cells in this Location Area
+ // 17 - Network Failure
+ // 20 - MAC Failure
+ // 21 - Sync Failure
+ // 22 - Congestion
+ // 23 - GSM Authentication unacceptable
+ // 25 - Not Authorized for this CSG
+ // 32 - Service option not supported
+ // 33 - Requested service option not subscribed
+ // 34 - Service option temporarily out of order
+ // 38 - Call cannot be identified
+ // 48-63 - Retry upon entry into a new cell
+ // 95 - Semantically incorrect message
+ // 96 - Invalid mandatory information
+ // 97 - Message type non-existent or not implemented
+ // 98 - Message type not compatible with protocol state
+ // 99 - Information element non-existent or not implemented
+ // 100 - Conditional IE error
+ // 101 - Message not compatible with protocol state
+ // 111 - Protocol error, unspecified
+ CellIdentity cellIdentity;
+};
+
+struct DataRegStateResult {
+ RegState regState; // Valid reg states are NOT_REG_MT_NOT_SEARCHING_OP,
+ // REG_HOME, NOT_REG_MT_SEARCHING_OP, REG_DENIED,
+ // UNKNOWN, REG_ROAMING defined in RegState
+ int32_t rat; // indicates the available data radio technology,
+ // valid values as defined by RadioTechnology.
+ int32_t reasonDataDenied; // if registration state is 3 (Registration
+ // denied) this is an enumerated reason why
+ // registration was denied. See 3GPP TS 24.008,
+ // Annex G.6 "Additional cause codes for GMM".
+ // 7 == GPRS services not allowed
+ // 8 == GPRS services and non-GPRS services not allowed
+ // 9 == MS identity cannot be derived by the network
+ // 10 == Implicitly detached
+ // 14 == GPRS services not allowed in this PLMN
+ // 16 == MSC temporarily not reachable
+ // 40 == No PDP context activated
+ int32_t maxDataCalls; // The maximum number of simultaneous Data Calls that
+ // must be established using setupDataCall().
+ CellIdentity cellIdentity;
+};
+
struct GsmSmsMessage {
string smscPdu; // SMSC address in GSM BCD format prefixed by a length
// byte (as expected by TS 27.005) or empty string for
@@ -2005,4 +1981,4 @@
// to send all of them.
vec<uint8_t> contents; // Carrier-defined content. It is binary, opaque and
// loosely defined in LTE Layer 3 spec 24.008
-};
\ No newline at end of file
+};
diff --git a/radio/1.0/vts/Radio.vts b/radio/1.0/vts/Radio.vts
deleted file mode 100644
index 74bdb8d..0000000
--- a/radio/1.0/vts/Radio.vts
+++ /dev/null
@@ -1,1509 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "IRadio"
-
-package: "android.hardware.radio"
-
-import: "android.hardware.radio@1.0::IRadioIndication"
-import: "android.hardware.radio@1.0::IRadioResponse"
-import: "android.hardware.radio@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- api: {
- name: "setResponseFunctions"
- arg: {
- type: TYPE_HIDL_INTERFACE
- predefined_type: "::android::hardware::radio::V1_0::IRadioResponse"
- }
- arg: {
- type: TYPE_HIDL_INTERFACE
- predefined_type: "::android::hardware::radio::V1_0::IRadioIndication"
- }
- }
-
- api: {
- name: "getIccCardStatus"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "supplyIccPinForApp"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "supplyIccPukForApp"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "supplyIccPin2ForApp"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "supplyIccPuk2ForApp"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "changeIccPinForApp"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "changeIccPin2ForApp"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "supplyNetworkDepersonalization"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "getCurrentCalls"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "dial"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::Dial"
- }
- }
-
- api: {
- name: "getImsiForApp"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "hangup"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "hangupWaitingOrBackground"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "hangupForegroundResumeBackground"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "switchWaitingOrHoldingAndActive"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "conference"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "rejectCall"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "getLastCallFailCause"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "getSignalStrength"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "getVoiceRegistrationState"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "getDataRegistrationState"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "getOperator"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "setRadioPower"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "sendDtmf"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "sendSms"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::GsmSmsMessage"
- }
- }
-
- api: {
- name: "sendSMSExpectMore"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::GsmSmsMessage"
- }
- }
-
- api: {
- name: "setupDataCall"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioTechnology"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::DataProfileInfo"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "iccIOForApp"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::IccIo"
- }
- }
-
- api: {
- name: "sendUssd"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "cancelPendingUssd"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "getClir"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "setClir"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "getCallForwardStatus"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::CallForwardInfo"
- }
- }
-
- api: {
- name: "setCallForward"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::CallForwardInfo"
- }
- }
-
- api: {
- name: "getCallWaiting"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "setCallWaiting"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "acknowledgeLastIncomingGsmSms"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::SmsAcknowledgeFailCause"
- }
- }
-
- api: {
- name: "acceptCall"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "deactivateDataCall"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "getFacilityLockForApp"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "setFacilityLockForApp"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- arg: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "setBarringPassword"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "getNetworkSelectionMode"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "setNetworkSelectionModeAutomatic"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "setNetworkSelectionModeManual"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "getAvailableNetworks"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "startDtmf"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "stopDtmf"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "getBasebandVersion"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "separateConnection"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "setMute"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "getMute"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "getClip"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "getDataCallList"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "sendOemRadioRequestRaw"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "sendOemRadioRequestStrings"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRING
- }
- }
- }
-
- api: {
- name: "sendScreenState"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "setSuppServiceNotifications"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "writeSmsToSim"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::SmsWriteArgs"
- }
- }
-
- api: {
- name: "deleteSmsOnSim"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "setBandMode"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioBandMode"
- }
- }
-
- api: {
- name: "getAvailableBandModes"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "sendEnvelope"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "sendTerminalResponseToSim"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "handleStkCallSetupRequestFromSim"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "explicitCallTransfer"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "setPreferredNetworkType"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::PreferredNetworkType"
- }
- }
-
- api: {
- name: "getPreferredNetworkType"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "getNeighboringCids"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "setLocationUpdates"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "setCdmaSubscriptionSource"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::CdmaSubscriptionSource"
- }
- }
-
- api: {
- name: "setCdmaRoamingPreference"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::CdmaRoamingType"
- }
- }
-
- api: {
- name: "getCdmaRoamingPreference"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "setTTYMode"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::TtyMode"
- }
- }
-
- api: {
- name: "getTTYMode"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "setPreferredVoicePrivacy"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "getPreferredVoicePrivacy"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "sendCDMAFeatureCode"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "sendBurstDtmf"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "sendCdmaSms"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::CdmaSmsMessage"
- }
- }
-
- api: {
- name: "acknowledgeLastIncomingCdmaSms"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::CdmaSmsAck"
- }
- }
-
- api: {
- name: "getGsmBroadcastConfig"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "setGsmBroadcastConfig"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::GsmBroadcastSmsConfigInfo"
- }
- }
- }
-
- api: {
- name: "setGsmBroadcastActivation"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "getCdmaBroadcastConfig"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "setCdmaBroadcastConfig"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::CdmaBroadcastSmsConfigInfo"
- }
- }
- }
-
- api: {
- name: "setCdmaBroadcastActivation"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "getCDMASubscription"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "writeSmsToRuim"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::CdmaSmsWriteArgs"
- }
- }
-
- api: {
- name: "deleteSmsOnRuim"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "getDeviceIdentity"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "exitEmergencyCallbackMode"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "getSmscAddress"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "setSmscAddress"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "reportSmsMemoryStatus"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "reportStkServiceIsRunning"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "getCdmaSubscriptionSource"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "requestIsimAuthentication"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "acknowledgeIncomingGsmSmsWithPdu"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "sendEnvelopeWithStatus"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "getVoiceRadioTechnology"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "getCellInfoList"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "setCellInfoListRate"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "setInitialAttachApn"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::DataProfileInfo"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "getImsRegistrationState"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "sendImsSms"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::ImsSmsMessage"
- }
- }
-
- api: {
- name: "iccTransmitApduBasicChannel"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::SimApdu"
- }
- }
-
- api: {
- name: "iccOpenLogicalChannel"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "iccCloseLogicalChannel"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "iccTransmitApduLogicalChannel"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::SimApdu"
- }
- }
-
- api: {
- name: "nvReadItem"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::NvItem"
- }
- }
-
- api: {
- name: "nvWriteItem"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::NvWriteItem"
- }
- }
-
- api: {
- name: "nvWriteCdmaPrl"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "nvResetConfig"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::ResetNvType"
- }
- }
-
- api: {
- name: "setUiccSubscription"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::SelectUiccSub"
- }
- }
-
- api: {
- name: "setDataAllowed"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "getHardwareConfig"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "requestIccSimAuthentication"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "setDataProfile"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::DataProfileInfo"
- }
- }
- }
-
- api: {
- name: "requestShutdown"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "getRadioCapability"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "setRadioCapability"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioCapability"
- }
- }
-
- api: {
- name: "startLceService"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "stopLceService"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "pullLceData"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "getModemActivityInfo"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "setAllowedCarriers"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::CarrierRestrictions"
- }
- }
-
- api: {
- name: "getAllowedCarriers"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "sendDeviceState"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::DeviceStateType"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "setIndicationFilter"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_MASK
- scalar_type: "int32_t"
- predefined_type: "::android::hardware::radio::V1_0::IndicationFilter"
- }
- }
-
- api: {
- name: "responseAcknowledgement"
- }
-
-}
diff --git a/radio/1.0/vts/RadioIndication.vts b/radio/1.0/vts/RadioIndication.vts
deleted file mode 100644
index cce8ada..0000000
--- a/radio/1.0/vts/RadioIndication.vts
+++ /dev/null
@@ -1,546 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "IRadioIndication"
-
-package: "android.hardware.radio"
-
-import: "android.hardware.radio@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- api: {
- name: "radioStateChanged"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioState"
- }
- }
-
- api: {
- name: "callStateChanged"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- }
-
- api: {
- name: "networkStateChanged"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- }
-
- api: {
- name: "newSms"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "newSmsStatusReport"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "newSmsOnSim"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "onUssd"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::UssdModeType"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "nitzTimeReceived"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- arg: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- }
-
- api: {
- name: "currentSignalStrength"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::SignalStrength"
- }
- }
-
- api: {
- name: "dataCallListChanged"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::SetupDataCallResult"
- }
- }
- }
-
- api: {
- name: "suppSvcNotify"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::SuppSvcNotification"
- }
- }
-
- api: {
- name: "stkSessionEnd"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- }
-
- api: {
- name: "stkProactiveCommand"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "stkEventNotify"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "stkCallSetup"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int64_t"
- }
- }
-
- api: {
- name: "simSmsStorageFull"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- }
-
- api: {
- name: "simRefresh"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::SimRefreshResult"
- }
- }
-
- api: {
- name: "callRing"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::CdmaSignalInfoRecord"
- }
- }
-
- api: {
- name: "simStatusChanged"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- }
-
- api: {
- name: "cdmaNewSms"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::CdmaSmsMessage"
- }
- }
-
- api: {
- name: "newBroadcastSms"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "cdmaRuimSmsStorageFull"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- }
-
- api: {
- name: "restrictedStateChanged"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::PhoneRestrictedState"
- }
- }
-
- api: {
- name: "enterEmergencyCallbackMode"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- }
-
- api: {
- name: "cdmaCallWaiting"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::CdmaCallWaiting"
- }
- }
-
- api: {
- name: "cdmaOtaProvisionStatus"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::CdmaOtaProvisionStatus"
- }
- }
-
- api: {
- name: "cdmaInfoRec"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::CdmaInformationRecords"
- }
- }
-
- api: {
- name: "oemHookRaw"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "indicateRingbackTone"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "resendIncallMute"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- }
-
- api: {
- name: "cdmaSubscriptionSourceChanged"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::CdmaSubscriptionSource"
- }
- }
-
- api: {
- name: "cdmaPrlChanged"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "exitEmergencyCallbackMode"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- }
-
- api: {
- name: "rilConnected"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- }
-
- api: {
- name: "voiceRadioTechChanged"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioTechnology"
- }
- }
-
- api: {
- name: "cellInfoList"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::CellInfo"
- }
- }
- }
-
- api: {
- name: "imsNetworkStateChanged"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- }
-
- api: {
- name: "subscriptionStatusChanged"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "srvccStateNotify"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::SrvccState"
- }
- }
-
- api: {
- name: "hardwareConfigChanged"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::HardwareConfig"
- }
- }
- }
-
- api: {
- name: "radioCapabilityIndication"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioCapability"
- }
- }
-
- api: {
- name: "onSupplementaryServiceIndication"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::StkCcUnsolSsResult"
- }
- }
-
- api: {
- name: "stkCallControlAlphaNotify"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "lceData"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::LceDataInfo"
- }
- }
-
- api: {
- name: "pcoData"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::PcoDataInfo"
- }
- }
-
- api: {
- name: "modemReset"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioIndicationType"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
-}
diff --git a/radio/1.0/vts/RadioResponse.vts b/radio/1.0/vts/RadioResponse.vts
deleted file mode 100644
index 3d1364b..0000000
--- a/radio/1.0/vts/RadioResponse.vts
+++ /dev/null
@@ -1,1407 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "IRadioResponse"
-
-package: "android.hardware.radio"
-
-import: "android.hardware.radio@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- api: {
- name: "getIccCardStatusResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::CardStatus"
- }
- }
-
- api: {
- name: "supplyIccPinForAppResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "supplyIccPukForAppResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "supplyIccPin2ForAppResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "supplyIccPuk2ForAppResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "changeIccPinForAppResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "changeIccPin2ForAppResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "supplyNetworkDepersonalizationResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "getCurrentCallsResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::Call"
- }
- }
- }
-
- api: {
- name: "dialResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "getIMSIForAppResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "hangupConnectionResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "hangupWaitingOrBackgroundResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "hangupForegroundResumeBackgroundResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "switchWaitingOrHoldingAndActiveResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "conferenceResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "rejectCallResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "getLastCallFailCauseResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::LastCallFailCauseInfo"
- }
- }
-
- api: {
- name: "getSignalStrengthResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::SignalStrength"
- }
- }
-
- api: {
- name: "getVoiceRegistrationStateResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::VoiceRegStateResult"
- }
- }
-
- api: {
- name: "getDataRegistrationStateResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::DataRegStateResult"
- }
- }
-
- api: {
- name: "getOperatorResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "setRadioPowerResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "sendDtmfResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "sendSmsResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::SendSmsResult"
- }
- }
-
- api: {
- name: "sendSMSExpectMoreResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::SendSmsResult"
- }
- }
-
- api: {
- name: "setupDataCallResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::SetupDataCallResult"
- }
- }
-
- api: {
- name: "iccIOForAppResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::IccIoResult"
- }
- }
-
- api: {
- name: "sendUssdResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "cancelPendingUssdResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "getClirResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "setClirResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "getCallForwardStatusResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::CallForwardInfo"
- }
- }
- }
-
- api: {
- name: "setCallForwardResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "getCallWaitingResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "setCallWaitingResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "acknowledgeLastIncomingGsmSmsResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "acceptCallResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "deactivateDataCallResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "getFacilityLockForAppResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "setFacilityLockForAppResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "setBarringPasswordResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "getNetworkSelectionModeResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "setNetworkSelectionModeAutomaticResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "setNetworkSelectionModeManualResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "getAvailableNetworksResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::OperatorInfo"
- }
- }
- }
-
- api: {
- name: "startDtmfResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "stopDtmfResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "getBasebandVersionResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "separateConnectionResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "setMuteResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "getMuteResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "getClipResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::ClipStatus"
- }
- }
-
- api: {
- name: "getDataCallListResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::SetupDataCallResult"
- }
- }
- }
-
- api: {
- name: "sendOemRilRequestRawResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "sendOemRilRequestStringsResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRING
- }
- }
- }
-
- api: {
- name: "sendScreenStateResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "setSuppServiceNotificationsResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "writeSmsToSimResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "deleteSmsOnSimResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "setBandModeResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "getAvailableBandModesResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioBandMode"
- }
- }
- }
-
- api: {
- name: "sendEnvelopeResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "sendTerminalResponseToSimResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "handleStkCallSetupRequestFromSimResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "explicitCallTransferResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "setPreferredNetworkTypeResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "getPreferredNetworkTypeResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::PreferredNetworkType"
- }
- }
-
- api: {
- name: "getNeighboringCidsResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::NeighboringCell"
- }
- }
- }
-
- api: {
- name: "setLocationUpdatesResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "setCdmaSubscriptionSourceResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "setCdmaRoamingPreferenceResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "getCdmaRoamingPreferenceResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::CdmaRoamingType"
- }
- }
-
- api: {
- name: "setTTYModeResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "getTTYModeResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::TtyMode"
- }
- }
-
- api: {
- name: "setPreferredVoicePrivacyResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "getPreferredVoicePrivacyResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "sendCDMAFeatureCodeResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "sendBurstDtmfResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "sendCdmaSmsResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::SendSmsResult"
- }
- }
-
- api: {
- name: "acknowledgeLastIncomingCdmaSmsResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "getGsmBroadcastConfigResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::GsmBroadcastSmsConfigInfo"
- }
- }
- }
-
- api: {
- name: "setGsmBroadcastConfigResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "setGsmBroadcastActivationResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "getCdmaBroadcastConfigResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::CdmaBroadcastSmsConfigInfo"
- }
- }
- }
-
- api: {
- name: "setCdmaBroadcastConfigResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "setCdmaBroadcastActivationResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "getCDMASubscriptionResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "writeSmsToRuimResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "deleteSmsOnRuimResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "getDeviceIdentityResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "exitEmergencyCallbackModeResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "getSmscAddressResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "setSmscAddressResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "reportSmsMemoryStatusResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "reportStkServiceIsRunningResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "getCdmaSubscriptionSourceResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::CdmaSubscriptionSource"
- }
- }
-
- api: {
- name: "requestIsimAuthenticationResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "acknowledgeIncomingGsmSmsWithPduResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "sendEnvelopeWithStatusResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::IccIoResult"
- }
- }
-
- api: {
- name: "getVoiceRadioTechnologyResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioTechnology"
- }
- }
-
- api: {
- name: "getCellInfoListResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::CellInfo"
- }
- }
- }
-
- api: {
- name: "setCellInfoListRateResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "setInitialAttachApnResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "getImsRegistrationStateResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioTechnologyFamily"
- }
- }
-
- api: {
- name: "sendImsSmsResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::SendSmsResult"
- }
- }
-
- api: {
- name: "iccTransmitApduBasicChannelResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::IccIoResult"
- }
- }
-
- api: {
- name: "iccOpenLogicalChannelResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "int8_t"
- }
- }
- }
-
- api: {
- name: "iccCloseLogicalChannelResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "iccTransmitApduLogicalChannelResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::IccIoResult"
- }
- }
-
- api: {
- name: "nvReadItemResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "nvWriteItemResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "nvWriteCdmaPrlResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "nvResetConfigResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "setUiccSubscriptionResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "setDataAllowedResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "getHardwareConfigResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::HardwareConfig"
- }
- }
- }
-
- api: {
- name: "requestIccSimAuthenticationResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::IccIoResult"
- }
- }
-
- api: {
- name: "setDataProfileResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "requestShutdownResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "getRadioCapabilityResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioCapability"
- }
- }
-
- api: {
- name: "setRadioCapabilityResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioCapability"
- }
- }
-
- api: {
- name: "startLceServiceResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::LceStatusInfo"
- }
- }
-
- api: {
- name: "stopLceServiceResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::LceStatusInfo"
- }
- }
-
- api: {
- name: "pullLceDataResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::LceDataInfo"
- }
- }
-
- api: {
- name: "getModemActivityInfoResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::ActivityStatsInfo"
- }
- }
-
- api: {
- name: "setAllowedCarriersResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "getAllowedCarriersResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::CarrierRestrictions"
- }
- }
-
- api: {
- name: "sendDeviceStateResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "setIndicationFilterResponse"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseInfo"
- }
- }
-
- api: {
- name: "acknowledgeRequest"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
-}
diff --git a/radio/1.0/vts/Sap.vts b/radio/1.0/vts/Sap.vts
deleted file mode 100644
index b4983da..0000000
--- a/radio/1.0/vts/Sap.vts
+++ /dev/null
@@ -1,107 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "ISap"
-
-package: "android.hardware.radio"
-
-import: "android.hardware.radio@1.0::ISapCallback"
-import: "android.hardware.radio@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- api: {
- name: "setCallback"
- arg: {
- type: TYPE_HIDL_CALLBACK
- predefined_type: "::android::hardware::radio::V1_0::ISapCallback"
- }
- }
-
- api: {
- name: "connectReq"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "disconnectReq"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "apduReq"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::SapApduType"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "transferAtrReq"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "powerReq"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "resetSimReq"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "transferCardReaderStatusReq"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "setTransferProtocolReq"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::SapTransferProtocol"
- }
- }
-
-}
diff --git a/radio/1.0/vts/SapCallback.vts b/radio/1.0/vts/SapCallback.vts
deleted file mode 100644
index 3a33dba..0000000
--- a/radio/1.0/vts/SapCallback.vts
+++ /dev/null
@@ -1,157 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "ISapCallback"
-
-package: "android.hardware.radio"
-
-import: "android.hardware.radio@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- api: {
- name: "connectResponse"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::SapConnectRsp"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "disconnectResponse"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "disconnectIndication"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::SapDisconnectType"
- }
- }
-
- api: {
- name: "apduResponse"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::SapResultCode"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "transferAtrResponse"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::SapResultCode"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "powerResponse"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::SapResultCode"
- }
- }
-
- api: {
- name: "resetSimResponse"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::SapResultCode"
- }
- }
-
- api: {
- name: "statusIndication"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::SapStatus"
- }
- }
-
- api: {
- name: "transferCardReaderStatusResponse"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::SapResultCode"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "errorResponse"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "transferProtocolResponse"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::SapResultCode"
- }
- }
-
-}
diff --git a/radio/1.0/vts/functional/Android.bp b/radio/1.0/vts/functional/Android.bp
new file mode 100644
index 0000000..10bd725
--- /dev/null
+++ b/radio/1.0/vts/functional/Android.bp
@@ -0,0 +1,38 @@
+//
+// Copyright (C) 2017 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.
+//
+
+cc_test {
+ name: "VtsHalRadioV1_0TargetTest",
+ srcs: ["radio_hidl_hal_test.cpp",
+ "radio_response.cpp",
+ "radio_hidl_hal_icc.cpp",
+ "VtsHalRadioV1_0TargetTest.cpp"],
+ shared_libs: [
+ "libbase",
+ "liblog",
+ "libcutils",
+ "libhidlbase",
+ "libhidltransport",
+ "libnativehelper",
+ "libutils",
+ "android.hardware.radio@1.0",
+ ],
+ static_libs: ["VtsHalHidlTargetBaseTest"],
+ cflags: [
+ "-O0",
+ "-g",
+ ],
+}
\ No newline at end of file
diff --git a/wifi/1.0/vts/functional/main.cpp b/radio/1.0/vts/functional/VtsHalRadioV1_0TargetTest.cpp
similarity index 63%
copy from wifi/1.0/vts/functional/main.cpp
copy to radio/1.0/vts/functional/VtsHalRadioV1_0TargetTest.cpp
index b33b5eb..d01adf2 100644
--- a/wifi/1.0/vts/functional/main.cpp
+++ b/radio/1.0/vts/functional/VtsHalRadioV1_0TargetTest.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2017 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.
@@ -14,24 +14,14 @@
* limitations under the License.
*/
-#include <android-base/logging.h>
-
-#include <gtest/gtest.h>
-
-#include "wifi_hidl_test_utils.h"
-
-class WifiHidlEnvironment : public ::testing::Environment {
- public:
- virtual void SetUp() override { stopFramework(); }
- virtual void TearDown() override { startFramework(); }
-
- private:
-};
+#include<radio_hidl_hal_utils.h>
int main(int argc, char** argv) {
- ::testing::AddGlobalTestEnvironment(new WifiHidlEnvironment);
+ ::testing::AddGlobalTestEnvironment(new RadioHidlEnvironment);
::testing::InitGoogleTest(&argc, argv);
+
int status = RUN_ALL_TESTS();
LOG(INFO) << "Test result = " << status;
+
return status;
-}
+}
\ No newline at end of file
diff --git a/radio/1.0/vts/functional/radio_hidl_hal_icc.cpp b/radio/1.0/vts/functional/radio_hidl_hal_icc.cpp
new file mode 100644
index 0000000..bd979b0
--- /dev/null
+++ b/radio/1.0/vts/functional/radio_hidl_hal_icc.cpp
@@ -0,0 +1,290 @@
+/*
+ * Copyright (C) 2017 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.
+ */
+
+ #include<radio_hidl_hal_utils.h>
+
+/*
+ * Test IRadio.getIccCardStatus() for the response returned.
+ */
+TEST_F(RadioHidlTest, getIccCardStatus) {
+ EXPECT_LE(cardStatus.applications.size(), (unsigned int) RadioConst::CARD_MAX_APPS);
+ EXPECT_LT(cardStatus.gsmUmtsSubscriptionAppIndex, (int) RadioConst::CARD_MAX_APPS);
+ EXPECT_LT(cardStatus.cdmaSubscriptionAppIndex, (int) RadioConst::CARD_MAX_APPS);
+ EXPECT_LT(cardStatus.imsSubscriptionAppIndex, (int) RadioConst::CARD_MAX_APPS);
+}
+
+/*
+ * Test IRadio.supplyIccPinForApp() for the response returned
+ */
+TEST_F(RadioHidlTest, supplyIccPinForApp) {
+ int serial = 1;
+
+ // Pass wrong password and check PASSWORD_INCORRECT returned for 3GPP and 3GPP2 apps only
+ for (int i = 0; i < (int) cardStatus.applications.size(); i++) {
+ if (cardStatus.applications[i].appType == AppType::SIM
+ || cardStatus.applications[i].appType == AppType::USIM
+ || cardStatus.applications[i].appType == AppType::RUIM
+ || cardStatus.applications[i].appType == AppType::CSIM) {
+ radio->supplyIccPinForApp(++serial, hidl_string("test1"),
+ cardStatus.applications[i].aidPtr);
+ EXPECT_EQ(std::cv_status::no_timeout, wait());
+ EXPECT_EQ(serial, radioRsp->rspInfo.serial);
+ EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
+ EXPECT_EQ(RadioError::PASSWORD_INCORRECT, radioRsp->rspInfo.error);
+ }
+ }
+}
+
+/*
+ * Test IRadio.supplyIccPukForApp() for the response returned.
+ */
+TEST_F(RadioHidlTest, supplyIccPukForApp) {
+ int serial = 1;
+
+ // Pass wrong password and check PASSWORD_INCORRECT returned for 3GPP and 3GPP2 apps only
+ for (int i = 0; i < (int) cardStatus.applications.size(); i++) {
+ if (cardStatus.applications[i].appType == AppType::SIM
+ || cardStatus.applications[i].appType == AppType::USIM
+ || cardStatus.applications[i].appType == AppType::RUIM
+ || cardStatus.applications[i].appType == AppType::CSIM) {
+ radio->supplyIccPukForApp(++serial, hidl_string("test1"), hidl_string("test2"),
+ cardStatus.applications[i].aidPtr);
+ EXPECT_EQ(std::cv_status::no_timeout, wait());
+ EXPECT_EQ(serial, radioRsp->rspInfo.serial);
+ EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
+ EXPECT_EQ(RadioError::PASSWORD_INCORRECT, radioRsp->rspInfo.error);
+ }
+ }
+}
+
+/*
+ * Test IRadio.supplyIccPin2ForApp() for the response returned.
+ */
+TEST_F(RadioHidlTest, supplyIccPin2ForApp) {
+ int serial = 1;
+
+ // Pass wrong password and check PASSWORD_INCORRECT returned for 3GPP and 3GPP2 apps only
+ for (int i = 0; i < (int) cardStatus.applications.size(); i++) {
+ if (cardStatus.applications[i].appType == AppType::SIM
+ || cardStatus.applications[i].appType == AppType::USIM
+ || cardStatus.applications[i].appType == AppType::RUIM
+ || cardStatus.applications[i].appType == AppType::CSIM) {
+ radio->supplyIccPin2ForApp(++serial, hidl_string("test1"),
+ cardStatus.applications[i].aidPtr);
+ EXPECT_EQ(std::cv_status::no_timeout, wait());
+ EXPECT_EQ(serial, radioRsp->rspInfo.serial);
+ EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
+ EXPECT_EQ(RadioError::PASSWORD_INCORRECT, radioRsp->rspInfo.error);
+ }
+ }
+}
+
+/*
+ * Test IRadio.supplyIccPuk2ForApp() for the response returned.
+ */
+TEST_F(RadioHidlTest, supplyIccPuk2ForApp) {
+ int serial = 1;
+
+ // Pass wrong password and check PASSWORD_INCORRECT returned for 3GPP and 3GPP2 apps only
+ for (int i = 0; i < (int) cardStatus.applications.size(); i++) {
+ if (cardStatus.applications[i].appType == AppType::SIM
+ || cardStatus.applications[i].appType == AppType::USIM
+ || cardStatus.applications[i].appType == AppType::RUIM
+ || cardStatus.applications[i].appType == AppType::CSIM) {
+ radio->supplyIccPuk2ForApp(++serial, hidl_string("test1"), hidl_string("test2"),
+ cardStatus.applications[i].aidPtr);
+ EXPECT_EQ(std::cv_status::no_timeout, wait());
+ EXPECT_EQ(serial, radioRsp->rspInfo.serial);
+ EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
+ EXPECT_EQ(RadioError::PASSWORD_INCORRECT, radioRsp->rspInfo.error);
+ }
+ }
+}
+
+/*
+ * Test IRadio.changeIccPinForApp() for the response returned.
+ */
+TEST_F(RadioHidlTest, changeIccPinForApp) {
+ int serial = 1;
+
+ // Pass wrong password and check PASSWORD_INCORRECT returned for 3GPP and 3GPP2 apps only
+ for (int i = 0; i < (int) cardStatus.applications.size(); i++) {
+ if (cardStatus.applications[i].appType == AppType::SIM
+ || cardStatus.applications[i].appType == AppType::USIM
+ || cardStatus.applications[i].appType == AppType::RUIM
+ || cardStatus.applications[i].appType == AppType::CSIM) {
+ radio->changeIccPinForApp(++serial, hidl_string("test1"), hidl_string("test2"),
+ cardStatus.applications[i].aidPtr);
+ EXPECT_EQ(std::cv_status::no_timeout, wait());
+ EXPECT_EQ(serial, radioRsp->rspInfo.serial);
+ EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
+ EXPECT_EQ(RadioError::PASSWORD_INCORRECT, radioRsp->rspInfo.error);
+ }
+ }
+}
+
+/*
+ * Test IRadio.changeIccPin2ForApp() for the response returned.
+ */
+TEST_F(RadioHidlTest, changeIccPin2ForApp) {
+ int serial = 1;
+
+ // Pass wrong password and check PASSWORD_INCORRECT returned for 3GPP and 3GPP2 apps only
+ for (int i = 0; i < (int) cardStatus.applications.size(); i++) {
+ if (cardStatus.applications[i].appType == AppType::SIM
+ || cardStatus.applications[i].appType == AppType::USIM
+ || cardStatus.applications[i].appType == AppType::RUIM
+ || cardStatus.applications[i].appType == AppType::CSIM) {
+ radio->changeIccPin2ForApp(++serial, hidl_string("test1"), hidl_string("test2"),
+ cardStatus.applications[i].aidPtr);
+ EXPECT_EQ(std::cv_status::no_timeout, wait());
+ EXPECT_EQ(serial, radioRsp->rspInfo.serial);
+ EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
+ EXPECT_EQ(RadioError::PASSWORD_INCORRECT, radioRsp->rspInfo.error);
+ }
+ }
+}
+
+/*
+ * Test IRadio.getImsiForApp() for the response returned.
+ */
+TEST_F(RadioHidlTest, getImsiForApp) {
+ int serial = 1;
+
+ // Check success returned while getting imsi for 3GPP and 3GPP2 apps only
+ for (int i = 0; i < (int) cardStatus.applications.size(); i++) {
+ if (cardStatus.applications[i].appType == AppType::SIM
+ || cardStatus.applications[i].appType == AppType::USIM
+ || cardStatus.applications[i].appType == AppType::RUIM
+ || cardStatus.applications[i].appType == AppType::CSIM) {
+ radio->getImsiForApp(++serial, cardStatus.applications[i].aidPtr);
+ EXPECT_EQ(std::cv_status::no_timeout, wait());
+ EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
+ EXPECT_EQ(serial, radioRsp->rspInfo.serial);
+ EXPECT_EQ(RadioError::NONE, radioRsp->rspInfo.error);
+
+ // IMSI (MCC+MNC+MSIN) is at least 6 digits, but not more than 15
+ if (radioRsp->rspInfo.error == RadioError::NONE) {
+ EXPECT_NE(radioRsp->imsi, hidl_string());
+ EXPECT_GE((int) (radioRsp->imsi).size(), 6);
+ EXPECT_LE((int) (radioRsp->imsi).size(), 15);
+ }
+ }
+ }
+}
+
+/*
+ * Test IRadio.iccIOForApp() for the response returned.
+ */
+TEST_F(RadioHidlTest, iccIOForApp) {
+ int serial = 1;
+
+ for (int i = 0; i < (int) cardStatus.applications.size(); i++) {
+ IccIo iccIo;
+ iccIo.command = 0xc0;
+ iccIo.fileId = 0x6f11;
+ iccIo.path = hidl_string("3F007FFF");
+ iccIo.p1 = 0;
+ iccIo.p2 = 0;
+ iccIo.p3 = 0;
+ iccIo.data = hidl_string();
+ iccIo.pin2 = hidl_string();
+ iccIo.aid = cardStatus.applications[i].aidPtr;
+
+ radio->iccIOForApp(++serial, iccIo);
+ EXPECT_EQ(std::cv_status::no_timeout, wait());
+ EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
+ EXPECT_EQ(serial, radioRsp->rspInfo.serial);
+ }
+}
+
+/*
+ * Test IRadio.iccTransmitApduBasicChannel() for the response returned.
+ */
+TEST_F(RadioHidlTest, iccTransmitApduBasicChannel) {
+ int serial = 1;
+ SimApdu msg;
+ memset(&msg, 0, sizeof(msg));
+ msg.data = hidl_string();
+
+ radio->iccTransmitApduBasicChannel(serial, msg);
+ EXPECT_EQ(std::cv_status::no_timeout, wait());
+ EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
+ EXPECT_EQ(serial, radioRsp->rspInfo.serial);
+
+ // TODO(sanketpadawe): Add test for error code
+}
+
+/*
+ * Test IRadio.iccOpenLogicalChannel() for the response returned.
+ */
+TEST_F(RadioHidlTest, iccOpenLogicalChannel) {
+ int serial = 1;
+
+ for (int i = 0; i < (int) cardStatus.applications.size(); i++) {
+ radio->iccOpenLogicalChannel(++serial, cardStatus.applications[i].aidPtr);
+ EXPECT_EQ(std::cv_status::no_timeout, wait());
+ EXPECT_EQ(serial, radioRsp->rspInfo.serial);
+ EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
+ }
+}
+
+/*
+ * Test IRadio.iccCloseLogicalChannel() for the response returned.
+ */
+TEST_F(RadioHidlTest, iccCloseLogicalChannel) {
+ int serial = 1;
+ // Try closing invalid channel and check INVALID_ARGUMENTS returned as error
+ radio->iccCloseLogicalChannel(serial, 0);
+ EXPECT_EQ(std::cv_status::no_timeout, wait());
+ EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
+ EXPECT_EQ(serial, radioRsp->rspInfo.serial);
+
+ EXPECT_EQ(RadioError::INVALID_ARGUMENTS, radioRsp->rspInfo.error);
+}
+
+/*
+ * Test IRadio.iccTransmitApduLogicalChannel() for the response returned.
+ */
+TEST_F(RadioHidlTest, iccTransmitApduLogicalChannel) {
+ SimApdu msg;
+ memset(&msg, 0, sizeof(msg));
+ msg.data = hidl_string();
+
+ radio->iccTransmitApduLogicalChannel(1, msg);
+ EXPECT_EQ(std::cv_status::no_timeout, wait());
+ EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
+ EXPECT_EQ(1, radioRsp->rspInfo.serial);
+
+ // TODO(sanketpadawe): Add test for error code
+}
+
+/*
+ * Test IRadio.requestIccSimAuthentication() for the response returned.
+ */
+TEST_F(RadioHidlTest, requestIccSimAuthentication) {
+ int serial = 1;
+
+ // Pass wrong challenge string and check RadioError::INVALID_ARGUMENTS returned as error.
+ for (int i = 0; i < (int) cardStatus.applications.size(); i++) {
+ radio->requestIccSimAuthentication(++serial, 0, hidl_string("test"),
+ cardStatus.applications[i].aidPtr);
+ EXPECT_EQ(std::cv_status::no_timeout, wait());
+ EXPECT_EQ(serial, radioRsp->rspInfo.serial);
+ EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
+ EXPECT_EQ(RadioError::INVALID_ARGUMENTS, radioRsp->rspInfo.error);
+ }
+}
\ No newline at end of file
diff --git a/radio/1.0/vts/functional/radio_hidl_hal_test.cpp b/radio/1.0/vts/functional/radio_hidl_hal_test.cpp
new file mode 100644
index 0000000..50b27e9
--- /dev/null
+++ b/radio/1.0/vts/functional/radio_hidl_hal_test.cpp
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2017 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.
+ */
+
+#include<radio_hidl_hal_utils.h>
+
+void RadioHidlTest::SetUp() {
+ radio = ::testing::VtsHalHidlTargetBaseTest::getService<IRadio>(hidl_string("rild"));
+ ASSERT_NE(radio, nullptr);
+
+ radioRsp = new RadioResponse(*this);
+ ASSERT_NE(radioRsp, nullptr);
+
+ count = 0;
+
+ radioInd = NULL;
+ radio->setResponseFunctions(radioRsp, radioInd);
+
+ radio->getIccCardStatus(1);
+ EXPECT_EQ(std::cv_status::no_timeout, wait());
+ EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp->rspInfo.type);
+ EXPECT_EQ(1, radioRsp->rspInfo.serial);
+ EXPECT_EQ(RadioError::NONE, radioRsp->rspInfo.error);
+}
+
+void RadioHidlTest::TearDown() {
+}
+
+void RadioHidlTest::notify() {
+ std::unique_lock<std::mutex> lock(mtx);
+ count++;
+ cv.notify_one();
+}
+
+std::cv_status RadioHidlTest::wait() {
+ std::unique_lock<std::mutex> lock(mtx);
+
+ std::cv_status status = std::cv_status::no_timeout;
+ auto now = std::chrono::system_clock::now();
+ while (count == 0) {
+ status = cv.wait_until(lock, now + std::chrono::seconds(TIMEOUT_PERIOD));
+ if (status == std::cv_status::timeout) {
+ return status;
+ }
+ }
+ count--;
+ return status;
+}
+
diff --git a/radio/1.0/vts/functional/radio_hidl_hal_utils.h b/radio/1.0/vts/functional/radio_hidl_hal_utils.h
new file mode 100644
index 0000000..0429226
--- /dev/null
+++ b/radio/1.0/vts/functional/radio_hidl_hal_utils.h
@@ -0,0 +1,460 @@
+/*
+ * Copyright (C) 2017 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.
+ */
+
+#include <android-base/logging.h>
+
+#include <VtsHalHidlTargetBaseTest.h>
+#include <chrono>
+#include <condition_variable>
+#include <mutex>
+
+#include <android/hardware/radio/1.0/IRadio.h>
+#include <android/hardware/radio/1.0/IRadioResponse.h>
+#include <android/hardware/radio/1.0/IRadioIndication.h>
+#include <android/hardware/radio/1.0/types.h>
+
+using ::android::hardware::radio::V1_0::ActivityStatsInfo;
+using ::android::hardware::radio::V1_0::AppType;
+using ::android::hardware::radio::V1_0::CardStatus;
+using ::android::hardware::radio::V1_0::Call;
+using ::android::hardware::radio::V1_0::CallForwardInfo;
+using ::android::hardware::radio::V1_0::CarrierRestrictions;
+using ::android::hardware::radio::V1_0::CdmaRoamingType;
+using ::android::hardware::radio::V1_0::CdmaBroadcastSmsConfigInfo;
+using ::android::hardware::radio::V1_0::CdmaSubscriptionSource;
+using ::android::hardware::radio::V1_0::CellInfo;
+using ::android::hardware::radio::V1_0::ClipStatus;
+using ::android::hardware::radio::V1_0::DataRegStateResult;
+using ::android::hardware::radio::V1_0::GsmBroadcastSmsConfigInfo;
+using ::android::hardware::radio::V1_0::HardwareConfig;
+using ::android::hardware::radio::V1_0::IccIo;
+using ::android::hardware::radio::V1_0::IccIoResult;
+using ::android::hardware::radio::V1_0::IRadio;
+using ::android::hardware::radio::V1_0::IRadioResponse;
+using ::android::hardware::radio::V1_0::IRadioIndication;
+using ::android::hardware::radio::V1_0::RadioConst;
+using ::android::hardware::radio::V1_0::RadioError;
+using ::android::hardware::radio::V1_0::RadioResponseInfo;
+using ::android::hardware::radio::V1_0::LastCallFailCauseInfo;
+using ::android::hardware::radio::V1_0::LceDataInfo;
+using ::android::hardware::radio::V1_0::LceStatusInfo;
+using ::android::hardware::radio::V1_0::NeighboringCell;
+using ::android::hardware::radio::V1_0::OperatorInfo;
+using ::android::hardware::radio::V1_0::PreferredNetworkType;
+using ::android::hardware::radio::V1_0::RadioBandMode;
+using ::android::hardware::radio::V1_0::RadioCapability;
+using ::android::hardware::radio::V1_0::RadioResponseType;
+using ::android::hardware::radio::V1_0::RadioTechnology;
+using ::android::hardware::radio::V1_0::RadioTechnologyFamily;
+using ::android::hardware::radio::V1_0::SendSmsResult;
+using ::android::hardware::radio::V1_0::SetupDataCallResult;
+using ::android::hardware::radio::V1_0::SignalStrength;
+using ::android::hardware::radio::V1_0::SimApdu;
+using ::android::hardware::radio::V1_0::TtyMode;
+using ::android::hardware::radio::V1_0::VoiceRegStateResult;
+
+using ::android::hardware::hidl_string;
+using ::android::hardware::Return;
+using ::android::hardware::Void;
+using ::android::sp;
+
+#define TIMEOUT_PERIOD 20
+
+class RadioHidlTest;
+extern CardStatus cardStatus;
+
+/* Callback class for radio response */
+class RadioResponse : public IRadioResponse {
+private:
+ RadioHidlTest& parent;
+
+public:
+ RadioResponseInfo rspInfo;
+ hidl_string imsi;
+ IccIoResult iccIoResult;
+ int channelId;
+
+ RadioResponse(RadioHidlTest& parent);
+
+ virtual ~RadioResponse() = default;
+
+ Return<void> getIccCardStatusResponse(const RadioResponseInfo& info,
+ const CardStatus& cardStatus);
+
+ Return<void> supplyIccPinForAppResponse(const RadioResponseInfo& info,
+ int32_t remainingRetries);
+
+ Return<void> supplyIccPukForAppResponse(const RadioResponseInfo& info,
+ int32_t remainingRetries);
+
+ Return<void> supplyIccPin2ForAppResponse(const RadioResponseInfo& info,
+ int32_t remainingRetries);
+
+ Return<void> supplyIccPuk2ForAppResponse(const RadioResponseInfo& info,
+ int32_t remainingRetries);
+
+ Return<void> changeIccPinForAppResponse(const RadioResponseInfo& info,
+ int32_t remainingRetries);
+
+ Return<void> changeIccPin2ForAppResponse(const RadioResponseInfo& info,
+ int32_t remainingRetries);
+
+ Return<void> supplyNetworkDepersonalizationResponse(
+ const RadioResponseInfo& info, int32_t remainingRetries);
+
+ Return<void> getCurrentCallsResponse(const RadioResponseInfo& info,
+ const ::android::hardware::hidl_vec<Call>& calls);
+
+ Return<void> dialResponse(const RadioResponseInfo& info);
+
+ Return<void> getIMSIForAppResponse(const RadioResponseInfo& info,
+ const ::android::hardware::hidl_string& imsi);
+
+ Return<void> hangupConnectionResponse(const RadioResponseInfo& info);
+
+ Return<void> hangupWaitingOrBackgroundResponse(
+ const RadioResponseInfo& info);
+
+ Return<void> hangupForegroundResumeBackgroundResponse(
+ const RadioResponseInfo& info);
+
+ Return<void> switchWaitingOrHoldingAndActiveResponse(
+ const RadioResponseInfo& info);
+
+ Return<void> conferenceResponse(const RadioResponseInfo& info);
+
+ Return<void> rejectCallResponse(const RadioResponseInfo& info);
+
+ Return<void> getLastCallFailCauseResponse(const RadioResponseInfo& info,
+ const LastCallFailCauseInfo& failCauseInfo);
+
+ Return<void> getSignalStrengthResponse(const RadioResponseInfo& info,
+ const SignalStrength& sigStrength);
+
+ Return<void> getVoiceRegistrationStateResponse(const RadioResponseInfo& info,
+ const VoiceRegStateResult& voiceRegResponse);
+
+ Return<void> getDataRegistrationStateResponse(const RadioResponseInfo& info,
+ const DataRegStateResult& dataRegResponse);
+
+ Return<void> getOperatorResponse(const RadioResponseInfo& info,
+ const ::android::hardware::hidl_string& longName,
+ const ::android::hardware::hidl_string& shortName,
+ const ::android::hardware::hidl_string& numeric);
+
+ Return<void> setRadioPowerResponse(const RadioResponseInfo& info);
+
+ Return<void> sendDtmfResponse(const RadioResponseInfo& info);
+
+ Return<void> sendSmsResponse(const RadioResponseInfo& info,
+ const SendSmsResult& sms);
+
+ Return<void> sendSMSExpectMoreResponse(const RadioResponseInfo& info,
+ const SendSmsResult& sms);
+
+ Return<void> setupDataCallResponse(const RadioResponseInfo& info,
+ const SetupDataCallResult& dcResponse);
+
+ Return<void> iccIOForAppResponse(const RadioResponseInfo& info,
+ const IccIoResult& iccIo);
+
+ Return<void> sendUssdResponse(const RadioResponseInfo& info);
+
+ Return<void> cancelPendingUssdResponse(const RadioResponseInfo& info);
+
+ Return<void> getClirResponse(const RadioResponseInfo& info, int32_t n, int32_t m);
+
+ Return<void> setClirResponse(const RadioResponseInfo& info);
+
+ Return<void> getCallForwardStatusResponse(const RadioResponseInfo& info,
+ const ::android::hardware::hidl_vec<CallForwardInfo>& call_forwardInfos);
+
+ Return<void> setCallForwardResponse(const RadioResponseInfo& info);
+
+ Return<void> getCallWaitingResponse(const RadioResponseInfo& info,
+ bool enable, int32_t serviceClass);
+
+ Return<void> setCallWaitingResponse(const RadioResponseInfo& info);
+
+ Return<void> acknowledgeLastIncomingGsmSmsResponse(const RadioResponseInfo& info);
+
+ Return<void> acceptCallResponse(const RadioResponseInfo& info);
+
+ Return<void> deactivateDataCallResponse(const RadioResponseInfo& info);
+
+ Return<void> getFacilityLockForAppResponse(const RadioResponseInfo& info,int32_t response);
+
+ Return<void> setFacilityLockForAppResponse(const RadioResponseInfo& info,int32_t retry);
+
+ Return<void> setBarringPasswordResponse(const RadioResponseInfo& info);
+
+ Return<void> getNetworkSelectionModeResponse(const RadioResponseInfo& info,bool manual);
+
+ Return<void> setNetworkSelectionModeAutomaticResponse(const RadioResponseInfo& info);
+
+ Return<void> setNetworkSelectionModeManualResponse(const RadioResponseInfo& info);
+
+ Return<void> getAvailableNetworksResponse(const RadioResponseInfo& info,
+ const ::android::hardware::hidl_vec<OperatorInfo>& networkInfos);
+
+ Return<void> startDtmfResponse(const RadioResponseInfo& info);
+
+ Return<void> stopDtmfResponse(const RadioResponseInfo& info);
+
+ Return<void> getBasebandVersionResponse(const RadioResponseInfo& info,
+ const ::android::hardware::hidl_string& version);
+
+ Return<void> separateConnectionResponse(const RadioResponseInfo& info);
+
+ Return<void> setMuteResponse(const RadioResponseInfo& info);
+
+ Return<void> getMuteResponse(const RadioResponseInfo& info, bool enable);
+
+ Return<void> getClipResponse(const RadioResponseInfo& info,ClipStatus status);
+
+ Return<void> getDataCallListResponse(const RadioResponseInfo& info,
+ const ::android::hardware::hidl_vec<SetupDataCallResult>& dcResponse);
+
+ Return<void> sendOemRilRequestRawResponse(const RadioResponseInfo& info,
+ const ::android::hardware::hidl_vec<uint8_t>& data);
+
+ Return<void> sendOemRilRequestStringsResponse(const RadioResponseInfo& info,
+ const ::android::hardware::hidl_vec<::android::hardware::hidl_string>& data);
+
+ Return<void> sendScreenStateResponse(const RadioResponseInfo& info);
+
+ Return<void> setSuppServiceNotificationsResponse(
+ const RadioResponseInfo& info);
+
+ Return<void> writeSmsToSimResponse(const RadioResponseInfo& info,int32_t index);
+
+ Return<void> deleteSmsOnSimResponse(const RadioResponseInfo& info);
+
+ Return<void> setBandModeResponse(const RadioResponseInfo& info);
+
+ Return<void> getAvailableBandModesResponse(const RadioResponseInfo& info,
+ const ::android::hardware::hidl_vec<RadioBandMode>& bandModes);
+
+ Return<void> sendEnvelopeResponse(const RadioResponseInfo& info,
+ const ::android::hardware::hidl_string& commandResponse);
+
+ Return<void> sendTerminalResponseToSimResponse(const RadioResponseInfo& info);
+
+ Return<void> handleStkCallSetupRequestFromSimResponse(
+ const RadioResponseInfo& info);
+
+ Return<void> explicitCallTransferResponse(const RadioResponseInfo& info);
+
+ Return<void> setPreferredNetworkTypeResponse(const RadioResponseInfo& info);
+
+ Return<void> getPreferredNetworkTypeResponse(const RadioResponseInfo& info,
+ PreferredNetworkType nwType);
+
+ Return<void> getNeighboringCidsResponse(const RadioResponseInfo& info,
+ const ::android::hardware::hidl_vec<NeighboringCell>& cells);
+
+ Return<void> setLocationUpdatesResponse(const RadioResponseInfo& info);
+
+ Return<void> setCdmaSubscriptionSourceResponse(const RadioResponseInfo& info);
+
+ Return<void> setCdmaRoamingPreferenceResponse(const RadioResponseInfo& info);
+
+ Return<void> getCdmaRoamingPreferenceResponse(const RadioResponseInfo& info,
+ CdmaRoamingType type);
+
+ Return<void> setTTYModeResponse(const RadioResponseInfo& info);
+
+ Return<void> getTTYModeResponse(const RadioResponseInfo& info, TtyMode mode);
+
+ Return<void> setPreferredVoicePrivacyResponse(const RadioResponseInfo& info);
+
+ Return<void> getPreferredVoicePrivacyResponse(const RadioResponseInfo& info, bool enable);
+
+ Return<void> sendCDMAFeatureCodeResponse(const RadioResponseInfo& info);
+
+ Return<void> sendBurstDtmfResponse(const RadioResponseInfo& info);
+
+ Return<void> sendCdmaSmsResponse(const RadioResponseInfo& info, const SendSmsResult& sms);
+
+ Return<void> acknowledgeLastIncomingCdmaSmsResponse(const RadioResponseInfo& info);
+
+ Return<void> getGsmBroadcastConfigResponse(const RadioResponseInfo& info,
+ const ::android::hardware::hidl_vec<GsmBroadcastSmsConfigInfo>& configs);
+
+ Return<void> setGsmBroadcastConfigResponse(const RadioResponseInfo& info);
+
+ Return<void> setGsmBroadcastActivationResponse(const RadioResponseInfo& info);
+
+ Return<void> getCdmaBroadcastConfigResponse(const RadioResponseInfo& info,
+ const ::android::hardware::hidl_vec<CdmaBroadcastSmsConfigInfo>& configs);
+
+ Return<void> setCdmaBroadcastConfigResponse(const RadioResponseInfo& info);
+
+ Return<void> setCdmaBroadcastActivationResponse(const RadioResponseInfo& info);
+
+ Return<void> getCDMASubscriptionResponse(const RadioResponseInfo& info,
+ const ::android::hardware::hidl_string& mdn,
+ const ::android::hardware::hidl_string& hSid,
+ const ::android::hardware::hidl_string& hNid,
+ const ::android::hardware::hidl_string& min,
+ const ::android::hardware::hidl_string& prl);
+
+ Return<void> writeSmsToRuimResponse(const RadioResponseInfo& info, uint32_t index);
+
+ Return<void> deleteSmsOnRuimResponse(const RadioResponseInfo& info);
+
+ Return<void> getDeviceIdentityResponse(const RadioResponseInfo& info,
+ const ::android::hardware::hidl_string& imei,
+ const ::android::hardware::hidl_string& imeisv,
+ const ::android::hardware::hidl_string& esn,
+ const ::android::hardware::hidl_string& meid);
+
+ Return<void> exitEmergencyCallbackModeResponse(const RadioResponseInfo& info);
+
+ Return<void> getSmscAddressResponse(const RadioResponseInfo& info,
+ const ::android::hardware::hidl_string& smsc);
+
+ Return<void> setSmscAddressResponse(const RadioResponseInfo& info);
+
+ Return<void> reportSmsMemoryStatusResponse(const RadioResponseInfo& info);
+
+ Return<void> reportStkServiceIsRunningResponse(const RadioResponseInfo& info);
+
+ Return<void> getCdmaSubscriptionSourceResponse(const RadioResponseInfo& info,
+ CdmaSubscriptionSource source);
+
+ Return<void> requestIsimAuthenticationResponse(const RadioResponseInfo& info,
+ const ::android::hardware::hidl_string& response);
+
+ Return<void> acknowledgeIncomingGsmSmsWithPduResponse(
+ const RadioResponseInfo& info);
+
+ Return<void> sendEnvelopeWithStatusResponse(const RadioResponseInfo& info,
+ const IccIoResult& iccIo);
+
+ Return<void> getVoiceRadioTechnologyResponse(const RadioResponseInfo& info,
+ RadioTechnology rat);
+
+ Return<void> getCellInfoListResponse(const RadioResponseInfo& info,
+ const ::android::hardware::hidl_vec<CellInfo>& cellInfo);
+
+ Return<void> setCellInfoListRateResponse(const RadioResponseInfo& info);
+
+ Return<void> setInitialAttachApnResponse(const RadioResponseInfo& info);
+
+ Return<void> getImsRegistrationStateResponse(const RadioResponseInfo& info,
+ bool isRegistered, RadioTechnologyFamily ratFamily);
+
+ Return<void> sendImsSmsResponse(const RadioResponseInfo& info,
+ const SendSmsResult& sms);
+
+ Return<void> iccTransmitApduBasicChannelResponse(
+ const RadioResponseInfo& info, const IccIoResult& result);
+
+ Return<void> iccOpenLogicalChannelResponse(const RadioResponseInfo& info,
+ int32_t channelId, const ::android::hardware::hidl_vec<int8_t>& selectResponse);
+
+ Return<void> iccCloseLogicalChannelResponse(const RadioResponseInfo& info);
+
+ Return<void> iccTransmitApduLogicalChannelResponse(
+ const RadioResponseInfo& info, const IccIoResult& result);
+
+ Return<void> nvReadItemResponse(const RadioResponseInfo& info,
+ const ::android::hardware::hidl_string& result);
+
+ Return<void> nvWriteItemResponse(const RadioResponseInfo& info);
+
+ Return<void> nvWriteCdmaPrlResponse(const RadioResponseInfo& info);
+
+ Return<void> nvResetConfigResponse(const RadioResponseInfo& info);
+
+ Return<void> setUiccSubscriptionResponse(const RadioResponseInfo& info);
+
+ Return<void> setDataAllowedResponse(const RadioResponseInfo& info);
+
+ Return<void> getHardwareConfigResponse(const RadioResponseInfo& info,
+ const ::android::hardware::hidl_vec<HardwareConfig>& config);
+
+ Return<void> requestIccSimAuthenticationResponse(
+ const RadioResponseInfo& info, const IccIoResult& result);
+
+ Return<void> setDataProfileResponse(const RadioResponseInfo& info);
+
+ Return<void> requestShutdownResponse(const RadioResponseInfo& info);
+
+ Return<void> getRadioCapabilityResponse(const RadioResponseInfo& info,
+ const RadioCapability& rc);
+
+ Return<void> setRadioCapabilityResponse(const RadioResponseInfo& info,
+ const RadioCapability& rc);
+
+ Return<void> startLceServiceResponse(const RadioResponseInfo& info,
+ const LceStatusInfo& statusInfo);
+
+ Return<void> stopLceServiceResponse(const RadioResponseInfo& info,
+ const LceStatusInfo& statusInfo);
+
+ Return<void> pullLceDataResponse(const RadioResponseInfo& info,
+ const LceDataInfo& lceInfo);
+
+ Return<void> getModemActivityInfoResponse(const RadioResponseInfo& info,
+ const ActivityStatsInfo& activityInfo);
+
+ Return<void> setAllowedCarriersResponse(const RadioResponseInfo& info,
+ int32_t numAllowed);
+
+ Return<void> getAllowedCarriersResponse(const RadioResponseInfo& info,
+ bool allAllowed, const CarrierRestrictions& carriers);
+
+ Return<void> sendDeviceStateResponse(const RadioResponseInfo& info);
+
+ Return<void> setIndicationFilterResponse(const RadioResponseInfo& info);
+
+ Return<void> setSimCardPowerResponse(const RadioResponseInfo& info);
+
+ Return<void> acknowledgeRequest(int32_t serial);
+};
+
+// The main test class for Radio HIDL.
+class RadioHidlTest : public ::testing::VtsHalHidlTargetBaseTest {
+private:
+ std::mutex mtx;
+ std::condition_variable cv;
+ int count;
+
+public:
+ virtual void SetUp() override;
+
+ virtual void TearDown() override;
+
+ /* Used as a mechanism to inform the test about data/event callback */
+ void notify();
+
+ /* Test code calls this function to wait for response */
+ std::cv_status wait();
+
+ sp<IRadio> radio;
+ sp<RadioResponse> radioRsp;
+ sp<IRadioIndication> radioInd;
+
+};
+
+// A class for test environment setup
+class RadioHidlEnvironment : public ::testing::Environment {
+public:
+ virtual void SetUp() {}
+ virtual void TearDown() {}
+};
diff --git a/radio/1.0/vts/functional/radio_response.cpp b/radio/1.0/vts/functional/radio_response.cpp
new file mode 100644
index 0000000..2b4f10f
--- /dev/null
+++ b/radio/1.0/vts/functional/radio_response.cpp
@@ -0,0 +1,696 @@
+/*
+ * Copyright (C) 2017 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.
+ */
+
+#include<radio_hidl_hal_utils.h>
+
+CardStatus cardStatus;
+
+RadioResponse::RadioResponse(RadioHidlTest& parent) : parent(parent) {
+}
+
+Return<void> RadioResponse::getIccCardStatusResponse(
+ const RadioResponseInfo& info, const CardStatus& card_status) {
+ rspInfo = info;
+ cardStatus = card_status;
+ parent.notify();
+ return Void();
+}
+
+Return<void> RadioResponse::supplyIccPinForAppResponse(
+ const RadioResponseInfo& info, int32_t /*remainingRetries*/) {
+ rspInfo = info;
+ parent.notify();
+ return Void();
+}
+
+Return<void> RadioResponse::supplyIccPukForAppResponse(
+ const RadioResponseInfo& info, int32_t /*remainingRetries*/) {
+ rspInfo = info;
+ parent.notify();
+ return Void();
+}
+
+Return<void> RadioResponse::supplyIccPin2ForAppResponse(
+ const RadioResponseInfo& info, int32_t /*remainingRetries*/) {
+ rspInfo = info;
+ parent.notify();
+ return Void();
+}
+
+Return<void> RadioResponse::supplyIccPuk2ForAppResponse(
+ const RadioResponseInfo& info, int32_t /*remainingRetries*/) {
+ rspInfo = info;
+ parent.notify();
+ return Void();
+}
+
+Return<void> RadioResponse::changeIccPinForAppResponse(
+ const RadioResponseInfo& info, int32_t /*remainingRetries*/) {
+ rspInfo = info;
+ parent.notify();
+ return Void();
+}
+
+Return<void> RadioResponse::changeIccPin2ForAppResponse(
+ const RadioResponseInfo& info, int32_t /*remainingRetries*/) {
+ rspInfo = info;
+ parent.notify();
+ return Void();
+}
+
+Return<void> RadioResponse::supplyNetworkDepersonalizationResponse(
+ const RadioResponseInfo& /*info*/, int32_t /*remainingRetries*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::getCurrentCallsResponse(
+ const RadioResponseInfo& /*info*/, const ::android::hardware::hidl_vec<Call>& /*calls*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::dialResponse(const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::getIMSIForAppResponse(
+ const RadioResponseInfo& info, const ::android::hardware::hidl_string& imsi) {
+ rspInfo = info;
+ this->imsi = imsi;
+ parent.notify();
+ return Void();
+}
+
+Return<void> RadioResponse::hangupConnectionResponse(
+ const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::hangupWaitingOrBackgroundResponse(
+ const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::hangupForegroundResumeBackgroundResponse(
+ const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::switchWaitingOrHoldingAndActiveResponse(
+ const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::conferenceResponse(
+ const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::rejectCallResponse(
+ const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::getLastCallFailCauseResponse(
+ const RadioResponseInfo& /*info*/, const LastCallFailCauseInfo& /*failCauseInfo*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::getSignalStrengthResponse(
+ const RadioResponseInfo& /*info*/, const SignalStrength& /*sig_strength*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::getVoiceRegistrationStateResponse(
+ const RadioResponseInfo& /*info*/, const VoiceRegStateResult& /*voiceRegResponse*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::getDataRegistrationStateResponse(
+ const RadioResponseInfo& /*info*/, const DataRegStateResult& /*dataRegResponse*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::getOperatorResponse(
+ const RadioResponseInfo& /*info*/, const ::android::hardware::hidl_string& /*longName*/,
+ const ::android::hardware::hidl_string& /*shortName*/,
+ const ::android::hardware::hidl_string& /*numeric*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::setRadioPowerResponse(const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::sendDtmfResponse(const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::sendSmsResponse(const RadioResponseInfo& /*info*/,
+ const SendSmsResult& /*sms*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::sendSMSExpectMoreResponse(
+ const RadioResponseInfo& /*info*/, const SendSmsResult& /*sms*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::setupDataCallResponse(
+ const RadioResponseInfo& /*info*/, const SetupDataCallResult& /*dcResponse*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::iccIOForAppResponse(
+ const RadioResponseInfo& info, const IccIoResult& iccIo) {
+ rspInfo = info;
+ this->iccIoResult = iccIo;
+ parent.notify();
+ return Void();
+}
+
+Return<void> RadioResponse::sendUssdResponse(const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::cancelPendingUssdResponse(const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::getClirResponse(const RadioResponseInfo& /*info*/, int32_t /*n*/,
+ int32_t /*m*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::setClirResponse(const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::getCallForwardStatusResponse(
+ const RadioResponseInfo& /*info*/, const ::android::hardware::hidl_vec<CallForwardInfo>&
+ /*callForwardInfos*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::setCallForwardResponse(const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::getCallWaitingResponse(
+ const RadioResponseInfo& /*info*/, bool /*enable*/, int32_t /*serviceClass*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::setCallWaitingResponse(const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::acknowledgeLastIncomingGsmSmsResponse(const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::acceptCallResponse(const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::deactivateDataCallResponse(const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::getFacilityLockForAppResponse(const RadioResponseInfo& /*info*/,
+ int32_t /*response*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::setFacilityLockForAppResponse(const RadioResponseInfo& /*info*/,
+ int32_t /*retry*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::setBarringPasswordResponse(const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::getNetworkSelectionModeResponse(
+ const RadioResponseInfo& /*info*/, bool /*manual*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::setNetworkSelectionModeAutomaticResponse(
+ const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::setNetworkSelectionModeManualResponse(
+ const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::getAvailableNetworksResponse(
+ const RadioResponseInfo& /*info*/,
+ const ::android::hardware::hidl_vec<OperatorInfo>& /*networkInfos*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::startDtmfResponse(
+ const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::stopDtmfResponse(
+ const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::getBasebandVersionResponse(
+ const RadioResponseInfo& /*info*/, const ::android::hardware::hidl_string& /*version*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::separateConnectionResponse(const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::setMuteResponse(const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::getMuteResponse(const RadioResponseInfo& /*info*/, bool /*enable*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::getClipResponse(const RadioResponseInfo& /*info*/,
+ ClipStatus /*status*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::getDataCallListResponse(
+ const RadioResponseInfo& /*info*/,
+ const ::android::hardware::hidl_vec<SetupDataCallResult>& /*dcResponse*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::sendOemRilRequestRawResponse(
+ const RadioResponseInfo& /*info*/,
+ const ::android::hardware::hidl_vec<uint8_t>& /*data*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::sendOemRilRequestStringsResponse(
+ const RadioResponseInfo& /*info*/,
+ const ::android::hardware::hidl_vec<::android::hardware::hidl_string>& /*data*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::sendScreenStateResponse(
+ const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::setSuppServiceNotificationsResponse(
+ const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::writeSmsToSimResponse(
+ const RadioResponseInfo& /*info*/, int32_t /*index*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::deleteSmsOnSimResponse(
+ const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::setBandModeResponse(const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::getAvailableBandModesResponse(
+ const RadioResponseInfo& /*info*/,
+ const ::android::hardware::hidl_vec<RadioBandMode>& /*bandModes*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::sendEnvelopeResponse(const RadioResponseInfo& /*info*/,
+ const ::android::hardware::hidl_string& /*commandResponse*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::sendTerminalResponseToSimResponse(const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::handleStkCallSetupRequestFromSimResponse(
+ const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::explicitCallTransferResponse(const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::setPreferredNetworkTypeResponse(const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::getPreferredNetworkTypeResponse(
+ const RadioResponseInfo& /*info*/, PreferredNetworkType /*nw_type*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::getNeighboringCidsResponse(
+ const RadioResponseInfo& /*info*/,
+ const ::android::hardware::hidl_vec<NeighboringCell>& /*cells*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::setLocationUpdatesResponse(
+ const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::setCdmaSubscriptionSourceResponse(const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::setCdmaRoamingPreferenceResponse(const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::getCdmaRoamingPreferenceResponse(
+ const RadioResponseInfo& /*info*/, CdmaRoamingType /*type*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::setTTYModeResponse(const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::getTTYModeResponse(const RadioResponseInfo& /*info*/,
+ TtyMode /*mode*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::setPreferredVoicePrivacyResponse(const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::getPreferredVoicePrivacyResponse(
+ const RadioResponseInfo& /*info*/, bool /*enable*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::sendCDMAFeatureCodeResponse(const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::sendBurstDtmfResponse(const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::sendCdmaSmsResponse(
+ const RadioResponseInfo& /*info*/, const SendSmsResult& /*sms*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::acknowledgeLastIncomingCdmaSmsResponse(
+ const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::getGsmBroadcastConfigResponse(
+ const RadioResponseInfo& /*info*/,
+ const ::android::hardware::hidl_vec<GsmBroadcastSmsConfigInfo>& /*configs*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::setGsmBroadcastConfigResponse(const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::setGsmBroadcastActivationResponse(const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::getCdmaBroadcastConfigResponse(
+ const RadioResponseInfo& /*info*/,
+ const ::android::hardware::hidl_vec<CdmaBroadcastSmsConfigInfo>& /*configs*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::setCdmaBroadcastConfigResponse(const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::setCdmaBroadcastActivationResponse(const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::getCDMASubscriptionResponse(
+ const RadioResponseInfo& /*info*/, const ::android::hardware::hidl_string& /*mdn*/,
+ const ::android::hardware::hidl_string& /*hSid*/,
+ const ::android::hardware::hidl_string& /*hNid*/,
+ const ::android::hardware::hidl_string& /*min*/,
+ const ::android::hardware::hidl_string& /*prl*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::writeSmsToRuimResponse(
+ const RadioResponseInfo& /*info*/, uint32_t /*index*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::deleteSmsOnRuimResponse(
+ const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::getDeviceIdentityResponse(
+ const RadioResponseInfo& /*info*/, const ::android::hardware::hidl_string& /*imei*/,
+ const ::android::hardware::hidl_string& /*imeisv*/,
+ const ::android::hardware::hidl_string& /*esn*/,
+ const ::android::hardware::hidl_string& /*meid*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::exitEmergencyCallbackModeResponse(const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::getSmscAddressResponse(
+ const RadioResponseInfo& /*info*/, const ::android::hardware::hidl_string& /*smsc*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::setSmscAddressResponse(const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::reportSmsMemoryStatusResponse(const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::reportStkServiceIsRunningResponse(const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::getCdmaSubscriptionSourceResponse(
+ const RadioResponseInfo& /*info*/, CdmaSubscriptionSource /*source*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::requestIsimAuthenticationResponse(
+ const RadioResponseInfo& /*info*/, const ::android::hardware::hidl_string& /*response*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::acknowledgeIncomingGsmSmsWithPduResponse(
+ const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::sendEnvelopeWithStatusResponse(
+ const RadioResponseInfo& /*info*/, const IccIoResult& /*iccIo*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::getVoiceRadioTechnologyResponse(
+ const RadioResponseInfo& /*info*/, RadioTechnology /*rat*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::getCellInfoListResponse(
+ const RadioResponseInfo& /*info*/,
+ const ::android::hardware::hidl_vec<CellInfo>& /*cellInfo*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::setCellInfoListRateResponse(const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::setInitialAttachApnResponse(const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::getImsRegistrationStateResponse(
+ const RadioResponseInfo& /*info*/, bool /*isRegistered*/,
+ RadioTechnologyFamily /*ratFamily*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::sendImsSmsResponse(
+ const RadioResponseInfo& /*info*/, const SendSmsResult& /*sms*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::iccTransmitApduBasicChannelResponse(
+ const RadioResponseInfo& info, const IccIoResult& result) {
+ rspInfo = info;
+ this->iccIoResult = result;
+ parent.notify();
+ return Void();
+}
+
+Return<void> RadioResponse::iccOpenLogicalChannelResponse(
+ const RadioResponseInfo& info, int32_t channelId,
+ const ::android::hardware::hidl_vec<int8_t>& /*selectResponse*/) {
+ rspInfo = info;
+ this->channelId = channelId;
+ parent.notify();
+ return Void();
+}
+
+Return<void> RadioResponse::iccCloseLogicalChannelResponse(const RadioResponseInfo& info) {
+ rspInfo = info;
+ parent.notify();
+ return Void();
+}
+
+Return<void> RadioResponse::iccTransmitApduLogicalChannelResponse(
+ const RadioResponseInfo& info, const IccIoResult& result) {
+ rspInfo = info;
+ this->iccIoResult = result;
+ parent.notify();
+ return Void();
+}
+
+Return<void> RadioResponse::nvReadItemResponse(
+ const RadioResponseInfo& /*info*/, const ::android::hardware::hidl_string& /*result*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::nvWriteItemResponse(const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::nvWriteCdmaPrlResponse(const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::nvResetConfigResponse(const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::setUiccSubscriptionResponse(const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::setDataAllowedResponse(const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::getHardwareConfigResponse(
+ const RadioResponseInfo& /*info*/,
+ const ::android::hardware::hidl_vec<HardwareConfig>& /*config*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::requestIccSimAuthenticationResponse(
+ const RadioResponseInfo& info, const IccIoResult& result) {
+ rspInfo = info;
+ this->iccIoResult = result;
+ parent.notify();
+ return Void();
+}
+
+Return<void> RadioResponse::setDataProfileResponse(const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::requestShutdownResponse(const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::getRadioCapabilityResponse(
+ const RadioResponseInfo& /*info*/, const RadioCapability& /*rc*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::setRadioCapabilityResponse(
+ const RadioResponseInfo& /*info*/, const RadioCapability& /*rc*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::startLceServiceResponse(
+ const RadioResponseInfo& /*info*/, const LceStatusInfo& /*statusInfo*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::stopLceServiceResponse(
+ const RadioResponseInfo& /*info*/, const LceStatusInfo& /*statusInfo*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::pullLceDataResponse(
+ const RadioResponseInfo& /*info*/, const LceDataInfo& /*lceInfo*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::getModemActivityInfoResponse(
+ const RadioResponseInfo& /*info*/, const ActivityStatsInfo& /*activityInfo*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::setAllowedCarriersResponse(
+ const RadioResponseInfo& /*info*/, int32_t /*numAllowed*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::getAllowedCarriersResponse(
+ const RadioResponseInfo& /*info*/, bool /*allAllowed*/,
+ const CarrierRestrictions& /*carriers*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::sendDeviceStateResponse(
+ const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::setIndicationFilterResponse(
+ const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::setSimCardPowerResponse(
+ const RadioResponseInfo& /*info*/) {
+ return Void();
+}
+
+Return<void> RadioResponse::acknowledgeRequest(int32_t /*serial*/) {
+ return Void();
+}
diff --git a/radio/1.0/vts/types.vts b/radio/1.0/vts/types.vts
deleted file mode 100644
index 6d42016..0000000
--- a/radio/1.0/vts/types.vts
+++ /dev/null
@@ -1,5696 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "types"
-
-package: "android.hardware.radio"
-
-
-attribute: {
- name: "::android::hardware::radio::V1_0::RadioConst"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "CDMA_ALPHA_INFO_BUFFER_LENGTH"
- scalar_value: {
- int32_t: 64
- }
- enumerator: "CDMA_NUMBER_INFO_BUFFER_LENGTH"
- scalar_value: {
- int32_t: 81
- }
- enumerator: "MAX_RILDS"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "MAX_SOCKET_NAME_LENGTH"
- scalar_value: {
- int32_t: 6
- }
- enumerator: "MAX_CLIENT_ID_LENGTH"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "MAX_DEBUG_SOCKET_NAME_LENGTH"
- scalar_value: {
- int32_t: 12
- }
- enumerator: "MAX_QEMU_PIPE_NAME_LENGTH"
- scalar_value: {
- int32_t: 11
- }
- enumerator: "MAX_UUID_LENGTH"
- scalar_value: {
- int32_t: 64
- }
- enumerator: "CARD_MAX_APPS"
- scalar_value: {
- int32_t: 8
- }
- enumerator: "CDMA_MAX_NUMBER_OF_INFO_RECS"
- scalar_value: {
- int32_t: 10
- }
- enumerator: "SS_INFO_MAX"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "NUM_SERVICE_CLASSES"
- scalar_value: {
- int32_t: 7
- }
- enumerator: "NUM_TX_POWER_LEVELS"
- scalar_value: {
- int32_t: 5
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::RadioCdmaSmsConst"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "ADDRESS_MAX"
- scalar_value: {
- int32_t: 36
- }
- enumerator: "SUBADDRESS_MAX"
- scalar_value: {
- int32_t: 36
- }
- enumerator: "BEARER_DATA_MAX"
- scalar_value: {
- int32_t: 255
- }
- enumerator: "UDH_MAX_SND_SIZE"
- scalar_value: {
- int32_t: 128
- }
- enumerator: "UDH_EO_DATA_SEGMENT_MAX"
- scalar_value: {
- int32_t: 131
- }
- enumerator: "MAX_UD_HEADERS"
- scalar_value: {
- int32_t: 7
- }
- enumerator: "USER_DATA_MAX"
- scalar_value: {
- int32_t: 229
- }
- enumerator: "UDH_LARGE_PIC_SIZE"
- scalar_value: {
- int32_t: 128
- }
- enumerator: "UDH_SMALL_PIC_SIZE"
- scalar_value: {
- int32_t: 32
- }
- enumerator: "UDH_VAR_PIC_SIZE"
- scalar_value: {
- int32_t: 134
- }
- enumerator: "UDH_ANIM_NUM_BITMAPS"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "UDH_LARGE_BITMAP_SIZE"
- scalar_value: {
- int32_t: 32
- }
- enumerator: "UDH_SMALL_BITMAP_SIZE"
- scalar_value: {
- int32_t: 8
- }
- enumerator: "UDH_OTHER_SIZE"
- scalar_value: {
- int32_t: 226
- }
- enumerator: "IP_ADDRESS_SIZE"
- scalar_value: {
- int32_t: 4
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::RadioError"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "NONE"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "RADIO_NOT_AVAILABLE"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "GENERIC_FAILURE"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "PASSWORD_INCORRECT"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "SIM_PIN2"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "SIM_PUK2"
- scalar_value: {
- int32_t: 5
- }
- enumerator: "REQUEST_NOT_SUPPORTED"
- scalar_value: {
- int32_t: 6
- }
- enumerator: "CANCELLED"
- scalar_value: {
- int32_t: 7
- }
- enumerator: "OP_NOT_ALLOWED_DURING_VOICE_CALL"
- scalar_value: {
- int32_t: 8
- }
- enumerator: "OP_NOT_ALLOWED_BEFORE_REG_TO_NW"
- scalar_value: {
- int32_t: 9
- }
- enumerator: "SMS_SEND_FAIL_RETRY"
- scalar_value: {
- int32_t: 10
- }
- enumerator: "SIM_ABSENT"
- scalar_value: {
- int32_t: 11
- }
- enumerator: "SUBSCRIPTION_NOT_AVAILABLE"
- scalar_value: {
- int32_t: 12
- }
- enumerator: "MODE_NOT_SUPPORTED"
- scalar_value: {
- int32_t: 13
- }
- enumerator: "FDN_CHECK_FAILURE"
- scalar_value: {
- int32_t: 14
- }
- enumerator: "ILLEGAL_SIM_OR_ME"
- scalar_value: {
- int32_t: 15
- }
- enumerator: "MISSING_RESOURCE"
- scalar_value: {
- int32_t: 16
- }
- enumerator: "NO_SUCH_ELEMENT"
- scalar_value: {
- int32_t: 17
- }
- enumerator: "DIAL_MODIFIED_TO_USSD"
- scalar_value: {
- int32_t: 18
- }
- enumerator: "DIAL_MODIFIED_TO_SS"
- scalar_value: {
- int32_t: 19
- }
- enumerator: "DIAL_MODIFIED_TO_DIAL"
- scalar_value: {
- int32_t: 20
- }
- enumerator: "USSD_MODIFIED_TO_DIAL"
- scalar_value: {
- int32_t: 21
- }
- enumerator: "USSD_MODIFIED_TO_SS"
- scalar_value: {
- int32_t: 22
- }
- enumerator: "USSD_MODIFIED_TO_USSD"
- scalar_value: {
- int32_t: 23
- }
- enumerator: "SS_MODIFIED_TO_DIAL"
- scalar_value: {
- int32_t: 24
- }
- enumerator: "SS_MODIFIED_TO_USSD"
- scalar_value: {
- int32_t: 25
- }
- enumerator: "SUBSCRIPTION_NOT_SUPPORTED"
- scalar_value: {
- int32_t: 26
- }
- enumerator: "SS_MODIFIED_TO_SS"
- scalar_value: {
- int32_t: 27
- }
- enumerator: "LCE_NOT_SUPPORTED"
- scalar_value: {
- int32_t: 36
- }
- enumerator: "NO_MEMORY"
- scalar_value: {
- int32_t: 37
- }
- enumerator: "INTERNAL_ERR"
- scalar_value: {
- int32_t: 38
- }
- enumerator: "SYSTEM_ERR"
- scalar_value: {
- int32_t: 39
- }
- enumerator: "MODEM_ERR"
- scalar_value: {
- int32_t: 40
- }
- enumerator: "INVALID_STATE"
- scalar_value: {
- int32_t: 41
- }
- enumerator: "NO_RESOURCES"
- scalar_value: {
- int32_t: 42
- }
- enumerator: "SIM_ERR"
- scalar_value: {
- int32_t: 43
- }
- enumerator: "INVALID_ARGUMENTS"
- scalar_value: {
- int32_t: 44
- }
- enumerator: "INVALID_SIM_STATE"
- scalar_value: {
- int32_t: 45
- }
- enumerator: "INVALID_MODEM_STATE"
- scalar_value: {
- int32_t: 46
- }
- enumerator: "INVALID_CALL_ID"
- scalar_value: {
- int32_t: 47
- }
- enumerator: "NO_SMS_TO_ACK"
- scalar_value: {
- int32_t: 48
- }
- enumerator: "NETWORK_ERR"
- scalar_value: {
- int32_t: 49
- }
- enumerator: "REQUEST_RATE_LIMITED"
- scalar_value: {
- int32_t: 50
- }
- enumerator: "SIM_BUSY"
- scalar_value: {
- int32_t: 51
- }
- enumerator: "SIM_FULL"
- scalar_value: {
- int32_t: 52
- }
- enumerator: "NETWORK_REJECT"
- scalar_value: {
- int32_t: 53
- }
- enumerator: "OPERATION_NOT_ALLOWED"
- scalar_value: {
- int32_t: 54
- }
- enumerator: "EMPTY_RECORD"
- scalar_value: {
- int32_t: 55
- }
- enumerator: "INVALID_SMS_FORMAT"
- scalar_value: {
- int32_t: 56
- }
- enumerator: "ENCODING_ERR"
- scalar_value: {
- int32_t: 57
- }
- enumerator: "INVALID_SMSC_ADDRESS"
- scalar_value: {
- int32_t: 58
- }
- enumerator: "NO_SUCH_ENTRY"
- scalar_value: {
- int32_t: 59
- }
- enumerator: "NETWORK_NOT_READY"
- scalar_value: {
- int32_t: 60
- }
- enumerator: "NOT_PROVISIONED"
- scalar_value: {
- int32_t: 61
- }
- enumerator: "NO_SUBSCRIPTION"
- scalar_value: {
- int32_t: 62
- }
- enumerator: "NO_NETWORK_FOUND"
- scalar_value: {
- int32_t: 63
- }
- enumerator: "DEVICE_IN_USE"
- scalar_value: {
- int32_t: 64
- }
- enumerator: "ABORTED"
- scalar_value: {
- int32_t: 65
- }
- enumerator: "INVALID_RESPONSE"
- scalar_value: {
- int32_t: 66
- }
- enumerator: "OEM_ERROR_1"
- scalar_value: {
- int32_t: 501
- }
- enumerator: "OEM_ERROR_2"
- scalar_value: {
- int32_t: 502
- }
- enumerator: "OEM_ERROR_3"
- scalar_value: {
- int32_t: 503
- }
- enumerator: "OEM_ERROR_4"
- scalar_value: {
- int32_t: 504
- }
- enumerator: "OEM_ERROR_5"
- scalar_value: {
- int32_t: 505
- }
- enumerator: "OEM_ERROR_6"
- scalar_value: {
- int32_t: 506
- }
- enumerator: "OEM_ERROR_7"
- scalar_value: {
- int32_t: 507
- }
- enumerator: "OEM_ERROR_8"
- scalar_value: {
- int32_t: 508
- }
- enumerator: "OEM_ERROR_9"
- scalar_value: {
- int32_t: 509
- }
- enumerator: "OEM_ERROR_10"
- scalar_value: {
- int32_t: 510
- }
- enumerator: "OEM_ERROR_11"
- scalar_value: {
- int32_t: 511
- }
- enumerator: "OEM_ERROR_12"
- scalar_value: {
- int32_t: 512
- }
- enumerator: "OEM_ERROR_13"
- scalar_value: {
- int32_t: 513
- }
- enumerator: "OEM_ERROR_14"
- scalar_value: {
- int32_t: 514
- }
- enumerator: "OEM_ERROR_15"
- scalar_value: {
- int32_t: 515
- }
- enumerator: "OEM_ERROR_16"
- scalar_value: {
- int32_t: 516
- }
- enumerator: "OEM_ERROR_17"
- scalar_value: {
- int32_t: 517
- }
- enumerator: "OEM_ERROR_18"
- scalar_value: {
- int32_t: 518
- }
- enumerator: "OEM_ERROR_19"
- scalar_value: {
- int32_t: 519
- }
- enumerator: "OEM_ERROR_20"
- scalar_value: {
- int32_t: 520
- }
- enumerator: "OEM_ERROR_21"
- scalar_value: {
- int32_t: 521
- }
- enumerator: "OEM_ERROR_22"
- scalar_value: {
- int32_t: 522
- }
- enumerator: "OEM_ERROR_23"
- scalar_value: {
- int32_t: 523
- }
- enumerator: "OEM_ERROR_24"
- scalar_value: {
- int32_t: 524
- }
- enumerator: "OEM_ERROR_25"
- scalar_value: {
- int32_t: 525
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::RadioResponseType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "SOLICITED"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "SOLICITED_ACK"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "SOLICITED_ACK_EXP"
- scalar_value: {
- int32_t: 2
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::RadioIndicationType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "UNSOLICITED"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "UNSOLICITED_ACK_EXP"
- scalar_value: {
- int32_t: 1
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::RestrictedState"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "NONE"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "CS_EMERGENCY"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "CS_NORMAL"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "CS_ALL"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "PS_ALL"
- scalar_value: {
- int32_t: 16
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CardState"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "ABSENT"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "PRESENT"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "ERROR"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "RESTRICTED"
- scalar_value: {
- int32_t: 3
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::PinState"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "UNKNOWN"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "ENABLED_NOT_VERIFIED"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "ENABLED_VERIFIED"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "DISABLED"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "ENABLED_BLOCKED"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "ENABLED_PERM_BLOCKED"
- scalar_value: {
- int32_t: 5
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::AppType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "UNKNOWN"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "SIM"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "USIM"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "RUIM"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "CSIM"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "ISIM"
- scalar_value: {
- int32_t: 5
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::AppState"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "UNKNOWN"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "DETECTED"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "PIN"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "PUK"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "SUBSCRIPTION_PERSO"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "READY"
- scalar_value: {
- int32_t: 5
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::PersoSubstate"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "UNKNOWN"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "IN_PROGRESS"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "READY"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "SIM_NETWORK"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "SIM_NETWORK_SUBSET"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "SIM_CORPORATE"
- scalar_value: {
- int32_t: 5
- }
- enumerator: "SIM_SERVICE_PROVIDER"
- scalar_value: {
- int32_t: 6
- }
- enumerator: "SIM_SIM"
- scalar_value: {
- int32_t: 7
- }
- enumerator: "SIM_NETWORK_PUK"
- scalar_value: {
- int32_t: 8
- }
- enumerator: "SIM_NETWORK_SUBSET_PUK"
- scalar_value: {
- int32_t: 9
- }
- enumerator: "SIM_CORPORATE_PUK"
- scalar_value: {
- int32_t: 10
- }
- enumerator: "SIM_SERVICE_PROVIDER_PUK"
- scalar_value: {
- int32_t: 11
- }
- enumerator: "SIM_SIM_PUK"
- scalar_value: {
- int32_t: 12
- }
- enumerator: "RUIM_NETWORK1"
- scalar_value: {
- int32_t: 13
- }
- enumerator: "RUIM_NETWORK2"
- scalar_value: {
- int32_t: 14
- }
- enumerator: "RUIM_HRPD"
- scalar_value: {
- int32_t: 15
- }
- enumerator: "RUIM_CORPORATE"
- scalar_value: {
- int32_t: 16
- }
- enumerator: "RUIM_SERVICE_PROVIDER"
- scalar_value: {
- int32_t: 17
- }
- enumerator: "RUIM_RUIM"
- scalar_value: {
- int32_t: 18
- }
- enumerator: "RUIM_NETWORK1_PUK"
- scalar_value: {
- int32_t: 19
- }
- enumerator: "RUIM_NETWORK2_PUK"
- scalar_value: {
- int32_t: 20
- }
- enumerator: "RUIM_HRPD_PUK"
- scalar_value: {
- int32_t: 21
- }
- enumerator: "RUIM_CORPORATE_PUK"
- scalar_value: {
- int32_t: 22
- }
- enumerator: "RUIM_SERVICE_PROVIDER_PUK"
- scalar_value: {
- int32_t: 23
- }
- enumerator: "RUIM_RUIM_PUK"
- scalar_value: {
- int32_t: 24
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::RadioState"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "OFF"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "UNAVAILABLE"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "ON"
- scalar_value: {
- int32_t: 10
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::SapConnectRsp"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "SUCCESS"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "CONNECT_FAILURE"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "MSG_SIZE_TOO_LARGE"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "MSG_SIZE_TOO_SMALL"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "CONNECT_OK_CALL_ONGOING"
- scalar_value: {
- int32_t: 4
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::SapDisconnectType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "GRACEFUL"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "IMMEDIATE"
- scalar_value: {
- int32_t: 1
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::SapApduType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "APDU"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "APDU7816"
- scalar_value: {
- int32_t: 1
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::SapResultCode"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "SUCCESS"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "GENERIC_FAILURE"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "CARD_NOT_ACCESSSIBLE"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "CARD_ALREADY_POWERED_OFF"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "CARD_REMOVED"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "CARD_ALREADY_POWERED_ON"
- scalar_value: {
- int32_t: 5
- }
- enumerator: "DATA_NOT_AVAILABLE"
- scalar_value: {
- int32_t: 6
- }
- enumerator: "NOT_SUPPORTED"
- scalar_value: {
- int32_t: 7
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::SapStatus"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "UNKNOWN_ERROR"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "CARD_RESET"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "CARD_NOT_ACCESSIBLE"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "CARD_REMOVED"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "CARD_INSERTED"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "RECOVERED"
- scalar_value: {
- int32_t: 5
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::SapTransferProtocol"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "T0"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "T1"
- scalar_value: {
- int32_t: 1
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CallState"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "ACTIVE"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "HOLDING"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "DIALING"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "ALERTING"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "INCOMING"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "WAITING"
- scalar_value: {
- int32_t: 5
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::UusType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "TYPE1_IMPLICIT"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "TYPE1_REQUIRED"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "TYPE1_NOT_REQUIRED"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "TYPE2_REQUIRED"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "TYPE2_NOT_REQUIRED"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "TYPE3_REQUIRED"
- scalar_value: {
- int32_t: 5
- }
- enumerator: "TYPE3_NOT_REQUIRED"
- scalar_value: {
- int32_t: 6
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::UusDcs"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "USP"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "OSIHLP"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "X244"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "RMCF"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "IA5C"
- scalar_value: {
- int32_t: 4
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CallPresentation"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "ALLOWED"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "RESTRICTED"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "UNKNOWN"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "PAYPHONE"
- scalar_value: {
- int32_t: 3
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::Clir"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "DEFAULT"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "INVOCATION"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "SUPPRESSION"
- scalar_value: {
- int32_t: 2
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::LastCallFailCause"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "UNOBTAINABLE_NUMBER"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "NO_ROUTE_TO_DESTINATION"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "CHANNEL_UNACCEPTABLE"
- scalar_value: {
- int32_t: 6
- }
- enumerator: "OPERATOR_DETERMINED_BARRING"
- scalar_value: {
- int32_t: 8
- }
- enumerator: "NORMAL"
- scalar_value: {
- int32_t: 16
- }
- enumerator: "BUSY"
- scalar_value: {
- int32_t: 17
- }
- enumerator: "NO_USER_RESPONDING"
- scalar_value: {
- int32_t: 18
- }
- enumerator: "NO_ANSWER_FROM_USER"
- scalar_value: {
- int32_t: 19
- }
- enumerator: "CALL_REJECTED"
- scalar_value: {
- int32_t: 21
- }
- enumerator: "NUMBER_CHANGED"
- scalar_value: {
- int32_t: 22
- }
- enumerator: "PREEMPTION"
- scalar_value: {
- int32_t: 25
- }
- enumerator: "DESTINATION_OUT_OF_ORDER"
- scalar_value: {
- int32_t: 27
- }
- enumerator: "INVALID_NUMBER_FORMAT"
- scalar_value: {
- int32_t: 28
- }
- enumerator: "FACILITY_REJECTED"
- scalar_value: {
- int32_t: 29
- }
- enumerator: "RESP_TO_STATUS_ENQUIRY"
- scalar_value: {
- int32_t: 30
- }
- enumerator: "NORMAL_UNSPECIFIED"
- scalar_value: {
- int32_t: 31
- }
- enumerator: "CONGESTION"
- scalar_value: {
- int32_t: 34
- }
- enumerator: "NETWORK_OUT_OF_ORDER"
- scalar_value: {
- int32_t: 38
- }
- enumerator: "TEMPORARY_FAILURE"
- scalar_value: {
- int32_t: 41
- }
- enumerator: "SWITCHING_EQUIPMENT_CONGESTION"
- scalar_value: {
- int32_t: 42
- }
- enumerator: "ACCESS_INFORMATION_DISCARDED"
- scalar_value: {
- int32_t: 43
- }
- enumerator: "REQUESTED_CIRCUIT_OR_CHANNEL_NOT_AVAILABLE"
- scalar_value: {
- int32_t: 44
- }
- enumerator: "RESOURCES_UNAVAILABLE_OR_UNSPECIFIED"
- scalar_value: {
- int32_t: 47
- }
- enumerator: "QOS_UNAVAILABLE"
- scalar_value: {
- int32_t: 49
- }
- enumerator: "REQUESTED_FACILITY_NOT_SUBSCRIBED"
- scalar_value: {
- int32_t: 50
- }
- enumerator: "INCOMING_CALLS_BARRED_WITHIN_CUG"
- scalar_value: {
- int32_t: 55
- }
- enumerator: "BEARER_CAPABILITY_NOT_AUTHORIZED"
- scalar_value: {
- int32_t: 57
- }
- enumerator: "BEARER_CAPABILITY_UNAVAILABLE"
- scalar_value: {
- int32_t: 58
- }
- enumerator: "SERVICE_OPTION_NOT_AVAILABLE"
- scalar_value: {
- int32_t: 63
- }
- enumerator: "BEARER_SERVICE_NOT_IMPLEMENTED"
- scalar_value: {
- int32_t: 65
- }
- enumerator: "ACM_LIMIT_EXCEEDED"
- scalar_value: {
- int32_t: 68
- }
- enumerator: "REQUESTED_FACILITY_NOT_IMPLEMENTED"
- scalar_value: {
- int32_t: 69
- }
- enumerator: "ONLY_DIGITAL_INFORMATION_BEARER_AVAILABLE"
- scalar_value: {
- int32_t: 70
- }
- enumerator: "SERVICE_OR_OPTION_NOT_IMPLEMENTED"
- scalar_value: {
- int32_t: 79
- }
- enumerator: "INVALID_TRANSACTION_IDENTIFIER"
- scalar_value: {
- int32_t: 81
- }
- enumerator: "USER_NOT_MEMBER_OF_CUG"
- scalar_value: {
- int32_t: 87
- }
- enumerator: "INCOMPATIBLE_DESTINATION"
- scalar_value: {
- int32_t: 88
- }
- enumerator: "INVALID_TRANSIT_NW_SELECTION"
- scalar_value: {
- int32_t: 91
- }
- enumerator: "SEMANTICALLY_INCORRECT_MESSAGE"
- scalar_value: {
- int32_t: 95
- }
- enumerator: "INVALID_MANDATORY_INFORMATION"
- scalar_value: {
- int32_t: 96
- }
- enumerator: "MESSAGE_TYPE_NON_IMPLEMENTED"
- scalar_value: {
- int32_t: 97
- }
- enumerator: "MESSAGE_TYPE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE"
- scalar_value: {
- int32_t: 98
- }
- enumerator: "INFORMATION_ELEMENT_NON_EXISTENT"
- scalar_value: {
- int32_t: 99
- }
- enumerator: "CONDITIONAL_IE_ERROR"
- scalar_value: {
- int32_t: 100
- }
- enumerator: "MESSAGE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE"
- scalar_value: {
- int32_t: 101
- }
- enumerator: "RECOVERY_ON_TIMER_EXPIRED"
- scalar_value: {
- int32_t: 102
- }
- enumerator: "PROTOCOL_ERROR_UNSPECIFIED"
- scalar_value: {
- int32_t: 111
- }
- enumerator: "INTERWORKING_UNSPECIFIED"
- scalar_value: {
- int32_t: 127
- }
- enumerator: "CALL_BARRED"
- scalar_value: {
- int32_t: 240
- }
- enumerator: "FDN_BLOCKED"
- scalar_value: {
- int32_t: 241
- }
- enumerator: "IMSI_UNKNOWN_IN_VLR"
- scalar_value: {
- int32_t: 242
- }
- enumerator: "IMEI_NOT_ACCEPTED"
- scalar_value: {
- int32_t: 243
- }
- enumerator: "DIAL_MODIFIED_TO_USSD"
- scalar_value: {
- int32_t: 244
- }
- enumerator: "DIAL_MODIFIED_TO_SS"
- scalar_value: {
- int32_t: 245
- }
- enumerator: "DIAL_MODIFIED_TO_DIAL"
- scalar_value: {
- int32_t: 246
- }
- enumerator: "CDMA_LOCKED_UNTIL_POWER_CYCLE"
- scalar_value: {
- int32_t: 1000
- }
- enumerator: "CDMA_DROP"
- scalar_value: {
- int32_t: 1001
- }
- enumerator: "CDMA_INTERCEPT"
- scalar_value: {
- int32_t: 1002
- }
- enumerator: "CDMA_REORDER"
- scalar_value: {
- int32_t: 1003
- }
- enumerator: "CDMA_SO_REJECT"
- scalar_value: {
- int32_t: 1004
- }
- enumerator: "CDMA_RETRY_ORDER"
- scalar_value: {
- int32_t: 1005
- }
- enumerator: "CDMA_ACCESS_FAILURE"
- scalar_value: {
- int32_t: 1006
- }
- enumerator: "CDMA_PREEMPTED"
- scalar_value: {
- int32_t: 1007
- }
- enumerator: "CDMA_NOT_EMERGENCY"
- scalar_value: {
- int32_t: 1008
- }
- enumerator: "CDMA_ACCESS_BLOCKED"
- scalar_value: {
- int32_t: 1009
- }
- enumerator: "ERROR_UNSPECIFIED"
- scalar_value: {
- int32_t: 65535
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::DataCallFailCause"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "NONE"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "OPERATOR_BARRED"
- scalar_value: {
- int32_t: 8
- }
- enumerator: "NAS_SIGNALLING"
- scalar_value: {
- int32_t: 14
- }
- enumerator: "INSUFFICIENT_RESOURCES"
- scalar_value: {
- int32_t: 26
- }
- enumerator: "MISSING_UKNOWN_APN"
- scalar_value: {
- int32_t: 27
- }
- enumerator: "UNKNOWN_PDP_ADDRESS_TYPE"
- scalar_value: {
- int32_t: 28
- }
- enumerator: "USER_AUTHENTICATION"
- scalar_value: {
- int32_t: 29
- }
- enumerator: "ACTIVATION_REJECT_GGSN"
- scalar_value: {
- int32_t: 30
- }
- enumerator: "ACTIVATION_REJECT_UNSPECIFIED"
- scalar_value: {
- int32_t: 31
- }
- enumerator: "SERVICE_OPTION_NOT_SUPPORTED"
- scalar_value: {
- int32_t: 32
- }
- enumerator: "SERVICE_OPTION_NOT_SUBSCRIBED"
- scalar_value: {
- int32_t: 33
- }
- enumerator: "SERVICE_OPTION_OUT_OF_ORDER"
- scalar_value: {
- int32_t: 34
- }
- enumerator: "NSAPI_IN_USE"
- scalar_value: {
- int32_t: 35
- }
- enumerator: "REGULAR_DEACTIVATION"
- scalar_value: {
- int32_t: 36
- }
- enumerator: "QOS_NOT_ACCEPTED"
- scalar_value: {
- int32_t: 37
- }
- enumerator: "NETWORK_FAILURE"
- scalar_value: {
- int32_t: 38
- }
- enumerator: "UMTS_REACTIVATION_REQ"
- scalar_value: {
- int32_t: 39
- }
- enumerator: "FEATURE_NOT_SUPP"
- scalar_value: {
- int32_t: 40
- }
- enumerator: "TFT_SEMANTIC_ERROR"
- scalar_value: {
- int32_t: 41
- }
- enumerator: "TFT_SYTAX_ERROR"
- scalar_value: {
- int32_t: 42
- }
- enumerator: "UNKNOWN_PDP_CONTEXT"
- scalar_value: {
- int32_t: 43
- }
- enumerator: "FILTER_SEMANTIC_ERROR"
- scalar_value: {
- int32_t: 44
- }
- enumerator: "FILTER_SYTAX_ERROR"
- scalar_value: {
- int32_t: 45
- }
- enumerator: "PDP_WITHOUT_ACTIVE_TFT"
- scalar_value: {
- int32_t: 46
- }
- enumerator: "ONLY_IPV4_ALLOWED"
- scalar_value: {
- int32_t: 50
- }
- enumerator: "ONLY_IPV6_ALLOWED"
- scalar_value: {
- int32_t: 51
- }
- enumerator: "ONLY_SINGLE_BEARER_ALLOWED"
- scalar_value: {
- int32_t: 52
- }
- enumerator: "ESM_INFO_NOT_RECEIVED"
- scalar_value: {
- int32_t: 53
- }
- enumerator: "PDN_CONN_DOES_NOT_EXIST"
- scalar_value: {
- int32_t: 54
- }
- enumerator: "MULTI_CONN_TO_SAME_PDN_NOT_ALLOWED"
- scalar_value: {
- int32_t: 55
- }
- enumerator: "MAX_ACTIVE_PDP_CONTEXT_REACHED"
- scalar_value: {
- int32_t: 65
- }
- enumerator: "UNSUPPORTED_APN_IN_CURRENT_PLMN"
- scalar_value: {
- int32_t: 66
- }
- enumerator: "INVALID_TRANSACTION_ID"
- scalar_value: {
- int32_t: 81
- }
- enumerator: "MESSAGE_INCORRECT_SEMANTIC"
- scalar_value: {
- int32_t: 95
- }
- enumerator: "INVALID_MANDATORY_INFO"
- scalar_value: {
- int32_t: 96
- }
- enumerator: "MESSAGE_TYPE_UNSUPPORTED"
- scalar_value: {
- int32_t: 97
- }
- enumerator: "MSG_TYPE_NONCOMPATIBLE_STATE"
- scalar_value: {
- int32_t: 98
- }
- enumerator: "UNKNOWN_INFO_ELEMENT"
- scalar_value: {
- int32_t: 99
- }
- enumerator: "CONDITIONAL_IE_ERROR"
- scalar_value: {
- int32_t: 100
- }
- enumerator: "MSG_AND_PROTOCOL_STATE_UNCOMPATIBLE"
- scalar_value: {
- int32_t: 101
- }
- enumerator: "PROTOCOL_ERRORS"
- scalar_value: {
- int32_t: 111
- }
- enumerator: "APN_TYPE_CONFLICT"
- scalar_value: {
- int32_t: 112
- }
- enumerator: "INVALID_PCSCF_ADDR"
- scalar_value: {
- int32_t: 113
- }
- enumerator: "INTERNAL_CALL_PREEMPT_BY_HIGH_PRIO_APN"
- scalar_value: {
- int32_t: 114
- }
- enumerator: "EMM_ACCESS_BARRED"
- scalar_value: {
- int32_t: 115
- }
- enumerator: "EMERGENCY_IFACE_ONLY"
- scalar_value: {
- int32_t: 116
- }
- enumerator: "IFACE_MISMATCH"
- scalar_value: {
- int32_t: 117
- }
- enumerator: "COMPANION_IFACE_IN_USE"
- scalar_value: {
- int32_t: 118
- }
- enumerator: "IP_ADDRESS_MISMATCH"
- scalar_value: {
- int32_t: 119
- }
- enumerator: "IFACE_AND_POL_FAMILY_MISMATCH"
- scalar_value: {
- int32_t: 120
- }
- enumerator: "EMM_ACCESS_BARRED_INFINITE_RETRY"
- scalar_value: {
- int32_t: 121
- }
- enumerator: "AUTH_FAILURE_ON_EMERGENCY_CALL"
- scalar_value: {
- int32_t: 122
- }
- enumerator: "OEM_DCFAILCAUSE_1"
- scalar_value: {
- int32_t: 4097
- }
- enumerator: "OEM_DCFAILCAUSE_2"
- scalar_value: {
- int32_t: 4098
- }
- enumerator: "OEM_DCFAILCAUSE_3"
- scalar_value: {
- int32_t: 4099
- }
- enumerator: "OEM_DCFAILCAUSE_4"
- scalar_value: {
- int32_t: 4100
- }
- enumerator: "OEM_DCFAILCAUSE_5"
- scalar_value: {
- int32_t: 4101
- }
- enumerator: "OEM_DCFAILCAUSE_6"
- scalar_value: {
- int32_t: 4102
- }
- enumerator: "OEM_DCFAILCAUSE_7"
- scalar_value: {
- int32_t: 4103
- }
- enumerator: "OEM_DCFAILCAUSE_8"
- scalar_value: {
- int32_t: 4104
- }
- enumerator: "OEM_DCFAILCAUSE_9"
- scalar_value: {
- int32_t: 4105
- }
- enumerator: "OEM_DCFAILCAUSE_10"
- scalar_value: {
- int32_t: 4106
- }
- enumerator: "OEM_DCFAILCAUSE_11"
- scalar_value: {
- int32_t: 4107
- }
- enumerator: "OEM_DCFAILCAUSE_12"
- scalar_value: {
- int32_t: 4108
- }
- enumerator: "OEM_DCFAILCAUSE_13"
- scalar_value: {
- int32_t: 4109
- }
- enumerator: "OEM_DCFAILCAUSE_14"
- scalar_value: {
- int32_t: 4110
- }
- enumerator: "OEM_DCFAILCAUSE_15"
- scalar_value: {
- int32_t: 4111
- }
- enumerator: "VOICE_REGISTRATION_FAIL"
- scalar_value: {
- int32_t: -1
- }
- enumerator: "DATA_REGISTRATION_FAIL"
- scalar_value: {
- int32_t: -2
- }
- enumerator: "SIGNAL_LOST"
- scalar_value: {
- int32_t: -3
- }
- enumerator: "PREF_RADIO_TECH_CHANGED"
- scalar_value: {
- int32_t: -4
- }
- enumerator: "RADIO_POWER_OFF"
- scalar_value: {
- int32_t: -5
- }
- enumerator: "TETHERED_CALL_ACTIVE"
- scalar_value: {
- int32_t: -6
- }
- enumerator: "ERROR_UNSPECIFIED"
- scalar_value: {
- int32_t: 65535
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::RegState"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "NOT_REG_MT_NOT_SEARCHING_OP"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "REG_HOME"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "NOT_REG_MT_SEARCHING_OP"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "REG_DENIED"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "UNKNOWN"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "REG_ROAMING"
- scalar_value: {
- int32_t: 5
- }
- enumerator: "NOT_REG_MT_NOT_SEARCHING_OP_EM"
- scalar_value: {
- int32_t: 6
- }
- enumerator: "NOT_REG_MT_SEARCHING_OP_EM"
- scalar_value: {
- int32_t: 7
- }
- enumerator: "REG_DENIED_EM"
- scalar_value: {
- int32_t: 8
- }
- enumerator: "UNKNOWN_EM"
- scalar_value: {
- int32_t: 9
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::RadioTechnology"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "UNKNOWN"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "GPRS"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "EDGE"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "UMTS"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "IS95A"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "IS95B"
- scalar_value: {
- int32_t: 5
- }
- enumerator: "ONE_X_RTT"
- scalar_value: {
- int32_t: 6
- }
- enumerator: "EVDO_0"
- scalar_value: {
- int32_t: 7
- }
- enumerator: "EVDO_A"
- scalar_value: {
- int32_t: 8
- }
- enumerator: "HSDPA"
- scalar_value: {
- int32_t: 9
- }
- enumerator: "HSUPA"
- scalar_value: {
- int32_t: 10
- }
- enumerator: "HSPA"
- scalar_value: {
- int32_t: 11
- }
- enumerator: "EVDO_B"
- scalar_value: {
- int32_t: 12
- }
- enumerator: "EHRPD"
- scalar_value: {
- int32_t: 13
- }
- enumerator: "LTE"
- scalar_value: {
- int32_t: 14
- }
- enumerator: "HSPAP"
- scalar_value: {
- int32_t: 15
- }
- enumerator: "GSM"
- scalar_value: {
- int32_t: 16
- }
- enumerator: "TD_SCDMA"
- scalar_value: {
- int32_t: 17
- }
- enumerator: "IWLAN"
- scalar_value: {
- int32_t: 18
- }
- enumerator: "LTE_CA"
- scalar_value: {
- int32_t: 19
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::DataProfileId"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "DEFAULT"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "TETHERED"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "IMS"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "FOTA"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "CBS"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "OEM_BASE"
- scalar_value: {
- int32_t: 1000
- }
- enumerator: "INVALID"
- scalar_value: {
- int32_t: -1
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::SmsAcknowledgeFailCause"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "MEMORY_CAPACITY_EXCEEDED"
- scalar_value: {
- int32_t: 211
- }
- enumerator: "UNSPECIFIED_ERROR"
- scalar_value: {
- int32_t: 255
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CallForwardInfoStatus"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "DISABLE"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "ENABLE"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "INTERROGATE"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "REGISTRATION"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "ERASURE"
- scalar_value: {
- int32_t: 4
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::ClipStatus"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "CLIP_PROVISIONED"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "CLIP_UNPROVISIONED"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "UNKNOWN"
- scalar_value: {
- int32_t: 2
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::SmsWriteArgsStatus"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "REC_UNREAD"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "REC_READ"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "STO_UNSENT"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "STO_SENT"
- scalar_value: {
- int32_t: 3
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::RadioBandMode"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "BAND_MODE_UNSPECIFIED"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "BAND_MODE_EURO"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "BAND_MODE_USA"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "BAND_MODE_JPN"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "BAND_MODE_AUS"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "BAND_MODE_AUS_2"
- scalar_value: {
- int32_t: 5
- }
- enumerator: "BAND_MODE_CELL_800"
- scalar_value: {
- int32_t: 6
- }
- enumerator: "BAND_MODE_PCS"
- scalar_value: {
- int32_t: 7
- }
- enumerator: "BAND_MODE_JTACS"
- scalar_value: {
- int32_t: 8
- }
- enumerator: "BAND_MODE_KOREA_PCS"
- scalar_value: {
- int32_t: 9
- }
- enumerator: "BAND_MODE_5_450M"
- scalar_value: {
- int32_t: 10
- }
- enumerator: "BAND_MODE_IMT2000"
- scalar_value: {
- int32_t: 11
- }
- enumerator: "BAND_MODE_7_700M_2"
- scalar_value: {
- int32_t: 12
- }
- enumerator: "BAND_MODE_8_1800M"
- scalar_value: {
- int32_t: 13
- }
- enumerator: "BAND_MODE_9_900M"
- scalar_value: {
- int32_t: 14
- }
- enumerator: "BAND_MODE_10_800M_2"
- scalar_value: {
- int32_t: 15
- }
- enumerator: "BAND_MODE_EURO_PAMR_400M"
- scalar_value: {
- int32_t: 16
- }
- enumerator: "BAND_MODE_AWS"
- scalar_value: {
- int32_t: 17
- }
- enumerator: "BAND_MODE_USA_2500M"
- scalar_value: {
- int32_t: 18
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::OperatorStatus"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "UNKNOWN"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "AVAILABLE"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "CURRENT"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "FORBIDDEN"
- scalar_value: {
- int32_t: 3
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::PreferredNetworkType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "GSM_WCDMA"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "GSM_ONLY"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "WCDMA"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "GSM_WCDMA_AUTO"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "CDMA_EVDO_AUTO"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "CDMA_ONLY"
- scalar_value: {
- int32_t: 5
- }
- enumerator: "EVDO_ONLY"
- scalar_value: {
- int32_t: 6
- }
- enumerator: "GSM_WCDMA_CDMA_EVDO_AUTO"
- scalar_value: {
- int32_t: 7
- }
- enumerator: "LTE_CDMA_EVDO"
- scalar_value: {
- int32_t: 8
- }
- enumerator: "LTE_GSM_WCDMA"
- scalar_value: {
- int32_t: 9
- }
- enumerator: "LTE_CMDA_EVDO_GSM_WCDMA"
- scalar_value: {
- int32_t: 10
- }
- enumerator: "LTE_ONLY"
- scalar_value: {
- int32_t: 11
- }
- enumerator: "LTE_WCDMA"
- scalar_value: {
- int32_t: 12
- }
- enumerator: "TD_SCDMA_ONLY"
- scalar_value: {
- int32_t: 13
- }
- enumerator: "TD_SCDMA_WCDMA"
- scalar_value: {
- int32_t: 14
- }
- enumerator: "TD_SCDMA_LTE"
- scalar_value: {
- int32_t: 15
- }
- enumerator: "TD_SCDMA_GSM"
- scalar_value: {
- int32_t: 16
- }
- enumerator: "TD_SCDMA_GSM_LTE"
- scalar_value: {
- int32_t: 17
- }
- enumerator: "TD_SCDMA_GSM_WCDMA"
- scalar_value: {
- int32_t: 18
- }
- enumerator: "TD_SCDMA_WCDMA_LTE"
- scalar_value: {
- int32_t: 19
- }
- enumerator: "TD_SCDMA_GSM_WCDMA_LTE"
- scalar_value: {
- int32_t: 20
- }
- enumerator: "TD_SCDMA_GSM_WCDMA_CDMA_EVDO_AUTO"
- scalar_value: {
- int32_t: 21
- }
- enumerator: "TD_SCDMA_LTE_CDMA_EVDO_GSM_WCDMA"
- scalar_value: {
- int32_t: 22
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CdmaSubscriptionSource"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "RUIM_SIM"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "NV"
- scalar_value: {
- int32_t: 1
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CdmaRoamingType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "HOME_NETWORK"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "AFFILIATED_ROAM"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "ANY_ROAM"
- scalar_value: {
- int32_t: 2
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::TtyMode"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "OFF"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "FULL"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "HCO"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "VCO"
- scalar_value: {
- int32_t: 3
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::NvItem"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "CDMA_MEID"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "CDMA_MIN"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "CDMA_MDN"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "CDMA_ACCOLC"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "DEVICE_MSL"
- scalar_value: {
- int32_t: 11
- }
- enumerator: "RTN_RECONDITIONED_STATUS"
- scalar_value: {
- int32_t: 12
- }
- enumerator: "RTN_ACTIVATION_DATE"
- scalar_value: {
- int32_t: 13
- }
- enumerator: "RTN_LIFE_TIMER"
- scalar_value: {
- int32_t: 14
- }
- enumerator: "RTN_LIFE_CALLS"
- scalar_value: {
- int32_t: 15
- }
- enumerator: "RTN_LIFE_DATA_TX"
- scalar_value: {
- int32_t: 16
- }
- enumerator: "RTN_LIFE_DATA_RX"
- scalar_value: {
- int32_t: 17
- }
- enumerator: "OMADM_HFA_LEVEL"
- scalar_value: {
- int32_t: 18
- }
- enumerator: "MIP_PROFILE_NAI"
- scalar_value: {
- int32_t: 31
- }
- enumerator: "MIP_PROFILE_HOME_ADDRESS"
- scalar_value: {
- int32_t: 32
- }
- enumerator: "MIP_PROFILE_AAA_AUTH"
- scalar_value: {
- int32_t: 33
- }
- enumerator: "MIP_PROFILE_HA_AUTH"
- scalar_value: {
- int32_t: 34
- }
- enumerator: "MIP_PROFILE_PRI_HA_ADDR"
- scalar_value: {
- int32_t: 35
- }
- enumerator: "MIP_PROFILE_SEC_HA_ADDR"
- scalar_value: {
- int32_t: 36
- }
- enumerator: "MIP_PROFILE_REV_TUN_PREF"
- scalar_value: {
- int32_t: 37
- }
- enumerator: "MIP_PROFILE_HA_SPI"
- scalar_value: {
- int32_t: 38
- }
- enumerator: "MIP_PROFILE_AAA_SPI"
- scalar_value: {
- int32_t: 39
- }
- enumerator: "MIP_PROFILE_MN_HA_SS"
- scalar_value: {
- int32_t: 40
- }
- enumerator: "MIP_PROFILE_MN_AAA_SS"
- scalar_value: {
- int32_t: 41
- }
- enumerator: "CDMA_PRL_VERSION"
- scalar_value: {
- int32_t: 51
- }
- enumerator: "CDMA_BC10"
- scalar_value: {
- int32_t: 52
- }
- enumerator: "CDMA_BC14"
- scalar_value: {
- int32_t: 53
- }
- enumerator: "CDMA_SO68"
- scalar_value: {
- int32_t: 54
- }
- enumerator: "CDMA_SO73_COP0"
- scalar_value: {
- int32_t: 55
- }
- enumerator: "CDMA_SO73_COP1TO7"
- scalar_value: {
- int32_t: 56
- }
- enumerator: "CDMA_1X_ADVANCED_ENABLED"
- scalar_value: {
- int32_t: 57
- }
- enumerator: "CDMA_EHRPD_ENABLED"
- scalar_value: {
- int32_t: 58
- }
- enumerator: "CDMA_EHRPD_FORCED"
- scalar_value: {
- int32_t: 59
- }
- enumerator: "LTE_BAND_ENABLE_25"
- scalar_value: {
- int32_t: 71
- }
- enumerator: "LTE_BAND_ENABLE_26"
- scalar_value: {
- int32_t: 72
- }
- enumerator: "LTE_BAND_ENABLE_41"
- scalar_value: {
- int32_t: 73
- }
- enumerator: "LTE_SCAN_PRIORITY_25"
- scalar_value: {
- int32_t: 74
- }
- enumerator: "LTE_SCAN_PRIORITY_26"
- scalar_value: {
- int32_t: 75
- }
- enumerator: "LTE_SCAN_PRIORITY_41"
- scalar_value: {
- int32_t: 76
- }
- enumerator: "LTE_HIDDEN_BAND_PRIORITY_25"
- scalar_value: {
- int32_t: 77
- }
- enumerator: "LTE_HIDDEN_BAND_PRIORITY_26"
- scalar_value: {
- int32_t: 78
- }
- enumerator: "LTE_HIDDEN_BAND_PRIORITY_41"
- scalar_value: {
- int32_t: 79
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::ResetNvType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "RELOAD"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "ERASE"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "FACTORY_RESET"
- scalar_value: {
- int32_t: 2
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::HardwareConfigType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "MODEM"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "SIM"
- scalar_value: {
- int32_t: 1
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::HardwareConfigState"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "ENABLED"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "STANDBY"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "DISABLED"
- scalar_value: {
- int32_t: 2
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::LceStatus"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "NOT_SUPPORTED"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "STOPPED"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "ACTIVE"
- scalar_value: {
- int32_t: 2
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CarrierMatchType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "ALL"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "SPN"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "IMSI_PREFIX"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "GID1"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "GID2"
- scalar_value: {
- int32_t: 4
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::NeighboringCell"
- type: TYPE_STRUCT
- struct_value: {
- name: "cid"
- type: TYPE_STRING
- }
- struct_value: {
- name: "rssi"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CdmaSmsDigitMode"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "FOUR_BIT"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "EIGHT_BIT"
- scalar_value: {
- int32_t: 1
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CdmaSmsNumberMode"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "NOT_DATA_NETWORK"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "DATA_NETWORK"
- scalar_value: {
- int32_t: 1
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CdmaSmsNumberType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "UNKNOWN"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "INTERNATIONAL_OR_DATA_IP"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "NATIONAL_OR_INTERNET_MAIL"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "NETWORK"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "SUBSCRIBER"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "ALPHANUMERIC"
- scalar_value: {
- int32_t: 5
- }
- enumerator: "ABBREVIATED"
- scalar_value: {
- int32_t: 6
- }
- enumerator: "RESERVED_7"
- scalar_value: {
- int32_t: 7
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CdmaSmsNumberPlan"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "UNKNOWN"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "TELEPHONY"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "RESERVED_2"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "DATA"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "TELEX"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "RESERVED_5"
- scalar_value: {
- int32_t: 5
- }
- enumerator: "RESERVED_6"
- scalar_value: {
- int32_t: 6
- }
- enumerator: "RESERVED_7"
- scalar_value: {
- int32_t: 7
- }
- enumerator: "RESERVED_8"
- scalar_value: {
- int32_t: 8
- }
- enumerator: "PRIVATE"
- scalar_value: {
- int32_t: 9
- }
- enumerator: "RESERVED_10"
- scalar_value: {
- int32_t: 10
- }
- enumerator: "RESERVED_11"
- scalar_value: {
- int32_t: 11
- }
- enumerator: "RESERVED_12"
- scalar_value: {
- int32_t: 12
- }
- enumerator: "RESERVED_13"
- scalar_value: {
- int32_t: 13
- }
- enumerator: "RESERVED_14"
- scalar_value: {
- int32_t: 14
- }
- enumerator: "RESERVED_15"
- scalar_value: {
- int32_t: 15
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CdmaSmsSubaddressType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "NSAP"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "USER_SPECIFIED"
- scalar_value: {
- int32_t: 1
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CdmaSmsErrorClass"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "NO_ERROR"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "ERROR"
- scalar_value: {
- int32_t: 1
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CdmaSmsWriteArgsStatus"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "REC_UNREAD"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "REC_READ"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "STO_UNSENT"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "STO_SENT"
- scalar_value: {
- int32_t: 3
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CellInfoType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "GSM"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "CDMA"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "LTE"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "WCDMA"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "TD_SCDMA"
- scalar_value: {
- int32_t: 5
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::TimeStampType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "UNKNOWN"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "ANTENNA"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "MODEM"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "OEM_RIL"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "JAVA_RIL"
- scalar_value: {
- int32_t: 4
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::ApnAuthType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "NO_PAP_NO_CHAP"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "PAP_NO_CHAP"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "NO_PAP_CHAP"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "PAP_CHAP"
- scalar_value: {
- int32_t: 3
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::RadioTechnologyFamily"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "THREE_GPP"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "THREE_GPP2"
- scalar_value: {
- int32_t: 1
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::RadioCapabilityPhase"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "CONFIGURED"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "START"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "APPLY"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "UNSOL_RSP"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "FINISH"
- scalar_value: {
- int32_t: 4
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::RadioCapabilityStatus"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "NONE"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "SUCCESS"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "FAIL"
- scalar_value: {
- int32_t: 2
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::RadioAccessFamily"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "UNKNOWN"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "GPRS"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "EDGE"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "UMTS"
- scalar_value: {
- int32_t: 8
- }
- enumerator: "IS95A"
- scalar_value: {
- int32_t: 16
- }
- enumerator: "IS95B"
- scalar_value: {
- int32_t: 32
- }
- enumerator: "ONE_X_RTT"
- scalar_value: {
- int32_t: 64
- }
- enumerator: "EVDO_0"
- scalar_value: {
- int32_t: 128
- }
- enumerator: "EVDO_A"
- scalar_value: {
- int32_t: 256
- }
- enumerator: "HSDPA"
- scalar_value: {
- int32_t: 512
- }
- enumerator: "HSUPA"
- scalar_value: {
- int32_t: 1024
- }
- enumerator: "HSPA"
- scalar_value: {
- int32_t: 2048
- }
- enumerator: "EVDO_B"
- scalar_value: {
- int32_t: 4096
- }
- enumerator: "EHRPD"
- scalar_value: {
- int32_t: 8192
- }
- enumerator: "LTE"
- scalar_value: {
- int32_t: 16384
- }
- enumerator: "HSPAP"
- scalar_value: {
- int32_t: 32768
- }
- enumerator: "GSM"
- scalar_value: {
- int32_t: 65536
- }
- enumerator: "TD_SCDMA"
- scalar_value: {
- int32_t: 131072
- }
- enumerator: "LTE_CA"
- scalar_value: {
- int32_t: 524288
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::UssdModeType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "NOTIFY"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "REQUEST"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "NW_RELEASE"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "LOCAL_CLIENT"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "NOT_SUPPORTED"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "NW_TIMEOUT"
- scalar_value: {
- int32_t: 5
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::SimRefreshType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "SIM_FILE_UPDATE"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "SIM_INIT"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "SIM_RESET"
- scalar_value: {
- int32_t: 2
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::SrvccState"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "HANDOVER_STARTED"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "HANDOVER_COMPLETED"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "HANDOVER_FAILED"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "HANDOVER_CANCELED"
- scalar_value: {
- int32_t: 3
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::UiccSubActStatus"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "DEACTIVATE"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "ACTIVATE"
- scalar_value: {
- int32_t: 1
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::SubscriptionType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "SUBSCRIPTION_1"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "SUBSCRIPTION_2"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "SUBSCRIPTION_3"
- scalar_value: {
- int32_t: 2
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::DataProfileInfoType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "COMMON"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "THREE_GPP"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "THREE_GPP2"
- scalar_value: {
- int32_t: 2
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::PhoneRestrictedState"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "NONE"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "CS_EMERGENCY"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "CS_NORMAL"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "CS_ALL"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "PS_ALL"
- scalar_value: {
- int32_t: 16
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CdmaCallWaitingNumberPresentation"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "ALLOWED"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "RESTRICTED"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "UNKNOWN"
- scalar_value: {
- int32_t: 2
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CdmaCallWaitingNumberType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "UNKNOWN"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "INTERNATIONAL"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "NATIONAL"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "NETWORK_SPECIFIC"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "SUBSCRIBER"
- scalar_value: {
- int32_t: 4
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CdmaCallWaitingNumberPlan"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "UNKNOWN"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "ISDN"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "DATA"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "TELEX"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "NATIONAL"
- scalar_value: {
- int32_t: 8
- }
- enumerator: "PRIVATE"
- scalar_value: {
- int32_t: 9
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CdmaOtaProvisionStatus"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "SPL_UNLOCKED"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "SPC_RETRIES_EXCEEDED"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "A_KEY_EXCHANGED"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "SSD_UPDATED"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "NAM_DOWNLOADED"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "MDN_DOWNLOADED"
- scalar_value: {
- int32_t: 5
- }
- enumerator: "IMSI_DOWNLOADED"
- scalar_value: {
- int32_t: 6
- }
- enumerator: "PRL_DOWNLOADED"
- scalar_value: {
- int32_t: 7
- }
- enumerator: "COMMITTED"
- scalar_value: {
- int32_t: 8
- }
- enumerator: "OTAPA_STARTED"
- scalar_value: {
- int32_t: 9
- }
- enumerator: "OTAPA_STOPPED"
- scalar_value: {
- int32_t: 10
- }
- enumerator: "OTAPA_ABORTED"
- scalar_value: {
- int32_t: 11
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CdmaInfoRecName"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "DISPLAY"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "CALLED_PARTY_NUMBER"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "CALLING_PARTY_NUMBER"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "CONNECTED_NUMBER"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "SIGNAL"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "REDIRECTING_NUMBER"
- scalar_value: {
- int32_t: 5
- }
- enumerator: "LINE_CONTROL"
- scalar_value: {
- int32_t: 6
- }
- enumerator: "EXTENDED_DISPLAY"
- scalar_value: {
- int32_t: 7
- }
- enumerator: "T53_CLIR"
- scalar_value: {
- int32_t: 8
- }
- enumerator: "T53_RELEASE"
- scalar_value: {
- int32_t: 9
- }
- enumerator: "T53_AUDIO_CONTROL"
- scalar_value: {
- int32_t: 10
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CdmaRedirectingReason"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "UNKNOWN"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "CALL_FORWARDING_BUSY"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "CALL_FORWARDING_NO_REPLY"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "CALLED_DTE_OUT_OF_ORDER"
- scalar_value: {
- int32_t: 9
- }
- enumerator: "CALL_FORWARDING_BY_THE_CALLED_DTE"
- scalar_value: {
- int32_t: 10
- }
- enumerator: "CALL_FORWARDING_UNCONDITIONAL"
- scalar_value: {
- int32_t: 15
- }
- enumerator: "RESERVED"
- scalar_value: {
- int32_t: 16
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::SsServiceType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "CFU"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "CF_BUSY"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "CF_NO_REPLY"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "CF_NOT_REACHABLE"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "CF_ALL"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "CF_ALL_CONDITIONAL"
- scalar_value: {
- int32_t: 5
- }
- enumerator: "CLIP"
- scalar_value: {
- int32_t: 6
- }
- enumerator: "CLIR"
- scalar_value: {
- int32_t: 7
- }
- enumerator: "COLP"
- scalar_value: {
- int32_t: 8
- }
- enumerator: "COLR"
- scalar_value: {
- int32_t: 9
- }
- enumerator: "WAIT"
- scalar_value: {
- int32_t: 10
- }
- enumerator: "BAOC"
- scalar_value: {
- int32_t: 11
- }
- enumerator: "BAOIC"
- scalar_value: {
- int32_t: 12
- }
- enumerator: "BAOIC_EXC_HOME"
- scalar_value: {
- int32_t: 13
- }
- enumerator: "BAIC"
- scalar_value: {
- int32_t: 14
- }
- enumerator: "BAIC_ROAMING"
- scalar_value: {
- int32_t: 15
- }
- enumerator: "ALL_BARRING"
- scalar_value: {
- int32_t: 16
- }
- enumerator: "OUTGOING_BARRING"
- scalar_value: {
- int32_t: 17
- }
- enumerator: "INCOMING_BARRING"
- scalar_value: {
- int32_t: 18
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::SsRequestType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "ACTIVATION"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "DEACTIVATION"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "INTERROGATION"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "REGISTRATION"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "ERASURE"
- scalar_value: {
- int32_t: 4
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::SsTeleserviceType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "ALL_TELE_AND_BEARER_SERVICES"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "ALL_TELESEVICES"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "TELEPHONY"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "ALL_DATA_TELESERVICES"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "SMS_SERVICES"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "ALL_TELESERVICES_EXCEPT_SMS"
- scalar_value: {
- int32_t: 5
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::SuppServiceClass"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "NONE"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "VOICE"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "DATA"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "FAX"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "SMS"
- scalar_value: {
- int32_t: 8
- }
- enumerator: "DATA_SYNC"
- scalar_value: {
- int32_t: 16
- }
- enumerator: "DATA_ASYNC"
- scalar_value: {
- int32_t: 32
- }
- enumerator: "PACKET"
- scalar_value: {
- int32_t: 64
- }
- enumerator: "PAD"
- scalar_value: {
- int32_t: 128
- }
- enumerator: "MAX"
- scalar_value: {
- int32_t: 128
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::ApnTypes"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "NONE"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "DEFAULT"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "MMS"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "SUPL"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "DUN"
- scalar_value: {
- int32_t: 8
- }
- enumerator: "HIPRI"
- scalar_value: {
- int32_t: 16
- }
- enumerator: "FOTA"
- scalar_value: {
- int32_t: 32
- }
- enumerator: "IMS"
- scalar_value: {
- int32_t: 64
- }
- enumerator: "CBS"
- scalar_value: {
- int32_t: 128
- }
- enumerator: "IA"
- scalar_value: {
- int32_t: 256
- }
- enumerator: "EMERGENCY"
- scalar_value: {
- int32_t: 512
- }
- enumerator: "ALL"
- scalar_value: {
- int32_t: 1023
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::IndicationFilter"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "NONE"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "SIGNAL_STRENGTH"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "FULL_NETWORK_STATE"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "DATA_CALL_DORMANCY_CHANGED"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "ALL"
- scalar_value: {
- int32_t: 7
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::MvnoType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "NONE"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "IMSI"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "GID"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "SPN"
- scalar_value: {
- int32_t: 3
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::DeviceStateType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "POWER_SAVE_MODE"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "CHARGING_STATE"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "LOW_DATA_EXPECTED"
- scalar_value: {
- int32_t: 2
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::RadioResponseInfo"
- type: TYPE_STRUCT
- struct_value: {
- name: "type"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioResponseType"
- }
- struct_value: {
- name: "serial"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "error"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioError"
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::AppStatus"
- type: TYPE_STRUCT
- struct_value: {
- name: "appType"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::AppType"
- }
- struct_value: {
- name: "appState"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::AppState"
- }
- struct_value: {
- name: "persoSubstate"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::PersoSubstate"
- }
- struct_value: {
- name: "aidPtr"
- type: TYPE_STRING
- }
- struct_value: {
- name: "appLabelPtr"
- type: TYPE_STRING
- }
- struct_value: {
- name: "pin1Replaced"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "pin1"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::PinState"
- }
- struct_value: {
- name: "pin2"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::PinState"
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CardStatus"
- type: TYPE_STRUCT
- struct_value: {
- name: "cardState"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::CardState"
- }
- struct_value: {
- name: "universalPinState"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::PinState"
- }
- struct_value: {
- name: "gsmUmtsSubscriptionAppIndex"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "cdmaSubscriptionAppIndex"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "imsSubscriptionAppIndex"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "applications"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::AppStatus"
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::UusInfo"
- type: TYPE_STRUCT
- struct_value: {
- name: "uusType"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::UusType"
- }
- struct_value: {
- name: "uusDcs"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::UusDcs"
- }
- struct_value: {
- name: "uusData"
- type: TYPE_STRING
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::Call"
- type: TYPE_STRUCT
- struct_value: {
- name: "state"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::CallState"
- }
- struct_value: {
- name: "index"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "toa"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "isMpty"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "isMT"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "als"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "isVoice"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "isVoicePrivacy"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "number"
- type: TYPE_STRING
- }
- struct_value: {
- name: "numberPresentation"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::CallPresentation"
- }
- struct_value: {
- name: "name"
- type: TYPE_STRING
- }
- struct_value: {
- name: "namePresentation"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::CallPresentation"
- }
- struct_value: {
- name: "uusInfo"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::UusInfo"
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::Dial"
- type: TYPE_STRUCT
- struct_value: {
- name: "address"
- type: TYPE_STRING
- }
- struct_value: {
- name: "clir"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::Clir"
- }
- struct_value: {
- name: "uusInfo"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::UusInfo"
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::LastCallFailCauseInfo"
- type: TYPE_STRUCT
- struct_value: {
- name: "causeCode"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::LastCallFailCause"
- }
- struct_value: {
- name: "vendorCause"
- type: TYPE_STRING
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::GsmSignalStrength"
- type: TYPE_STRUCT
- struct_value: {
- name: "signalStrength"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "bitErrorRate"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "timingAdvance"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::WcdmaSignalStrength"
- type: TYPE_STRUCT
- struct_value: {
- name: "signalStrength"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "bitErrorRate"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CdmaSignalStrength"
- type: TYPE_STRUCT
- struct_value: {
- name: "dbm"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "ecio"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::EvdoSignalStrength"
- type: TYPE_STRUCT
- struct_value: {
- name: "dbm"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "ecio"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "signalNoiseRatio"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::LteSignalStrength"
- type: TYPE_STRUCT
- struct_value: {
- name: "signalStrength"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "rsrp"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "rsrq"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "rssnr"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "cqi"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "timingAdvance"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::TdScdmaSignalStrength"
- type: TYPE_STRUCT
- struct_value: {
- name: "rscp"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::SignalStrength"
- type: TYPE_STRUCT
- struct_value: {
- name: "gw"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::GsmSignalStrength"
- }
- struct_value: {
- name: "cdma"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::CdmaSignalStrength"
- }
- struct_value: {
- name: "evdo"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::EvdoSignalStrength"
- }
- struct_value: {
- name: "lte"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::LteSignalStrength"
- }
- struct_value: {
- name: "tdScdma"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::TdScdmaSignalStrength"
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::SendSmsResult"
- type: TYPE_STRUCT
- struct_value: {
- name: "messageRef"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "ackPDU"
- type: TYPE_STRING
- }
- struct_value: {
- name: "errorCode"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::SetupDataCallResult"
- type: TYPE_STRUCT
- struct_value: {
- name: "status"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "suggestedRetryTime"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "cid"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "active"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "type"
- type: TYPE_STRING
- }
- struct_value: {
- name: "ifname"
- type: TYPE_STRING
- }
- struct_value: {
- name: "addresses"
- type: TYPE_STRING
- }
- struct_value: {
- name: "dnses"
- type: TYPE_STRING
- }
- struct_value: {
- name: "gateways"
- type: TYPE_STRING
- }
- struct_value: {
- name: "pcscf"
- type: TYPE_STRING
- }
- struct_value: {
- name: "mtu"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::IccIo"
- type: TYPE_STRUCT
- struct_value: {
- name: "command"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "fileId"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "path"
- type: TYPE_STRING
- }
- struct_value: {
- name: "p1"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "p2"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "p3"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "data"
- type: TYPE_STRING
- }
- struct_value: {
- name: "pin2"
- type: TYPE_STRING
- }
- struct_value: {
- name: "aid"
- type: TYPE_STRING
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::IccIoResult"
- type: TYPE_STRUCT
- struct_value: {
- name: "sw1"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "sw2"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "simResponse"
- type: TYPE_STRING
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::VoiceRegStateResult"
- type: TYPE_STRUCT
- struct_value: {
- name: "regState"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RegState"
- }
- struct_value: {
- name: "lac"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "cid"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "rat"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "baseStationId"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "baseStationLatitude"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "baseStationLongitude"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "cssSupported"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "systemId"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "networkId"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "roamingIndicator"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "systemIsInPrl"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "defaultRoamingIndicator"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "reasonForDenial"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "psc"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::DataRegStateResult"
- type: TYPE_STRUCT
- struct_value: {
- name: "regState"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RegState"
- }
- struct_value: {
- name: "lac"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "cid"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "rat"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "reasonDataDenied"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "maxDataCalls"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "tac"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "phyCid"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "eci"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "csgid"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "tadv"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CallForwardInfo"
- type: TYPE_STRUCT
- struct_value: {
- name: "status"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::CallForwardInfoStatus"
- }
- struct_value: {
- name: "reason"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "serviceClass"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "toa"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "number"
- type: TYPE_STRING
- }
- struct_value: {
- name: "timeSeconds"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::OperatorInfo"
- type: TYPE_STRUCT
- struct_value: {
- name: "alphaLong"
- type: TYPE_STRING
- }
- struct_value: {
- name: "alphaShort"
- type: TYPE_STRING
- }
- struct_value: {
- name: "operatorNumeric"
- type: TYPE_STRING
- }
- struct_value: {
- name: "status"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::OperatorStatus"
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::SmsWriteArgs"
- type: TYPE_STRUCT
- struct_value: {
- name: "status"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::SmsWriteArgsStatus"
- }
- struct_value: {
- name: "pdu"
- type: TYPE_STRING
- }
- struct_value: {
- name: "smsc"
- type: TYPE_STRING
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CdmaSmsAddress"
- type: TYPE_STRUCT
- struct_value: {
- name: "digitMode"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::CdmaSmsDigitMode"
- }
- struct_value: {
- name: "numberMode"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::CdmaSmsNumberMode"
- }
- struct_value: {
- name: "numberType"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::CdmaSmsNumberType"
- }
- struct_value: {
- name: "numberPlan"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::CdmaSmsNumberPlan"
- }
- struct_value: {
- name: "digits"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CdmaSmsSubaddress"
- type: TYPE_STRUCT
- struct_value: {
- name: "subaddressType"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::CdmaSmsSubaddressType"
- }
- struct_value: {
- name: "odd"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "digits"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CdmaSmsMessage"
- type: TYPE_STRUCT
- struct_value: {
- name: "teleserviceId"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "isServicePresent"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "serviceCategory"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "address"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::CdmaSmsAddress"
- }
- struct_value: {
- name: "subAddress"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::CdmaSmsSubaddress"
- }
- struct_value: {
- name: "bearerData"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CdmaSmsAck"
- type: TYPE_STRUCT
- struct_value: {
- name: "errorClass"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::CdmaSmsErrorClass"
- }
- struct_value: {
- name: "smsCauseCode"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CdmaBroadcastSmsConfigInfo"
- type: TYPE_STRUCT
- struct_value: {
- name: "serviceCategory"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "language"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "selected"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CdmaSmsWriteArgs"
- type: TYPE_STRUCT
- struct_value: {
- name: "status"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::CdmaSmsWriteArgsStatus"
- }
- struct_value: {
- name: "message"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::CdmaSmsMessage"
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::GsmBroadcastSmsConfigInfo"
- type: TYPE_STRUCT
- struct_value: {
- name: "fromServiceId"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "toServiceId"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "fromCodeScheme"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "toCodeScheme"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "selected"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CellIdentityGsm"
- type: TYPE_STRUCT
- struct_value: {
- name: "mcc"
- type: TYPE_STRING
- }
- struct_value: {
- name: "mnc"
- type: TYPE_STRING
- }
- struct_value: {
- name: "lac"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "cid"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "arfcn"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "bsic"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CellIdentityWcdma"
- type: TYPE_STRUCT
- struct_value: {
- name: "mcc"
- type: TYPE_STRING
- }
- struct_value: {
- name: "mnc"
- type: TYPE_STRING
- }
- struct_value: {
- name: "lac"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "cid"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "psc"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "uarfcn"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CellIdentityCdma"
- type: TYPE_STRUCT
- struct_value: {
- name: "networkId"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "systemId"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "baseStationId"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "longitude"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "latitude"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CellIdentityLte"
- type: TYPE_STRUCT
- struct_value: {
- name: "mcc"
- type: TYPE_STRING
- }
- struct_value: {
- name: "mnc"
- type: TYPE_STRING
- }
- struct_value: {
- name: "ci"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "pci"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "tac"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "earfcn"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CellIdentityTdscdma"
- type: TYPE_STRUCT
- struct_value: {
- name: "mcc"
- type: TYPE_STRING
- }
- struct_value: {
- name: "mnc"
- type: TYPE_STRING
- }
- struct_value: {
- name: "lac"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "cid"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "cpid"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CellInfoGsm"
- type: TYPE_STRUCT
- struct_value: {
- name: "cellIdentityGsm"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::CellIdentityGsm"
- }
- struct_value: {
- name: "signalStrengthGsm"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::GsmSignalStrength"
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CellInfoWcdma"
- type: TYPE_STRUCT
- struct_value: {
- name: "cellIdentityWcdma"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::CellIdentityWcdma"
- }
- struct_value: {
- name: "signalStrengthWcdma"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::WcdmaSignalStrength"
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CellInfoCdma"
- type: TYPE_STRUCT
- struct_value: {
- name: "cellIdentityCdma"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::CellIdentityCdma"
- }
- struct_value: {
- name: "signalStrengthCdma"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::CdmaSignalStrength"
- }
- struct_value: {
- name: "signalStrengthEvdo"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::EvdoSignalStrength"
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CellInfoLte"
- type: TYPE_STRUCT
- struct_value: {
- name: "cellIdentityLte"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::CellIdentityLte"
- }
- struct_value: {
- name: "signalStrengthLte"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::LteSignalStrength"
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CellInfoTdscdma"
- type: TYPE_STRUCT
- struct_value: {
- name: "cellIdentityTdscdma"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::CellIdentityTdscdma"
- }
- struct_value: {
- name: "signalStrengthTdscdma"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::TdScdmaSignalStrength"
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CellInfo"
- type: TYPE_STRUCT
- struct_value: {
- name: "cellInfoType"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::CellInfoType"
- }
- struct_value: {
- name: "registered"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "timeStampType"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::TimeStampType"
- }
- struct_value: {
- name: "timeStamp"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- struct_value: {
- name: "gsm"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::CellInfoGsm"
- }
- }
- struct_value: {
- name: "cdma"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::CellInfoCdma"
- }
- }
- struct_value: {
- name: "lte"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::CellInfoLte"
- }
- }
- struct_value: {
- name: "wcdma"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::CellInfoWcdma"
- }
- }
- struct_value: {
- name: "tdscdma"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::CellInfoTdscdma"
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::GsmSmsMessage"
- type: TYPE_STRUCT
- struct_value: {
- name: "smscPdu"
- type: TYPE_STRING
- }
- struct_value: {
- name: "pdu"
- type: TYPE_STRING
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::ImsSmsMessage"
- type: TYPE_STRUCT
- struct_value: {
- name: "tech"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioTechnologyFamily"
- }
- struct_value: {
- name: "retry"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "messageRef"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "cdmaMessage"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::CdmaSmsMessage"
- }
- }
- struct_value: {
- name: "gsmMessage"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::GsmSmsMessage"
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::SimApdu"
- type: TYPE_STRUCT
- struct_value: {
- name: "sessionId"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "cla"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "instruction"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "p1"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "p2"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "p3"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "data"
- type: TYPE_STRING
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::NvWriteItem"
- type: TYPE_STRUCT
- struct_value: {
- name: "itemId"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::NvItem"
- }
- struct_value: {
- name: "value"
- type: TYPE_STRING
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::SelectUiccSub"
- type: TYPE_STRUCT
- struct_value: {
- name: "slot"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "appIndex"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "subType"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::SubscriptionType"
- }
- struct_value: {
- name: "actStatus"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::UiccSubActStatus"
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::HardwareConfigModem"
- type: TYPE_STRUCT
- struct_value: {
- name: "rilModel"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "rat"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "maxVoice"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "maxData"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "maxStandby"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::HardwareConfigSim"
- type: TYPE_STRUCT
- struct_value: {
- name: "modemUuid"
- type: TYPE_STRING
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::HardwareConfig"
- type: TYPE_STRUCT
- struct_value: {
- name: "type"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::HardwareConfigType"
- }
- struct_value: {
- name: "uuid"
- type: TYPE_STRING
- }
- struct_value: {
- name: "state"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::HardwareConfigState"
- }
- struct_value: {
- name: "modem"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::HardwareConfigModem"
- }
- }
- struct_value: {
- name: "sim"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::HardwareConfigSim"
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::DataProfileInfo"
- type: TYPE_STRUCT
- struct_value: {
- name: "profileId"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::DataProfileId"
- }
- struct_value: {
- name: "apn"
- type: TYPE_STRING
- }
- struct_value: {
- name: "protocol"
- type: TYPE_STRING
- }
- struct_value: {
- name: "roamingProtocol"
- type: TYPE_STRING
- }
- struct_value: {
- name: "authType"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::ApnAuthType"
- }
- struct_value: {
- name: "user"
- type: TYPE_STRING
- }
- struct_value: {
- name: "password"
- type: TYPE_STRING
- }
- struct_value: {
- name: "type"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::DataProfileInfoType"
- }
- struct_value: {
- name: "maxConnsTime"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "maxConns"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "waitTime"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "enabled"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "supportedApnTypesBitmap"
- type: TYPE_MASK
- scalar_type: "int32_t"
- predefined_type: "::android::hardware::radio::V1_0::ApnTypes"
- }
- struct_value: {
- name: "bearerBitmap"
- type: TYPE_MASK
- scalar_type: "int32_t"
- predefined_type: "::android::hardware::radio::V1_0::RadioAccessFamily"
- }
- struct_value: {
- name: "mtu"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "mvnoType"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::MvnoType"
- }
- struct_value: {
- name: "mvnoMatchData"
- type: TYPE_STRING
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::RadioCapability"
- type: TYPE_STRUCT
- struct_value: {
- name: "session"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "phase"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioCapabilityPhase"
- }
- struct_value: {
- name: "raf"
- type: TYPE_MASK
- scalar_type: "int32_t"
- predefined_type: "::android::hardware::radio::V1_0::RadioAccessFamily"
- }
- struct_value: {
- name: "logicalModemUuid"
- type: TYPE_STRING
- }
- struct_value: {
- name: "status"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioCapabilityStatus"
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::LceStatusInfo"
- type: TYPE_STRUCT
- struct_value: {
- name: "lceStatus"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::LceStatus"
- }
- struct_value: {
- name: "actualIntervalMs"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::LceDataInfo"
- type: TYPE_STRUCT
- struct_value: {
- name: "lastHopCapacityKbps"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "confidenceLevel"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "lceSuspended"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::ActivityStatsInfo"
- type: TYPE_STRUCT
- struct_value: {
- name: "sleepModeTimeMs"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "idleModeTimeMs"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "txmModetimeMs"
- type: TYPE_ARRAY
- vector_size: 5
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
- struct_value: {
- name: "rxModeTimeMs"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::Carrier"
- type: TYPE_STRUCT
- struct_value: {
- name: "mcc"
- type: TYPE_STRING
- }
- struct_value: {
- name: "mnc"
- type: TYPE_STRING
- }
- struct_value: {
- name: "matchType"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::CarrierMatchType"
- }
- struct_value: {
- name: "matchData"
- type: TYPE_STRING
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CarrierRestrictions"
- type: TYPE_STRUCT
- struct_value: {
- name: "allowedCarriers"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::Carrier"
- }
- }
- struct_value: {
- name: "excludedCarriers"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::Carrier"
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::SuppSvcNotification"
- type: TYPE_STRUCT
- struct_value: {
- name: "isMT"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "code"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "index"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "type"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "number"
- type: TYPE_STRING
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::SimRefreshResult"
- type: TYPE_STRUCT
- struct_value: {
- name: "type"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::SimRefreshType"
- }
- struct_value: {
- name: "efId"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "aid"
- type: TYPE_STRING
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CdmaSignalInfoRecord"
- type: TYPE_STRUCT
- struct_value: {
- name: "isPresent"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "signalType"
- type: TYPE_SCALAR
- scalar_type: "int8_t"
- }
- struct_value: {
- name: "alertPitch"
- type: TYPE_SCALAR
- scalar_type: "int8_t"
- }
- struct_value: {
- name: "signal"
- type: TYPE_SCALAR
- scalar_type: "int8_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CdmaCallWaiting"
- type: TYPE_STRUCT
- struct_value: {
- name: "number"
- type: TYPE_STRING
- }
- struct_value: {
- name: "numberPresentation"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::CdmaCallWaitingNumberPresentation"
- }
- struct_value: {
- name: "name"
- type: TYPE_STRING
- }
- struct_value: {
- name: "signalInfoRecord"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::CdmaSignalInfoRecord"
- }
- struct_value: {
- name: "numberType"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::CdmaCallWaitingNumberType"
- }
- struct_value: {
- name: "numberPlan"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::CdmaCallWaitingNumberPlan"
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CdmaDisplayInfoRecord"
- type: TYPE_STRUCT
- struct_value: {
- name: "alphaBuf"
- type: TYPE_STRING
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CdmaNumberInfoRecord"
- type: TYPE_STRUCT
- struct_value: {
- name: "number"
- type: TYPE_STRING
- }
- struct_value: {
- name: "numberType"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "numberPlan"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "pi"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "si"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CdmaRedirectingNumberInfoRecord"
- type: TYPE_STRUCT
- struct_value: {
- name: "redirectingNumber"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::CdmaNumberInfoRecord"
- }
- struct_value: {
- name: "redirectingReason"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::CdmaRedirectingReason"
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CdmaLineControlInfoRecord"
- type: TYPE_STRUCT
- struct_value: {
- name: "lineCtrlPolarityIncluded"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "lineCtrlToggle"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "lineCtrlReverse"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "lineCtrlPowerDenial"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CdmaT53ClirInfoRecord"
- type: TYPE_STRUCT
- struct_value: {
- name: "cause"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CdmaT53AudioControlInfoRecord"
- type: TYPE_STRUCT
- struct_value: {
- name: "upLink"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "downLink"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CdmaInformationRecord"
- type: TYPE_STRUCT
- struct_value: {
- name: "name"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::CdmaInfoRecName"
- }
- struct_value: {
- name: "display"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::CdmaDisplayInfoRecord"
- }
- }
- struct_value: {
- name: "number"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::CdmaNumberInfoRecord"
- }
- }
- struct_value: {
- name: "signal"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::CdmaSignalInfoRecord"
- }
- }
- struct_value: {
- name: "redir"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::CdmaRedirectingNumberInfoRecord"
- }
- }
- struct_value: {
- name: "lineCtrl"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::CdmaLineControlInfoRecord"
- }
- }
- struct_value: {
- name: "clir"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::CdmaT53ClirInfoRecord"
- }
- }
- struct_value: {
- name: "audioCtrl"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::CdmaT53AudioControlInfoRecord"
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CdmaInformationRecords"
- type: TYPE_STRUCT
- struct_value: {
- name: "infoRec"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::CdmaInformationRecord"
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::CfData"
- type: TYPE_STRUCT
- struct_value: {
- name: "cfInfo"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::CallForwardInfo"
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::SsInfoData"
- type: TYPE_STRUCT
- struct_value: {
- name: "ssInfo"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::StkCcUnsolSsResult"
- type: TYPE_STRUCT
- struct_value: {
- name: "serviceType"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::SsServiceType"
- }
- struct_value: {
- name: "requestType"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::SsRequestType"
- }
- struct_value: {
- name: "teleserviceType"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::SsTeleserviceType"
- }
- struct_value: {
- name: "serviceClass"
- type: TYPE_MASK
- scalar_type: "int32_t"
- predefined_type: "::android::hardware::radio::V1_0::SuppServiceClass"
- }
- struct_value: {
- name: "result"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::radio::V1_0::RadioError"
- }
- struct_value: {
- name: "ssInfo"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::SsInfoData"
- }
- }
- struct_value: {
- name: "cfData"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::radio::V1_0::CfData"
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::radio::V1_0::PcoDataInfo"
- type: TYPE_STRUCT
- struct_value: {
- name: "cid"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "bearerProto"
- type: TYPE_STRING
- }
- struct_value: {
- name: "pcoId"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "contents"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
-}
-
diff --git a/radio/Android.bp b/radio/Android.bp
index bbb3e4b..8bda000 100644
--- a/radio/Android.bp
+++ b/radio/Android.bp
@@ -1,4 +1,6 @@
// This is an autogenerated file, do not edit.
subdirs = [
"1.0",
+ "1.0/vts/functional",
+ "deprecated/1.0",
]
diff --git a/radio/deprecated/1.0/Android.bp b/radio/deprecated/1.0/Android.bp
new file mode 100644
index 0000000..f8a9c64
--- /dev/null
+++ b/radio/deprecated/1.0/Android.bp
@@ -0,0 +1,75 @@
+// This file is autogenerated by hidl-gen. Do not edit manually.
+
+filegroup {
+ name: "android.hardware.radio.deprecated@1.0_hal",
+ srcs: [
+ "IOemHook.hal",
+ "IOemHookIndication.hal",
+ "IOemHookResponse.hal",
+ ],
+}
+
+genrule {
+ name: "android.hardware.radio.deprecated@1.0_genc++",
+ tools: ["hidl-gen"],
+ cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.radio.deprecated@1.0",
+ srcs: [
+ ":android.hardware.radio.deprecated@1.0_hal",
+ ],
+ out: [
+ "android/hardware/radio/deprecated/1.0/OemHookAll.cpp",
+ "android/hardware/radio/deprecated/1.0/OemHookIndicationAll.cpp",
+ "android/hardware/radio/deprecated/1.0/OemHookResponseAll.cpp",
+ ],
+}
+
+genrule {
+ name: "android.hardware.radio.deprecated@1.0_genc++_headers",
+ tools: ["hidl-gen"],
+ cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.radio.deprecated@1.0",
+ srcs: [
+ ":android.hardware.radio.deprecated@1.0_hal",
+ ],
+ out: [
+ "android/hardware/radio/deprecated/1.0/IOemHook.h",
+ "android/hardware/radio/deprecated/1.0/IHwOemHook.h",
+ "android/hardware/radio/deprecated/1.0/BnHwOemHook.h",
+ "android/hardware/radio/deprecated/1.0/BpHwOemHook.h",
+ "android/hardware/radio/deprecated/1.0/BsOemHook.h",
+ "android/hardware/radio/deprecated/1.0/IOemHookIndication.h",
+ "android/hardware/radio/deprecated/1.0/IHwOemHookIndication.h",
+ "android/hardware/radio/deprecated/1.0/BnHwOemHookIndication.h",
+ "android/hardware/radio/deprecated/1.0/BpHwOemHookIndication.h",
+ "android/hardware/radio/deprecated/1.0/BsOemHookIndication.h",
+ "android/hardware/radio/deprecated/1.0/IOemHookResponse.h",
+ "android/hardware/radio/deprecated/1.0/IHwOemHookResponse.h",
+ "android/hardware/radio/deprecated/1.0/BnHwOemHookResponse.h",
+ "android/hardware/radio/deprecated/1.0/BpHwOemHookResponse.h",
+ "android/hardware/radio/deprecated/1.0/BsOemHookResponse.h",
+ ],
+}
+
+cc_library_shared {
+ name: "android.hardware.radio.deprecated@1.0",
+ generated_sources: ["android.hardware.radio.deprecated@1.0_genc++"],
+ generated_headers: ["android.hardware.radio.deprecated@1.0_genc++_headers"],
+ export_generated_headers: ["android.hardware.radio.deprecated@1.0_genc++_headers"],
+ shared_libs: [
+ "libhidlbase",
+ "libhidltransport",
+ "libhwbinder",
+ "liblog",
+ "libutils",
+ "libcutils",
+ "android.hardware.radio@1.0",
+ "android.hidl.base@1.0",
+ ],
+ export_shared_lib_headers: [
+ "libhidlbase",
+ "libhidltransport",
+ "libhwbinder",
+ "libutils",
+ "android.hardware.radio@1.0",
+ "android.hidl.base@1.0",
+ ],
+}
diff --git a/radio/deprecated/1.0/Android.mk b/radio/deprecated/1.0/Android.mk
new file mode 100644
index 0000000..4cce633
--- /dev/null
+++ b/radio/deprecated/1.0/Android.mk
@@ -0,0 +1,162 @@
+# This file is autogenerated by hidl-gen. Do not edit manually.
+
+LOCAL_PATH := $(call my-dir)
+
+################################################################################
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := android.hardware.radio.deprecated@1.0-java
+LOCAL_MODULE_CLASS := JAVA_LIBRARIES
+
+intermediates := $(call local-generated-sources-dir, COMMON)
+
+HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
+
+LOCAL_JAVA_LIBRARIES := \
+ android.hardware.radio@1.0-java \
+ android.hidl.base@1.0-java \
+
+
+#
+# Build IOemHook.hal
+#
+GEN := $(intermediates)/android/hardware/radio/deprecated/V1_0/IOemHook.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IOemHook.hal
+$(GEN): PRIVATE_DEPS += $(LOCAL_PATH)/IOemHookIndication.hal
+$(GEN): $(LOCAL_PATH)/IOemHookIndication.hal
+$(GEN): PRIVATE_DEPS += $(LOCAL_PATH)/IOemHookResponse.hal
+$(GEN): $(LOCAL_PATH)/IOemHookResponse.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.radio.deprecated@1.0::IOemHook
+
+$(GEN): $(LOCAL_PATH)/IOemHook.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build IOemHookIndication.hal
+#
+GEN := $(intermediates)/android/hardware/radio/deprecated/V1_0/IOemHookIndication.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IOemHookIndication.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.radio.deprecated@1.0::IOemHookIndication
+
+$(GEN): $(LOCAL_PATH)/IOemHookIndication.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build IOemHookResponse.hal
+#
+GEN := $(intermediates)/android/hardware/radio/deprecated/V1_0/IOemHookResponse.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IOemHookResponse.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.radio.deprecated@1.0::IOemHookResponse
+
+$(GEN): $(LOCAL_PATH)/IOemHookResponse.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+include $(BUILD_JAVA_LIBRARY)
+
+
+################################################################################
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := android.hardware.radio.deprecated@1.0-java-static
+LOCAL_MODULE_CLASS := JAVA_LIBRARIES
+
+intermediates := $(call local-generated-sources-dir, COMMON)
+
+HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
+
+LOCAL_STATIC_JAVA_LIBRARIES := \
+ android.hardware.radio@1.0-java-static \
+ android.hidl.base@1.0-java-static \
+
+
+#
+# Build IOemHook.hal
+#
+GEN := $(intermediates)/android/hardware/radio/deprecated/V1_0/IOemHook.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IOemHook.hal
+$(GEN): PRIVATE_DEPS += $(LOCAL_PATH)/IOemHookIndication.hal
+$(GEN): $(LOCAL_PATH)/IOemHookIndication.hal
+$(GEN): PRIVATE_DEPS += $(LOCAL_PATH)/IOemHookResponse.hal
+$(GEN): $(LOCAL_PATH)/IOemHookResponse.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.radio.deprecated@1.0::IOemHook
+
+$(GEN): $(LOCAL_PATH)/IOemHook.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build IOemHookIndication.hal
+#
+GEN := $(intermediates)/android/hardware/radio/deprecated/V1_0/IOemHookIndication.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IOemHookIndication.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.radio.deprecated@1.0::IOemHookIndication
+
+$(GEN): $(LOCAL_PATH)/IOemHookIndication.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
+# Build IOemHookResponse.hal
+#
+GEN := $(intermediates)/android/hardware/radio/deprecated/V1_0/IOemHookResponse.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IOemHookResponse.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.radio.deprecated@1.0::IOemHookResponse
+
+$(GEN): $(LOCAL_PATH)/IOemHookResponse.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+include $(BUILD_STATIC_JAVA_LIBRARY)
+
+
+
+include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/radio/deprecated/1.0/IOemHook.hal b/radio/deprecated/1.0/IOemHook.hal
new file mode 100644
index 0000000..2b6db65
--- /dev/null
+++ b/radio/deprecated/1.0/IOemHook.hal
@@ -0,0 +1,57 @@
+/**
+ * Copyright (C) 2017 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.radio.deprecated@1.0;
+
+import IOemHookResponse;
+import IOemHookIndication;
+
+/**
+ * This interface has APIs for OEM-specific use-cases.
+ * USE OF THIS INTERFACE IS DISCOURATED. IT IS PRESENT ONLY FOR BACKWARD COMPATIBILITY AND WILL BE
+ * REMOVED IN O (ATTEMPTING TO REMOVE IT IN O, BUT IF NOT IN O WILL BE REMOVED IN P).
+ * ALSO NOTE THAT FRAMEWORK EXPECTS THE SERVICE IMPLEMENTING THIS INTERFACE TO RESIDE
+ * IN THE SAME PROCESS AS IRADIO SERVICE.
+ */
+interface IOemHook {
+ /**
+ * Set response functions for oem hook requests & oem hook indications.
+ *
+ * @param oemHookResponse Object containing response functions
+ * @param oemHookIndication Object containing oem hook indications
+ */
+ setResponseFunctions(IOemHookResponse oemHookResponse, IOemHookIndication oemHookIndication);
+
+ /**
+ * This request passes raw byte arrays between framework and vendor code.
+ *
+ * @param serial Serial number of request.
+ * @param data data passed as raw bytes
+ *
+ * Response function is IOemHookResponse.sendRequestRawResponse()
+ */
+ oneway sendRequestRaw(int32_t serial, vec<uint8_t> data);
+
+ /**
+ * This request passes strings between framework and vendor code.
+ *
+ * @param serial Serial number of request.
+ * @param data data passed as strings
+ *
+ * Response function is IOemHookResponse.sendRequestStringsResponse()
+ */
+ oneway sendRequestStrings(int32_t serial, vec<string> data);
+};
\ No newline at end of file
diff --git a/radio/deprecated/1.0/IOemHookIndication.hal b/radio/deprecated/1.0/IOemHookIndication.hal
new file mode 100644
index 0000000..936779f
--- /dev/null
+++ b/radio/deprecated/1.0/IOemHookIndication.hal
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2017 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.radio.deprecated@1.0;
+
+import android.hardware.radio@1.0::types;
+
+/*
+ * Interface declaring unsolicited oem hook indications.
+ */
+interface IOemHookIndication {
+ /*
+ * This is for OEM specific use.
+ *
+ * @param type Type of radio indication
+ * @param data data passed as raw bytes
+ */
+ oneway oemHookRaw(RadioIndicationType type, vec<uint8_t> data);
+};
\ No newline at end of file
diff --git a/radio/deprecated/1.0/IOemHookResponse.hal b/radio/deprecated/1.0/IOemHookResponse.hal
new file mode 100644
index 0000000..4e49acc
--- /dev/null
+++ b/radio/deprecated/1.0/IOemHookResponse.hal
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2017 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.radio.deprecated@1.0;
+
+import android.hardware.radio@1.0::types;
+
+/*
+ * Interface declaring response functions to solicited oem hook requests.
+ * Response functions defined in this interface are as per following convention:
+ * <xyz>Response is response to IOemHook.<xyz>
+ */
+interface IOemHookResponse {
+ /*
+ * @param info Response info struct containing response type, serial no. and error
+ * @param data data returned by oem
+ *
+ * Valid errors returned:
+ * RadioError:NONE
+ * RadioError:RADIO_NOT_AVAILABLE
+ * RadioError:INVALID_ARGUMENTS
+ * RadioError:OEM_ERROR_X
+ */
+ oneway sendRequestRawResponse(RadioResponseInfo info, vec<uint8_t> data);
+
+ /*
+ * @param info Response info struct containing response type, serial no. and error
+ * @param data data returned by oem
+ *
+ * Valid errors returned:
+ * RadioError:NONE
+ * RadioError:RADIO_NOT_AVAILABLE
+ * RadioError:INVALID_ARGUMENTS
+ * RadioError:OEM_ERROR_X
+ */
+ oneway sendRequestStringsResponse(RadioResponseInfo info, vec<string> data);
+};
\ No newline at end of file
diff --git a/renderscript/1.0/Android.bp b/renderscript/1.0/Android.bp
new file mode 100644
index 0000000..cce34e7
--- /dev/null
+++ b/renderscript/1.0/Android.bp
@@ -0,0 +1,69 @@
+// This file is autogenerated by hidl-gen. Do not edit manually.
+
+filegroup {
+ name: "android.hardware.renderscript@1.0_hal",
+ srcs: [
+ "types.hal",
+ "IContext.hal",
+ "IDevice.hal",
+ ],
+}
+
+genrule {
+ name: "android.hardware.renderscript@1.0_genc++",
+ tools: ["hidl-gen"],
+ cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.renderscript@1.0",
+ srcs: [
+ ":android.hardware.renderscript@1.0_hal",
+ ],
+ out: [
+ "android/hardware/renderscript/1.0/types.cpp",
+ "android/hardware/renderscript/1.0/ContextAll.cpp",
+ "android/hardware/renderscript/1.0/DeviceAll.cpp",
+ ],
+}
+
+genrule {
+ name: "android.hardware.renderscript@1.0_genc++_headers",
+ tools: ["hidl-gen"],
+ cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.renderscript@1.0",
+ srcs: [
+ ":android.hardware.renderscript@1.0_hal",
+ ],
+ out: [
+ "android/hardware/renderscript/1.0/types.h",
+ "android/hardware/renderscript/1.0/IContext.h",
+ "android/hardware/renderscript/1.0/IHwContext.h",
+ "android/hardware/renderscript/1.0/BnHwContext.h",
+ "android/hardware/renderscript/1.0/BpHwContext.h",
+ "android/hardware/renderscript/1.0/BsContext.h",
+ "android/hardware/renderscript/1.0/IDevice.h",
+ "android/hardware/renderscript/1.0/IHwDevice.h",
+ "android/hardware/renderscript/1.0/BnHwDevice.h",
+ "android/hardware/renderscript/1.0/BpHwDevice.h",
+ "android/hardware/renderscript/1.0/BsDevice.h",
+ ],
+}
+
+cc_library_shared {
+ name: "android.hardware.renderscript@1.0",
+ generated_sources: ["android.hardware.renderscript@1.0_genc++"],
+ generated_headers: ["android.hardware.renderscript@1.0_genc++_headers"],
+ export_generated_headers: ["android.hardware.renderscript@1.0_genc++_headers"],
+ shared_libs: [
+ "libhidlbase",
+ "libhidltransport",
+ "libhwbinder",
+ "liblog",
+ "libutils",
+ "libcutils",
+ "android.hidl.base@1.0",
+ ],
+ export_shared_lib_headers: [
+ "libhidlbase",
+ "libhidltransport",
+ "libhwbinder",
+ "libutils",
+ "android.hidl.base@1.0",
+ ],
+}
diff --git a/renderscript/1.0/Android.mk b/renderscript/1.0/Android.mk
new file mode 100644
index 0000000..5c3a37d
--- /dev/null
+++ b/renderscript/1.0/Android.mk
@@ -0,0 +1,41 @@
+# This file is autogenerated by hidl-gen. Do not edit manually.
+
+LOCAL_PATH := $(call my-dir)
+
+################################################################################
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := android.hardware.renderscript@1.0-java-constants
+LOCAL_MODULE_CLASS := JAVA_LIBRARIES
+
+intermediates := $(call local-generated-sources-dir, COMMON)
+
+HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
+#
+GEN := $(intermediates)/android/hardware/renderscript/V1_0/Constants.java
+$(GEN): $(HIDL)
+$(GEN): $(LOCAL_PATH)/types.hal
+$(GEN): $(LOCAL_PATH)/IContext.hal
+$(GEN): $(LOCAL_PATH)/IDevice.hal
+
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava-constants \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.renderscript@1.0
+
+$(GEN):
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+# Avoid dependency cycle of framework.jar -> this-library -> framework.jar
+LOCAL_NO_STANDARD_LIBRARIES := true
+LOCAL_JAVA_LIBRARIES := core-oj
+
+include $(BUILD_STATIC_JAVA_LIBRARY)
+
+
+
+include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/renderscript/1.0/IContext.hal b/renderscript/1.0/IContext.hal
new file mode 100644
index 0000000..2e386d2
--- /dev/null
+++ b/renderscript/1.0/IContext.hal
@@ -0,0 +1,1177 @@
+/*
+ * Copyright (C) 2017 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.renderscript@1.0;
+
+import android.hardware.renderscript@1.0::types;
+
+// TODO: is there any way to keep this documentation in sync with the
+// corresponding Java doc?
+//
+// TODO: Some of the documentation was taken from Java docs, whereas others were
+// undocumented. Because of this, there's somewhat two different styles of
+// comments. Look into having a consistent convention.
+//
+// TODO: There was some confusion as to why some paramters use vec<> and others
+// use Ptr/Size. The convention is that vec<> is used whenever the paramter is
+// only an input parameter. HIDL is not supposed to include any output
+// parameters, so a more explicit Ptr/Size is used.
+
+interface IContext {
+
+ /*
+ * TODO: Do we need to define "selectors"? It may be a property of the
+ * "adapted allocation" that's returned.
+ *
+ * Creates an arbitrary window into the base allocation. The type describes
+ * the shape of the window. Any dimensions present in the type must be
+ * equal to or smaller than the dimensions in the source allocation. A
+ * dimension present in the allocation that is not present in the type must
+ * be constrained away with the selectors. If a dimension is present in
+ * both the type and allocation, one of two things must happen. If the type
+ * is smaller than the allocation, a window must be created, the selected
+ * value in the adapter for that dimension must act as the base address,
+ * and the type must describe the size of the view starting at that point.
+ * If the type and allocation dimension are of the same size, then setting
+ * the selector for the dimension must be an error.
+ *
+ * @param type Type describing data layout
+ * @param baseAlloc Allocation
+ * @return subAlloc AllocationAdapter
+ */
+ @callflow(next={"*"})
+ allocationAdapterCreate(Type type, Allocation baseAlloc)
+ generates (AllocationAdapter subAlloc);
+
+ /*
+ * TODO: Need to relate "offset" back to the terminology in
+ * allocationAdapterCreate() -- the latter uses the terms "selector" and
+ * "selected value". Can we use consistent terminology? Are "offset" and
+ * "selector" actually two different things?
+ *
+ * TODO: Explain the flattened layout in the offsets vec
+ *
+ * Sets the offsets for an Allocation Adapter.
+ *
+ * @param alloc AllocationAdapter
+ * @param offsets Collection of offsets
+ */
+ @callflow(next={"*"})
+ allocationAdapterOffset(AllocationAdapter alloc, vec<uint32_t> offsets);
+
+ /*
+ * TODO: add more explanation here.
+ *
+ * Returns the Type of the Allocation.
+ *
+ * @param allocation Allocation
+ * @return type Allocation's Type
+ */
+ @callflow(next={"*"})
+ allocationGetType(Allocation allocation) generates (Type type);
+
+ /*
+ * TODO: more clarification needed describing if the pointer can be aliased
+ * or if the data can outlive the allocation.
+ *
+ * Creates an Allocation for use by scripts with a given Type and a backing
+ * pointer. For use with ALLOCATION_USAGE_SHARED.
+ *
+ * @param type Type describing data layout
+ * @param mips AllocationMipmapControl specifies desired mipmap behavior for
+ * the allocation
+ * @param usage Bit field specifying how the Allocation is utilized
+ * @param ptr Pointer to client-side data
+ * @return allocation Created Allocation
+ */
+ @callflow(next={"*"})
+ allocationCreateTyped(Type type, AllocationMipmapControl mips,
+ bitfield<AllocationUsageType> usage, Ptr ptr)
+ generates (Allocation allocation);
+
+ /*
+ * Creates an Allocation from a Bitmap.
+ *
+ * @param type Type describing data layout
+ * @param mips AllocationMipmapControl specifies desired mipmap behavior for
+ * the allocation
+ * @param bitmap Bitmap source for the allocation data
+ * @param usage Bit field specifying how the Allocation is utilized
+ * @return allocation Created Allocation containing bitmap data
+ */
+ @callflow(next={"*"})
+ allocationCreateFromBitmap(Type type, AllocationMipmapControl mips,
+ vec<uint8_t> bitmap,
+ bitfield<AllocationUsageType> usage)
+ generates (Allocation allocation);
+
+ /*
+ * Creates a Cubemapped Allocation from a Bitmap.
+ *
+ * @param type Type describing data layout
+ * @param mips AllocationMipmapControl specifies desired mipmap behavior
+ * for the allocation
+ * @param bitmap Bitmap with cubemap faces layed out in the following
+ * format: right, left, top, bottom, front, back
+ * @param usage Bit field specifying how the Allocation is used
+ * @return allocation Created Allocation containing cubemap data
+ */
+ @callflow(next={"*"})
+ allocationCubeCreateFromBitmap(Type type, AllocationMipmapControl mips,
+ vec<uint8_t> bitmap,
+ bitfield<AllocationUsageType> usage)
+ generates (Allocation allocation);
+
+ /*
+ * Returns the handle to a raw buffer that is being managed by the screen
+ * compositor. This operation is only valid for Allocations with
+ * USAGE_IO_INPUT.
+ *
+ * @param allocation Allocation
+ * @return nativeWindow NativeWindow object associated with allocation
+ */
+ @callflow(next={"*"})
+ allocationGetNativeWindow(Allocation allocation)
+ generates (NativeWindow nativeWindow);
+
+ /*
+ * TODO: more clarification needed
+ *
+ * Sets the NativeWindow of an Allocation. This operation is only valid
+ * for Allocations with USAGE_IO_INPUT.
+ *
+ * @param allocation Allocation to be modified
+ * @pram nativeWindow NativeWindow to associate with allocation
+ */
+ @callflow(next={"*"})
+ allocationSetNativeWindow(Allocation allocation, NativeWindow nativewindow);
+
+ /*
+ * Initialize BufferQueue with specified max number of buffers.
+ *
+ * @param alloc Allocation
+ * @param numBuffer Maximum number of buffers
+ */
+ @callflow(next={"*"})
+ allocationSetupBufferQueue(Allocation alloc, uint32_t numBuffer);
+
+ /*
+ * TODO: clearly define baseAlloc vs subAlloc
+ *
+ * Shares the BufferQueue with another Allocation. Both must be
+ * USAGE_IO_INPUT Allocations.
+ *
+ * @param baseAlloc Base Allocation
+ * @param subAlloc Allocation to use the same buffer queue as the Base
+ * Allocation
+ */
+ @callflow(next={"*"})
+ allocationShareBufferQueue(Allocation baseAlloc, Allocation subAlloc);
+
+ /*
+ * Copies from the Allocation into a Bitmap. The bitmap must match the
+ * dimensions of the Allocation.
+ *
+ * HIDL is always running in Passthrough mode for RenderScript, so the
+ * buffer is modified directly by the driver.
+ *
+ * @param allocation Allocation
+ * @param data Buffer to be copied into
+ * @param sizeBytes Size of the buffer pointed to by "data"
+ */
+ @callflow(next={"*"})
+ allocationCopyToBitmap(Allocation allocation, Ptr data, Size sizeBytes);
+
+ /*
+ * TODO: should we consolidate all [123]DWrite functions or [123]DRead
+ * functions into the same API call? Our current plan is to be very similar
+ * to the dispatch table API. How much should we deviate from the original
+ * API?
+ * TODO: better description on Vec3/Vec4 and padding.
+ *
+ * Copies data into a 1D region of this Allocation.
+ *
+ * When this HAL entry is executed, all Vec3 elements have been explicitly
+ * padded as Vec4 elements.
+ *
+ * The size of the region is: count * Element's size.
+ *
+ * @param allocation Allocation to be modified
+ * @param offset The offset of the first element to be copied
+ * @param lod Selected mipmap level of detail
+ * @param count Number of elements to be copied
+ * @param data Source data to be copied to Allocation
+ */
+ @callflow(next={"*"})
+ allocation1DWrite(Allocation allocation, uint32_t offset, uint32_t lod,
+ uint32_t count, vec<uint8_t> data);
+
+ /*
+ * Copies a value into a single sub-Element of this Allocation.
+ *
+ * @param allocation Allocation to be updated
+ * @param x X position of the first element in the Allocation to be updated
+ * @param y Y position of the first element in the Allocation to be
+ * updated; for a 1D Allocation, this value must be 0
+ * @param z Z position of the first element in the Allocation to be
+ * updated; for a 1D or 2D Allocation, this value must be 0
+ * @param lod Selected mipmap level of detail
+ * @param data Data to be copied from
+ * @param compIdx Component number to identify which sub-Element is updated
+ */
+ @callflow(next={"*"})
+ allocationElementWrite(Allocation allocation, uint32_t x, uint32_t y,
+ uint32_t z, uint32_t lod, vec<uint8_t> data,
+ Size compIdx);
+
+ /*
+ * Copies from an array into a rectangular region in this Allocation.
+ *
+ * When this HAL entry is executed, all Vec3 elements have been explicitly
+ * padded as Vec4 elements.
+ *
+ * The size of the region is: w * h * Element's size.
+ *
+ * @param allocation Allocation to be modified
+ * @param xoff X offset of the region to update in this Allocation
+ * @param yoff Y offset of the region to update in this Allocation
+ * @param lod Selected mipmap level of detail
+ * @param face AllocationCubemapFace
+ * @param w Width of the region to update
+ * @param h Height of the region to update
+ * @param data Data to be placed into the Allocation
+ * @param stride For 1D Allocation, the stride must be the number of bytes
+ * of this Allocation. For 2D and 3D Allocations, the stride
+ * must be the stride in X dimension measuring in bytes.
+ */
+ @callflow(next={"*"})
+ allocation2DWrite(Allocation allocation, uint32_t xoff, uint32_t yoff,
+ uint32_t lod, AllocationCubemapFace face, uint32_t w,
+ uint32_t h, vec<uint8_t> data, Size stride);
+
+ /*
+ * Copies from an array into a 3D region in this Allocation.
+ *
+ * When this HAL entry is executed, all Vec3 elements have been explicitly
+ * padded as Vec4 elements.
+ *
+ * The size of the region is: w * h * d * Element's size.
+ *
+ * @param allocation Allocation to be modified
+ * @param xoff X offset of the region to update in this Allocation
+ * @param yoff Y offset of the region to update in this Allocation
+ * @param zoff Z offset of the region to update in this Allocation
+ * @param lod Selected mipmap level of detail
+ * @param w Width of the region to update
+ * @param h Height of the region to update
+ * @param d Depth of the region to update
+ * @param data Data to be placed in the Allocation
+ * @param stride For 1D Allocation, the stride must be the number of bytes
+ * of this Allocation. For 2D and 3D Allocations, the stride
+ * must be the stride in X dimension measuring in bytes.
+ */
+ @callflow(next={"*"})
+ allocation3DWrite(Allocation allocation, uint32_t xoff, uint32_t yoff,
+ uint32_t zoff, uint32_t lod, uint32_t w, uint32_t h,
+ uint32_t d, vec<uint8_t> data, Size stride);
+
+ /*
+ * Generates a mipmap chain. This is only valid if the Type of the
+ * Allocation includes mipmaps.
+ *
+ * This function generates a complete set of mipmaps from the top level
+ * LOD.
+ *
+ * If the Allocation is also using other memory spaces, a call to
+ * allocationSyncAll(context, allocation, usage) is required.
+ *
+ * @param allocation Allocation which has its top LOD read and lower LOD
+ * written to
+ */
+ @callflow(next={"*"})
+ allocationGenerateMipmaps(Allocation allocation);
+
+ /*
+ * Copies all of an Allocation's data into an array.
+ *
+ * All Vec3 elements of an Allocation are padded to be Vec4, so the data
+ * returned by this function automatically includes padding.
+ *
+ * HIDL is always running in Passthrough mode for RenderScript, so the
+ * buffer is modified directly by the driver.
+ *
+ * @param allocation Allocation to be read
+ * @param data Buffer to be copied into
+ * @param sizeBytes Size of the buffer pointed to by "data"
+ */
+ @callflow(next={"*"})
+ allocationRead(Allocation allocation, Ptr data, Size sizeBytes);
+
+ /*
+ * Copies a 1D region of this Allocation into an array.
+ *
+ * All Vec3 elements of an Allocation are padded to be Vec4, so the data
+ * returned by this function automatically includes padding.
+ *
+ * The size of the region is: count * Element's size.
+ *
+ * HIDL is always running in Passthrough mode for RenderScript, so the
+ * buffer is modified directly by the driver.
+ *
+ * @param allocation Allocation to be read
+ * @param xoff X offset of the first element to be copied
+ * @param lod Mipmap level of detail
+ * @param count The number of elements to be copied
+ * @param data Buffer to be copied into
+ * @param sizeBytes Size of the buffer pointed to by "data"
+ */
+ @callflow(next={"*"})
+ allocation1DRead(Allocation allocation, uint32_t xoff, uint32_t lod,
+ uint32_t count, Ptr data, Size sizeBytes);
+
+ /*
+ * Returns the value of a single sub-Element of this Allocation.
+ *
+ * HIDL is always running in Passthrough mode for RenderScript, so the
+ * buffer is modified directly by the driver.
+ *
+ * @param allocation Allocation to be read
+ * @param x X position of the first element in the Allocation to be read
+ * @param y Y position of the first element in the Allocation to be read
+ * @param z Z position of the first element in the Allocation to be read
+ * @param lod Mipmap level of detail
+ * @param data Buffer to be copied into
+ * @param sizeBytes Size of the buffer pointed to by "data"
+ * @param compIdx Component number to identify which sub-Element is updated
+ */
+ @callflow(next={"*"})
+ allocationElementRead(Allocation allocation, uint32_t x, uint32_t y,
+ uint32_t z, uint32_t lod, Ptr data, Size sizeBytes,
+ Size compIdx);
+
+ /*
+ * Copies from a rectangular region in this Allocation to an array.
+ *
+ * All Vec3 elements of an Allocation are padded to be Vec4, so the data
+ * returned by this function automatically includes padding.
+ *
+ * The size of the region is: w * h * Element's size.
+ *
+ * HIDL is always running in Passthrough mode for RenderScript, so the
+ * buffer is modified directly by the driver.
+ *
+ * @param allocation Allocation to be read
+ * @param xoff X offset of the region to copy in this array
+ * @param yoff Y offset of the region to copy in this array
+ * @param lod Mipmap level of detail
+ * @param face AllocationCubemapFace
+ * @param w Width of the region to copy
+ * @param h Height of the region to copy
+ * @param data Buffer to be copied into
+ * @param sizeBytes Size of the buffer pointed to by "data"
+ * @param stride For 1D Allocation, the stride must be the number of bytes
+ * of this Allocation. For 2D and 3D Allocations, the stride
+ * must be the stride in X dimension measuring in bytes.
+ */
+ @callflow(next={"*"})
+ allocation2DRead(Allocation allocation, uint32_t xoff, uint32_t yoff,
+ uint32_t lod, AllocationCubemapFace face, uint32_t w,
+ uint32_t h, Ptr data, Size sizeBytes, Size stride);
+
+ /*
+ * Copies from a rectangular cuboid region in this Allocation to an array.
+ *
+ * All Vec3 elements of an Allocation are padded to be Vec4, so the data
+ * returned by this function automatically includes padding.
+ *
+ * The size of the region is: w * h * d * Element's size.
+ *
+ * HIDL is always running in Passthrough mode for RenderScript, so the
+ * buffer is modified directly by the driver.
+ *
+ * @param allocation Allocation to be read
+ * @param xoff X offset of the region to copy in this array
+ * @param yoff Y offset of the region to copy in this array
+ * @param zoff Z offset of the region to copy in this array
+ * @param lod Mipmap level of detail
+ * @param w Width of the region to copy
+ * @param h Height of the region to copy
+ * @param d Depth of the region to copy
+ * @param data Buffer to be copied into
+ * @param sizeBytes Size of the buffer pointed to by "data"
+ * @param stride For 1D Allocation, the stride must be the number of bytes
+ * of this Allocation. For 2D and 3D Allocations, the stride
+ * must be the stride in X dimension measuring in bytes.
+ */
+ @callflow(next={"*"})
+ allocation3DRead(Allocation allocation, uint32_t xoff, uint32_t yoff,
+ uint32_t zoff, uint32_t lod, uint32_t w, uint32_t h,
+ uint32_t d, Ptr data, Size sizeBytes, Size stride);
+
+ /*
+ * Propagates changes from one usage of the Allocation to the other usages
+ * of the Allocation.
+ *
+ * @param allocation First usage of the Allocation
+ * @param usageType Allocation usage type
+ */
+ @callflow(next={"*"})
+ allocationSyncAll(Allocation allocation, AllocationUsageType usageType);
+
+ /*
+ * TODO: describe the functionality of resize1D better
+ * TODO: original Java Doc description seems to contradict itself ("with
+ * null contents and the region is otherwise undefined")
+ * TODO: should "new elements" be "new cells"?
+ * TODO: what does "objects are created" mean?
+ * TODO: what does "new dimension" mean? IS the type of the resized
+ * allocation different than the type before resizing?
+ *
+ * Resizes a 1D allocation. The contents of the allocation are preserved.
+ * If new elements are allocated, objects are created with null contents
+ * and the new region is otherwise undefined.
+ *
+ * If the new region is smaller, the references of any object outside the
+ * new region must be released.
+ *
+ * A new type must be created with the new dimension.
+ *
+ * @param allocation Allocation to be resized
+ * @param dimX New size along the x dimension of the Allocation
+ */
+ @callflow(next={"*"})
+ allocationResize1D(Allocation allocation, uint32_t dimX);
+
+ /*
+ * TODO: There are allocationCopy2DRange and 3DRange, but no 1DRange. Should
+ * the interface be cleaned up more?
+ *
+ * Copies a rectangular region from an Allocation into a rectangular region
+ * in this Allocation.
+ *
+ * @param dstAlloc Allocation to be updated
+ * @param dstXoff X offset of the region to update
+ * @param dstYoff Y offset of the region to update
+ * @param dstMip Selected mipmap level of the Allocation to update
+ * @param dstFace Destination AllocationCubemapFace
+ * @param width Width of the region to update
+ * @param height Height of the region to update
+ * @param srcAlloc Source Allocation, to be read
+ * @param srcXoff X offset of the region in the source Allocation
+ * @param srcYoff Y offset of the region in the source Allocation
+ * @param srcMip Selected mipmap level of the source Allocation
+ * @param srcFace Source AllocationCubemapFace
+ */
+ @callflow(next={"*"})
+ allocationCopy2DRange(Allocation dstAlloc, uint32_t dstXoff,
+ uint32_t dstYoff, uint32_t dstMip,
+ AllocationCubemapFace dstFace, uint32_t width,
+ uint32_t height, Allocation srcAlloc,
+ uint32_t srcXoff, uint32_t srcYoff, uint32_t srcMip,
+ AllocationCubemapFace srcFace);
+
+ /*
+ * Copies a rectangular cuboid region into the allocation from another
+ * Allocation.
+ *
+ * @param dstAlloc Allocation to be updated
+ * @param dstXoff X offset of the region to update
+ * @param dstYoff Y offset of the region to update
+ * @param dstZoff Z offset of the region to update
+ * @param dstMip Selected mipmap level of the Allocation to update
+ * @param width Width of the region to update
+ * @param height Height of the region to update
+ * @param depth Depth of the region to update
+ * @param srcAlloc Source Allocation, to be read
+ * @param srcXoff Source X offset of the region in the source Allocation
+ * @param srcYoff Source Y offset of the region in the source Allocation
+ * @param srcZoff Source Z offset of the region in the souce Allocation
+ * @param srcMip Selected mipmap level of the Allocation to read
+ */
+ @callflow(next={"*"})
+ allocationCopy3DRange(Allocation dstAlloc, uint32_t dstXoff,
+ uint32_t dstYoff, uint32_t dstZoff, uint32_t dstMip,
+ uint32_t width, uint32_t height, uint32_t depth,
+ Allocation srcAlloc, uint32_t srcXoff,
+ uint32_t srcYoff, uint32_t srcZoff, uint32_t srcMip);
+
+ /*
+ * TODO: define buffer and output stream
+ *
+ * Sends a buffer to the output stream. The contents of the Allocation may
+ * be undefined after this operation. This operation is only valid if
+ * USAGE_IO_OUTPUT is set on the Allocation.
+ *
+ * @param allocation Allocation to be sent
+ */
+ @callflow(next={"*"})
+ allocationIoSend(Allocation allocation);
+
+ /*
+ * Receives the latest input into the Allocation. This operation is only
+ * valid if USAGE_IO_INPUT is set on the Allocation, otherwise an error
+ * must be reported and no operations may be executed.
+ *
+ * @param allocation Allocation to be updated
+ */
+ @callflow(next={"*"})
+ allocationIoReceive(Allocation allocation);
+
+ /*
+ * TODO: describe default values for lod, face, and z better.
+ * TODO: what cases can invalidate the pointer? Resize? It should be
+ * clarified that this method should always return a valid pointer, but the
+ * returned pointer might become invalid later.
+ *
+ * Retrieves the pointer to the actual data an Allocation contains as well
+ * as the data's stride.
+ *
+ * If Allocation lacks the corresponding dimension for lod, face, or z, an
+ * error message must be sent to the message queue and nullptr must be
+ * returned for dataPtr and 0 for stride. All missing values must be 0 or
+ * NONE in the corresponding enum.
+ *
+ * @param allocation Allocation
+ * @param lod Mipmap level of detail
+ * @param face AllocationCubemapFace
+ * @param z Z position
+ * @return pointer Pointer to the server-side data; if this points to an
+ * invalid location in memory (because the buffer was
+ * freed), this may result in undefined behavior
+ * @return stride For 1D Allocation, the stride must be the number of bytes
+ * of this Allocation. For 2D and 3D Allocations, the stride
+ * must be the stride in X dimension measuring in bytes.
+ */
+ @callflow(next={"*"})
+ allocationGetPointer(Allocation allocation, uint32_t lod,
+ AllocationCubemapFace face, uint32_t z)
+ generates (Ptr dataPtr, Size stride);
+
+ /*
+ * Retrieves an Element's metadata from native code.
+ *
+ * @param element Element to be read
+ * @return elemData Element data
+ */
+ @callflow(next={"*"})
+ elementGetNativeMetadata(Element element)
+ generates (vec<uint32_t> elemData);
+
+ /*
+ * TODO: define Sub-Element handles better.
+ *
+ * Retrieves an Element's sub Elements, specifically their identifiers,
+ * names, and sizes.
+ *
+ * @param element Element to be read
+ * @param numSubElem Number of sub-Elements
+ * @return ids Sub-Element handles
+ * @return names Sub-Element Names
+ * @return arraySizes Sizes of sub-Element arrays
+ */
+ @callflow(next={"*"})
+ elementGetSubElements(Element element, Size numSubElem)
+ generates (vec<Element> ids, vec<string> names,
+ vec<Size> arraySizes);
+
+ /*
+ * TODO: can normalization flag be removed?
+ *
+ * Creates an Element.
+ *
+ * @param dt Data type
+ * @param dk Data kind
+ * @param norm Flag for normalization
+ * @param size Vector length, with scalar = 1
+ * @return element Created Element
+ */
+ @callflow(next={"*"})
+ elementCreate(DataType dt, DataKind dk, bool norm, uint32_t size)
+ generates (Element element);
+
+ /*
+ * Creates a complex Element.
+ *
+ * @param einsPtr Container of input Elements
+ * @param namesPtr Container of input names
+ * @param arraySizesPtr Container of array sizes
+ * @return element Created Element
+ */
+ @callflow(next={"*"})
+ elementComplexCreate(vec<Element> einsPtr, vec<string> names,
+ vec<Size> arraySizesPtr)
+ generates (Element element);
+
+ /*
+ * Retrives a Type's metadata from native code.
+ *
+ * @param type Type describing data layout
+ * @return metadata Type's native metadata
+ */
+ @callflow(next={"*"})
+ typeGetNativeMetadata(Type type) generates (vec<OpaqueHandle> metadata);
+
+ /*
+ * Creates a new Type.
+ *
+ * If Type is 1D, Y and Z must be 0. If Type is 2D, Z must be 0.
+ *
+ * @param element Element of the Type
+ * @param dimX X dimension
+ * @param dimY Y dimension
+ * @param dimZ Z dimension
+ * @param mipmaps Flag indicating whether Type has mipmaps
+ * @param faces Flag indicating whether Type has faces
+ * @param yuv Enumeration specifying which type of YUV format, if any, Type
+ * uses
+ * @return type Created Type
+ */
+ @callflow(next={"*"})
+ typeCreate(Element element, uint32_t dimX, uint32_t dimY, uint32_t dimZ,
+ bool mipmaps, bool faces, YuvFormat yuv)
+ generates (Type type);
+
+ /*
+ * Destroys provided RenderScript context, including all objects created in
+ * this context.
+ */
+ @exit
+ contextDestroy();
+
+ /*
+ * TODO: provide overview of messaging model and figure out if this should
+ * be part of HAL or not.
+ * TODO: what is the "client" for purposes of this interface?
+ * TODO: consider using send/receive to be more similar to other calls
+ * TODO: define the purpose of size more
+ *
+ * Fills the provided buffer with message data. "size" should be at least
+ * as large as the message size. Returns the MessageType and size of the
+ * message are returned.
+ *
+ * @param data A pointer to a buffer to be filled with a message
+ * @param size Size in bytes of the buffer pointed to by "data"
+ * @return messageType Type of message sent to the client
+ * @return receiveLen Length of the message in bytes
+ */
+ @callflow(next={"*"})
+ contextGetMessage(Ptr data, Size size)
+ generates (MessageToClientType messageType, Size receiveLen);
+
+ /*
+ * TODO: define subID better.
+ *
+ * Gets the metadata of a message to ensure entire message can be properly
+ * received. Can be used to determine size of data to allocate when calling
+ * contextGetMessage.
+ *
+ * @return messageType Type of message sent to the client
+ * @return receiveLen Length of message
+ * @return subID Message sub identifier
+ */
+ @callflow(next={"*"})
+ contextPeekMessage()
+ generates (MessageToClientType messageType, Size receiveLen,
+ uint32_t subID);
+
+ /*
+ * TODO: Define "previous commands" better
+ * TODO: Is the message identifier the same as subID?
+ *
+ * Places a message into the message queue to be sent back to the message
+ * handler once all previous commands have been executed. The message data
+ * is copied into the queue and can be discarded by the client after this
+ * call.
+ *
+ * @param id Message identifier
+ * @param data Message data
+ */
+ @callflow(next={"*"})
+ contextSendMessage(uint32_t id, vec<uint8_t> data);
+
+ /*
+ * TODO: Can this be done automatically as part of context creation? What
+ * happens if we perform message operations before doing this?
+ *
+ * Initializes the messaging thread, so that the front-end API can receive
+ * messages from the driver. This call also waits for the messaging FIFO to
+ * start up.
+ */
+ @callflow(next={"*"})
+ contextInitToClient();
+
+ /*
+ * TODO: Why doesn't this happen automatically as part of context
+ * destruction? What happens if the FIFO is not empty?
+ *
+ * Deinitializes a the messaging thread. Shuts down the FIFO.
+ */
+ @callflow(next={"*"})
+ contextDeinitToClient();
+
+ /*
+ * TODO: do we need to mark asynchronous operations in this interface
+ * definition?
+ *
+ * Waits for any pending asynchronous operations (such as copies to a RS
+ * allocation or RS script executions) to complete.
+ */
+ @callflow(next={"*"})
+ contextFinish();
+
+ /*
+ * Prints the currently available debugging information about the state of
+ * the RS context to the logcat.
+ */
+ @callflow(next={"*"})
+ contextLog();
+
+ /*
+ * TODO: full path? relative path? Investigate further.
+ *
+ * Sets the cache directory of the context.
+ *
+ * @param cacheDir Name of the application's cache directory
+ */
+ @callflow(next={"*"})
+ contextSetCacheDir(string cacheDir);
+
+ /*
+ * TODO: does this apply to the GPU as well?
+ *
+ * Changes the priority of the cpu worker threads for this context.
+ *
+ * @param priority Priority of the thread
+ */
+ @callflow(next={"*"})
+ contextSetPriority(ThreadPriorities priority);
+
+ /*
+ * TODO: does this need to be part of the HAL? What if the object already
+ * has a name?
+ *
+ * Assigns a name to a base object.
+ *
+ * @param obj Object to be named
+ * @param name Assigned name
+ */
+ @callflow(next={"*"})
+ assignName(ObjectBase obj, string name);
+
+ /*
+ * TODO: what if the object has no name?
+ *
+ * Returns the name of an object.
+ *
+ * @param obj Object to be read
+ * @return name Name of the object
+ */
+ @callflow(next={"*"})
+ getName(ObjectBase obj) generates (string name);
+
+ /*
+ * TODO: starting here we have a set of interfaces for use with
+ * ScriptGroups. At the very least we should indicate for each one that's
+ * what it's for. Should we include ScriptGroup in the interface names?
+ * TODO: sweep whole file and remove prefix "v" from all parameter names
+ * TODO: there are some places where we use Size for size, and others where
+ * we use int32_t. Is there a reason it's int32_t? In some cases, it
+ * requires a negative value.
+ *
+ * Creates a Closure which represents a function call to a ForEach Kernel
+ * combined with arguments and values for global variables.
+ *
+ * @param kernelID Kernel identifier
+ * @param returnValue Allocation used in output of Closure
+ * @param fieldIDS Collection of Script's Field identifiers
+ * @param values Collection of Script's data values
+ * @param sizes Collection of Script's data sizes
+ * @param depClosures Collection of Closures
+ * @param depFieldIDS Collection of Script's dependent Field identifiers
+ * @return closure Created Closure
+ */
+ @callflow(next={"*"})
+ closureCreate(ScriptKernelID kernelID, Allocation returnValue,
+ vec<ScriptFieldID> fieldIDS, vec<int64_t> values,
+ vec<int32_t> sizes, vec<Closure> depClosures,
+ vec<ScriptFieldID> depFieldIDS)
+ generates (Closure closure);
+
+ /*
+ * Creates a Closure which represents a function call to a invocable
+ * function, combined with arguments and values for global variables.
+ *
+ * @param invokeID Invokable function identifier
+ * @param params Collection of Invoke script parameters
+ * @param fieldIDS Collection of Script Field identifiers
+ * @param values Collection of values
+ * @param sizes Collection of sizes
+ * @return closure Created Closure
+ */
+ @callflow(next={"*"})
+ invokeClosureCreate(ScriptInvokeID invokeID, vec<uint8_t> params,
+ vec<ScriptFieldID> fieldIDS, vec<int64_t> values,
+ vec<int32_t> sizes)
+ generates (Closure closure);
+
+ /*
+ * Sets the argument of a Closure at specified index and size to provided
+ * value.
+ *
+ * @param closure Closure to be modified
+ * @param index Index
+ * @param value Value
+ * @param size Size
+ */
+ @callflow(next={"*"})
+ closureSetArg(Closure closure, uint32_t index, Ptr value, int32_t size);
+
+ /*
+ * Sets a global variable in a Closure.
+ *
+ * @param closure Closure
+ * @param fieldID Global's Field identifier
+ * @param value Value
+ * @param size Size
+ */
+ @callflow(next={"*"})
+ closureSetGlobal(Closure closure, ScriptFieldID fieldID, int64_t value,
+ int32_t size);
+
+ /*
+ * TODO: should slot be unsigned? (applies to other two ID interfaces, too)
+ *
+ * Creates a Script Kernel ID.
+ *
+ * @param script Script
+ * @param slot Slot
+ * @param sig Bitfield describing Kernel signature and operation
+ * @return scriptKernelID Script's Kernel identifier
+ */
+ @callflow(next={"*"})
+ scriptKernelIDCreate(Script script, int32_t slot,
+ bitfield<MetadataSignatureBitval> sig)
+ generates (ScriptKernelID scriptKernelID);
+
+ /*
+ * Creates a Script Invoke ID.
+ *
+ * @param script Script
+ * @param slot Slot
+ * @return scriptInvokeID Invoke Script's identifier
+ */
+ @callflow(next={"*"})
+ scriptInvokeIDCreate(Script script, int32_t slot)
+ generates (ScriptInvokeID scriptInvokeID);
+
+ /*
+ * TODO: describe the return value better. What is it?
+ *
+ * Creates a Script Field ID.
+ *
+ * @param script Script
+ * @param slot Slot
+ * @return scriptFieldID Script's Field identifier
+ */
+ @callflow(next={"*"})
+ scriptFieldIDCreate(Script script, int32_t slot)
+ generates (ScriptFieldID scriptFieldID);
+
+ /*
+ * TODO: add more description
+ *
+ * Creates a Script Group.
+ *
+ * @param kernels Collection of Scripts' Kernel identifiers
+ * @param srcK Source Kernel identifiers
+ * @param dstK Destination Kernel identifiers
+ * @param dstF Destination Script Field identifiers
+ * @param types Collection of Types describing data layout
+ * @return scriptGroup Created Script Group
+ */
+ @callflow(next={"*"})
+ scriptGroupCreate(vec<ScriptKernelID> kernels, vec<ScriptKernelID> srcK,
+ vec<ScriptKernelID> dstK, vec<ScriptFieldID> dstF,
+ vec<Type> types)
+ generates (ScriptGroup scriptGroup);
+
+ /*
+ * Creates a Script Group.
+ *
+ * @param name Name
+ * @param cacheDir Cache directory
+ * @param closures Collection of Closures
+ * @return scriptGroup2 Created Script Group
+ */
+ @callflow(next={"*"})
+ scriptGroup2Create(string name, string cacheDir, vec<Closure> closures)
+ generates (ScriptGroup2 scriptGroup2);
+
+ /*
+ * TODO: if SetInput/Output corresponds to the Java API setInput() and
+ * setOutput(), which are documented as deprecated in API 23, do we need to
+ * support them? Or can we fallback to the CPU when they're used? Or can't
+ * we tell whether they're used early enough to do fallback?
+ *
+ * Sets an output of the ScriptGroup. This specifies an Allocation to be
+ * used for the kernels that require an output Allocation visible after the
+ * ScriptGroup is executed.
+ *
+ * @param sg Script Group
+ * @param kid Script's Kernel identifier to be changed
+ * @param alloc Allocation to be filled by output
+ */
+ @callflow(next={"*"})
+ scriptGroupSetOutput(ScriptGroup sg, ScriptKernelID kid, Allocation alloc);
+
+ /*
+ * Sets an input of the Script Group. This specifies an Allocation to be
+ * used for kernels that require an input Allocation provided from outside
+ * of the Script Group.
+ *
+ * @param sg Script Group
+ * @param kid Script's Kernel identifier to be changed
+ * @param alloc Allocation to be read as input
+ */
+ @callflow(next={"*"})
+ scriptGroupSetInput(ScriptGroup sg, ScriptKernelID kid, Allocation alloc);
+
+ /*
+ * Executes a Script Group.
+ *
+ * @param sg Script Group to be executed.
+ */
+ @callflow(next={"*"})
+ scriptGroupExecute( ScriptGroup sg);
+
+ /*
+ * Frees any native resources associated with this object. The primary use
+ * is to force immediate cleanup of resources when it is believed the GC
+ * may not respond quickly enough.
+ *
+ * @param handle Opaque handle to the server-side object to be destroyed
+ */
+ @callflow(next={"*"})
+ objDestroy(ObjectBase obj);
+
+ /*
+ * Creates a Sampler.
+ *
+ * @param magFilter Magnification value for the filter
+ * @param minFilter Minification value for the filter
+ * @param wrapS S wrapping mode for the sampler
+ * @param wrapT T wrapping mode for the sampler
+ * @param wrapR R wrapping mode for the sampler
+ * @param aniso Anisotropy setting for the sampler
+ * @return sampler Created Sampler
+ */
+ @callflow(next={"*"})
+ samplerCreate(SamplerValue magFilter, SamplerValue minFilter,
+ SamplerValue wrapS, SamplerValue wrapT, SamplerValue wrapR,
+ float aniso)
+ generates (Sampler sampler);
+
+ /*
+ * Binds an Allocation to a global pointer in the Script.
+ *
+ * @param script Script to be bound to
+ * @param allocation Allocation to be bound
+ * @param slot Slot of a global variable
+ */
+ @callflow(next={"*"})
+ scriptBindAllocation(Script script, Allocation allocation, uint32_t slot);
+
+ /*
+ * TODO: is this necessary?
+ *
+ * Sets the timezone of a Script.
+ *
+ * @param script Script to be altered
+ * @param timeZone Time Zone value as text
+ */
+ @callflow(next={"*"})
+ scriptSetTimeZone(Script script, string timeZone);
+
+ /*
+ * TODO: can scriptInvoke be combined with scriptInvokeV?
+ *
+ * Launches an invokable function.
+ *
+ * @param vs Script to be invoked
+ * @param slot Slot of invokable function
+ */
+ @callflow(next={"*"})
+ scriptInvoke(Script vs, uint32_t slot);
+
+ /*
+ * Invokes a Script with values.
+ *
+ * @param vs Script to be invoked
+ * @param slot Slot
+ * @param data Data buffer of packed arguments
+ */
+ @callflow(next={"*"})
+ scriptInvokeV(Script vs, uint32_t slot, vec<uint8_t> data);
+
+ /*
+ * TODO: add documentation for params
+ * TODO: Should we rename "ScriptCall" to "LaunchOptions"?
+ *
+ * Launches a ForEach kernel.
+ *
+ * @param vs Script
+ * @param slot Slot of ForEach Kernel
+ * @param vains Collection of input Allocations or null
+ * @param vaout Output Allocation or null
+ * @param params Collection of parameters
+ * @param sc Pointer to a ScriptCall, nullptr if unused
+ */
+ @callflow(next={"*"})
+ scriptForEach(Script vs, uint32_t slot, vec<Allocation> vains,
+ Allocation vaout, vec<uint8_t> params, Ptr sc);
+
+ /*
+ * Launches a Reduction kernel.
+ *
+ * @param vs Script
+ * @param slot Slot of Reduction Kernel
+ * @param vains Collection of input Allocations
+ * @param vaout Output Allocation
+ * @param sc Pointer to a ScriptCall, nullptr if unused
+ */
+ @callflow(next={"*"})
+ scriptReduce(Script vs, uint32_t slot, vec<Allocation> vains,
+ Allocation vaout, Ptr sc);
+
+ /*
+ * Sets a Script's integer variable to a value.
+ *
+ * @param vs RenderScript Script
+ * @param slot Slot number of variable to be updated
+ * @param value Value to be pushed to variable
+ */
+ @callflow(next={"*"})
+ scriptSetVarI(Script vs, uint32_t slot, int32_t value);
+
+ /*
+ * Sets a Script's Object variable to a value
+ *
+ * @param vs RenderScript Script
+ * @param slot Slot number of variable to be updated
+ * @param obj ObjectBase
+ */
+ @callflow(next={"*"})
+ scriptSetVarObj( Script vs, uint32_t slot, ObjectBase obj);
+
+ /*
+ * Sets a Script's long variable to a value.
+ *
+ * @param vs RenderScript Script
+ * @param slot Slot number of variable to be updated
+ * @param value Value to be pushed to variable
+ */
+ @callflow(next={"*"})
+ scriptSetVarJ(Script vs, uint32_t slot, int64_t value);
+
+ /*
+ * Sets a Script's float variable to a value.
+ *
+ * @param vs RenderScript Script
+ * @param slot Slot number of variable to be updated
+ * @param value Value to be pushed to variable
+ */
+ @callflow(next={"*"})
+ scriptSetVarF(Script vs, uint32_t slot, float value);
+
+ /*
+ * Sets a Script's double variable to a value.
+ *
+ * @param vs RenderScript Script
+ * @param slot Slot number of variable to be updated
+ * @param value Value to be pushed to variable
+ */
+ @callflow(next={"*"})
+ scriptSetVarD(Script vs, uint32_t slot, double value);
+
+ /*
+ * Sets a Script's struct variable to a value.
+ *
+ * @param vs RenderScript Script
+ * @param slot Slot number of variable to be updated
+ * @param data Data to be pushed to variable
+ */
+ @callflow(next={"*"})
+ scriptSetVarV(Script vs, uint32_t slot, vec<uint8_t> data);
+
+ /*
+ * TODO: Why do we have typed setters but only untyped getter?
+ *
+ * Retrieves the value from a global variable in a script.
+ *
+ * @param vs RenderScript Script
+ * @param slot Slot number of variable to be read
+ * @param len Size of data to be filled
+ * @return data Data to be updated
+ */
+ @callflow(next={"*"})
+ scriptGetVarV(Script vs, uint32_t slot, Size len)
+ generates (vec<uint8_t> data);
+
+ /*
+ * TODO: Is this a value to be replicated for each member of the array? Or
+ * is there a representation for each separate member?
+ *
+ * Sets the value of a global array of structs, given the Element and
+ * dimension.
+ *
+ * @param vs RenderScript Script
+ * @param slot Slot number of variable to be updated
+ * @param data Data
+ * @param ve Element
+ * @param dims Collection of dimensions
+ */
+ @callflow(next={"*"})
+ scriptSetVarVE(Script vs, uint32_t slot, vec<uint8_t> data, Element ve,
+ vec<uint32_t> dims);
+
+ /*
+ * TODO: is cacheDir redundant with createCache() function? Can we remove
+ * it?
+ * TODO: define resName more clearly
+ *
+ * Creates a RenderScript C99 kernel script.
+ *
+ * @param resName Resource name of the bitcode
+ * @param cacheDir Cache directory name
+ * @param text The kernel's bitcode as a uint8_t vector
+ * @return script Created Script
+ */
+ @callflow(next={"*"})
+ scriptCCreate(string resName, string cacheDir, vec<uint8_t> text)
+ generates (Script script);
+
+ /*
+ * Creates a RenderScript Intrinsic script.
+ *
+ * @param id Intrinsic Script identifier
+ * @param elem Element
+ * @return script Created Script
+ */
+ @callflow(next={"*"})
+ scriptIntrinsicCreate(ScriptIntrinsicID id, Element elem)
+ generates (Script script);
+
+};
diff --git a/renderscript/1.0/IDevice.hal b/renderscript/1.0/IDevice.hal
new file mode 100644
index 0000000..7b1b866
--- /dev/null
+++ b/renderscript/1.0/IDevice.hal
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2017 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.renderscript@1.0;
+
+import android.hardware.renderscript@1.0::types;
+import IContext;
+
+interface IDevice {
+
+ /*
+ * Creates a RenderScript context.
+ *
+ * @param sdkVersion Target RS API level
+ * @param ct Context type
+ * @param flags Optional flags for this context
+ * @return context Created context
+ */
+ @entry
+ @callflow(next={"*"})
+ contextCreate(uint32_t sdkVersion, ContextType ct,
+ bitfield<ContextFlags> flags)
+ generates (IContext context);
+
+};
diff --git a/renderscript/1.0/default/Android.bp b/renderscript/1.0/default/Android.bp
new file mode 100644
index 0000000..564d6db
--- /dev/null
+++ b/renderscript/1.0/default/Android.bp
@@ -0,0 +1,21 @@
+cc_library_shared {
+ name: "android.hardware.renderscript@1.0-impl",
+ relative_install_path: "hw",
+ proprietary: true,
+ srcs: [
+ "Context.cpp",
+ "Device.cpp",
+ ],
+ include_dirs: [
+ "frameworks/rs",
+ ],
+ shared_libs: [
+ "libdl",
+ "liblog",
+ "libhidlbase",
+ "libhidltransport",
+ "libutils",
+ "android.hardware.renderscript@1.0",
+ "android.hidl.base@1.0",
+ ],
+}
diff --git a/renderscript/1.0/default/Context.cpp b/renderscript/1.0/default/Context.cpp
new file mode 100644
index 0000000..4e0964e
--- /dev/null
+++ b/renderscript/1.0/default/Context.cpp
@@ -0,0 +1,757 @@
+#define LOG_TAG "android.hardware.renderscript@1.0-impl"
+
+#include "Context.h"
+#include "Device.h"
+
+namespace android {
+namespace hardware {
+namespace renderscript {
+namespace V1_0 {
+namespace implementation {
+
+
+Context::Context(uint32_t sdkVersion, ContextType ct, int32_t flags) {
+ RsDevice _dev = nullptr;
+ uint32_t _version = 0;
+ uint32_t _sdkVersion = sdkVersion;
+ RsContextType _ct = static_cast<RsContextType>(ct);
+ int32_t _flags = flags;
+ mContext = Device::getHal().ContextCreate(_dev, _version, _sdkVersion, _ct, _flags);
+}
+
+
+// Helper functions
+template<typename ReturnType>
+static ReturnType hidl_to_rs(OpaqueHandle src) {
+ return reinterpret_cast<ReturnType>(static_cast<uintptr_t>(src));
+}
+
+template<typename ReturnType, typename SourceType>
+static ReturnType hidl_to_rs(SourceType* src) {
+ return reinterpret_cast<ReturnType>(src);
+}
+
+template<typename RsType, typename HidlType, typename Operation>
+static std::vector<RsType> hidl_to_rs(const hidl_vec<HidlType>& src, Operation operation) {
+ std::vector<RsType> dst(src.size());
+ std::transform(src.begin(), src.end(), dst.begin(), operation);
+ return dst;
+}
+
+template<typename ReturnType, typename SourceType>
+static ReturnType rs_to_hidl(SourceType* src) {
+ return static_cast<ReturnType>(reinterpret_cast<uintptr_t>(src));
+}
+
+template<typename HidlType, typename RsType, typename Operation>
+static hidl_vec<HidlType> rs_to_hidl(const std::vector<RsType>& src, Operation operation) {
+ std::vector<HidlType> dst(src.size());
+ std::transform(src.begin(), src.end(), dst.begin(), operation);
+ return dst;
+}
+
+
+// Methods from ::android::hardware::renderscript::V1_0::IContext follow.
+
+Return<Allocation> Context::allocationAdapterCreate(Type type, Allocation baseAlloc) {
+ RsType _type = hidl_to_rs<RsType>(type);
+ RsAllocation _baseAlloc = hidl_to_rs<RsAllocation>(baseAlloc);
+ RsAllocation _subAlloc = Device::getHal().AllocationAdapterCreate(mContext, _type, _baseAlloc);
+ return rs_to_hidl<Allocation>(_subAlloc);
+}
+
+Return<void> Context::allocationAdapterOffset(Allocation alloc, const hidl_vec<uint32_t>& offsets) {
+ RsAllocation _alloc = hidl_to_rs<RsAllocation>(alloc);
+ const hidl_vec<uint32_t>& _offsets = offsets;
+ Device::getHal().AllocationAdapterOffset(mContext, _alloc, _offsets.data(), _offsets.size());
+ return Void();
+}
+
+Return<Type> Context::allocationGetType(Allocation allocation) {
+ RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
+ const void* _type = Device::getHal().AllocationGetType(mContext, _allocation);
+ return rs_to_hidl<Type>(_type);
+}
+
+Return<Allocation> Context::allocationCreateTyped(Type type, AllocationMipmapControl amips, int32_t usage, Ptr ptr) {
+ RsType _type = hidl_to_rs<RsType>(type);
+ RsAllocationMipmapControl _amips = static_cast<RsAllocationMipmapControl>(amips);
+ uint32_t _usage = usage;
+ uintptr_t _ptr = hidl_to_rs<uintptr_t>(ptr);
+ RsAllocation _allocation = Device::getHal().AllocationCreateTyped(mContext, _type, _amips, _usage, _ptr);
+ return rs_to_hidl<Allocation>(_allocation);
+}
+
+Return<Allocation> Context::allocationCreateFromBitmap(Type type, AllocationMipmapControl amips, const hidl_vec<uint8_t>& bitmap, int32_t usage) {
+ RsType _type = hidl_to_rs<RsType>(type);
+ RsAllocationMipmapControl _amips = static_cast<RsAllocationMipmapControl>(amips);
+ const hidl_vec<uint8_t>& _bitmap = bitmap;
+ uint32_t _usage = usage;
+ RsAllocation _allocation = Device::getHal().AllocationCreateFromBitmap(mContext, _type, _amips, _bitmap.data(), _bitmap.size(), _usage);
+ return rs_to_hidl<Allocation>(_allocation);
+}
+
+Return<Allocation> Context::allocationCubeCreateFromBitmap(Type type, AllocationMipmapControl amips, const hidl_vec<uint8_t>& bitmap, int32_t usage) {
+ RsType _type = hidl_to_rs<RsType>(type);
+ RsAllocationMipmapControl _amips = static_cast<RsAllocationMipmapControl>(amips);
+ const hidl_vec<uint8_t>& _bitmap = bitmap;
+ uint32_t _usage = usage;
+ RsAllocation _allocation = Device::getHal().AllocationCubeCreateFromBitmap(mContext, _type, _amips, _bitmap.data(), _bitmap.size(), _usage);
+ return rs_to_hidl<Allocation>(_allocation);
+}
+
+Return<NativeWindow> Context::allocationGetNativeWindow(Allocation allocation) {
+ RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
+ RsNativeWindow _nativeWindow = Device::getHal().AllocationGetSurface(mContext, _allocation);
+ return rs_to_hidl<NativeWindow>(_nativeWindow);
+}
+
+Return<void> Context::allocationSetNativeWindow(Allocation allocation, NativeWindow nativewindow) {
+ RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
+ RsNativeWindow _nativewindow = hidl_to_rs<RsNativeWindow>(nativewindow);
+ Device::getHal().AllocationSetSurface(mContext, _allocation, _nativewindow);
+ return Void();
+}
+
+Return<void> Context::allocationSetupBufferQueue(Allocation alloc, uint32_t numBuffer) {
+ RsAllocation _alloc = hidl_to_rs<RsAllocation>(alloc);
+ uint32_t _numBuffer = numBuffer;
+ Device::getHal().AllocationSetupBufferQueue(mContext, _alloc, _numBuffer);
+ return Void();
+}
+
+Return<void> Context::allocationShareBufferQueue(Allocation baseAlloc, Allocation subAlloc) {
+ RsAllocation _baseAlloc = hidl_to_rs<RsAllocation>(baseAlloc);
+ RsAllocation _subAlloc = hidl_to_rs<RsAllocation>(subAlloc);
+ Device::getHal().AllocationShareBufferQueue(mContext, _baseAlloc, _subAlloc);
+ return Void();
+}
+
+Return<void> Context::allocationCopyToBitmap(Allocation allocation, Ptr data, Size sizeBytes) {
+ RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
+ void* _data = hidl_to_rs<void*>(data);
+ size_t _sizeBytes = static_cast<size_t>(sizeBytes);
+ Device::getHal().AllocationCopyToBitmap(mContext, _allocation, _data, _sizeBytes);
+ return Void();
+}
+
+Return<void> Context::allocation1DWrite(Allocation allocation, uint32_t offset, uint32_t lod, uint32_t count, const hidl_vec<uint8_t>& data) {
+ RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
+ uint32_t _offset = offset;
+ uint32_t _lod = lod;
+ uint32_t _count = count;
+ const void* _dataPtr = hidl_to_rs<const void*>(data.data());
+ size_t _sizeBytes = data.size();
+ Device::getHal().Allocation1DData(mContext, _allocation, _offset, _lod, _count, _dataPtr, _sizeBytes);
+ return Void();
+}
+
+Return<void> Context::allocationElementWrite(Allocation allocation, uint32_t x, uint32_t y, uint32_t z, uint32_t lod, const hidl_vec<uint8_t>& data, Size compIdx) {
+ RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
+ uint32_t _x = x;
+ uint32_t _y = y;
+ uint32_t _z = z;
+ uint32_t _lod = lod;
+ const void* _dataPtr = hidl_to_rs<const void*>(data.data());
+ size_t _sizeBytes = data.size();
+ size_t _compIdx = static_cast<size_t>(compIdx);
+ Device::getHal().AllocationElementData(mContext, _allocation, _x, _y, _z, _lod, _dataPtr, _sizeBytes, _compIdx);
+ return Void();
+}
+
+Return<void> Context::allocation2DWrite(Allocation allocation, uint32_t xoff, uint32_t yoff, uint32_t lod, AllocationCubemapFace face, uint32_t w, uint32_t h, const hidl_vec<uint8_t>& data, Size stride) {
+ RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
+ uint32_t _xoff = xoff;
+ uint32_t _yoff = yoff;
+ uint32_t _lod = lod;
+ RsAllocationCubemapFace _face = static_cast<RsAllocationCubemapFace>(face);
+ uint32_t _w = w;
+ uint32_t _h = h;
+ const void* _dataPtr = hidl_to_rs<const void*>(data.data());
+ size_t _sizeBytes = data.size();
+ size_t _stride = static_cast<size_t>(stride);
+ Device::getHal().Allocation2DData(mContext, _allocation, _xoff, _yoff, _lod, _face, _w, _h, _dataPtr, _sizeBytes, _stride);
+ return Void();
+}
+
+Return<void> Context::allocation3DWrite(Allocation allocation, uint32_t xoff, uint32_t yoff, uint32_t zoff, uint32_t lod, uint32_t w, uint32_t h, uint32_t d, const hidl_vec<uint8_t>& data, Size stride) {
+ RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
+ uint32_t _xoff = xoff;
+ uint32_t _yoff = yoff;
+ uint32_t _zoff = zoff;
+ uint32_t _lod = lod;
+ uint32_t _w = w;
+ uint32_t _h = h;
+ uint32_t _d = d;
+ const void* _dataPtr = hidl_to_rs<const void*>(data.data());
+ size_t _sizeBytes = data.size();
+ size_t _stride = static_cast<size_t>(stride);
+ Device::getHal().Allocation3DData(mContext, _allocation, _xoff, _yoff, _zoff, _lod, _w, _h, _d, _dataPtr, _sizeBytes, _stride);
+ return Void();
+}
+
+Return<void> Context::allocationGenerateMipmaps(Allocation allocation) {
+ RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
+ Device::getHal().AllocationGenerateMipmaps(mContext, _allocation);
+ return Void();
+}
+
+Return<void> Context::allocationRead(Allocation allocation, Ptr data, Size sizeBytes) {
+ RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
+ void* _data = hidl_to_rs<void*>(data);
+ size_t _sizeBytes = static_cast<size_t>(sizeBytes);
+ Device::getHal().AllocationRead(mContext, _allocation, _data, _sizeBytes);
+ return Void();
+}
+
+Return<void> Context::allocation1DRead(Allocation allocation, uint32_t xoff, uint32_t lod, uint32_t count, Ptr data, Size sizeBytes) {
+ RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
+ uint32_t _xoff = xoff;
+ uint32_t _lod = lod;
+ uint32_t _count = count;
+ void* _data = hidl_to_rs<void*>(data);
+ size_t _sizeBytes = static_cast<size_t>(sizeBytes);
+ Device::getHal().Allocation1DRead(mContext, _allocation, _xoff, _lod, _count, _data, _sizeBytes);
+ return Void();
+}
+
+Return<void> Context::allocationElementRead(Allocation allocation, uint32_t x, uint32_t y, uint32_t z, uint32_t lod, Ptr data, Size sizeBytes, Size compIdx) {
+ RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
+ uint32_t _x = x;
+ uint32_t _y = y;
+ uint32_t _z = z;
+ uint32_t _lod = lod;
+ void* _data = hidl_to_rs<void*>(data);
+ size_t _sizeBytes = static_cast<size_t>(sizeBytes);
+ size_t _compIdx = static_cast<size_t>(compIdx);
+ Device::getHal().AllocationElementRead(mContext, _allocation, _x, _y, _z, _lod, _data, _sizeBytes, _compIdx);
+ return Void();
+}
+
+Return<void> Context::allocation2DRead(Allocation allocation, uint32_t xoff, uint32_t yoff, uint32_t lod, AllocationCubemapFace face, uint32_t w, uint32_t h, Ptr data, Size sizeBytes, Size stride) {
+ RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
+ uint32_t _xoff = xoff;
+ uint32_t _yoff = yoff;
+ uint32_t _lod = lod;
+ RsAllocationCubemapFace _face = static_cast<RsAllocationCubemapFace>(face);
+ uint32_t _w = w;
+ uint32_t _h = h;
+ void* _data = hidl_to_rs<void*>(data);
+ size_t _sizeBytes = static_cast<size_t>(sizeBytes);
+ size_t _stride = static_cast<size_t>(stride);
+ Device::getHal().Allocation2DRead(mContext, _allocation, _xoff, _yoff, _lod, _face, _w, _h, _data, _sizeBytes, _stride);
+ return Void();
+}
+
+Return<void> Context::allocation3DRead(Allocation allocation, uint32_t xoff, uint32_t yoff, uint32_t zoff, uint32_t lod, uint32_t w, uint32_t h, uint32_t d, Ptr data, Size sizeBytes, Size stride) {
+ RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
+ uint32_t _xoff = xoff;
+ uint32_t _yoff = yoff;
+ uint32_t _zoff = zoff;
+ uint32_t _lod = lod;
+ uint32_t _w = w;
+ uint32_t _h = h;
+ uint32_t _d = d;
+ void* _dataPtr = hidl_to_rs<void*>(data);
+ size_t _sizeBytes = static_cast<size_t>(sizeBytes);
+ size_t _stride = static_cast<size_t>(stride);
+ Device::getHal().Allocation3DRead(mContext, _allocation, _xoff, _yoff, _zoff, _lod, _w, _h, _d, _dataPtr, _sizeBytes, _stride);
+ return Void();
+}
+
+Return<void> Context::allocationSyncAll(Allocation allocation, AllocationUsageType usageType) {
+ RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
+ RsAllocationUsageType _usageType = static_cast<RsAllocationUsageType>(usageType);
+ Device::getHal().AllocationSyncAll(mContext, _allocation, _usageType);
+ return Void();
+}
+
+Return<void> Context::allocationResize1D(Allocation allocation, uint32_t dimX) {
+ RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
+ uint32_t _dimX = dimX;
+ Device::getHal().AllocationResize1D(mContext, _allocation, _dimX);
+ return Void();
+}
+
+Return<void> Context::allocationCopy2DRange(Allocation dstAlloc, uint32_t dstXoff, uint32_t dstYoff, uint32_t dstMip, AllocationCubemapFace dstFace, uint32_t width, uint32_t height, Allocation srcAlloc, uint32_t srcXoff, uint32_t srcYoff, uint32_t srcMip, AllocationCubemapFace srcFace) {
+ RsAllocation _dstAlloc = hidl_to_rs<RsAllocation>(dstAlloc);
+ uint32_t _dstXoff = dstXoff;
+ uint32_t _dstYoff = dstYoff;
+ uint32_t _dstMip = dstMip;
+ RsAllocationCubemapFace _dstFace = static_cast<RsAllocationCubemapFace>(dstFace);
+ uint32_t _width = width;
+ uint32_t _height = height;
+ RsAllocation _srcAlloc = hidl_to_rs<RsAllocation>(srcAlloc);
+ uint32_t _srcXoff = srcXoff;
+ uint32_t _srcYoff = srcYoff;
+ uint32_t _srcMip = srcMip;
+ RsAllocationCubemapFace _srcFace = static_cast<RsAllocationCubemapFace>(srcFace);
+ Device::getHal().AllocationCopy2DRange(mContext, _dstAlloc, _dstXoff, _dstYoff, _dstMip, _dstFace, _width, _height, _srcAlloc, _srcXoff, _srcYoff, _srcMip, _srcFace);
+ return Void();
+}
+
+Return<void> Context::allocationCopy3DRange(Allocation dstAlloc, uint32_t dstXoff, uint32_t dstYoff, uint32_t dstZoff, uint32_t dstMip, uint32_t width, uint32_t height, uint32_t depth, Allocation srcAlloc, uint32_t srcXoff, uint32_t srcYoff, uint32_t srcZoff, uint32_t srcMip) {
+ RsAllocation _dstAlloc = hidl_to_rs<RsAllocation>(dstAlloc);
+ uint32_t _dstXoff = dstXoff;
+ uint32_t _dstYoff = dstYoff;
+ uint32_t _dstZoff = dstZoff;
+ uint32_t _dstMip = dstMip;
+ uint32_t _width = width;
+ uint32_t _height = height;
+ uint32_t _depth = depth;
+ RsAllocation _srcAlloc = hidl_to_rs<RsAllocation>(srcAlloc);
+ uint32_t _srcXoff = srcXoff;
+ uint32_t _srcYoff = srcYoff;
+ uint32_t _srcZoff = srcZoff;
+ uint32_t _srcMip = srcMip;
+ Device::getHal().AllocationCopy3DRange(mContext, _dstAlloc, _dstXoff, _dstYoff, _dstZoff, _dstMip, _width, _height, _depth, _srcAlloc, _srcXoff, _srcYoff, _srcZoff, _srcMip);
+ return Void();
+}
+
+Return<void> Context::allocationIoSend(Allocation allocation) {
+ RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
+ Device::getHal().AllocationIoSend(mContext, _allocation);
+ return Void();
+}
+
+Return<void> Context::allocationIoReceive(Allocation allocation) {
+ RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
+ Device::getHal().AllocationIoReceive(mContext, _allocation);
+ return Void();
+}
+
+Return<void> Context::allocationGetPointer(Allocation allocation, uint32_t lod, AllocationCubemapFace face, uint32_t z, allocationGetPointer_cb _hidl_cb) {
+ RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
+ uint32_t _lod = lod;
+ RsAllocationCubemapFace _face = static_cast<RsAllocationCubemapFace>(face);
+ uint32_t _z = z;
+ uint32_t _array = 0;
+ size_t _stride = 0;
+ void* _dataPtr = Device::getHal().AllocationGetPointer(mContext, _allocation, _lod, _face, _z, _array, &_stride, sizeof(size_t));
+ Ptr dataPtr = reinterpret_cast<Ptr>(_dataPtr);
+ Size stride = static_cast<Size>(_stride);
+ _hidl_cb(dataPtr, stride);
+ return Void();
+}
+
+Return<void> Context::elementGetNativeMetadata(Element element, elementGetNativeMetadata_cb _hidl_cb) {
+ RsElement _element = hidl_to_rs<RsElement>(element);
+ std::vector<uint32_t> _elemData(5);
+ Device::getHal().ElementGetNativeData(mContext, _element, _elemData.data(), _elemData.size());
+ hidl_vec<uint32_t> elemData = _elemData;
+ _hidl_cb(elemData);
+ return Void();
+}
+
+Return<void> Context::elementGetSubElements(Element element, Size numSubElem, elementGetSubElements_cb _hidl_cb) {
+ RsElement _element = hidl_to_rs<RsElement>(element);
+ uint32_t _numSubElem = static_cast<uint32_t>(numSubElem);
+ std::vector<uintptr_t> _ids(_numSubElem);
+ std::vector<const char*> _names(_numSubElem);
+ std::vector<size_t> _arraySizes(_numSubElem);
+ Device::getHal().ElementGetSubElements(mContext, _element, _ids.data(), _names.data(), _arraySizes.data(), _numSubElem);
+ hidl_vec<Element> ids = rs_to_hidl<Element>(_ids, [](uintptr_t val) { return static_cast<Element>(val); });
+ hidl_vec<hidl_string> names = rs_to_hidl<hidl_string>(_names, [](const char* val) { return val; });
+ hidl_vec<Size> arraySizes = rs_to_hidl<Size>(_arraySizes, [](size_t val) { return static_cast<Size>(val); });
+ _hidl_cb(ids, names, arraySizes);
+ return Void();
+}
+
+Return<Element> Context::elementCreate(DataType dt, DataKind dk, bool norm, uint32_t size) {
+ RsDataType _dt = static_cast<RsDataType>(dt);
+ RsDataKind _dk = static_cast<RsDataKind>(dk);
+ bool _norm = norm;
+ uint32_t _size = size;
+ RsElement _element = Device::getHal().ElementCreate(mContext, _dt, _dk, _norm, _size);
+ return rs_to_hidl<Element>(_element);
+}
+
+Return<Element> Context::elementComplexCreate(const hidl_vec<Element>& eins, const hidl_vec<hidl_string>& names, const hidl_vec<Size>& arraySizes) {
+ std::vector<RsElement> _eins = hidl_to_rs<RsElement>(eins, [](Element val) { return hidl_to_rs<RsElement>(val); });
+ std::vector<const char*> _namesPtr = hidl_to_rs<const char*>(names, [](const hidl_string& val) { return val.c_str(); });
+ std::vector<size_t> _nameLengthsPtr = hidl_to_rs<size_t>(names, [](const hidl_string& val) { return val.size(); });
+ std::vector<uint32_t> _arraySizes = hidl_to_rs<uint32_t>(arraySizes, [](Size val) { return static_cast<uint32_t>(val); });
+ RsElement _element = Device::getHal().ElementCreate2(mContext, _eins.data(), _eins.size(), _namesPtr.data(), _namesPtr.size(), _nameLengthsPtr.data(), _arraySizes.data(), _arraySizes.size());
+ return rs_to_hidl<Element>(_element);
+}
+
+Return<void> Context::typeGetNativeMetadata(Type type, typeGetNativeMetadata_cb _hidl_cb) {
+ RsType _type = hidl_to_rs<RsType>(type);
+ std::vector<uintptr_t> _metadata(6);
+ Device::getHal().TypeGetNativeData(mContext, _type, _metadata.data(), _metadata.size());
+ hidl_vec<OpaqueHandle> metadata = rs_to_hidl<OpaqueHandle>(_metadata, [](uintptr_t val) { return static_cast<OpaqueHandle>(val); });
+ _hidl_cb(metadata);
+ return Void();
+}
+
+Return<Type> Context::typeCreate(Element element, uint32_t dimX, uint32_t dimY, uint32_t dimZ, bool mipmaps, bool faces, YuvFormat yuv) {
+ RsElement _element = hidl_to_rs<RsElement>(element);
+ uint32_t _dimX = dimX;
+ uint32_t _dimY = dimY;
+ uint32_t _dimZ = dimZ;
+ bool _mipmaps = mipmaps;
+ bool _faces = faces;
+ RsYuvFormat _yuv = static_cast<RsYuvFormat>(yuv);
+ RsType _type = Device::getHal().TypeCreate(mContext, _element, _dimX, _dimY, _dimZ, _mipmaps, _faces, _yuv);
+ return rs_to_hidl<Type>(_type);
+}
+
+Return<void> Context::contextDestroy() {
+ Device::getHal().ContextDestroy(mContext);
+ mContext = nullptr;
+ return Void();
+}
+
+Return<void> Context::contextGetMessage(Ptr data, Size size, contextGetMessage_cb _hidl_cb) {
+ void* _data = hidl_to_rs<void*>(data);
+ size_t _size = static_cast<size_t>(size);
+ size_t _receiveLen = 0;
+ uint32_t _subID = 0;
+ RsMessageToClientType _messageType = Device::getHal().ContextGetMessage(mContext, _data, _size, &_receiveLen, sizeof(size_t), &_subID, sizeof(uint32_t));
+ MessageToClientType messageType = static_cast<MessageToClientType>(_messageType);
+ Size receiveLen = static_cast<Size>(_receiveLen);
+ _hidl_cb(messageType, receiveLen);
+ return Void();
+}
+
+Return<void> Context::contextPeekMessage(contextPeekMessage_cb _hidl_cb) {
+ size_t _receiveLen = 0;
+ uint32_t _subID = 0;
+ RsMessageToClientType _messageType = Device::getHal().ContextPeekMessage(mContext, &_receiveLen, sizeof(size_t), &_subID, sizeof(uint32_t));
+ MessageToClientType messageType = static_cast<MessageToClientType>(_messageType);
+ Size receiveLen = static_cast<Size>(_receiveLen);
+ uint32_t subID = _subID;
+ _hidl_cb(messageType, receiveLen, subID);
+ return Void();
+}
+
+Return<void> Context::contextSendMessage(uint32_t id, const hidl_vec<uint8_t>& data) {
+ uint32_t _id = id;
+ const uint8_t* _dataPtr = data.data();
+ size_t _dataSize = data.size();
+ Device::getHal().ContextSendMessage(mContext, _id, _dataPtr, _dataSize);
+ return Void();
+}
+
+Return<void> Context::contextInitToClient() {
+ Device::getHal().ContextInitToClient(mContext);
+ return Void();
+}
+
+Return<void> Context::contextDeinitToClient() {
+ Device::getHal().ContextDeinitToClient(mContext);
+ return Void();
+}
+
+Return<void> Context::contextFinish() {
+ Device::getHal().ContextFinish(mContext);
+ return Void();
+}
+
+Return<void> Context::contextLog() {
+ uint32_t _bits = 0;
+ Device::getHal().ContextDump(mContext, _bits);
+ return Void();
+}
+
+Return<void> Context::contextSetPriority(ThreadPriorities priority) {
+ RsThreadPriorities _priority = static_cast<RsThreadPriorities>(priority);
+ Device::getHal().ContextSetPriority(mContext, _priority);
+ return Void();
+}
+
+Return<void> Context::contextSetCacheDir(const hidl_string& cacheDir) {
+ Device::getHal().ContextSetCacheDir(mContext, cacheDir.c_str(), cacheDir.size());
+ return Void();
+}
+
+Return<void> Context::assignName(ObjectBase obj, const hidl_string& name) {
+ RsObjectBase _obj = hidl_to_rs<RsObjectBase>(obj);
+ const hidl_string& _name = name;
+ Device::getHal().AssignName(mContext, _obj, _name.c_str(), _name.size());
+ return Void();
+}
+
+Return<void> Context::getName(ObjectBase obj, getName_cb _hidl_cb) {
+ void* _obj = hidl_to_rs<void*>(obj);
+ const char* _name = nullptr;
+ Device::getHal().GetName(mContext, _obj, &_name);
+ hidl_string name = _name;
+ _hidl_cb(name);
+ return Void();
+}
+
+Return<Closure> Context::closureCreate(ScriptKernelID kernelID, Allocation returnValue, const hidl_vec<ScriptFieldID>& fieldIDS, const hidl_vec<int64_t>& values, const hidl_vec<int32_t>& sizes, const hidl_vec<Closure>& depClosures, const hidl_vec<ScriptFieldID>& depFieldIDS) {
+ RsScriptKernelID _kernelID = hidl_to_rs<RsScriptKernelID>(kernelID);
+ RsAllocation _returnValue = hidl_to_rs<RsAllocation>(returnValue);
+ std::vector<RsScriptFieldID> _fieldIDS = hidl_to_rs<RsScriptFieldID>(fieldIDS, [](ScriptFieldID val) { return hidl_to_rs<RsScriptFieldID>(val); });
+ int64_t* _valuesPtr = const_cast<int64_t*>(values.data());
+ size_t _valuesLength = values.size();
+ std::vector<int> _sizes = hidl_to_rs<int>(sizes, [](int32_t val) { return static_cast<int>(val); });
+ std::vector<RsClosure> _depClosures = hidl_to_rs<RsClosure>(depClosures, [](Closure val) { return hidl_to_rs<RsClosure>(val); });
+ std::vector<RsScriptFieldID> _depFieldIDS = hidl_to_rs<RsScriptFieldID>(depFieldIDS, [](ScriptFieldID val) { return hidl_to_rs<RsScriptFieldID>(val); });
+ RsClosure _closure = Device::getHal().ClosureCreate(mContext, _kernelID, _returnValue, _fieldIDS.data(), _fieldIDS.size(), _valuesPtr, _valuesLength, _sizes.data(), _sizes.size(), _depClosures.data(), _depClosures.size(), _depFieldIDS.data(), _depFieldIDS.size());
+ return rs_to_hidl<Closure>(_closure);
+}
+
+Return<Closure> Context::invokeClosureCreate(ScriptInvokeID invokeID, const hidl_vec<uint8_t>& params, const hidl_vec<ScriptFieldID>& fieldIDS, const hidl_vec<int64_t>& values, const hidl_vec<int32_t>& sizes) {
+ RsScriptInvokeID _invokeID = hidl_to_rs<RsScriptInvokeID>(invokeID);
+ const void* _paramsPtr = params.data();
+ size_t _paramsSize = params.size();
+ std::vector<RsScriptFieldID> _fieldIDS = hidl_to_rs<RsScriptFieldID>(fieldIDS, [](ScriptFieldID val) { return hidl_to_rs<RsScriptFieldID>(val); });
+ const int64_t* _valuesPtr = values.data();
+ size_t _valuesLength = values.size();
+ std::vector<int> _sizes = hidl_to_rs<int>(sizes, [](int32_t val) { return static_cast<int>(val); });
+ RsClosure _closure = Device::getHal().InvokeClosureCreate(mContext, _invokeID, _paramsPtr, _paramsSize, _fieldIDS.data(), _fieldIDS.size(), _valuesPtr, _valuesLength, _sizes.data(), _sizes.size());
+ return rs_to_hidl<Closure>(_closure);
+}
+
+Return<void> Context::closureSetArg(Closure closure, uint32_t index, Ptr value, int32_t size) {
+ RsClosure _closure = hidl_to_rs<RsClosure>(closure);
+ uint32_t _index = index;
+ uintptr_t _value = hidl_to_rs<uintptr_t>(value);
+ int _size = static_cast<int>(size);
+ Device::getHal().ClosureSetArg(mContext, _closure, _index, _value, _size);
+ return Void();
+}
+
+Return<void> Context::closureSetGlobal(Closure closure, ScriptFieldID fieldID, int64_t value, int32_t size) {
+ RsClosure _closure = hidl_to_rs<RsClosure>(closure);
+ RsScriptFieldID _fieldID = hidl_to_rs<RsScriptFieldID>(fieldID);
+ int64_t _value = value;
+ int _size = static_cast<int>(size);
+ Device::getHal().ClosureSetGlobal(mContext, _closure, _fieldID, _value, _size);
+ return Void();
+}
+
+Return<ScriptKernelID> Context::scriptKernelIDCreate(Script script, int32_t slot, int32_t sig) {
+ RsScript _script = hidl_to_rs<RsScript>(script);
+ int _slot = static_cast<int>(slot);
+ int _sig = static_cast<int>(sig);
+ RsScriptKernelID _scriptKernelID = Device::getHal().ScriptKernelIDCreate(mContext, _script, _slot, _sig);
+ return rs_to_hidl<ScriptKernelID>(_scriptKernelID);
+}
+
+Return<ScriptInvokeID> Context::scriptInvokeIDCreate(Script script, int32_t slot) {
+ RsScript _script = hidl_to_rs<RsScript>(script);
+ int _slot = static_cast<int>(slot);
+ RsScriptInvokeID _scriptInvokeID = Device::getHal().ScriptInvokeIDCreate(mContext, _script, _slot);
+ return rs_to_hidl<ScriptInvokeID>(_scriptInvokeID);
+}
+
+Return<ScriptFieldID> Context::scriptFieldIDCreate(Script script, int32_t slot) {
+ RsScript _script = hidl_to_rs<RsScript>(script);
+ int _slot = static_cast<int>(slot);
+ RsScriptFieldID _scriptFieldID = Device::getHal().ScriptFieldIDCreate(mContext, _script, _slot);
+ return rs_to_hidl<ScriptFieldID>(_scriptFieldID);
+}
+
+Return<ScriptGroup> Context::scriptGroupCreate(const hidl_vec<ScriptKernelID>& kernels, const hidl_vec<ScriptKernelID>& srcK, const hidl_vec<ScriptKernelID>& dstK, const hidl_vec<ScriptFieldID>& dstF, const hidl_vec<Type>& types) {
+ std::vector<RsScriptKernelID> _kernels = hidl_to_rs<RsScriptKernelID>(kernels, [](ScriptFieldID val) { return hidl_to_rs<RsScriptKernelID>(val); });
+ std::vector<RsScriptKernelID> _srcK = hidl_to_rs<RsScriptKernelID>(srcK, [](ScriptFieldID val) { return hidl_to_rs<RsScriptKernelID>(val); });
+ std::vector<RsScriptKernelID> _dstK = hidl_to_rs<RsScriptKernelID>(dstK, [](ScriptFieldID val) { return hidl_to_rs<RsScriptKernelID>(val); });
+ std::vector<RsScriptFieldID> _dstF = hidl_to_rs<RsScriptFieldID>(dstF, [](ScriptFieldID val) { return hidl_to_rs<RsScriptFieldID>(val); });
+ std::vector<RsType> _types = hidl_to_rs<RsType>(types, [](Type val) { return hidl_to_rs<RsType>(val); });
+ RsScriptGroup _scriptGroup = Device::getHal().ScriptGroupCreate(mContext, _kernels.data(), _kernels.size(), _srcK.data(), _srcK.size(), _dstK.data(), _dstK.size(), _dstF.data(), _dstF.size(), _types.data(), _types.size());
+ return rs_to_hidl<ScriptGroup>(_scriptGroup);
+}
+
+Return<ScriptGroup2> Context::scriptGroup2Create(const hidl_string& name, const hidl_string& cacheDir, const hidl_vec<Closure>& closures) {
+ const hidl_string& _name = name;
+ const hidl_string& _cacheDir = cacheDir;
+ std::vector<RsClosure> _closures = hidl_to_rs<RsClosure>(closures, [](Closure val) { return hidl_to_rs<RsClosure>(val); });
+ RsScriptGroup2 _scriptGroup2 = Device::getHal().ScriptGroup2Create(mContext, _name.c_str(), _name.size(), _cacheDir.c_str(), _cacheDir.size(), _closures.data(), _closures.size());
+ return rs_to_hidl<ScriptGroup2>(_scriptGroup2);
+}
+
+Return<void> Context::scriptGroupSetOutput(ScriptGroup sg, ScriptKernelID kid, Allocation alloc) {
+ RsScriptGroup _sg = hidl_to_rs<RsScriptGroup>(sg);
+ RsScriptKernelID _kid = hidl_to_rs<RsScriptKernelID>(kid);
+ RsAllocation _alloc = hidl_to_rs<RsAllocation>(alloc);
+ Device::getHal().ScriptGroupSetOutput(mContext, _sg, _kid, _alloc);
+ return Void();
+}
+
+Return<void> Context::scriptGroupSetInput(ScriptGroup sg, ScriptKernelID kid, Allocation alloc) {
+ RsScriptGroup _sg = hidl_to_rs<RsScriptGroup>(sg);
+ RsScriptKernelID _kid = hidl_to_rs<RsScriptKernelID>(kid);
+ RsAllocation _alloc = hidl_to_rs<RsAllocation>(alloc);
+ Device::getHal().ScriptGroupSetInput(mContext, _sg, _kid, _alloc);
+ return Void();
+}
+
+Return<void> Context::scriptGroupExecute(ScriptGroup sg) {
+ RsScriptGroup _sg = hidl_to_rs<RsScriptGroup>(sg);
+ Device::getHal().ScriptGroupExecute(mContext, _sg);
+ return Void();
+}
+
+Return<void> Context::objDestroy(ObjectBase obj) {
+ RsAsyncVoidPtr _obj = hidl_to_rs<RsAsyncVoidPtr>(obj);
+ Device::getHal().ObjDestroy(mContext, _obj);
+ return Void();
+}
+
+Return<Sampler> Context::samplerCreate(SamplerValue magFilter, SamplerValue minFilter, SamplerValue wrapS, SamplerValue wrapT, SamplerValue wrapR, float aniso) {
+ RsSamplerValue _magFilter = static_cast<RsSamplerValue>(magFilter);
+ RsSamplerValue _minFilter = static_cast<RsSamplerValue>(minFilter);
+ RsSamplerValue _wrapS = static_cast<RsSamplerValue>(wrapS);
+ RsSamplerValue _wrapT = static_cast<RsSamplerValue>(wrapT);
+ RsSamplerValue _wrapR = static_cast<RsSamplerValue>(wrapR);
+ float _aniso = static_cast<float>(aniso);
+ RsSampler _sampler = Device::getHal().SamplerCreate(mContext, _magFilter, _minFilter, _wrapS, _wrapT, _wrapR, _aniso);
+ return rs_to_hidl<Sampler>(_sampler);
+}
+
+Return<void> Context::scriptBindAllocation(Script script, Allocation allocation, uint32_t slot) {
+ RsScript _script = hidl_to_rs<RsScript>(script);
+ RsAllocation _allocation = hidl_to_rs<RsAllocation>(allocation);
+ uint32_t _slot = slot;
+ Device::getHal().ScriptBindAllocation(mContext, _script, _allocation, _slot);
+ return Void();
+}
+
+Return<void> Context::scriptSetTimeZone(Script script, const hidl_string& timeZone) {
+ RsScript _script = hidl_to_rs<RsScript>(script);
+ const hidl_string& _timeZone = timeZone;
+ Device::getHal().ScriptSetTimeZone(mContext, _script, _timeZone.c_str(), _timeZone.size());
+ return Void();
+}
+
+Return<void> Context::scriptInvoke(Script vs, uint32_t slot) {
+ RsScript _vs = hidl_to_rs<RsScript>(vs);
+ uint32_t _slot = slot;
+ Device::getHal().ScriptInvoke(mContext, _vs, _slot);
+ return Void();
+}
+
+Return<void> Context::scriptInvokeV(Script vs, uint32_t slot, const hidl_vec<uint8_t>& data) {
+ RsScript _vs = hidl_to_rs<RsScript>(vs);
+ uint32_t _slot = slot;
+ const void* _dataPtr = hidl_to_rs<const void*>(data.data());
+ size_t _len = data.size();
+ Device::getHal().ScriptInvokeV(mContext, _vs, _slot, _dataPtr, _len);
+ return Void();
+}
+
+Return<void> Context::scriptForEach(Script vs, uint32_t slot, const hidl_vec<Allocation>& vains, Allocation vaout, const hidl_vec<uint8_t>& params, Ptr sc) {
+ RsScript _vs = hidl_to_rs<RsScript>(vs);
+ uint32_t _slot = slot;
+ std::vector<RsAllocation> _vains = hidl_to_rs<RsAllocation>(vains, [](Allocation val) { return hidl_to_rs<RsAllocation>(val); });
+ RsAllocation _vaout = hidl_to_rs<RsAllocation>(vaout);
+ const void* _paramsPtr = hidl_to_rs<const void*>(params.data());
+ size_t _paramLen = params.size();
+ const RsScriptCall* _sc = hidl_to_rs<const RsScriptCall*>(sc);
+ size_t _scLen = _sc != nullptr ? sizeof(ScriptCall) : 0;
+ Device::getHal().ScriptForEachMulti(mContext, _vs, _slot, _vains.data(), _vains.size(), _vaout, _paramsPtr, _paramLen, _sc, _scLen);
+ return Void();
+}
+
+Return<void> Context::scriptReduce(Script vs, uint32_t slot, const hidl_vec<Allocation>& vains, Allocation vaout, Ptr sc) {
+ RsScript _vs = hidl_to_rs<RsScript>(vs);
+ uint32_t _slot = slot;
+ std::vector<RsAllocation> _vains = hidl_to_rs<RsAllocation>(vains, [](Allocation val) { return hidl_to_rs<RsAllocation>(val); });
+ RsAllocation _vaout = hidl_to_rs<RsAllocation>(vaout);
+ const RsScriptCall* _sc = hidl_to_rs<const RsScriptCall*>(sc);
+ size_t _scLen = _sc != nullptr ? sizeof(ScriptCall) : 0;
+ Device::getHal().ScriptReduce(mContext, _vs, _slot, _vains.data(), _vains.size(), _vaout, _sc, _scLen);
+ return Void();
+}
+
+Return<void> Context::scriptSetVarI(Script vs, uint32_t slot, int32_t value) {
+ RsScript _vs = hidl_to_rs<RsScript>(vs);
+ uint32_t _slot = slot;
+ int _value = static_cast<int>(value);
+ Device::getHal().ScriptSetVarI(mContext, _vs, _slot, _value);
+ return Void();
+}
+
+Return<void> Context::scriptSetVarObj(Script vs, uint32_t slot, ObjectBase obj) {
+ RsScript _vs = hidl_to_rs<RsScript>(vs);
+ uint32_t _slot = slot;
+ RsObjectBase _obj = hidl_to_rs<RsObjectBase>(obj);
+ Device::getHal().ScriptSetVarObj(mContext, _vs, _slot, _obj);
+ return Void();
+}
+
+Return<void> Context::scriptSetVarJ(Script vs, uint32_t slot, int64_t value) {
+ RsScript _vs = hidl_to_rs<RsScript>(vs);
+ uint32_t _slot = slot;
+ int64_t _value = static_cast<int64_t>(value);
+ Device::getHal().ScriptSetVarJ(mContext, _vs, _slot, _value);
+ return Void();
+}
+
+Return<void> Context::scriptSetVarF(Script vs, uint32_t slot, float value) {
+ RsScript _vs = hidl_to_rs<RsScript>(vs);
+ uint32_t _slot = slot;
+ float _value = value;
+ Device::getHal().ScriptSetVarF(mContext, _vs, _slot, _value);
+ return Void();
+}
+
+Return<void> Context::scriptSetVarD(Script vs, uint32_t slot, double value) {
+ RsScript _vs = hidl_to_rs<RsScript>(vs);
+ uint32_t _slot = slot;
+ double _value = value;
+ Device::getHal().ScriptSetVarD(mContext, _vs, _slot, _value);
+ return Void();
+}
+
+Return<void> Context::scriptSetVarV(Script vs, uint32_t slot, const hidl_vec<uint8_t>& data) {
+ RsScript _vs = hidl_to_rs<RsScript>(vs);
+ uint32_t _slot = slot;
+ const void* _dataPtr = hidl_to_rs<const void*>(data.data());
+ size_t _len = data.size();
+ Device::getHal().ScriptSetVarV(mContext, _vs, _slot, _dataPtr, _len);
+ return Void();
+}
+
+Return<void> Context::scriptGetVarV(Script vs, uint32_t slot, Size len, scriptGetVarV_cb _hidl_cb) {
+ RsScript _vs = hidl_to_rs<RsScript>(vs);
+ uint32_t _slot = slot;
+ size_t _len = static_cast<size_t>(len);
+ std::vector<uint8_t> _data(static_cast<size_t>(len));
+ Device::getHal().ScriptGetVarV(mContext, _vs, _slot, _data.data(), _data.size());
+ hidl_vec<uint8_t> data = _data;
+ _hidl_cb(data);
+ return Void();
+}
+
+Return<void> Context::scriptSetVarVE(Script vs, uint32_t slot, const hidl_vec<uint8_t>& data, Element ve, const hidl_vec<uint32_t>& dims) {
+ RsScript _vs = hidl_to_rs<RsScript>(vs);
+ uint32_t _slot = slot;
+ const void* _dataPtr = hidl_to_rs<const void*>(data.data());
+ size_t _len = data.size();
+ RsElement _ve = hidl_to_rs<RsElement>(ve);
+ const uint32_t* _dimsPtr = dims.data();
+ size_t _dimLen = dims.size();
+ Device::getHal().ScriptSetVarVE(mContext, _vs, _slot, _dataPtr, _len, _ve, _dimsPtr, _dimLen);
+ return Void();
+}
+
+Return<Script> Context::scriptCCreate(const hidl_string& resName, const hidl_string& cacheDir, const hidl_vec<uint8_t>& text) {
+ const hidl_string& _resName = resName;
+ const hidl_string& _cacheDir = cacheDir;
+ const char* _textPtr = hidl_to_rs<const char*>(text.data());
+ size_t _textSize = text.size();
+ RsScript _script = Device::getHal().ScriptCCreate(mContext, _resName.c_str(), _resName.size(), _cacheDir.c_str(), _cacheDir.size(), _textPtr, _textSize);
+ return rs_to_hidl<Script>(_script);
+}
+
+Return<Script> Context::scriptIntrinsicCreate(ScriptIntrinsicID id, Element elem) {
+ RsScriptIntrinsicID _id = static_cast<RsScriptIntrinsicID>(id);
+ RsElement _elem = hidl_to_rs<RsElement>(elem);
+ RsScript _script = Device::getHal().ScriptIntrinsicCreate(mContext, _id, _elem);
+ return rs_to_hidl<Script>(_script);
+}
+
+
+// Methods from ::android::hidl::base::V1_0::IBase follow.
+
+
+} // namespace implementation
+} // namespace V1_0
+} // namespace renderscript
+} // namespace hardware
+} // namespace android
diff --git a/renderscript/1.0/default/Context.h b/renderscript/1.0/default/Context.h
new file mode 100644
index 0000000..d8bfe4f
--- /dev/null
+++ b/renderscript/1.0/default/Context.h
@@ -0,0 +1,129 @@
+#ifndef ANDROID_HARDWARE_RENDERSCRIPT_V1_0_CONTEXT_H
+#define ANDROID_HARDWARE_RENDERSCRIPT_V1_0_CONTEXT_H
+
+#include "cpp/rsDispatch.h"
+#include "dlfcn.h"
+#include <android/hardware/renderscript/1.0/IContext.h>
+#include <hidl/MQDescriptor.h>
+#include <hidl/Status.h>
+
+namespace android {
+namespace hardware {
+namespace renderscript {
+namespace V1_0 {
+namespace implementation {
+
+using ::android::hardware::renderscript::V1_0::AllocationCubemapFace;
+using ::android::hardware::renderscript::V1_0::AllocationMipmapControl;
+using ::android::hardware::renderscript::V1_0::AllocationUsageType;
+using ::android::hardware::renderscript::V1_0::ContextType;
+using ::android::hardware::renderscript::V1_0::DataKind;
+using ::android::hardware::renderscript::V1_0::DataType;
+using ::android::hardware::renderscript::V1_0::IContext;
+using ::android::hardware::renderscript::V1_0::MessageToClientType;
+using ::android::hardware::renderscript::V1_0::SamplerValue;
+using ::android::hardware::renderscript::V1_0::ScriptCall;
+using ::android::hardware::renderscript::V1_0::ScriptIntrinsicID;
+using ::android::hardware::renderscript::V1_0::ThreadPriorities;
+using ::android::hardware::renderscript::V1_0::YuvFormat;
+using ::android::hidl::base::V1_0::IBase;
+using ::android::hardware::hidl_string;
+using ::android::hardware::hidl_vec;
+using ::android::hardware::Return;
+using ::android::hardware::Void;
+using ::android::sp;
+
+struct Context : public IContext {
+ Context(uint32_t sdkVersion, ContextType ct, int32_t flags);
+
+ // Methods from ::android::hardware::renderscript::V1_0::IContext follow.
+ Return<Allocation> allocationAdapterCreate(Type type, Allocation baseAlloc) override;
+ Return<void> allocationAdapterOffset(Allocation alloc, const hidl_vec<uint32_t>& offsets) override;
+ Return<Type> allocationGetType(Allocation allocation) override;
+ Return<Allocation> allocationCreateTyped(Type type, AllocationMipmapControl amips, int32_t usage, Ptr ptr) override;
+ Return<Allocation> allocationCreateFromBitmap(Type type, AllocationMipmapControl amips, const hidl_vec<uint8_t>& bitmap, int32_t usage) override;
+ Return<Allocation> allocationCubeCreateFromBitmap(Type type, AllocationMipmapControl amips, const hidl_vec<uint8_t>& bitmap, int32_t usage) override;
+ Return<NativeWindow> allocationGetNativeWindow(Allocation allocation) override;
+ Return<void> allocationSetNativeWindow(Allocation allocation, NativeWindow nativewindow) override;
+ Return<void> allocationSetupBufferQueue(Allocation alloc, uint32_t numBuffer) override;
+ Return<void> allocationShareBufferQueue(Allocation baseAlloc, Allocation subAlloc) override;
+ Return<void> allocationCopyToBitmap(Allocation allocation, Ptr data, Size sizeBytes) override;
+ Return<void> allocation1DWrite(Allocation allocation, uint32_t offset, uint32_t lod, uint32_t count, const hidl_vec<uint8_t>& data) override;
+ Return<void> allocationElementWrite(Allocation allocation, uint32_t x, uint32_t y, uint32_t z, uint32_t lod, const hidl_vec<uint8_t>& data, Size compIdx) override;
+ Return<void> allocation2DWrite(Allocation allocation, uint32_t xoff, uint32_t yoff, uint32_t lod, AllocationCubemapFace face, uint32_t w, uint32_t h, const hidl_vec<uint8_t>& data, Size stride) override;
+ Return<void> allocation3DWrite(Allocation allocation, uint32_t xoff, uint32_t yoff, uint32_t zoff, uint32_t lod, uint32_t w, uint32_t h, uint32_t d, const hidl_vec<uint8_t>& data, Size stride) override;
+ Return<void> allocationGenerateMipmaps(Allocation allocation) override;
+ Return<void> allocationRead(Allocation allocation, Ptr data, Size sizeBytes) override;
+ Return<void> allocation1DRead(Allocation allocation, uint32_t xoff, uint32_t lod, uint32_t count, Ptr data, Size sizeBytes) override;
+ Return<void> allocationElementRead(Allocation allocation, uint32_t x, uint32_t y, uint32_t z, uint32_t lod, Ptr data, Size sizeBytes, Size compIdx) override;
+ Return<void> allocation2DRead(Allocation allocation, uint32_t xoff, uint32_t yoff, uint32_t lod, AllocationCubemapFace face, uint32_t w, uint32_t h, Ptr data, Size sizeBytes, Size stride) override;
+ Return<void> allocation3DRead(Allocation allocation, uint32_t xoff, uint32_t yoff, uint32_t zoff, uint32_t lod, uint32_t w, uint32_t h, uint32_t d, Ptr data, Size sizeBytes, Size stride) override;
+ Return<void> allocationSyncAll(Allocation allocation, AllocationUsageType usageType) override;
+ Return<void> allocationResize1D(Allocation allocation, uint32_t dimX) override;
+ Return<void> allocationCopy2DRange(Allocation dstAlloc, uint32_t dstXoff, uint32_t dstYoff, uint32_t dstMip, AllocationCubemapFace dstFace, uint32_t width, uint32_t height, Allocation srcAlloc, uint32_t srcXoff, uint32_t srcYoff, uint32_t srcMip, AllocationCubemapFace srcFace) override;
+ Return<void> allocationCopy3DRange(Allocation dstAlloc, uint32_t dstXoff, uint32_t dstYoff, uint32_t dstZoff, uint32_t dstMip, uint32_t width, uint32_t height, uint32_t depth, Allocation srcAlloc, uint32_t srcXoff, uint32_t srcYoff, uint32_t srcZoff, uint32_t srcMip) override;
+ Return<void> allocationIoSend(Allocation allocation) override;
+ Return<void> allocationIoReceive(Allocation allocation) override;
+ Return<void> allocationGetPointer(Allocation allocation, uint32_t lod, AllocationCubemapFace face, uint32_t z, allocationGetPointer_cb _hidl_cb) override;
+ Return<void> elementGetNativeMetadata(Element element, elementGetNativeMetadata_cb _hidl_cb) override;
+ Return<void> elementGetSubElements(Element element, Size numSubElem, elementGetSubElements_cb _hidl_cb) override;
+ Return<Element> elementCreate(DataType dt, DataKind dk, bool norm, uint32_t size) override;
+ Return<Element> elementComplexCreate(const hidl_vec<Element>& eins, const hidl_vec<hidl_string>& names, const hidl_vec<Size>& arraySizes) override;
+ Return<void> typeGetNativeMetadata(Type type, typeGetNativeMetadata_cb _hidl_cb) override;
+ Return<Type> typeCreate(Element element, uint32_t dimX, uint32_t dimY, uint32_t dimZ, bool mipmaps, bool faces, YuvFormat yuv) override;
+ Return<void> contextDestroy() override;
+ Return<void> contextGetMessage(Ptr data, Size size, contextGetMessage_cb _hidl_cb) override;
+ Return<void> contextPeekMessage(contextPeekMessage_cb _hidl_cb) override;
+ Return<void> contextSendMessage(uint32_t id, const hidl_vec<uint8_t>& data) override;
+ Return<void> contextInitToClient() override;
+ Return<void> contextDeinitToClient() override;
+ Return<void> contextFinish() override;
+ Return<void> contextLog() override;
+ Return<void> contextSetPriority(ThreadPriorities priority) override;
+ Return<void> contextSetCacheDir(const hidl_string& cacheDir) override;
+ Return<void> assignName(ObjectBase obj, const hidl_string& name) override;
+ Return<void> getName(ObjectBase obj, getName_cb _hidl_cb) override;
+ Return<Closure> closureCreate(ScriptKernelID kernelID, Allocation returnValue, const hidl_vec<ScriptFieldID>& fieldIDS, const hidl_vec<int64_t>& values, const hidl_vec<int32_t>& sizes, const hidl_vec<Closure>& depClosures, const hidl_vec<ScriptFieldID>& depFieldIDS) override;
+ Return<Closure> invokeClosureCreate(ScriptInvokeID invokeID, const hidl_vec<uint8_t>& params, const hidl_vec<ScriptFieldID>& fieldIDS, const hidl_vec<int64_t>& values, const hidl_vec<int32_t>& sizes) override;
+ Return<void> closureSetArg(Closure closure, uint32_t index, Ptr value, int32_t size) override;
+ Return<void> closureSetGlobal(Closure closure, ScriptFieldID fieldID, int64_t value, int32_t size) override;
+ Return<ScriptKernelID> scriptKernelIDCreate(Script script, int32_t slot, int32_t sig) override;
+ Return<ScriptInvokeID> scriptInvokeIDCreate(Script script, int32_t slot) override;
+ Return<ScriptFieldID> scriptFieldIDCreate(Script script, int32_t slot) override;
+ Return<ScriptGroup> scriptGroupCreate(const hidl_vec<ScriptKernelID>& kernels, const hidl_vec<ScriptKernelID>& srcK, const hidl_vec<ScriptKernelID>& dstK, const hidl_vec<ScriptFieldID>& dstF, const hidl_vec<Type>& types) override;
+ Return<ScriptGroup2> scriptGroup2Create(const hidl_string& name, const hidl_string& cacheDir, const hidl_vec<Closure>& closures) override;
+ Return<void> scriptGroupSetOutput(ScriptGroup sg, ScriptKernelID kid, Allocation alloc) override;
+ Return<void> scriptGroupSetInput(ScriptGroup sg, ScriptKernelID kid, Allocation alloc) override;
+ Return<void> scriptGroupExecute(ScriptGroup sg) override;
+ Return<void> objDestroy(ObjectBase obj) override;
+ Return<Sampler> samplerCreate(SamplerValue magFilter, SamplerValue minFilter, SamplerValue wrapS, SamplerValue wrapT, SamplerValue wrapR, float aniso) override;
+ Return<void> scriptBindAllocation(Script script, Allocation allocation, uint32_t slot) override;
+ Return<void> scriptSetTimeZone(Script script, const hidl_string& timeZone) override;
+ Return<void> scriptInvoke(Script vs, uint32_t slot) override;
+ Return<void> scriptInvokeV(Script vs, uint32_t slot, const hidl_vec<uint8_t>& data) override;
+ Return<void> scriptForEach(Script vs, uint32_t slot, const hidl_vec<Allocation>& vains, Allocation vaout, const hidl_vec<uint8_t>& params, Ptr sc) override;
+ Return<void> scriptReduce(Script vs, uint32_t slot, const hidl_vec<Allocation>& vains, Allocation vaout, Ptr sc) override;
+ Return<void> scriptSetVarI(Script vs, uint32_t slot, int32_t value) override;
+ Return<void> scriptSetVarObj(Script vs, uint32_t slot, ObjectBase obj) override;
+ Return<void> scriptSetVarJ(Script vs, uint32_t slot, int64_t value) override;
+ Return<void> scriptSetVarF(Script vs, uint32_t slot, float value) override;
+ Return<void> scriptSetVarD(Script vs, uint32_t slot, double value) override;
+ Return<void> scriptSetVarV(Script vs, uint32_t slot, const hidl_vec<uint8_t>& data) override;
+ Return<void> scriptGetVarV(Script vs, uint32_t slot, Size len, scriptGetVarV_cb _hidl_cb) override;
+ Return<void> scriptSetVarVE(Script vs, uint32_t slot, const hidl_vec<uint8_t>& data, Element ve, const hidl_vec<uint32_t>& dims) override;
+ Return<Script> scriptCCreate(const hidl_string& resName, const hidl_string& cacheDir, const hidl_vec<uint8_t>& text) override;
+ Return<Script> scriptIntrinsicCreate(ScriptIntrinsicID id, Element elem) override;
+
+ // Methods from ::android::hidl::base::V1_0::IBase follow.
+
+ private:
+ RsContext mContext;
+};
+
+} // namespace implementation
+} // namespace V1_0
+} // namespace renderscript
+} // namespace hardware
+} // namespace android
+
+#endif // ANDROID_HARDWARE_RENDERSCRIPT_V1_0_CONTEXT_H
diff --git a/renderscript/1.0/default/Device.cpp b/renderscript/1.0/default/Device.cpp
new file mode 100644
index 0000000..86cf8eb
--- /dev/null
+++ b/renderscript/1.0/default/Device.cpp
@@ -0,0 +1,139 @@
+#include "Context.h"
+#include "Device.h"
+
+namespace android {
+namespace hardware {
+namespace renderscript {
+namespace V1_0 {
+namespace implementation {
+
+
+static dispatchTable loadHAL();
+dispatchTable Device::mDispatchHal = loadHAL();
+
+Device::Device() {
+}
+
+dispatchTable& Device::getHal() {
+ return mDispatchHal;
+}
+
+
+// Methods from ::android::hardware::renderscript::V1_0::IDevice follow.
+
+Return<sp<IContext>> Device::contextCreate(uint32_t sdkVersion, ContextType ct, int32_t flags) {
+ return new Context(sdkVersion, ct, flags);
+}
+
+
+// Methods from ::android::hidl::base::V1_0::IBase follow.
+
+IDevice* HIDL_FETCH_IDevice(const char* /* name */) {
+ return new Device();
+}
+
+// Helper function
+dispatchTable loadHAL() {
+
+ static_assert(sizeof(void*) <= sizeof(uint64_t), "RenderScript HIDL Error: sizeof(void*) > sizeof(uint64_t)");
+ static_assert(sizeof(size_t) <= sizeof(uint64_t), "RenderScript HIDL Error: sizeof(size_t) > sizeof(uint64_t)");
+
+ const char* filename = "libRS_internal.so";
+ void* handle = dlopen(filename, RTLD_LAZY | RTLD_LOCAL);
+
+ dispatchTable dispatchHal = {
+ .SetNativeLibDir = (SetNativeLibDirFnPtr)nullptr,
+
+ .Allocation1DData = (Allocation1DDataFnPtr)dlsym(handle, "rsAllocation1DData"),
+ .Allocation1DElementData = (Allocation1DElementDataFnPtr)nullptr,
+ .Allocation1DRead = (Allocation1DReadFnPtr)dlsym(handle, "rsAllocation1DRead"),
+ .Allocation2DData = (Allocation2DDataFnPtr)dlsym(handle, "rsAllocation2DData"),
+ .Allocation2DRead = (Allocation2DReadFnPtr)dlsym(handle, "rsAllocation2DRead"),
+ .Allocation3DData = (Allocation3DDataFnPtr)dlsym(handle, "rsAllocation3DData"),
+ .Allocation3DRead = (Allocation3DReadFnPtr)dlsym(handle, "rsAllocation3DRead"),
+ .AllocationAdapterCreate = (AllocationAdapterCreateFnPtr)dlsym(handle, "rsAllocationAdapterCreate"),
+ .AllocationAdapterOffset = (AllocationAdapterOffsetFnPtr)dlsym(handle, "rsAllocationAdapterOffset"),
+ .AllocationCopy2DRange = (AllocationCopy2DRangeFnPtr)dlsym(handle, "rsAllocationCopy2DRange"),
+ .AllocationCopy3DRange = (AllocationCopy3DRangeFnPtr)dlsym(handle, "rsAllocationCopy3DRange"),
+ .AllocationCopyToBitmap = (AllocationCopyToBitmapFnPtr)dlsym(handle, "rsAllocationCopyToBitmap"),
+ .AllocationCreateFromBitmap = (AllocationCreateFromBitmapFnPtr)dlsym(handle, "rsAllocationCreateFromBitmap"),
+ .AllocationCreateStrided = (AllocationCreateStridedFnPtr)dlsym(handle, "rsAllocationCreateStrided"),
+ .AllocationCreateTyped = (AllocationCreateTypedFnPtr)dlsym(handle, "rsAllocationCreateTyped"),
+ .AllocationCubeCreateFromBitmap = (AllocationCubeCreateFromBitmapFnPtr)dlsym(handle, "rsAllocationCubeCreateFromBitmap"),
+ .AllocationElementData = (AllocationElementDataFnPtr)dlsym(handle, "rsAllocationElementData"),
+ .AllocationElementRead = (AllocationElementReadFnPtr)dlsym(handle, "rsAllocationElementRead"),
+ .AllocationGenerateMipmaps = (AllocationGenerateMipmapsFnPtr)dlsym(handle, "rsAllocationGenerateMipmaps"),
+ .AllocationGetPointer = (AllocationGetPointerFnPtr)dlsym(handle, "rsAllocationGetPointer"),
+ .AllocationGetSurface = (AllocationGetSurfaceFnPtr)dlsym(handle, "rsAllocationGetSurface"),
+ .AllocationGetType = (AllocationGetTypeFnPtr)dlsym(handle, "rsaAllocationGetType"),
+ .AllocationIoReceive = (AllocationIoReceiveFnPtr)dlsym(handle, "rsAllocationIoReceive"),
+ .AllocationIoSend = (AllocationIoSendFnPtr)dlsym(handle, "rsAllocationIoSend"),
+ .AllocationRead = (AllocationReadFnPtr)dlsym(handle, "rsAllocationRead"),
+ .AllocationResize1D = (AllocationResize1DFnPtr)dlsym(handle, "rsAllocationResize1D"),
+ .AllocationSetSurface = (AllocationSetSurfaceFnPtr)dlsym(handle, "rsAllocationSetSurface"),
+ .AllocationSetupBufferQueue = (AllocationSetupBufferQueueFnPtr)dlsym(handle, "rsAllocationSetupBufferQueue"),
+ .AllocationShareBufferQueue = (AllocationShareBufferQueueFnPtr)dlsym(handle, "rsAllocationShareBufferQueue"),
+ .AllocationSyncAll = (AllocationSyncAllFnPtr)dlsym(handle, "rsAllocationSyncAll"),
+ .AssignName = (AssignNameFnPtr)dlsym(handle, "rsAssignName"),
+ .ClosureCreate = (ClosureCreateFnPtr)dlsym(handle, "rsClosureCreate"),
+ .ClosureSetArg = (ClosureSetArgFnPtr)dlsym(handle, "rsClosureSetArg"),
+ .ClosureSetGlobal = (ClosureSetGlobalFnPtr)dlsym(handle, "rsClosureSetGlobal"),
+ .ContextCreate = (ContextCreateFnPtr)dlsym(handle, "rsContextCreate"),
+ .ContextDeinitToClient = (ContextDeinitToClientFnPtr)dlsym(handle, "rsContextDeinitToClient"),
+ .ContextDestroy = (ContextDestroyFnPtr)dlsym(handle, "rsContextDestroy"),
+ .ContextDump = (ContextDumpFnPtr)dlsym(handle, "rsContextDump"),
+ .ContextFinish = (ContextFinishFnPtr)dlsym(handle, "rsContextFinish"),
+ .ContextGetMessage = (ContextGetMessageFnPtr)dlsym(handle, "rsContextGetMessage"),
+ .ContextInitToClient = (ContextInitToClientFnPtr)dlsym(handle, "rsContextInitToClient"),
+ .ContextPeekMessage = (ContextPeekMessageFnPtr)dlsym(handle, "rsContextPeekMessage"),
+ .ContextSendMessage = (ContextSendMessageFnPtr)dlsym(handle, "rsContextSendMessage"),
+ .ContextSetCacheDir = (ContextSetCacheDirFnPtr)dlsym(handle, "rsContextSetCacheDir"),
+ .ContextSetPriority = (ContextSetPriorityFnPtr)dlsym(handle, "rsContextSetPriority"),
+ .DeviceCreate = (DeviceCreateFnPtr)nullptr,
+ .DeviceDestroy = (DeviceDestroyFnPtr)nullptr,
+ .DeviceSetConfig = (DeviceSetConfigFnPtr)nullptr,
+ .ElementCreate2 = (ElementCreate2FnPtr)dlsym(handle, "rsElementCreate2"),
+ .ElementCreate = (ElementCreateFnPtr)dlsym(handle, "rsElementCreate"),
+ .ElementGetNativeData = (ElementGetNativeDataFnPtr)dlsym(handle, "rsaElementGetNativeData"),
+ .ElementGetSubElements = (ElementGetSubElementsFnPtr)dlsym(handle, "rsaElementGetSubElements"),
+ .GetName = (GetNameFnPtr)dlsym(handle, "rsaGetName"),
+ .InvokeClosureCreate = (InvokeClosureCreateFnPtr)dlsym(handle, "rsInvokeClosureCreate"),
+ .ObjDestroy = (ObjDestroyFnPtr)dlsym(handle, "rsObjDestroy"),
+ .SamplerCreate = (SamplerCreateFnPtr)dlsym(handle, "rsSamplerCreate"),
+ .ScriptBindAllocation = (ScriptBindAllocationFnPtr)dlsym(handle, "rsScriptBindAllocation"),
+ .ScriptCCreate = (ScriptCCreateFnPtr)dlsym(handle, "rsScriptCCreate"),
+ .ScriptFieldIDCreate = (ScriptFieldIDCreateFnPtr)dlsym(handle, "rsScriptFieldIDCreate"),
+ .ScriptForEach = (ScriptForEachFnPtr)nullptr,
+ .ScriptForEachMulti = (ScriptForEachMultiFnPtr)dlsym(handle, "rsScriptForEachMulti"),
+ .ScriptGetVarV = (ScriptGetVarVFnPtr)dlsym(handle, "rsScriptGetVarV"),
+ .ScriptGroup2Create = (ScriptGroup2CreateFnPtr)dlsym(handle, "rsScriptGroup2Create"),
+ .ScriptGroupCreate = (ScriptGroupCreateFnPtr)dlsym(handle, "rsScriptGroupCreate"),
+ .ScriptGroupExecute = (ScriptGroupExecuteFnPtr)dlsym(handle, "rsScriptGroupExecute"),
+ .ScriptGroupSetInput = (ScriptGroupSetInputFnPtr)dlsym(handle, "rsScriptGroupSetInput"),
+ .ScriptGroupSetOutput = (ScriptGroupSetOutputFnPtr)dlsym(handle, "rsScriptGroupSetOutput"),
+ .ScriptIntrinsicCreate = (ScriptIntrinsicCreateFnPtr)dlsym(handle, "rsScriptIntrinsicCreate"),
+ .ScriptInvoke = (ScriptInvokeFnPtr)dlsym(handle, "rsScriptInvoke"),
+ .ScriptInvokeIDCreate = (ScriptInvokeIDCreateFnPtr)dlsym(handle, "rsScriptInvokeIDCreate"),
+ .ScriptInvokeV = (ScriptInvokeVFnPtr)dlsym(handle, "rsScriptInvokeV"),
+ .ScriptKernelIDCreate = (ScriptKernelIDCreateFnPtr)dlsym(handle, "rsScriptKernelIDCreate"),
+ .ScriptReduce = (ScriptReduceFnPtr)dlsym(handle, "rsScriptReduce"),
+ .ScriptSetTimeZone = (ScriptSetTimeZoneFnPtr)dlsym(handle, "rsScriptSetTimeZone"),
+ .ScriptSetVarD = (ScriptSetVarDFnPtr)dlsym(handle, "rsScriptSetVarD"),
+ .ScriptSetVarF = (ScriptSetVarFFnPtr)dlsym(handle, "rsScriptSetVarF"),
+ .ScriptSetVarI = (ScriptSetVarIFnPtr)dlsym(handle, "rsScriptSetVarI"),
+ .ScriptSetVarJ = (ScriptSetVarJFnPtr)dlsym(handle, "rsScriptSetVarJ"),
+ .ScriptSetVarObj = (ScriptSetVarObjFnPtr)dlsym(handle, "rsScriptSetVarObj"),
+ .ScriptSetVarVE = (ScriptSetVarVEFnPtr)dlsym(handle, "rsScriptSetVarVE"),
+ .ScriptSetVarV = (ScriptSetVarVFnPtr)dlsym(handle, "rsScriptSetVarV"),
+ .TypeCreate = (TypeCreateFnPtr)dlsym(handle, "rsTypeCreate"),
+ .TypeGetNativeData = (TypeGetNativeDataFnPtr)dlsym(handle, "rsaTypeGetNativeData"),
+ };
+
+ return dispatchHal;
+}
+
+} // namespace implementation
+} // namespace V1_0
+} // namespace renderscript
+} // namespace hardware
+} // namespace android
diff --git a/renderscript/1.0/default/Device.h b/renderscript/1.0/default/Device.h
new file mode 100644
index 0000000..f5bda37
--- /dev/null
+++ b/renderscript/1.0/default/Device.h
@@ -0,0 +1,44 @@
+#ifndef ANDROID_HARDWARE_RENDERSCRIPT_V1_0_DEVICE_H
+#define ANDROID_HARDWARE_RENDERSCRIPT_V1_0_DEVICE_H
+
+#include "cpp/rsDispatch.h"
+#include "dlfcn.h"
+#include <android/hardware/renderscript/1.0/IDevice.h>
+#include <hidl/MQDescriptor.h>
+#include <hidl/Status.h>
+
+namespace android {
+namespace hardware {
+namespace renderscript {
+namespace V1_0 {
+namespace implementation {
+
+using ::android::hardware::renderscript::V1_0::ContextType;
+using ::android::hardware::renderscript::V1_0::IContext;
+using ::android::hardware::renderscript::V1_0::IDevice;
+using ::android::hidl::base::V1_0::IBase;
+using ::android::hardware::Return;
+using ::android::sp;
+
+struct Device : public IDevice {
+ Device();
+ static dispatchTable& getHal();
+
+ // Methods from ::android::hardware::renderscript::V1_0::IDevice follow.
+ Return<sp<IContext>> contextCreate(uint32_t sdkVersion, ContextType ct, int32_t flags) override;
+
+ // Methods from ::android::hidl::base::V1_0::IBase follow.
+
+ private:
+ static dispatchTable mDispatchHal;
+};
+
+extern "C" IDevice* HIDL_FETCH_IDevice(const char* name);
+
+} // namespace implementation
+} // namespace V1_0
+} // namespace renderscript
+} // namespace hardware
+} // namespace android
+
+#endif // ANDROID_HARDWARE_RENDERSCRIPT_V1_0_DEVICE_H
diff --git a/renderscript/1.0/types.hal b/renderscript/1.0/types.hal
new file mode 100644
index 0000000..7c32188
--- /dev/null
+++ b/renderscript/1.0/types.hal
@@ -0,0 +1,253 @@
+/*
+ * Copyright (C) 2017 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.
+ */
+
+// TODO: Currently, most of the types are simply typedefs of uint64_t, so
+// misusing one type as another won't be caught by the compiler. Should we wrap
+// each type in a unique class to have stronger type guarantees?
+// TODO: is there an enum for intrinsics?
+
+package android.hardware.renderscript@1.0;
+
+// OpaqueHandle is an object that is used entirely in the driver but still needs
+// to be identified by the framework.
+typedef uint64_t OpaqueHandle;
+
+// A pointer is an actual local pointer that can be accessed by both the
+// framework and the driver. This is possible because RenderScript is always
+// running in Passthrough mode.
+typedef pointer Ptr;
+
+// This is an abstraction of size_t because it is not supported in HIDL.
+typedef uint64_t Size;
+
+// In RenderScript code, these are all defined as void*, but act only as
+// handles.
+typedef OpaqueHandle Allocation;
+typedef OpaqueHandle AllocationAdapter;
+typedef OpaqueHandle Closure;
+typedef OpaqueHandle Element;
+typedef OpaqueHandle NativeWindow;
+typedef OpaqueHandle ObjectBase;
+typedef OpaqueHandle Sampler;
+typedef OpaqueHandle Script;
+typedef OpaqueHandle ScriptFieldID;
+typedef OpaqueHandle ScriptGroup;
+typedef OpaqueHandle ScriptGroup2;
+typedef OpaqueHandle ScriptInvokeID;
+typedef OpaqueHandle ScriptKernelID;
+typedef OpaqueHandle Type;
+
+// types below are same as those in frameworks/rs/rsDefines.h
+
+@export(name="RsContextType", value_prefix="RS_CONTEXT_TYPE_")
+enum ContextType : int32_t {
+ NORMAL,
+ DEBUG,
+ PROFILE,
+};
+
+@export(name="RsAllocationUsageType", value_prefix="RS_ALLOCATION_USAGE_")
+enum AllocationUsageType : int32_t {
+ SCRIPT = 0x0001,
+ GRAPHICS_TEXTURE = 0x0002,
+ GRAPHICS_VERTEX = 0x0004,
+ GRAPHICS_CONSTANTS = 0x0008,
+ GRAPHICS_RENDER_TARGET = 0x0010,
+ IO_INPUT = 0x0020,
+ IO_OUTPUT = 0x0040,
+ SHARED = 0x0080,
+ OEM = 0x8000,
+ ALL = 0x80FF,
+};
+
+@export(name="RsAllocationMipmapControl", value_prefix="RS_ALLOCATION_MIPMAP_")
+enum AllocationMipmapControl : int32_t {
+ NONE = 0,
+ FULL = 1,
+ ON_SYNC_TO_TEXTURE = 2,
+};
+
+@export(name="RsAllocationCubemapFace",
+ value_prefix="RS_ALLOCATION_CUBEMAP_FACE_")
+enum AllocationCubemapFace : int32_t {
+ POSITIVE_X = 0,
+ NEGATIVE_X = 1,
+ POSITIVE_Y = 2,
+ NEGATIVE_Y = 3,
+ POSITIVE_Z = 4,
+ NEGATIVE_Z = 5,
+};
+
+@export(name="RsDataType", value_prefix="RS_TYPE_")
+enum DataType : int32_t {
+ NONE = 0,
+ FLOAT_16,
+ FLOAT_32,
+ FLOAT_64,
+ SIGNED_8,
+ SIGNED_16,
+ SIGNED_32,
+ SIGNED_64,
+ UNSIGNED_8,
+ UNSIGNED_16,
+ UNSIGNED_32,
+ UNSIGNED_64,
+ BOOLEAN,
+ UNSIGNED_5_6_5,
+ UNSIGNED_5_5_5_1,
+ UNSIGNED_4_4_4_4,
+ MATRIX_4X4,
+ MATRIX_3X3,
+ MATRIX_2X2,
+ ELEMENT = 1000,
+ TYPE,
+ ALLOCATION,
+ SAMPLER,
+ SCRIPT,
+ MESH,
+ PROGRAM_FRAGMENT,
+ PROGRAM_VERTEX,
+ PROGRAM_RASTER,
+ PROGRAM_STORE,
+ FONT,
+ INVALID = 10000,
+};
+
+@export(name="RsDataKind", value_prefix="RS_KIND_")
+enum DataKind : int32_t {
+ USER,
+ PIXEL_L = 7,
+ PIXEL_A,
+ PIXEL_LA,
+ PIXEL_RGB,
+ PIXEL_RGBA,
+ PIXEL_DEPTH,
+ PIXEL_YUV,
+ INVALID = 100,
+};
+
+@export(name="RsYuvFormat", value_prefix="RS_")
+enum YuvFormat : int32_t {
+ YUV_NONE = 0,
+ YUV_YV12 = 0x32315659, // HAL_PIXEL_FORMAT_YV12 in system/graphics.h
+ YUV_NV21 = 0x11, // HAL_PIXEL_FORMAT_YCrCb_420_SP
+ YUV_420_888 = 0x23, // HAL_PIXEL_FORMAT_YCbCr_420_888
+};
+
+@export(name="RsSamplerValue", value_prefix="RS_SAMPLER_")
+enum SamplerValue : int32_t {
+ NEAREST,
+ LINEAR,
+ LINEAR_MIP_LINEAR,
+ WRAP,
+ CLAMP,
+ LINEAR_MIP_NEAREST,
+ MIRRORED_REPEAT,
+ INVALID = 100,
+};
+
+@export(name="RsForEachStrategy", value_prefix="RS_FOR_EACH_STRATEGY_")
+enum ForEachStrategy : int32_t {
+ SERIAL = 0,
+ DONT_CARE = 1,
+ DST_LINEAR = 2,
+ TILE_SMALL = 3,
+ TILE_MEDIUM = 4,
+ TILE_LARGE = 5,
+};
+
+// Script to Script
+@export(name="RsScriptCall")
+struct ScriptCall {
+ ForEachStrategy strategy;
+ uint32_t xStart;
+ uint32_t xEnd;
+ uint32_t yStart;
+ uint32_t yEnd;
+ uint32_t zStart;
+ uint32_t zEnd;
+ uint32_t arrayStart;
+ uint32_t arrayEnd;
+ uint32_t array2Start;
+ uint32_t array2End;
+ uint32_t array3Start;
+ uint32_t array3End;
+ uint32_t array4Start;
+ uint32_t array4End;
+};
+
+@export(name="RsContextFlags", value_prefix="RS_CONTEXT_")
+enum ContextFlags : int32_t {
+ SYNCHRONOUS = 1<<0,
+ LOW_LATENCY = 1<<1,
+ LOW_POWER = 1<<2,
+ WAIT_FOR_ATTACH = 1<<3,
+};
+
+// types below are same as those in frameworks/rs/rsInternalDefines.h
+
+@export(name="RsMessageToClientType", value_prefix="RS_MESSAGE_TO_CLIENT_")
+enum MessageToClientType : int32_t {
+ NONE = 0,
+ EXCEPTION = 1,
+ RESIZE = 2,
+ ERROR = 3,
+ USER = 4,
+ NEW_BUFFER = 5,
+};
+
+@export(name="RsScriptIntrinsicID", value_prefix="RS_SCRIPT_INTRINSIC_")
+enum ScriptIntrinsicID : int32_t {
+ ID_UNDEFINED = 0,
+ ID_CONVOLVE_3X3 = 1,
+ ID_COLOR_MATRIX = 2,
+ ID_LUT = 3,
+ ID_CONVOLVE_5X5 = 4,
+ ID_BLUR = 5,
+ ID_YUV_TO_RGB = 6,
+ ID_BLEND = 7,
+ ID_3DLUT = 8,
+ ID_HISTOGRAM = 9,
+ // unused 10, 11
+ ID_RESIZE = 12,
+ ID_BLAS = 13,
+ ID_EXTBLAS = 14,
+ ID_OEM_START = 0x10000000,
+};
+
+@export(name="RsThreadPriorities", value_prefix="RS_THREAD_PRIORITY_")
+enum ThreadPriorities : int32_t {
+ LOW = 15,
+ NORMAL_GRAPHICS = -8,
+ NORMAL = -1,
+ LOW_LATENCY = -4,
+};
+
+// types below are same as those in
+// frameworks/compile/libbcc/include/bcinfo/MetadataExtractor.h
+
+@export(name="", value_prefix="RS_MD_")
+enum MetadataSignatureBitval : int32_t {
+ SIG_None = 0,
+ SIG_In = 1<<0,
+ SIG_Out = 1<<1,
+ SIG_Usr = 1<<2,
+ SIG_X = 1<<3,
+ SIG_Y = 1<<4,
+ SIG_Kernel = 1<<5,
+ SIG_Z = 1<<6,
+ SIG_Ctxt = 1<<7,
+};
diff --git a/example/Android.bp b/renderscript/Android.bp
similarity index 66%
rename from example/Android.bp
rename to renderscript/Android.bp
index ea6dbb5..ba90f2c 100644
--- a/example/Android.bp
+++ b/renderscript/Android.bp
@@ -1,4 +1,5 @@
// This is an autogenerated file, do not edit.
subdirs = [
- "extension/light/2.0",
+ "1.0",
+ "1.0/default",
]
diff --git a/sensors/1.0/default/Android.bp b/sensors/1.0/default/Android.bp
index 3930504..1d8d6a4 100644
--- a/sensors/1.0/default/Android.bp
+++ b/sensors/1.0/default/Android.bp
@@ -7,7 +7,6 @@
"liblog",
"libcutils",
"libhardware",
- "libhwbinder",
"libbase",
"libutils",
"libhidlbase",
@@ -29,7 +28,6 @@
"liblog",
"libcutils",
"libhardware",
- "libhwbinder",
"libbase",
"libutils",
"libhidlbase",
diff --git a/sensors/1.0/default/Android.mk b/sensors/1.0/default/Android.mk
index 6a1aab4..bc1cfbd 100644
--- a/sensors/1.0/default/Android.mk
+++ b/sensors/1.0/default/Android.mk
@@ -18,7 +18,6 @@
libhardware \
LOCAL_SHARED_LIBRARIES += \
- libhwbinder \
libhidlbase \
libhidltransport \
android.hardware.sensors@1.0 \
diff --git a/sensors/1.0/vts/Sensors.vts b/sensors/1.0/vts/Sensors.vts
deleted file mode 100644
index 558c36d..0000000
--- a/sensors/1.0/vts/Sensors.vts
+++ /dev/null
@@ -1,172 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "ISensors"
-
-package: "android.hardware.sensors"
-
-import: "android.hardware.sensors@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- api: {
- name: "getSensorsList"
- return_type_hidl: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::sensors::V1_0::SensorInfo"
- }
- }
- }
-
- api: {
- name: "setOperationMode"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::sensors::V1_0::Result"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::sensors::V1_0::OperationMode"
- }
- }
-
- api: {
- name: "activate"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::sensors::V1_0::Result"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "poll"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::sensors::V1_0::Result"
- }
- return_type_hidl: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::sensors::V1_0::Event"
- }
- }
- return_type_hidl: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::sensors::V1_0::SensorInfo"
- }
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "batch"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::sensors::V1_0::Result"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int64_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int64_t"
- }
- }
-
- api: {
- name: "flush"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::sensors::V1_0::Result"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "injectSensorData"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::sensors::V1_0::Result"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::sensors::V1_0::Event"
- }
- }
-
- api: {
- name: "registerDirectChannel"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::sensors::V1_0::Result"
- }
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::sensors::V1_0::SharedMemInfo"
- }
- }
-
- api: {
- name: "unregisterDirectChannel"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::sensors::V1_0::Result"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "configDirectReport"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::sensors::V1_0::Result"
- }
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::sensors::V1_0::RateLevel"
- }
- }
-
-}
diff --git a/sensors/1.0/vts/functional/Android.bp b/sensors/1.0/vts/functional/Android.bp
index 9ca6230..4be4f64 100644
--- a/sensors/1.0/vts/functional/Android.bp
+++ b/sensors/1.0/vts/functional/Android.bp
@@ -15,9 +15,8 @@
//
cc_test {
- name: "sensors_hidl_hal_test",
- gtest: true,
- srcs: ["sensors_hidl_hal_test.cpp"],
+ name: "VtsHalSensorsV1_0TargetTest",
+ srcs: ["VtsHalSensorsV1_0TargetTest.cpp"],
shared_libs: [
"android.hardware.sensors@1.0",
"libcutils",
@@ -25,7 +24,7 @@
"liblog",
"libutils",
],
- static_libs: ["libgtest"],
+ static_libs: ["VtsHalHidlTargetBaseTest"],
cflags: [
"-O0",
"-g",
diff --git a/sensors/1.0/vts/functional/sensors_hidl_hal_test.cpp b/sensors/1.0/vts/functional/VtsHalSensorsV1_0TargetTest.cpp
similarity index 99%
rename from sensors/1.0/vts/functional/sensors_hidl_hal_test.cpp
rename to sensors/1.0/vts/functional/VtsHalSensorsV1_0TargetTest.cpp
index 9a71745..b1483e3 100644
--- a/sensors/1.0/vts/functional/sensors_hidl_hal_test.cpp
+++ b/sensors/1.0/vts/functional/VtsHalSensorsV1_0TargetTest.cpp
@@ -20,7 +20,7 @@
#include <android/hardware/sensors/1.0/types.h>
#include <android/log.h>
#include <cutils/ashmem.h>
-#include <gtest/gtest.h>
+#include <VtsHalHidlTargetBaseTest.h>
#include <hardware/sensors.h> // for sensor type strings
#include <algorithm>
@@ -80,7 +80,7 @@
};
void SensorsHidlEnvironment::SetUp() {
- sensors = ISensors::getService();
+ sensors = ::testing::VtsHalHidlTargetBaseTest::getService<ISensors>();
ALOGI_IF(sensors, "sensors is not nullptr, %p", sensors.get());
ASSERT_NE(sensors, nullptr);
@@ -309,7 +309,7 @@
}
// The main test class for SENSORS HIDL HAL.
-class SensorsHidlTest : public ::testing::Test {
+class SensorsHidlTest : public ::testing::VtsHalHidlTargetBaseTest {
public:
virtual void SetUp() override {
}
diff --git a/sensors/1.0/vts/types.vts b/sensors/1.0/vts/types.vts
deleted file mode 100644
index bc87823..0000000
--- a/sensors/1.0/vts/types.vts
+++ /dev/null
@@ -1,901 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "types"
-
-package: "android.hardware.sensors"
-
-
-attribute: {
- name: "::android::hardware::sensors::V1_0::Result"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "OK"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "PERMISSION_DENIED"
- scalar_value: {
- int32_t: -1
- }
- enumerator: "NO_MEMORY"
- scalar_value: {
- int32_t: -12
- }
- enumerator: "BAD_VALUE"
- scalar_value: {
- int32_t: -22
- }
- enumerator: "INVALID_OPERATION"
- scalar_value: {
- int32_t: -38
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::sensors::V1_0::OperationMode"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "NORMAL"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "DATA_INJECTION"
- scalar_value: {
- int32_t: 1
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::sensors::V1_0::SensorType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "META_DATA"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "ACCELEROMETER"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "MAGNETIC_FIELD"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "ORIENTATION"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "GYROSCOPE"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "LIGHT"
- scalar_value: {
- int32_t: 5
- }
- enumerator: "PRESSURE"
- scalar_value: {
- int32_t: 6
- }
- enumerator: "TEMPERATURE"
- scalar_value: {
- int32_t: 7
- }
- enumerator: "PROXIMITY"
- scalar_value: {
- int32_t: 8
- }
- enumerator: "GRAVITY"
- scalar_value: {
- int32_t: 9
- }
- enumerator: "LINEAR_ACCELERATION"
- scalar_value: {
- int32_t: 10
- }
- enumerator: "ROTATION_VECTOR"
- scalar_value: {
- int32_t: 11
- }
- enumerator: "RELATIVE_HUMIDITY"
- scalar_value: {
- int32_t: 12
- }
- enumerator: "AMBIENT_TEMPERATURE"
- scalar_value: {
- int32_t: 13
- }
- enumerator: "MAGNETIC_FIELD_UNCALIBRATED"
- scalar_value: {
- int32_t: 14
- }
- enumerator: "GAME_ROTATION_VECTOR"
- scalar_value: {
- int32_t: 15
- }
- enumerator: "GYROSCOPE_UNCALIBRATED"
- scalar_value: {
- int32_t: 16
- }
- enumerator: "SIGNIFICANT_MOTION"
- scalar_value: {
- int32_t: 17
- }
- enumerator: "STEP_DETECTOR"
- scalar_value: {
- int32_t: 18
- }
- enumerator: "STEP_COUNTER"
- scalar_value: {
- int32_t: 19
- }
- enumerator: "GEOMAGNETIC_ROTATION_VECTOR"
- scalar_value: {
- int32_t: 20
- }
- enumerator: "HEART_RATE"
- scalar_value: {
- int32_t: 21
- }
- enumerator: "TILT_DETECTOR"
- scalar_value: {
- int32_t: 22
- }
- enumerator: "WAKE_GESTURE"
- scalar_value: {
- int32_t: 23
- }
- enumerator: "GLANCE_GESTURE"
- scalar_value: {
- int32_t: 24
- }
- enumerator: "PICK_UP_GESTURE"
- scalar_value: {
- int32_t: 25
- }
- enumerator: "WRIST_TILT_GESTURE"
- scalar_value: {
- int32_t: 26
- }
- enumerator: "DEVICE_ORIENTATION"
- scalar_value: {
- int32_t: 27
- }
- enumerator: "POSE_6DOF"
- scalar_value: {
- int32_t: 28
- }
- enumerator: "STATIONARY_DETECT"
- scalar_value: {
- int32_t: 29
- }
- enumerator: "MOTION_DETECT"
- scalar_value: {
- int32_t: 30
- }
- enumerator: "HEART_BEAT"
- scalar_value: {
- int32_t: 31
- }
- enumerator: "DYNAMIC_SENSOR_META"
- scalar_value: {
- int32_t: 32
- }
- enumerator: "ADDITIONAL_INFO"
- scalar_value: {
- int32_t: 33
- }
- enumerator: "LOW_LATENCY_OFFBODY_DETECT"
- scalar_value: {
- int32_t: 34
- }
- enumerator: "ACCELEROMETER_UNCALIBRATED"
- scalar_value: {
- int32_t: 35
- }
- enumerator: "DEVICE_PRIVATE_BASE"
- scalar_value: {
- int32_t: 65536
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::sensors::V1_0::SensorFlagBits"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "WAKE_UP"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "CONTINUOUS_MODE"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "ON_CHANGE_MODE"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "ONE_SHOT_MODE"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "SPECIAL_REPORTING_MODE"
- scalar_value: {
- uint32_t: 6
- }
- enumerator: "DATA_INJECTION"
- scalar_value: {
- uint32_t: 16
- }
- enumerator: "DYNAMIC_SENSOR"
- scalar_value: {
- uint32_t: 32
- }
- enumerator: "ADDITIONAL_INFO"
- scalar_value: {
- uint32_t: 64
- }
- enumerator: "DIRECT_CHANNEL_ASHMEM"
- scalar_value: {
- uint32_t: 1024
- }
- enumerator: "DIRECT_CHANNEL_GRALLOC"
- scalar_value: {
- uint32_t: 2048
- }
- enumerator: "MASK_REPORTING_MODE"
- scalar_value: {
- uint32_t: 14
- }
- enumerator: "MASK_DIRECT_REPORT"
- scalar_value: {
- uint32_t: 896
- }
- enumerator: "MASK_DIRECT_CHANNEL"
- scalar_value: {
- uint32_t: 3072
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::sensors::V1_0::SensorFlagShift"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint8_t"
-
- enumerator: "REPORTING_MODE"
- scalar_value: {
- uint8_t: 1
- }
- enumerator: "DATA_INJECTION"
- scalar_value: {
- uint8_t: 4
- }
- enumerator: "DYNAMIC_SENSOR"
- scalar_value: {
- uint8_t: 5
- }
- enumerator: "ADDITIONAL_INFO"
- scalar_value: {
- uint8_t: 6
- }
- enumerator: "DIRECT_REPORT"
- scalar_value: {
- uint8_t: 7
- }
- enumerator: "DIRECT_CHANNEL"
- scalar_value: {
- uint8_t: 10
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::sensors::V1_0::SensorInfo"
- type: TYPE_STRUCT
- struct_value: {
- name: "sensorHandle"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "name"
- type: TYPE_STRING
- }
- struct_value: {
- name: "vendor"
- type: TYPE_STRING
- }
- struct_value: {
- name: "version"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "type"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::sensors::V1_0::SensorType"
- }
- struct_value: {
- name: "typeAsString"
- type: TYPE_STRING
- }
- struct_value: {
- name: "maxRange"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- struct_value: {
- name: "resolution"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- struct_value: {
- name: "power"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- struct_value: {
- name: "minDelay"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "fifoReservedEventCount"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "fifoMaxEventCount"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "requiredPermission"
- type: TYPE_STRING
- }
- struct_value: {
- name: "maxDelay"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "flags"
- type: TYPE_MASK
- scalar_type: "uint32_t"
- predefined_type: "::android::hardware::sensors::V1_0::SensorFlagBits"
- }
-}
-
-attribute: {
- name: "::android::hardware::sensors::V1_0::SensorStatus"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int8_t"
-
- enumerator: "NO_CONTACT"
- scalar_value: {
- int8_t: -1
- }
- enumerator: "UNRELIABLE"
- scalar_value: {
- int8_t: 0
- }
- enumerator: "ACCURACY_LOW"
- scalar_value: {
- int8_t: 1
- }
- enumerator: "ACCURACY_MEDIUM"
- scalar_value: {
- int8_t: 2
- }
- enumerator: "ACCURACY_HIGH"
- scalar_value: {
- int8_t: 3
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::sensors::V1_0::Vec3"
- type: TYPE_STRUCT
- struct_value: {
- name: "x"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- struct_value: {
- name: "y"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- struct_value: {
- name: "z"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- struct_value: {
- name: "status"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::sensors::V1_0::SensorStatus"
- }
-}
-
-attribute: {
- name: "::android::hardware::sensors::V1_0::Vec4"
- type: TYPE_STRUCT
- struct_value: {
- name: "x"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- struct_value: {
- name: "y"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- struct_value: {
- name: "z"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- struct_value: {
- name: "w"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::sensors::V1_0::Uncal"
- type: TYPE_STRUCT
- struct_value: {
- name: "x"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- struct_value: {
- name: "y"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- struct_value: {
- name: "z"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- struct_value: {
- name: "x_bias"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- struct_value: {
- name: "y_bias"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- struct_value: {
- name: "z_bias"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::sensors::V1_0::HeartRate"
- type: TYPE_STRUCT
- struct_value: {
- name: "bpm"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- struct_value: {
- name: "status"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::sensors::V1_0::SensorStatus"
- }
-}
-
-attribute: {
- name: "::android::hardware::sensors::V1_0::MetaDataEventType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "META_DATA_FLUSH_COMPLETE"
- scalar_value: {
- uint32_t: 1
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::sensors::V1_0::MetaData"
- type: TYPE_STRUCT
- struct_value: {
- name: "what"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::sensors::V1_0::MetaDataEventType"
- }
-}
-
-attribute: {
- name: "::android::hardware::sensors::V1_0::DynamicSensorInfo"
- type: TYPE_STRUCT
- struct_value: {
- name: "connected"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "sensorHandle"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "uuid"
- type: TYPE_ARRAY
- vector_size: 16
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::sensors::V1_0::AdditionalInfoType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "AINFO_BEGIN"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "AINFO_END"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "AINFO_UNTRACKED_DELAY"
- scalar_value: {
- uint32_t: 65536
- }
- enumerator: "AINFO_INTERNAL_TEMPERATURE"
- scalar_value: {
- uint32_t: 65537
- }
- enumerator: "AINFO_VEC3_CALIBRATION"
- scalar_value: {
- uint32_t: 65538
- }
- enumerator: "AINFO_SENSOR_PLACEMENT"
- scalar_value: {
- uint32_t: 65539
- }
- enumerator: "AINFO_SAMPLING"
- scalar_value: {
- uint32_t: 65540
- }
- enumerator: "AINFO_CHANNEL_NOISE"
- scalar_value: {
- uint32_t: 131072
- }
- enumerator: "AINFO_CHANNEL_SAMPLER"
- scalar_value: {
- uint32_t: 131073
- }
- enumerator: "AINFO_CHANNEL_FILTER"
- scalar_value: {
- uint32_t: 131074
- }
- enumerator: "AINFO_CHANNEL_LINEAR_TRANSFORM"
- scalar_value: {
- uint32_t: 131075
- }
- enumerator: "AINFO_CHANNEL_NONLINEAR_MAP"
- scalar_value: {
- uint32_t: 131076
- }
- enumerator: "AINFO_CHANNEL_RESAMPLER"
- scalar_value: {
- uint32_t: 131077
- }
- enumerator: "AINFO_LOCAL_GEOMAGNETIC_FIELD"
- scalar_value: {
- uint32_t: 196608
- }
- enumerator: "AINFO_LOCAL_GRAVITY"
- scalar_value: {
- uint32_t: 196609
- }
- enumerator: "AINFO_DOCK_STATE"
- scalar_value: {
- uint32_t: 196610
- }
- enumerator: "AINFO_HIGH_PERFORMANCE_MODE"
- scalar_value: {
- uint32_t: 196611
- }
- enumerator: "AINFO_MAGNETIC_FIELD_CALIBRATION"
- scalar_value: {
- uint32_t: 196612
- }
- enumerator: "AINFO_CUSTOM_START"
- scalar_value: {
- uint32_t: 268435456
- }
- enumerator: "AINFO_DEBUGGING_START"
- scalar_value: {
- uint32_t: 1073741824
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::sensors::V1_0::AdditionalInfo"
- type: TYPE_STRUCT
- sub_struct: {
- name: "::android::hardware::sensors::V1_0::AdditionalInfo::Payload"
- type: TYPE_UNION
- union_value: {
- name: "data_int32"
- type: TYPE_ARRAY
- vector_size: 14
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
- union_value: {
- name: "data_float"
- type: TYPE_ARRAY
- vector_size: 14
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- }
- }
- struct_value: {
- name: "type"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::sensors::V1_0::AdditionalInfoType"
- }
- struct_value: {
- name: "serial"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "u"
- type: TYPE_UNION
- predefined_type: "::android::hardware::sensors::V1_0::AdditionalInfo::Payload"
- }
-}
-
-attribute: {
- name: "::android::hardware::sensors::V1_0::EventPayload"
- type: TYPE_UNION
- union_value: {
- name: "vec3"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::sensors::V1_0::Vec3"
- }
- union_value: {
- name: "vec4"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::sensors::V1_0::Vec4"
- }
- union_value: {
- name: "uncal"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::sensors::V1_0::Uncal"
- }
- union_value: {
- name: "meta"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::sensors::V1_0::MetaData"
- }
- union_value: {
- name: "scalar"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- union_value: {
- name: "stepCount"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- union_value: {
- name: "heartRate"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::sensors::V1_0::HeartRate"
- }
- union_value: {
- name: "pose6DOF"
- type: TYPE_ARRAY
- vector_size: 15
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- }
- union_value: {
- name: "dynamic"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::sensors::V1_0::DynamicSensorInfo"
- }
- union_value: {
- name: "additional"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::sensors::V1_0::AdditionalInfo"
- }
- union_value: {
- name: "data"
- type: TYPE_ARRAY
- vector_size: 16
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::sensors::V1_0::Event"
- type: TYPE_STRUCT
- struct_value: {
- name: "timestamp"
- type: TYPE_SCALAR
- scalar_type: "int64_t"
- }
- struct_value: {
- name: "sensorHandle"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "sensorType"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::sensors::V1_0::SensorType"
- }
- struct_value: {
- name: "u"
- type: TYPE_UNION
- predefined_type: "::android::hardware::sensors::V1_0::EventPayload"
- }
-}
-
-attribute: {
- name: "::android::hardware::sensors::V1_0::RateLevel"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "STOP"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "NORMAL"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "FAST"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "VERY_FAST"
- scalar_value: {
- int32_t: 3
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::sensors::V1_0::SharedMemType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "ASHMEM"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "GRALLOC"
- scalar_value: {
- int32_t: 2
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::sensors::V1_0::SharedMemFormat"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "SENSORS_EVENT"
- scalar_value: {
- int32_t: 1
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::sensors::V1_0::SensorsEventFormatOffset"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint16_t"
-
- enumerator: "SIZE_FIELD"
- scalar_value: {
- uint16_t: 0
- }
- enumerator: "REPORT_TOKEN"
- scalar_value: {
- uint16_t: 4
- }
- enumerator: "SENSOR_TYPE"
- scalar_value: {
- uint16_t: 8
- }
- enumerator: "ATOMIC_COUNTER"
- scalar_value: {
- uint16_t: 12
- }
- enumerator: "TIMESTAMP"
- scalar_value: {
- uint16_t: 16
- }
- enumerator: "DATA"
- scalar_value: {
- uint16_t: 24
- }
- enumerator: "RESERVED"
- scalar_value: {
- uint16_t: 88
- }
- enumerator: "TOTAL_LENGTH"
- scalar_value: {
- uint16_t: 104
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::sensors::V1_0::SharedMemInfo"
- type: TYPE_STRUCT
- struct_value: {
- name: "type"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::sensors::V1_0::SharedMemType"
- }
- struct_value: {
- name: "format"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::sensors::V1_0::SharedMemFormat"
- }
- struct_value: {
- name: "size"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "memoryHandle"
- type: TYPE_HANDLE
- }
-}
-
diff --git a/soundtrigger/2.0/default/Android.mk b/soundtrigger/2.0/default/Android.mk
index 70c78e0..068c6b4 100644
--- a/soundtrigger/2.0/default/Android.mk
+++ b/soundtrigger/2.0/default/Android.mk
@@ -27,7 +27,6 @@
libhidlbase \
libhidltransport \
liblog \
- libhwbinder \
libutils \
libhardware \
android.hardware.soundtrigger@2.0 \
diff --git a/soundtrigger/2.0/vts/functional/Android.bp b/soundtrigger/2.0/vts/functional/Android.bp
index 8abdf06..269e4b6 100644
--- a/soundtrigger/2.0/vts/functional/Android.bp
+++ b/soundtrigger/2.0/vts/functional/Android.bp
@@ -15,21 +15,19 @@
//
cc_test {
- name: "soundtrigger_hidl_hal_test",
- gtest: true,
- srcs: ["soundtrigger_hidl_hal_test.cpp"],
+ name: "VtsHalSoundtriggerV2_0TargetTest",
+ srcs: ["VtsHalSoundtriggerV2_0TargetTest.cpp"],
shared_libs: [
"libbase",
"liblog",
"libcutils",
"libhidlbase",
"libhidltransport",
- "libhwbinder",
"libnativehelper",
"libutils",
"android.hardware.soundtrigger@2.0",
],
- static_libs: ["libgtest"],
+ static_libs: ["VtsHalHidlTargetBaseTest"],
cflags: [
"-O0",
"-g",
diff --git a/soundtrigger/2.0/vts/functional/soundtrigger_hidl_hal_test.cpp b/soundtrigger/2.0/vts/functional/VtsHalSoundtriggerV2_0TargetTest.cpp
similarity index 96%
rename from soundtrigger/2.0/vts/functional/soundtrigger_hidl_hal_test.cpp
rename to soundtrigger/2.0/vts/functional/VtsHalSoundtriggerV2_0TargetTest.cpp
index cb00ad5..41e7e69 100644
--- a/soundtrigger/2.0/vts/functional/soundtrigger_hidl_hal_test.cpp
+++ b/soundtrigger/2.0/vts/functional/VtsHalSoundtriggerV2_0TargetTest.cpp
@@ -22,7 +22,7 @@
#include <android/hardware/soundtrigger/2.0/ISoundTriggerHw.h>
#include <android/hardware/soundtrigger/2.0/types.h>
-#include <gtest/gtest.h>
+#include <VtsHalHidlTargetBaseTest.h>
using ::android::hardware::audio::common::V2_0::AudioDevice;
using ::android::hardware::soundtrigger::V2_0::SoundModelHandle;
@@ -37,10 +37,10 @@
using ::android::sp;
// The main test class for Sound Trigger HIDL HAL.
-class SoundTriggerHidlTest : public ::testing::Test {
+class SoundTriggerHidlTest : public ::testing::VtsHalHidlTargetBaseTest {
public:
virtual void SetUp() override {
- mSoundTriggerHal = ISoundTriggerHw::getService("sound_trigger.primary");
+ mSoundTriggerHal = ::testing::VtsHalHidlTargetBaseTest::getService<ISoundTriggerHw>("sound_trigger.primary");
ASSERT_NE(nullptr, mSoundTriggerHal.get());
mCallback = new MyCallback();
ASSERT_NE(nullptr, mCallback.get());
diff --git a/tests/Android.bp b/tests/Android.bp
index 337e4f4..997ba79 100644
--- a/tests/Android.bp
+++ b/tests/Android.bp
@@ -3,7 +3,9 @@
"bar/1.0",
"bar/1.0/default",
"baz/1.0",
+ "baz/1.0/default",
"expression/1.0",
+ "extension/light/2.0",
"foo/1.0",
"foo/1.0/default",
"foo/1.0/default/lib",
diff --git a/tests/bar/1.0/default/Android.bp b/tests/bar/1.0/default/Android.bp
index 2c79357..14506c5 100644
--- a/tests/bar/1.0/default/Android.bp
+++ b/tests/bar/1.0/default/Android.bp
@@ -14,7 +14,6 @@
"libcutils",
"libhidlbase",
"libhidltransport",
- "libhwbinder",
"liblog",
"libutils",
"android.hardware.tests.foo@1.0",
diff --git a/tests/baz/1.0/IBaz.hal b/tests/baz/1.0/IBaz.hal
index 40e4024..e4eb145 100644
--- a/tests/baz/1.0/IBaz.hal
+++ b/tests/baz/1.0/IBaz.hal
@@ -21,6 +21,14 @@
interface IBaz extends IBase {
+ enum BitField : uint8_t {
+ V0 = 1 << 0,
+ V1 = 1 << 1,
+ V2 = 1 << 2,
+ V3 = 1 << 3,
+ VALL = V0 | V1 | V2 | V3,
+ };
+
enum SomeOtherEnum : uint8_t {
bar = 66
};
@@ -45,6 +53,21 @@
vec<T> matrices;
};
+ struct Quux {
+ string first;
+ string last;
+ };
+ struct Everything {
+ int8_t number;
+ int32_t anotherNumber;
+ string s;
+ vec<string> vs;
+ string[2][2] multidimArray;
+ string[3] sArray;
+ Quux anotherStruct;
+ bitfield<BitField> bf;
+ };
+
@Fragile @NoReally(very="yes", array={"a","b","c"})
oneway doThis(float param);
diff --git a/tests/baz/1.0/default/Android.bp b/tests/baz/1.0/default/Android.bp
new file mode 100644
index 0000000..e160d8a
--- /dev/null
+++ b/tests/baz/1.0/default/Android.bp
@@ -0,0 +1,16 @@
+cc_library_shared {
+ name: "android.hardware.tests.baz@1.0-impl",
+ relative_install_path: "hw",
+ proprietary: true,
+ srcs: [
+ "Baz.cpp",
+ ],
+ shared_libs: [
+ "libbase",
+ "libhidlbase",
+ "libhidltransport",
+ "libutils",
+ "android.hardware.tests.baz@1.0",
+ "android.hidl.base@1.0",
+ ],
+}
diff --git a/tests/baz/1.0/default/Baz.cpp b/tests/baz/1.0/default/Baz.cpp
new file mode 100644
index 0000000..8e57fa0
--- /dev/null
+++ b/tests/baz/1.0/default/Baz.cpp
@@ -0,0 +1,519 @@
+#include "Baz.h"
+#include <android-base/logging.h>
+
+namespace android {
+namespace hardware {
+namespace tests {
+namespace baz {
+namespace V1_0 {
+namespace implementation {
+
+struct BazCallback : public IBazCallback {
+ Return<void> heyItsMe(const sp<IBazCallback> &cb) override;
+ Return<void> hey() override;
+};
+
+Return<void> BazCallback::heyItsMe(
+ const sp<IBazCallback> &cb) {
+ LOG(INFO) << "SERVER: heyItsMe cb = " << cb.get();
+
+ return Void();
+}
+
+Return<void> BazCallback::hey() {
+ LOG(INFO) << "SERVER: hey";
+
+ return Void();
+}
+
+// TODO(b/35703683) : replace usage of below methods with toString()
+
+static std::string to_string(const IBaz::Foo::Bar &bar);
+static std::string to_string(const IBaz::Foo &foo);
+static std::string to_string(const hidl_string &s);
+static std::string to_string(bool x);
+static std::string to_string(const IBaz::StringMatrix5x3 &M);
+static std::string to_string(const IBaz::StringMatrix3x5 &M);
+
+template<typename T, size_t SIZE>
+static std::string to_string(const hidl_array<T, SIZE> &array);
+
+template<size_t SIZE>
+static std::string to_string(const hidl_array<uint8_t, SIZE> &array);
+
+template<typename T>
+static std::string to_string(const hidl_vec<T> &vec) {
+ std::string out;
+ out = "[";
+ for (size_t i = 0; i < vec.size(); ++i) {
+ if (i > 0) {
+ out += ", ";
+ }
+ out += to_string(vec[i]);
+ }
+ out += "]";
+
+ return out;
+}
+
+template<typename T, size_t SIZE>
+static std::string to_string(const hidl_array<T, SIZE> &array) {
+ std::string out;
+ out = "[";
+ for (size_t i = 0; i < SIZE; ++i) {
+ if (i > 0) {
+ out += ", ";
+ }
+ out += to_string(array[i]);
+ }
+ out += "]";
+
+ return out;
+}
+
+template<size_t SIZE>
+static std::string to_string(const hidl_array<uint8_t, SIZE> &array) {
+ std::string out;
+ for (size_t i = 0; i < SIZE; ++i) {
+ if (i > 0) {
+ out += ":";
+ }
+
+ char tmp[3];
+ sprintf(tmp, "%02x", array[i]);
+
+ out += tmp;
+ }
+
+ return out;
+}
+
+template<typename T, size_t SIZE1, size_t SIZE2>
+static std::string to_string(const hidl_array<T, SIZE1, SIZE2> &array) {
+ std::string out;
+ out = "[";
+ for (size_t i = 0; i < SIZE1; ++i) {
+ if (i > 0) {
+ out += ", ";
+ }
+
+ out += "[";
+ for (size_t j = 0; j < SIZE2; ++j) {
+ if (j > 0) {
+ out += ", ";
+ }
+
+ out += to_string(array[i][j]);
+ }
+ out += "]";
+ }
+ out += "]";
+
+ return out;
+}
+
+static std::string to_string(bool x) {
+ return x ? "true" : "false";
+}
+
+static std::string to_string(const hidl_string &s) {
+ return std::string("'") + s.c_str() + "'";
+}
+
+static std::string to_string(const IBaz::Foo::Bar &bar) {
+ std::string out;
+ out = "Bar(";
+ out += "z = " + to_string(bar.z) + ", ";
+ out += "s = '" + std::string(bar.s.c_str()) + "'";
+ out += ")";
+
+ return out;
+}
+
+static std::string to_string(const IBaz::Foo &foo) {
+ std::string out;
+ out = "Foo(";
+ out += "x = " + to_string(foo.x) + ", ";
+ out += "y = " + to_string(foo.y) + ", ";
+ out += "aaa = " + to_string(foo.aaa);
+ out += ")";
+
+ return out;
+}
+
+static std::string to_string(const IBaz::StringMatrix5x3 &M) {
+ return to_string(M.s);
+}
+
+static std::string to_string(const IBaz::StringMatrix3x5 &M) {
+ return to_string(M.s);
+}
+
+static std::string VectorOfArray_to_string(const IBaz::VectorOfArray &in) {
+ std::string out;
+ out += "VectorOfArray(";
+
+ for (size_t i = 0; i < in.addresses.size(); ++i) {
+ if (i > 0) {
+ out += ", ";
+ }
+
+ for (size_t j = 0; j < 6; ++j) {
+ if (j > 0) {
+ out += ":";
+ }
+
+ char tmp[3];
+ sprintf(tmp, "%02x", in.addresses[i][j]);
+
+ out += tmp;
+ }
+ }
+
+ out += ")";
+
+ return out;
+}
+
+// Methods from ::android::hardware::tests::baz::V1_0::IBase follow.
+Return<void> Baz::someBaseMethod() {
+ LOG(INFO) << "Baz::someBaseMethod";
+
+ return Void();
+}
+
+Return<bool> Baz::someBoolMethod(bool x) {
+ LOG(INFO) << "Baz::someBoolMethod(" << to_string(x) << ")";
+
+ return !x;
+}
+
+Return<void> Baz::someBoolArrayMethod(const hidl_array<bool, 3>& x,
+ someBoolArrayMethod_cb _hidl_cb) {
+ LOG(INFO) << "Baz::someBoolArrayMethod("
+ << to_string(x[0])
+ << ", "
+ << to_string(x[1])
+ << ", "
+ << to_string(x[2])
+ << ")";
+
+ hidl_array<bool, 4> out;
+ out[0] = !x[0];
+ out[1] = !x[1];
+ out[2] = !x[2];
+ out[3] = true;
+
+ _hidl_cb(out);
+
+ return Void();
+}
+
+Return<void> Baz::someBoolVectorMethod(const hidl_vec<bool>& x, someBoolVectorMethod_cb _hidl_cb) {
+ LOG(INFO) << "Baz::someBoolVectorMethod(" << to_string(x) << ")";
+
+ hidl_vec<bool> out;
+ out.resize(x.size());
+ for (size_t i = 0; i < x.size(); ++i) {
+ out[i] = !x[i];
+ }
+
+ _hidl_cb(out);
+
+ return Void();
+}
+
+Return<void> Baz::someOtherBaseMethod(const IBase::Foo& foo, someOtherBaseMethod_cb _hidl_cb) {
+ LOG(INFO) << "Baz::someOtherBaseMethod "
+ << to_string(foo);
+
+ _hidl_cb(foo);
+
+ return Void();
+}
+
+Return<void> Baz::someMethodWithFooArrays(const hidl_array<IBase::Foo, 2>& fooInput,
+ someMethodWithFooArrays_cb _hidl_cb) {
+ LOG(INFO) << "Baz::someMethodWithFooArrays "
+ << to_string(fooInput);
+
+ hidl_array<IBaz::Foo, 2> fooOutput;
+ fooOutput[0] = fooInput[1];
+ fooOutput[1] = fooInput[0];
+
+ _hidl_cb(fooOutput);
+
+ return Void();
+}
+
+Return<void> Baz::someMethodWithFooVectors(const hidl_vec<IBase::Foo>& fooInput,
+ someMethodWithFooVectors_cb _hidl_cb) {
+ LOG(INFO) << "Baz::someMethodWithFooVectors "
+ << to_string(fooInput);
+
+ hidl_vec<IBaz::Foo> fooOutput;
+ fooOutput.resize(2);
+ fooOutput[0] = fooInput[1];
+ fooOutput[1] = fooInput[0];
+
+ _hidl_cb(fooOutput);
+
+ return Void();
+}
+
+Return<void> Baz::someMethodWithVectorOfArray(const IBase::VectorOfArray& in,
+ someMethodWithVectorOfArray_cb _hidl_cb) {
+ LOG(INFO) << "Baz::someMethodWithVectorOfArray "
+ << VectorOfArray_to_string(in);
+
+ IBase::VectorOfArray out;
+
+ const size_t n = in.addresses.size();
+ out.addresses.resize(n);
+
+ for (size_t i = 0; i < n; ++i) {
+ out.addresses[i] = in.addresses[n - 1 - i];
+ }
+
+ _hidl_cb(out);
+
+ return Void();
+}
+
+Return<void> Baz::someMethodTakingAVectorOfArray(const hidl_vec<hidl_array<uint8_t, 6>>& in,
+ someMethodTakingAVectorOfArray_cb _hidl_cb) {
+ LOG(INFO) << "Baz::someMethodTakingAVectorOfArray "
+ << to_string(in);
+
+ const size_t n = in.size();
+
+ hidl_vec<hidl_array<uint8_t, 6> > out;
+ out.resize(n);
+
+ for (size_t i = 0; i < n; ++i) {
+ out[i] = in[n - 1 - i];
+ }
+
+ _hidl_cb(out);
+
+ return Void();
+}
+
+Return<void> Baz::transpose(const IBase::StringMatrix5x3& in, transpose_cb _hidl_cb) {
+ LOG(INFO) << "Baz::transpose " << to_string(in);
+
+ IBase::StringMatrix3x5 out;
+ for (size_t i = 0; i < 3; ++i) {
+ for (size_t j = 0; j < 5; ++j) {
+ out.s[i][j] = in.s[j][i];
+ }
+ }
+
+ _hidl_cb(out);
+
+ return Void();
+}
+
+Return<void> Baz::transpose2(const hidl_array<hidl_string, 5, 3>& in, transpose2_cb _hidl_cb) {
+ LOG(INFO) << "Baz::transpose2 " << to_string(in);
+
+ hidl_array<hidl_string, 3, 5> out;
+ for (size_t i = 0; i < 3; ++i) {
+ for (size_t j = 0; j < 5; ++j) {
+ out[i][j] = in[j][i];
+ }
+ }
+
+ _hidl_cb(out);
+
+ return Void();
+}
+
+Return<void> Baz::takeAMask(IBase::BitField bf,
+ uint8_t first,
+ const IBase::MyMask& second,
+ uint8_t third,
+ takeAMask_cb _hidl_cb) {
+ _hidl_cb(bf, bf | first, second.value & bf, (bf | bf) & third);
+ return Void();
+}
+
+// Methods from ::android::hardware::tests::baz::V1_0::IBaz follow.
+
+Return<void> Baz::doThis(float param) {
+ LOG(INFO) << "Baz::doThis(" << param << ")";
+
+ return Void();
+}
+
+Return<int32_t> Baz::doThatAndReturnSomething(int64_t param) {
+ LOG(INFO) << "Baz::doThatAndReturnSomething(" << param << ")";
+
+ return 666;
+}
+
+Return<double> Baz::doQuiteABit(int32_t a, int64_t b, float c, double d) {
+ LOG(INFO) << "Baz::doQuiteABit("
+ << a
+ << ", "
+ << b
+ << ", "
+ << c
+ << ", "
+ << d
+ << ")";
+
+ return 666.5;
+}
+
+Return<void> Baz::doSomethingElse(const hidl_array<int32_t, 15>& param,
+ doSomethingElse_cb _hidl_cb) {
+ LOG(INFO) << "Baz::doSomethingElse(...)";
+
+ hidl_array<int32_t, 32> result;
+ for (size_t i = 0; i < 15; ++i) {
+ result[i] = 2 * param[i];
+ result[15 + i] = param[i];
+ }
+ result[30] = 1;
+ result[31] = 2;
+
+ _hidl_cb(result);
+
+ return Void();
+}
+
+Return<void> Baz::doStuffAndReturnAString(doStuffAndReturnAString_cb _hidl_cb) {
+ LOG(INFO) << "doStuffAndReturnAString";
+
+ hidl_string s;
+ s = "Hello, world!";
+
+ _hidl_cb(s);
+
+ return Void();
+}
+
+Return<void> Baz::mapThisVector(const hidl_vec<int32_t>& param, mapThisVector_cb _hidl_cb) {
+ LOG(INFO) << "mapThisVector";
+
+ hidl_vec<int32_t> out;
+ out.resize(param.size());
+ for (size_t i = 0; i < param.size(); ++i) {
+ out[i] = param[i] * 2;
+ }
+
+ _hidl_cb(out);
+
+ return Void();
+}
+
+Return<void> Baz::callMe(const sp<IBazCallback>& cb) {
+ LOG(INFO) << "callMe " << cb.get();
+
+ if (cb != NULL) {
+ sp<IBazCallback> my_cb = new BazCallback;
+ cb->heyItsMe(my_cb);
+ }
+
+ return Void();
+}
+
+Return<void> Baz::callMeLater(const sp<IBazCallback>& cb) {
+ LOG(INFO) << "callMeLater " << cb.get();
+
+ mStoredCallback = cb;
+
+ return Void();
+}
+
+Return<void> Baz::iAmFreeNow() {
+ if (mStoredCallback != nullptr) {
+ mStoredCallback->hey();
+ }
+ return Void();
+}
+
+Return<void> Baz::dieNow() {
+ exit(1);
+ return Void();
+}
+
+Return<IBaz::SomeEnum> Baz::useAnEnum(IBaz::SomeEnum zzz) {
+ LOG(INFO) << "useAnEnum " << (int)zzz;
+
+ return SomeEnum::goober;
+}
+
+Return<void> Baz::haveSomeStrings(const hidl_array<hidl_string, 3>& array,
+ haveSomeStrings_cb _hidl_cb) {
+ LOG(INFO) << "haveSomeStrings("
+ << to_string(array)
+ << ")";
+
+ hidl_array<hidl_string, 2> result;
+ result[0] = "Hello";
+ result[1] = "World";
+
+ _hidl_cb(result);
+
+ return Void();
+}
+
+Return<void> Baz::haveAStringVec(const hidl_vec<hidl_string>& vector,
+ haveAStringVec_cb _hidl_cb) {
+ LOG(INFO) << "haveAStringVec(" << to_string(vector) << ")";
+
+ hidl_vec<hidl_string> result;
+ result.resize(2);
+
+ result[0] = "Hello";
+ result[1] = "World";
+
+ _hidl_cb(result);
+
+ return Void();
+}
+
+Return<void> Baz::returnABunchOfStrings(returnABunchOfStrings_cb _hidl_cb) {
+ hidl_string eins; eins = "Eins";
+ hidl_string zwei; zwei = "Zwei";
+ hidl_string drei; drei = "Drei";
+ _hidl_cb(eins, zwei, drei);
+
+ return Void();
+}
+
+Return<uint8_t> Baz::returnABitField() {
+ return 0;
+}
+
+Return<uint32_t> Baz::size(uint32_t size) {
+ return size;
+}
+
+Return<void> Baz::getNestedStructs(getNestedStructs_cb _hidl_cb) {
+ int size = 5;
+ hidl_vec<IBaz::NestedStruct> result;
+ result.resize(size);
+ for (int i = 0; i < size; i++) {
+ result[i].a = i;
+ if (i == 1) {
+ result[i].matrices.resize(6);
+ }
+ }
+ _hidl_cb(result);
+ return Void();
+}
+// Methods from ::android::hidl::base::V1_0::IBase follow.
+
+IBaz* HIDL_FETCH_IBaz(const char* /* name */) {
+ return new Baz();
+}
+
+} // namespace implementation
+} // namespace V1_0
+} // namespace baz
+} // namespace tests
+} // namespace hardware
+} // namespace android
diff --git a/tests/baz/1.0/default/Baz.h b/tests/baz/1.0/default/Baz.h
new file mode 100644
index 0000000..ceb3035
--- /dev/null
+++ b/tests/baz/1.0/default/Baz.h
@@ -0,0 +1,92 @@
+#ifndef ANDROID_HARDWARE_TESTS_BAZ_V1_0_BAZ_H
+#define ANDROID_HARDWARE_TESTS_BAZ_V1_0_BAZ_H
+
+#include <android/hardware/tests/baz/1.0/IBaz.h>
+#include <hidl/MQDescriptor.h>
+#include <hidl/Status.h>
+
+namespace android {
+namespace hardware {
+namespace tests {
+namespace baz {
+namespace V1_0 {
+namespace implementation {
+
+// using ::android::hardware::tests::baz::V1_0::IBase;
+using ::android::hardware::tests::baz::V1_0::IBaz;
+using ::android::hardware::tests::baz::V1_0::IBazCallback;
+using ::android::hidl::base::V1_0::DebugInfo;
+using ::android::hidl::base::V1_0::IBase;
+using ::android::hardware::hidl_array;
+using ::android::hardware::hidl_memory;
+using ::android::hardware::hidl_string;
+using ::android::hardware::hidl_vec;
+using ::android::hardware::Return;
+using ::android::hardware::Void;
+using ::android::sp;
+
+struct Baz : public IBaz {
+ // Methods from ::android::hardware::tests::baz::V1_0::IBase follow.
+ Return<void> someBaseMethod() override;
+ Return<bool> someBoolMethod(bool x) override;
+ Return<void> someBoolArrayMethod(const hidl_array<bool, 3>& x,
+ someBoolArrayMethod_cb _hidl_cb) override;
+ Return<void> someBoolVectorMethod(const hidl_vec<bool>& x,
+ someBoolVectorMethod_cb _hidl_cb) override;
+ Return<void> someOtherBaseMethod(const IBase::Foo& foo,
+ someOtherBaseMethod_cb _hidl_cb) override;
+ Return<void> someMethodWithFooArrays(const hidl_array<IBase::Foo, 2>& fooInput,
+ someMethodWithFooArrays_cb _hidl_cb) override;
+ Return<void> someMethodWithFooVectors(const hidl_vec<IBase::Foo>& fooInput,
+ someMethodWithFooVectors_cb _hidl_cb) override;
+ Return<void> someMethodWithVectorOfArray(const IBase::VectorOfArray& in,
+ someMethodWithVectorOfArray_cb _hidl_cb) override;
+ Return<void> someMethodTakingAVectorOfArray(const hidl_vec<hidl_array<uint8_t, 6>>& in,
+ someMethodTakingAVectorOfArray_cb _hidl_cb) override;
+ Return<void> transpose(const IBase::StringMatrix5x3& in,
+ transpose_cb _hidl_cb) override;
+ Return<void> transpose2(const hidl_array<hidl_string, 5, 3>& in,
+ transpose2_cb _hidl_cb) override;
+ Return<void> takeAMask(IBase::BitField bf,
+ uint8_t first,
+ const IBase::MyMask& second,
+ uint8_t third,
+ takeAMask_cb _hidl_cb) override;
+
+ // Methods from ::android::hardware::tests::baz::V1_0::IBaz follow.
+ Return<void> doThis(float param) override;
+ Return<int32_t> doThatAndReturnSomething(int64_t param) override;
+ Return<double> doQuiteABit(int32_t a, int64_t b, float c, double d) override;
+ Return<void> doSomethingElse(const hidl_array<int32_t, 15>& param,
+ doSomethingElse_cb _hidl_cb) override;
+ Return<void> doStuffAndReturnAString(doStuffAndReturnAString_cb _hidl_cb) override;
+ Return<void> mapThisVector(const hidl_vec<int32_t>& param, mapThisVector_cb _hidl_cb) override;
+ Return<void> callMe(const sp<IBazCallback>& cb) override;
+ Return<void> callMeLater(const sp<IBazCallback>& cb) override;
+ Return<void> iAmFreeNow() override;
+ Return<void> dieNow() override;
+ Return<IBaz::SomeEnum> useAnEnum(IBaz::SomeEnum zzz) override;
+ Return<void> haveSomeStrings(const hidl_array<hidl_string, 3>& array,
+ haveSomeStrings_cb _hidl_cb) override;
+ Return<void> haveAStringVec(const hidl_vec<hidl_string>& vector,
+ haveAStringVec_cb _hidl_cb) override;
+ Return<void> returnABunchOfStrings(returnABunchOfStrings_cb _hidl_cb) override;
+ Return<uint8_t> returnABitField() override;
+ Return<uint32_t> size(uint32_t size) override;
+ Return<void> getNestedStructs(getNestedStructs_cb _hidl_cb) override;
+
+ // Methods from ::android::hidl::base::V1_0::IBase follow.
+ private:
+ sp<IBazCallback> mStoredCallback;
+};
+
+extern "C" IBaz* HIDL_FETCH_IBaz(const char* name);
+
+} // namespace implementation
+} // namespace V1_0
+} // namespace baz
+} // namespace tests
+} // namespace hardware
+} // namespace android
+
+#endif // ANDROID_HARDWARE_TESTS_BAZ_V1_0_BAZ_H
diff --git a/tests/extension/light/2.0/Android.bp b/tests/extension/light/2.0/Android.bp
new file mode 100644
index 0000000..5203da6
--- /dev/null
+++ b/tests/extension/light/2.0/Android.bp
@@ -0,0 +1,62 @@
+// This file is autogenerated by hidl-gen. Do not edit manually.
+
+filegroup {
+ name: "android.hardware.tests.extension.light@2.0_hal",
+ srcs: [
+ "types.hal",
+ "IExtLight.hal",
+ ],
+}
+
+genrule {
+ name: "android.hardware.tests.extension.light@2.0_genc++",
+ tools: ["hidl-gen"],
+ cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.extension.light@2.0",
+ srcs: [
+ ":android.hardware.tests.extension.light@2.0_hal",
+ ],
+ out: [
+ "android/hardware/tests/extension/light/2.0/types.cpp",
+ "android/hardware/tests/extension/light/2.0/ExtLightAll.cpp",
+ ],
+}
+
+genrule {
+ name: "android.hardware.tests.extension.light@2.0_genc++_headers",
+ tools: ["hidl-gen"],
+ cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.extension.light@2.0",
+ srcs: [
+ ":android.hardware.tests.extension.light@2.0_hal",
+ ],
+ out: [
+ "android/hardware/tests/extension/light/2.0/types.h",
+ "android/hardware/tests/extension/light/2.0/IExtLight.h",
+ "android/hardware/tests/extension/light/2.0/IHwExtLight.h",
+ "android/hardware/tests/extension/light/2.0/BnHwExtLight.h",
+ "android/hardware/tests/extension/light/2.0/BpHwExtLight.h",
+ "android/hardware/tests/extension/light/2.0/BsExtLight.h",
+ ],
+}
+
+cc_library_shared {
+ name: "android.hardware.tests.extension.light@2.0",
+ generated_sources: ["android.hardware.tests.extension.light@2.0_genc++"],
+ generated_headers: ["android.hardware.tests.extension.light@2.0_genc++_headers"],
+ export_generated_headers: ["android.hardware.tests.extension.light@2.0_genc++_headers"],
+ shared_libs: [
+ "libhidlbase",
+ "libhidltransport",
+ "libhwbinder",
+ "liblog",
+ "libutils",
+ "libcutils",
+ "android.hardware.light@2.0",
+ ],
+ export_shared_lib_headers: [
+ "libhidlbase",
+ "libhidltransport",
+ "libhwbinder",
+ "libutils",
+ "android.hardware.light@2.0",
+ ],
+}
diff --git a/example/extension/light/2.0/Android.mk b/tests/extension/light/2.0/Android.mk
similarity index 77%
rename from example/extension/light/2.0/Android.mk
rename to tests/extension/light/2.0/Android.mk
index 0b79747..16424a3 100644
--- a/example/extension/light/2.0/Android.mk
+++ b/tests/extension/light/2.0/Android.mk
@@ -5,7 +5,7 @@
################################################################################
include $(CLEAR_VARS)
-LOCAL_MODULE := android.hardware.example.extension.light@2.0-java
+LOCAL_MODULE := android.hardware.tests.extension.light@2.0-java
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
intermediates := $(call local-generated-sources-dir, COMMON)
@@ -20,7 +20,7 @@
#
# Build types.hal (Default)
#
-GEN := $(intermediates)/android/hardware/example/extension/light/V2_0/Default.java
+GEN := $(intermediates)/android/hardware/tests/extension/light/V2_0/Default.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -30,7 +30,7 @@
-Ljava \
-randroid.hardware:hardware/interfaces \
-randroid.hidl:system/libhidl/transport \
- android.hardware.example.extension.light@2.0::types.Default
+ android.hardware.tests.extension.light@2.0::types.Default
$(GEN): $(LOCAL_PATH)/types.hal
$(transform-generated-source)
@@ -39,7 +39,7 @@
#
# Build types.hal (ExtBrightness)
#
-GEN := $(intermediates)/android/hardware/example/extension/light/V2_0/ExtBrightness.java
+GEN := $(intermediates)/android/hardware/tests/extension/light/V2_0/ExtBrightness.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -49,7 +49,7 @@
-Ljava \
-randroid.hardware:hardware/interfaces \
-randroid.hidl:system/libhidl/transport \
- android.hardware.example.extension.light@2.0::types.ExtBrightness
+ android.hardware.tests.extension.light@2.0::types.ExtBrightness
$(GEN): $(LOCAL_PATH)/types.hal
$(transform-generated-source)
@@ -58,7 +58,7 @@
#
# Build types.hal (ExtLightState)
#
-GEN := $(intermediates)/android/hardware/example/extension/light/V2_0/ExtLightState.java
+GEN := $(intermediates)/android/hardware/tests/extension/light/V2_0/ExtLightState.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -68,7 +68,7 @@
-Ljava \
-randroid.hardware:hardware/interfaces \
-randroid.hidl:system/libhidl/transport \
- android.hardware.example.extension.light@2.0::types.ExtLightState
+ android.hardware.tests.extension.light@2.0::types.ExtLightState
$(GEN): $(LOCAL_PATH)/types.hal
$(transform-generated-source)
@@ -77,7 +77,7 @@
#
# Build IExtLight.hal
#
-GEN := $(intermediates)/android/hardware/example/extension/light/V2_0/IExtLight.java
+GEN := $(intermediates)/android/hardware/tests/extension/light/V2_0/IExtLight.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IExtLight.hal
@@ -89,7 +89,7 @@
-Ljava \
-randroid.hardware:hardware/interfaces \
-randroid.hidl:system/libhidl/transport \
- android.hardware.example.extension.light@2.0::IExtLight
+ android.hardware.tests.extension.light@2.0::IExtLight
$(GEN): $(LOCAL_PATH)/IExtLight.hal
$(transform-generated-source)
@@ -100,7 +100,7 @@
################################################################################
include $(CLEAR_VARS)
-LOCAL_MODULE := android.hardware.example.extension.light@2.0-java-static
+LOCAL_MODULE := android.hardware.tests.extension.light@2.0-java-static
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
intermediates := $(call local-generated-sources-dir, COMMON)
@@ -115,7 +115,7 @@
#
# Build types.hal (Default)
#
-GEN := $(intermediates)/android/hardware/example/extension/light/V2_0/Default.java
+GEN := $(intermediates)/android/hardware/tests/extension/light/V2_0/Default.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -125,7 +125,7 @@
-Ljava \
-randroid.hardware:hardware/interfaces \
-randroid.hidl:system/libhidl/transport \
- android.hardware.example.extension.light@2.0::types.Default
+ android.hardware.tests.extension.light@2.0::types.Default
$(GEN): $(LOCAL_PATH)/types.hal
$(transform-generated-source)
@@ -134,7 +134,7 @@
#
# Build types.hal (ExtBrightness)
#
-GEN := $(intermediates)/android/hardware/example/extension/light/V2_0/ExtBrightness.java
+GEN := $(intermediates)/android/hardware/tests/extension/light/V2_0/ExtBrightness.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -144,7 +144,7 @@
-Ljava \
-randroid.hardware:hardware/interfaces \
-randroid.hidl:system/libhidl/transport \
- android.hardware.example.extension.light@2.0::types.ExtBrightness
+ android.hardware.tests.extension.light@2.0::types.ExtBrightness
$(GEN): $(LOCAL_PATH)/types.hal
$(transform-generated-source)
@@ -153,7 +153,7 @@
#
# Build types.hal (ExtLightState)
#
-GEN := $(intermediates)/android/hardware/example/extension/light/V2_0/ExtLightState.java
+GEN := $(intermediates)/android/hardware/tests/extension/light/V2_0/ExtLightState.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
@@ -163,7 +163,7 @@
-Ljava \
-randroid.hardware:hardware/interfaces \
-randroid.hidl:system/libhidl/transport \
- android.hardware.example.extension.light@2.0::types.ExtLightState
+ android.hardware.tests.extension.light@2.0::types.ExtLightState
$(GEN): $(LOCAL_PATH)/types.hal
$(transform-generated-source)
@@ -172,7 +172,7 @@
#
# Build IExtLight.hal
#
-GEN := $(intermediates)/android/hardware/example/extension/light/V2_0/IExtLight.java
+GEN := $(intermediates)/android/hardware/tests/extension/light/V2_0/IExtLight.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IExtLight.hal
@@ -184,7 +184,7 @@
-Ljava \
-randroid.hardware:hardware/interfaces \
-randroid.hidl:system/libhidl/transport \
- android.hardware.example.extension.light@2.0::IExtLight
+ android.hardware.tests.extension.light@2.0::IExtLight
$(GEN): $(LOCAL_PATH)/IExtLight.hal
$(transform-generated-source)
diff --git a/example/extension/light/2.0/IExtLight.hal b/tests/extension/light/2.0/IExtLight.hal
similarity index 95%
rename from example/extension/light/2.0/IExtLight.hal
rename to tests/extension/light/2.0/IExtLight.hal
index f12a272..1515b86 100644
--- a/example/extension/light/2.0/IExtLight.hal
+++ b/tests/extension/light/2.0/IExtLight.hal
@@ -17,7 +17,7 @@
// Would normally be 'vendor.example.extension.light@2.0' however, this is
// a google extension example. A vendor extension should also live in the
// vendor partition.
-package android.hardware.example.extension.light@2.0;
+package android.hardware.tests.extension.light@2.0;
import android.hardware.light@2.0;
diff --git a/tests/extension/light/2.0/default/Android.mk b/tests/extension/light/2.0/default/Android.mk
new file mode 100644
index 0000000..b30d11c
--- /dev/null
+++ b/tests/extension/light/2.0/default/Android.mk
@@ -0,0 +1,19 @@
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := android.hardware.tests.extension.light@2.0-service
+LOCAL_INIT_RC := android.hardware.tests.extension.light@2.0-service.rc
+LOCAL_PROPRIETARY_MODULE := true
+LOCAL_MODULE_RELATIVE_PATH := hw
+LOCAL_SRC_FILES := \
+ Light.cpp \
+ service.cpp
+
+LOCAL_SHARED_LIBRARIES := \
+ libhidlbase \
+ libhidltransport \
+ libutils \
+ android.hardware.light@2.0 \
+ android.hardware.tests.extension.light@2.0 \
+
+include $(BUILD_EXECUTABLE)
diff --git a/example/extension/light/2.0/default/Light.cpp b/tests/extension/light/2.0/default/Light.cpp
similarity index 97%
rename from example/extension/light/2.0/default/Light.cpp
rename to tests/extension/light/2.0/default/Light.cpp
index 2e56319..d941e73 100644
--- a/example/extension/light/2.0/default/Light.cpp
+++ b/tests/extension/light/2.0/default/Light.cpp
@@ -17,7 +17,7 @@
namespace android {
namespace hardware {
-namespace example {
+namespace tests {
namespace extension {
namespace light {
namespace V2_0 {
@@ -66,6 +66,6 @@
} // namespace V2_0
} // namespace light
} // namespace extension
-} // namespace example
+} // namespace tests
} // namespace hardware
} // namespace android
diff --git a/example/extension/light/2.0/default/Light.h b/tests/extension/light/2.0/default/Light.h
similarity index 79%
rename from example/extension/light/2.0/default/Light.h
rename to tests/extension/light/2.0/default/Light.h
index e3b60df..dc2c5dd 100644
--- a/example/extension/light/2.0/default/Light.h
+++ b/tests/extension/light/2.0/default/Light.h
@@ -13,23 +13,23 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-#ifndef ANDROID_HARDWARE_EXAMPLE_EXTENSION_LIGHT_V2_0_LIGHT_H
-#define ANDROID_HARDWARE_EXAMPLE_EXTENSION_LIGHT_V2_0_LIGHT_H
+#ifndef ANDROID_HARDWARE_TESTS_EXTENSION_LIGHT_V2_0_LIGHT_H
+#define ANDROID_HARDWARE_TESTS_EXTENSION_LIGHT_V2_0_LIGHT_H
-#include <android/hardware/example/extension/light/2.0/IExtLight.h>
+#include <android/hardware/tests/extension/light/2.0/IExtLight.h>
#include <hidl/Status.h>
#include <hidl/MQDescriptor.h>
namespace android {
namespace hardware {
-namespace example {
+namespace tests {
namespace extension {
namespace light {
namespace V2_0 {
namespace implementation {
-using ::android::hardware::example::extension::light::V2_0::ExtLightState;
-using ::android::hardware::example::extension::light::V2_0::IExtLight;
+using ::android::hardware::tests::extension::light::V2_0::ExtLightState;
+using ::android::hardware::tests::extension::light::V2_0::IExtLight;
using ::android::hardware::light::V2_0::ILight;
using ::android::hardware::light::V2_0::LightState;
using ::android::hardware::light::V2_0::Status;
@@ -54,8 +54,8 @@
} // namespace V2_0
} // namespace light
} // namespace extension
-} // namespace example
+} // namespace tests
} // namespace hardware
} // namespace android
-#endif // ANDROID_HARDWARE_EXAMPLE_EXTENSION_LIGHT_V2_0_LIGHT_H
+#endif // ANDROID_HARDWARE_TESTS_EXTENSION_LIGHT_V2_0_LIGHT_H
diff --git a/tests/extension/light/2.0/default/android.hardware.tests.extension.light@2.0-service.rc b/tests/extension/light/2.0/default/android.hardware.tests.extension.light@2.0-service.rc
new file mode 100644
index 0000000..8f379ee
--- /dev/null
+++ b/tests/extension/light/2.0/default/android.hardware.tests.extension.light@2.0-service.rc
@@ -0,0 +1,4 @@
+service light-ext-2-0 /vendor/bin/hw/android.hardware.tests.extension.light@2.0-service
+ class hal
+ user system
+ group system
\ No newline at end of file
diff --git a/example/extension/light/2.0/default/service.cpp b/tests/extension/light/2.0/default/service.cpp
similarity index 87%
rename from example/extension/light/2.0/default/service.cpp
rename to tests/extension/light/2.0/default/service.cpp
index 07afe79..4d839b2 100644
--- a/example/extension/light/2.0/default/service.cpp
+++ b/tests/extension/light/2.0/default/service.cpp
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-#define LOG_TAG "android.hardware.light@2.0-service"
+#define LOG_TAG "android.hardware.tests.extension.light@2.0-service"
#include <android/log.h>
#include <hidl/HidlTransportSupport.h>
@@ -24,8 +24,8 @@
using android::hardware::joinRpcThreadpool;
using android::sp;
-// Generated HIDL files
using android::hardware::light::V2_0::ILight;
+using android::hardware::tests::extension::light::V2_0::implementation::Light;
int main() {
android::sp<ILight> service = new Light();
diff --git a/example/extension/light/2.0/types.hal b/tests/extension/light/2.0/types.hal
similarity index 97%
rename from example/extension/light/2.0/types.hal
rename to tests/extension/light/2.0/types.hal
index 5be41bb..1b09479 100644
--- a/example/extension/light/2.0/types.hal
+++ b/tests/extension/light/2.0/types.hal
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package android.hardware.example.extension.light@2.0;
+package android.hardware.tests.extension.light@2.0;
import android.hardware.light@2.0;
diff --git a/tests/foo/1.0/IFoo.hal b/tests/foo/1.0/IFoo.hal
index 76aefcf..a43b883 100644
--- a/tests/foo/1.0/IFoo.hal
+++ b/tests/foo/1.0/IFoo.hal
@@ -38,6 +38,7 @@
V1 = 1 << 1,
V2 = 1 << 2,
V3 = 1 << 3,
+ VALL = V0 | V1 | V2 | V3,
};
struct Fumble {
diff --git a/tests/foo/1.0/default/Android.bp b/tests/foo/1.0/default/Android.bp
index f4a80d5..77e617c 100644
--- a/tests/foo/1.0/default/Android.bp
+++ b/tests/foo/1.0/default/Android.bp
@@ -14,7 +14,6 @@
"libhidlbase",
"libhidltransport",
"libfootest",
- "libhwbinder",
"liblog",
"libutils",
"android.hardware.tests.foo@1.0",
diff --git a/tests/foo/1.0/default/lib/Android.bp b/tests/foo/1.0/default/lib/Android.bp
index 7873203..708cf43 100644
--- a/tests/foo/1.0/default/lib/Android.bp
+++ b/tests/foo/1.0/default/lib/Android.bp
@@ -7,7 +7,6 @@
shared_libs: [
"libhidlbase",
"libhidltransport",
- "libhwbinder",
"android.hardware.tests.foo@1.0",
],
local_include_dirs: ["include/hidl-test"],
diff --git a/tests/inheritance/1.0/default/Android.bp b/tests/inheritance/1.0/default/Android.bp
index 090c36e..a67dc09 100644
--- a/tests/inheritance/1.0/default/Android.bp
+++ b/tests/inheritance/1.0/default/Android.bp
@@ -14,7 +14,6 @@
"libbase",
"libhidlbase",
"libhidltransport",
- "libhwbinder",
"liblog",
"libutils",
"android.hardware.tests.inheritance@1.0",
diff --git a/tests/libhwbinder/1.0/default/Android.bp b/tests/libhwbinder/1.0/default/Android.bp
index 0edabfc..6e8fbb1 100644
--- a/tests/libhwbinder/1.0/default/Android.bp
+++ b/tests/libhwbinder/1.0/default/Android.bp
@@ -10,7 +10,6 @@
"libbase",
"libhidlbase",
"libhidltransport",
- "libhwbinder",
"liblog",
"libutils",
"android.hardware.tests.libhwbinder@1.0",
diff --git a/tests/memory/1.0/default/Android.bp b/tests/memory/1.0/default/Android.bp
index 14dc08d..40716da 100644
--- a/tests/memory/1.0/default/Android.bp
+++ b/tests/memory/1.0/default/Android.bp
@@ -22,7 +22,6 @@
shared_libs: [
"libhidlbase",
"libhidltransport",
- "libhwbinder",
"libhidlmemory",
"liblog",
"libutils",
diff --git a/tests/msgq/1.0/ITestMsgQ.hal b/tests/msgq/1.0/ITestMsgQ.hal
index 3ed1b37..dfb9be4 100644
--- a/tests/msgq/1.0/ITestMsgQ.hal
+++ b/tests/msgq/1.0/ITestMsgQ.hal
@@ -34,15 +34,19 @@
generates(bool ret, fmq_sync<uint16_t> mqDesc);
/*
- * This method requests the service to set up an unsynchronized write
- * wait-free FMQ with the client as reader.
+ * This method requests the service to return an MQDescriptor to
+ * an unsynchronized FMQ set up by the server. If 'configureFmq' is
+ * true, then the server sets up a new unsynchronized FMQ. This
+ * method is to be used to test multiple reader processes.
*
- * @return ret True if the setup is successful.
- * @return mqDesc This structure describes the FMQ that was
+ * @param configureFmq The server sets up a new unsynchronized FMQ if
+ * this parameter is true.
+ *
+ * @return ret True if successful.
+ * @return mqDesc This structure describes the unsynchronized FMQ that was
* set up by the service. Client can use it to set up the FMQ at its end.
*/
- configureFmqUnsyncWrite()
- generates(bool ret, fmq_unsync<uint16_t> mqDesc);
+ getFmqUnsyncWrite(bool configureFmq) generates(bool ret, fmq_unsync<uint16_t> mqDesc);
/*
* This method request the service to write into the synchronized read/write
diff --git a/tests/pointer/1.0/default/Android.bp b/tests/pointer/1.0/default/Android.bp
index ab7f8fa..c4dc013 100644
--- a/tests/pointer/1.0/default/Android.bp
+++ b/tests/pointer/1.0/default/Android.bp
@@ -14,7 +14,6 @@
"libhidlbase",
"libhidltransport",
"libpointertest",
- "libhwbinder",
"liblog",
"libutils",
"android.hardware.tests.pointer@1.0",
diff --git a/tests/pointer/1.0/default/lib/Android.bp b/tests/pointer/1.0/default/lib/Android.bp
index a7203c7..7737932 100644
--- a/tests/pointer/1.0/default/lib/Android.bp
+++ b/tests/pointer/1.0/default/lib/Android.bp
@@ -8,7 +8,6 @@
"libbase",
"libhidlbase",
"libhidltransport",
- "libhwbinder",
"liblog",
"android.hardware.tests.pointer@1.0",
],
diff --git a/tests/versioning/1.0/Android.bp b/tests/versioning/1.0/Android.bp
index fd331f2..fbabc10 100644
--- a/tests/versioning/1.0/Android.bp
+++ b/tests/versioning/1.0/Android.bp
@@ -12,7 +12,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.versioning@1.0",
srcs: [
- "IFoo.hal",
+ ":android.hardware.tests.versioning@1.0_hal",
],
out: [
"android/hardware/tests/versioning/1.0/FooAll.cpp",
@@ -24,7 +24,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.versioning@1.0",
srcs: [
- "IFoo.hal",
+ ":android.hardware.tests.versioning@1.0_hal",
],
out: [
"android/hardware/tests/versioning/1.0/IFoo.h",
diff --git a/tests/versioning/1.0/Android.mk b/tests/versioning/1.0/Android.mk
index 753ad0c..ba18384 100644
--- a/tests/versioning/1.0/Android.mk
+++ b/tests/versioning/1.0/Android.mk
@@ -8,7 +8,7 @@
LOCAL_MODULE := android.hardware.tests.versioning@1.0-java
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
@@ -43,7 +43,7 @@
LOCAL_MODULE := android.hardware.tests.versioning@1.0-java-static
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
diff --git a/tests/versioning/2.2/Android.bp b/tests/versioning/2.2/Android.bp
index 5e90105..953b6df 100644
--- a/tests/versioning/2.2/Android.bp
+++ b/tests/versioning/2.2/Android.bp
@@ -13,8 +13,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.versioning@2.2",
srcs: [
- "IBar.hal",
- "IFoo.hal",
+ ":android.hardware.tests.versioning@2.2_hal",
],
out: [
"android/hardware/tests/versioning/2.2/BarAll.cpp",
@@ -27,8 +26,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.versioning@2.2",
srcs: [
- "IBar.hal",
- "IFoo.hal",
+ ":android.hardware.tests.versioning@2.2_hal",
],
out: [
"android/hardware/tests/versioning/2.2/IBar.h",
diff --git a/tests/versioning/2.2/Android.mk b/tests/versioning/2.2/Android.mk
index 6376652..e2a2ff7 100644
--- a/tests/versioning/2.2/Android.mk
+++ b/tests/versioning/2.2/Android.mk
@@ -8,7 +8,7 @@
LOCAL_MODULE := android.hardware.tests.versioning@2.2-java
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
@@ -62,7 +62,7 @@
LOCAL_MODULE := android.hardware.tests.versioning@2.2-java-static
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
diff --git a/tests/versioning/2.3/Android.bp b/tests/versioning/2.3/Android.bp
index 1489539..122c484 100644
--- a/tests/versioning/2.3/Android.bp
+++ b/tests/versioning/2.3/Android.bp
@@ -4,6 +4,7 @@
name: "android.hardware.tests.versioning@2.3_hal",
srcs: [
"IBar.hal",
+ "IBaz.hal",
"IFoo.hal",
],
}
@@ -13,11 +14,11 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.versioning@2.3",
srcs: [
- "IBar.hal",
- "IFoo.hal",
+ ":android.hardware.tests.versioning@2.3_hal",
],
out: [
"android/hardware/tests/versioning/2.3/BarAll.cpp",
+ "android/hardware/tests/versioning/2.3/BazAll.cpp",
"android/hardware/tests/versioning/2.3/FooAll.cpp",
],
}
@@ -27,8 +28,7 @@
tools: ["hidl-gen"],
cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.tests.versioning@2.3",
srcs: [
- "IBar.hal",
- "IFoo.hal",
+ ":android.hardware.tests.versioning@2.3_hal",
],
out: [
"android/hardware/tests/versioning/2.3/IBar.h",
@@ -36,6 +36,11 @@
"android/hardware/tests/versioning/2.3/BnHwBar.h",
"android/hardware/tests/versioning/2.3/BpHwBar.h",
"android/hardware/tests/versioning/2.3/BsBar.h",
+ "android/hardware/tests/versioning/2.3/IBaz.h",
+ "android/hardware/tests/versioning/2.3/IHwBaz.h",
+ "android/hardware/tests/versioning/2.3/BnHwBaz.h",
+ "android/hardware/tests/versioning/2.3/BpHwBaz.h",
+ "android/hardware/tests/versioning/2.3/BsBaz.h",
"android/hardware/tests/versioning/2.3/IFoo.h",
"android/hardware/tests/versioning/2.3/IHwFoo.h",
"android/hardware/tests/versioning/2.3/BnHwFoo.h",
@@ -56,6 +61,7 @@
"liblog",
"libutils",
"libcutils",
+ "android.hardware.tests.versioning@1.0",
"android.hardware.tests.versioning@2.2",
],
export_shared_lib_headers: [
@@ -63,6 +69,7 @@
"libhidltransport",
"libhwbinder",
"libutils",
+ "android.hardware.tests.versioning@1.0",
"android.hardware.tests.versioning@2.2",
],
}
diff --git a/tests/versioning/2.3/Android.mk b/tests/versioning/2.3/Android.mk
index 5b05152..68e6be4 100644
--- a/tests/versioning/2.3/Android.mk
+++ b/tests/versioning/2.3/Android.mk
@@ -8,11 +8,12 @@
LOCAL_MODULE := android.hardware.tests.versioning@2.3-java
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
LOCAL_JAVA_LIBRARIES := \
+ android.hardware.tests.versioning@1.0-java \
android.hardware.tests.versioning@2.2-java \
android.hidl.base@1.0-java \
@@ -37,6 +38,25 @@
LOCAL_GENERATED_SOURCES += $(GEN)
#
+# Build IBaz.hal
+#
+GEN := $(intermediates)/android/hardware/tests/versioning/V2_3/IBaz.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IBaz.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.tests.versioning@2.3::IBaz
+
+$(GEN): $(LOCAL_PATH)/IBaz.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
# Build IFoo.hal
#
GEN := $(intermediates)/android/hardware/tests/versioning/V2_3/IFoo.java
@@ -63,11 +83,12 @@
LOCAL_MODULE := android.hardware.tests.versioning@2.3-java-static
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-intermediates := $(local-generated-sources-dir)
+intermediates := $(call local-generated-sources-dir, COMMON)
HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
LOCAL_STATIC_JAVA_LIBRARIES := \
+ android.hardware.tests.versioning@1.0-java-static \
android.hardware.tests.versioning@2.2-java-static \
android.hidl.base@1.0-java-static \
@@ -92,6 +113,25 @@
LOCAL_GENERATED_SOURCES += $(GEN)
#
+# Build IBaz.hal
+#
+GEN := $(intermediates)/android/hardware/tests/versioning/V2_3/IBaz.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IBaz.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.tests.versioning@2.3::IBaz
+
+$(GEN): $(LOCAL_PATH)/IBaz.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
# Build IFoo.hal
#
GEN := $(intermediates)/android/hardware/tests/versioning/V2_3/IFoo.java
diff --git a/tests/versioning/2.3/IBar.hal b/tests/versioning/2.3/IBar.hal
index 946d42e..fe38e76 100644
--- a/tests/versioning/2.3/IBar.hal
+++ b/tests/versioning/2.3/IBar.hal
@@ -18,7 +18,7 @@
import @2.2::IBar;
-// Must extend @2.3::IBar.
+// Must extend @2.2::IBar.
interface IBar extends @2.2::IBar {
};
diff --git a/tests/versioning/2.3/IBaz.hal b/tests/versioning/2.3/IBaz.hal
new file mode 100644
index 0000000..e28792c
--- /dev/null
+++ b/tests/versioning/2.3/IBaz.hal
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2016 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.tests.versioning@2.3;
+
+import @1.0::IFoo;
+
+interface IBaz extends @1.0::IFoo {
+
+};
diff --git a/tests/versioning/2.3/IFoo.hal b/tests/versioning/2.3/IFoo.hal
index c450dd2..2c76500 100644
--- a/tests/versioning/2.3/IFoo.hal
+++ b/tests/versioning/2.3/IFoo.hal
@@ -18,7 +18,7 @@
import @2.2::IFoo;
-// Must extend @2.3::IFoo.
+// Must extend @2.2::IFoo.
interface IFoo extends @2.2::IFoo {
};
diff --git a/thermal/1.0/default/Android.bp b/thermal/1.0/default/Android.bp
index 96f69cc..0b068e7 100644
--- a/thermal/1.0/default/Android.bp
+++ b/thermal/1.0/default/Android.bp
@@ -7,7 +7,6 @@
"liblog",
"libcutils",
"libhardware",
- "libhwbinder",
"libbase",
"libcutils",
"libutils",
diff --git a/thermal/1.0/default/Android.mk b/thermal/1.0/default/Android.mk
index 72c46af..2d25dc3 100644
--- a/thermal/1.0/default/Android.mk
+++ b/thermal/1.0/default/Android.mk
@@ -33,7 +33,6 @@
libhardware \
LOCAL_SHARED_LIBRARIES += \
- libhwbinder \
libhidlbase \
libhidltransport \
android.hardware.thermal@1.0 \
diff --git a/thermal/1.0/vts/Thermal.vts b/thermal/1.0/vts/Thermal.vts
deleted file mode 100644
index 4611924..0000000
--- a/thermal/1.0/vts/Thermal.vts
+++ /dev/null
@@ -1,83 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "IThermal"
-
-package: "android.hardware.thermal"
-
-import: "android.hardware.thermal@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- api: {
- name: "getTemperatures"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::thermal::V1_0::ThermalStatus"
- }
- return_type_hidl: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::thermal::V1_0::Temperature"
- }
- }
- callflow: {
- next: "*"
- }
- callflow: {
- entry: true
- }
- callflow: {
- exit: true
- }
- }
-
- api: {
- name: "getCpuUsages"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::thermal::V1_0::ThermalStatus"
- }
- return_type_hidl: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::thermal::V1_0::CpuUsage"
- }
- }
- callflow: {
- next: "*"
- }
- callflow: {
- entry: true
- }
- callflow: {
- exit: true
- }
- }
-
- api: {
- name: "getCoolingDevices"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::thermal::V1_0::ThermalStatus"
- }
- return_type_hidl: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::thermal::V1_0::CoolingDevice"
- }
- }
- callflow: {
- next: "*"
- }
- callflow: {
- entry: true
- }
- callflow: {
- exit: true
- }
- }
-
-}
diff --git a/thermal/1.0/vts/functional/Android.bp b/thermal/1.0/vts/functional/Android.bp
index bef7bc2..456b75b 100644
--- a/thermal/1.0/vts/functional/Android.bp
+++ b/thermal/1.0/vts/functional/Android.bp
@@ -15,28 +15,22 @@
//
cc_test {
- name: "thermal_hidl_hal_test",
- gtest: true,
- srcs: ["thermal_hidl_hal_test.cpp"],
+ name: "VtsHalThermalV1_0TargetTest",
+ srcs: ["VtsHalThermalV1_0TargetTest.cpp"],
shared_libs: [
"libbase",
"liblog",
"libcutils",
"libhidlbase",
"libhidltransport",
- "libhwbinder",
"libnativehelper",
"libutils",
"android.hardware.thermal@1.0",
],
- static_libs: ["libgtest"],
+ static_libs: ["VtsHalHidlTargetBaseTest"],
cflags: [
- "--coverage",
"-O0",
"-g",
],
- ldflags: [
- "--coverage"
- ]
}
diff --git a/thermal/1.0/vts/functional/thermal_hidl_hal_test.cpp b/thermal/1.0/vts/functional/VtsHalThermalV1_0TargetTest.cpp
similarity index 97%
rename from thermal/1.0/vts/functional/thermal_hidl_hal_test.cpp
rename to thermal/1.0/vts/functional/VtsHalThermalV1_0TargetTest.cpp
index 5bdd2c2..6feec73 100644
--- a/thermal/1.0/vts/functional/thermal_hidl_hal_test.cpp
+++ b/thermal/1.0/vts/functional/VtsHalThermalV1_0TargetTest.cpp
@@ -24,7 +24,7 @@
#include <android-base/logging.h>
#include <android/hardware/thermal/1.0/IThermal.h>
#include <android/hardware/thermal/1.0/types.h>
-#include <gtest/gtest.h>
+#include <VtsHalHidlTargetBaseTest.h>
#include <unistd.h>
using ::android::hardware::hidl_string;
@@ -46,10 +46,10 @@
#define MAX_FAN_SPEED 20000
// The main test class for THERMAL HIDL HAL.
-class ThermalHidlTest : public ::testing::Test {
+class ThermalHidlTest : public ::testing::VtsHalHidlTargetBaseTest {
public:
virtual void SetUp() override {
- thermal_ = IThermal::getService();
+ thermal_ = ::testing::VtsHalHidlTargetBaseTest::getService<IThermal>();
ASSERT_NE(thermal_, nullptr);
baseSize_ = 0;
names_.clear();
diff --git a/thermal/1.0/vts/types.vts b/thermal/1.0/vts/types.vts
deleted file mode 100644
index f004bd8..0000000
--- a/thermal/1.0/vts/types.vts
+++ /dev/null
@@ -1,157 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "types"
-
-package: "android.hardware.thermal"
-
-
-attribute: {
- name: "::android::hardware::thermal::V1_0::TemperatureType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "UNKNOWN"
- scalar_value: {
- int32_t: -1
- }
- enumerator: "CPU"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "GPU"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "BATTERY"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "SKIN"
- scalar_value: {
- int32_t: 3
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::thermal::V1_0::CoolingType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "FAN_RPM"
- scalar_value: {
- uint32_t: 0
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::thermal::V1_0::Temperature"
- type: TYPE_STRUCT
- struct_value: {
- name: "type"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::thermal::V1_0::TemperatureType"
- }
- struct_value: {
- name: "name"
- type: TYPE_STRING
- }
- struct_value: {
- name: "currentValue"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- struct_value: {
- name: "throttlingThreshold"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- struct_value: {
- name: "shutdownThreshold"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- struct_value: {
- name: "vrThrottlingThreshold"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::thermal::V1_0::CoolingDevice"
- type: TYPE_STRUCT
- struct_value: {
- name: "type"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::thermal::V1_0::CoolingType"
- }
- struct_value: {
- name: "name"
- type: TYPE_STRING
- }
- struct_value: {
- name: "currentValue"
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::thermal::V1_0::CpuUsage"
- type: TYPE_STRUCT
- struct_value: {
- name: "name"
- type: TYPE_STRING
- }
- struct_value: {
- name: "active"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- struct_value: {
- name: "total"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- struct_value: {
- name: "isOnline"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::thermal::V1_0::ThermalStatusCode"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "SUCCESS"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "FAILURE"
- scalar_value: {
- uint32_t: 1
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::thermal::V1_0::ThermalStatus"
- type: TYPE_STRUCT
- struct_value: {
- name: "code"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::thermal::V1_0::ThermalStatusCode"
- }
- struct_value: {
- name: "debugMessage"
- type: TYPE_STRING
- }
-}
-
diff --git a/tv/cec/1.0/default/Android.mk b/tv/cec/1.0/default/Android.mk
index 3f986e6..9d37344 100644
--- a/tv/cec/1.0/default/Android.mk
+++ b/tv/cec/1.0/default/Android.mk
@@ -10,7 +10,6 @@
LOCAL_SHARED_LIBRARIES := \
libhidlbase \
libhidltransport \
- libhwbinder \
liblog \
libbase \
libutils \
@@ -38,7 +37,6 @@
libhardware \
LOCAL_SHARED_LIBRARIES += \
- libhwbinder \
libhidlbase \
libhidltransport \
android.hardware.tv.cec@1.0 \
diff --git a/tv/cec/1.0/default/service.cpp b/tv/cec/1.0/default/service.cpp
index 3c11e24..74b1f62 100644
--- a/tv/cec/1.0/default/service.cpp
+++ b/tv/cec/1.0/default/service.cpp
@@ -23,5 +23,5 @@
using android::hardware::defaultPassthroughServiceImplementation;
int main() {
- return defaultPassthroughServiceImplementation<IHdmiCec>("tv.cec");
+ return defaultPassthroughServiceImplementation<IHdmiCec>();
}
diff --git a/tv/cec/1.0/vts/HdmiCec.vts b/tv/cec/1.0/vts/HdmiCec.vts
deleted file mode 100644
index 6e71d24..0000000
--- a/tv/cec/1.0/vts/HdmiCec.vts
+++ /dev/null
@@ -1,172 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "IHdmiCec"
-
-package: "android.hardware.tv.cec"
-
-import: "android.hardware.tv.cec@1.0::IHdmiCecCallback"
-import: "android.hardware.tv.cec@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- api: {
- name: "addLogicalAddress"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::tv::cec::V1_0::Result"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::tv::cec::V1_0::CecLogicalAddress"
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "clearLogicalAddress"
- callflow: {
- next: "addLogicalAddress"
- }
- callflow: {
- exit: true
- }
- }
-
- api: {
- name: "getPhysicalAddress"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::tv::cec::V1_0::Result"
- }
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "sendMessage"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::tv::cec::V1_0::SendMessageResult"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::tv::cec::V1_0::CecMessage"
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "setCallback"
- arg: {
- type: TYPE_HIDL_CALLBACK
- predefined_type: "::android::hardware::tv::cec::V1_0::IHdmiCecCallback"
- }
- callflow: {
- next: "addLogicalAddress"
- }
- callflow: {
- entry: true
- }
- }
-
- api: {
- name: "getCecVersion"
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "getVendorId"
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "getPortInfo"
- return_type_hidl: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::tv::cec::V1_0::HdmiPortInfo"
- }
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "setOption"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::tv::cec::V1_0::OptionKey"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "setLanguage"
- arg: {
- type: TYPE_STRING
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "enableAudioReturnChannel"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "isConnected"
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- callflow: {
- next: "*"
- }
- }
-
-}
diff --git a/tv/cec/1.0/vts/HdmiCecCallback.vts b/tv/cec/1.0/vts/HdmiCecCallback.vts
deleted file mode 100644
index a98db06..0000000
--- a/tv/cec/1.0/vts/HdmiCecCallback.vts
+++ /dev/null
@@ -1,27 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "IHdmiCecCallback"
-
-package: "android.hardware.tv.cec"
-
-import: "android.hardware.tv.cec@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- api: {
- name: "onCecMessage"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::tv::cec::V1_0::CecMessage"
- }
- }
-
- api: {
- name: "onHotplugEvent"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::tv::cec::V1_0::HotplugEvent"
- }
- }
-
-}
diff --git a/tv/cec/1.0/vts/types.vts b/tv/cec/1.0/vts/types.vts
deleted file mode 100644
index ae972a5..0000000
--- a/tv/cec/1.0/vts/types.vts
+++ /dev/null
@@ -1,604 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "types"
-
-package: "android.hardware.tv.cec"
-
-
-attribute: {
- name: "::android::hardware::tv::cec::V1_0::MaxLength"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "MESSAGE_BODY"
- scalar_value: {
- int32_t: 15
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::tv::cec::V1_0::CecDeviceType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "INACTIVE"
- scalar_value: {
- int32_t: -1
- }
- enumerator: "TV"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "RECORDER"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "TUNER"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "PLAYBACK"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "AUDIO_SYSTEM"
- scalar_value: {
- int32_t: 5
- }
- enumerator: "MAX"
- scalar_value: {
- int32_t: 5
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::tv::cec::V1_0::CecLogicalAddress"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "TV"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "RECORDER_1"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "RECORDER_2"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "TUNER_1"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "PLAYBACK_1"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "AUDIO_SYSTEM"
- scalar_value: {
- int32_t: 5
- }
- enumerator: "TUNER_2"
- scalar_value: {
- int32_t: 6
- }
- enumerator: "TUNER_3"
- scalar_value: {
- int32_t: 7
- }
- enumerator: "PLAYBACK_2"
- scalar_value: {
- int32_t: 8
- }
- enumerator: "RECORDER_3"
- scalar_value: {
- int32_t: 9
- }
- enumerator: "TUNER_4"
- scalar_value: {
- int32_t: 10
- }
- enumerator: "PLAYBACK_3"
- scalar_value: {
- int32_t: 11
- }
- enumerator: "FREE_USE"
- scalar_value: {
- int32_t: 14
- }
- enumerator: "UNREGISTERED"
- scalar_value: {
- int32_t: 15
- }
- enumerator: "BROADCAST"
- scalar_value: {
- int32_t: 15
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::tv::cec::V1_0::CecMessageType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "FEATURE_ABORT"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "IMAGE_VIEW_ON"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "TUNER_STEP_INCREMENT"
- scalar_value: {
- int32_t: 5
- }
- enumerator: "TUNER_STEP_DECREMENT"
- scalar_value: {
- int32_t: 6
- }
- enumerator: "TUNER_DEVICE_STATUS"
- scalar_value: {
- int32_t: 7
- }
- enumerator: "GIVE_TUNER_DEVICE_STATUS"
- scalar_value: {
- int32_t: 8
- }
- enumerator: "RECORD_ON"
- scalar_value: {
- int32_t: 9
- }
- enumerator: "RECORD_STATUS"
- scalar_value: {
- int32_t: 10
- }
- enumerator: "RECORD_OFF"
- scalar_value: {
- int32_t: 11
- }
- enumerator: "TEXT_VIEW_ON"
- scalar_value: {
- int32_t: 13
- }
- enumerator: "RECORD_TV_SCREEN"
- scalar_value: {
- int32_t: 15
- }
- enumerator: "GIVE_DECK_STATUS"
- scalar_value: {
- int32_t: 26
- }
- enumerator: "DECK_STATUS"
- scalar_value: {
- int32_t: 27
- }
- enumerator: "SET_MENU_LANGUAGE"
- scalar_value: {
- int32_t: 50
- }
- enumerator: "CLEAR_ANALOG_TIMER"
- scalar_value: {
- int32_t: 51
- }
- enumerator: "SET_ANALOG_TIMER"
- scalar_value: {
- int32_t: 52
- }
- enumerator: "TIMER_STATUS"
- scalar_value: {
- int32_t: 53
- }
- enumerator: "STANDBY"
- scalar_value: {
- int32_t: 54
- }
- enumerator: "PLAY"
- scalar_value: {
- int32_t: 65
- }
- enumerator: "DECK_CONTROL"
- scalar_value: {
- int32_t: 66
- }
- enumerator: "TIMER_CLEARED_STATUS"
- scalar_value: {
- int32_t: 67
- }
- enumerator: "USER_CONTROL_PRESSED"
- scalar_value: {
- int32_t: 68
- }
- enumerator: "USER_CONTROL_RELEASED"
- scalar_value: {
- int32_t: 69
- }
- enumerator: "GIVE_OSD_NAME"
- scalar_value: {
- int32_t: 70
- }
- enumerator: "SET_OSD_NAME"
- scalar_value: {
- int32_t: 71
- }
- enumerator: "SET_OSD_STRING"
- scalar_value: {
- int32_t: 100
- }
- enumerator: "SET_TIMER_PROGRAM_TITLE"
- scalar_value: {
- int32_t: 103
- }
- enumerator: "SYSTEM_AUDIO_MODE_REQUEST"
- scalar_value: {
- int32_t: 112
- }
- enumerator: "GIVE_AUDIO_STATUS"
- scalar_value: {
- int32_t: 113
- }
- enumerator: "SET_SYSTEM_AUDIO_MODE"
- scalar_value: {
- int32_t: 114
- }
- enumerator: "REPORT_AUDIO_STATUS"
- scalar_value: {
- int32_t: 122
- }
- enumerator: "GIVE_SYSTEM_AUDIO_MODE_STATUS"
- scalar_value: {
- int32_t: 125
- }
- enumerator: "SYSTEM_AUDIO_MODE_STATUS"
- scalar_value: {
- int32_t: 126
- }
- enumerator: "ROUTING_CHANGE"
- scalar_value: {
- int32_t: 128
- }
- enumerator: "ROUTING_INFORMATION"
- scalar_value: {
- int32_t: 129
- }
- enumerator: "ACTIVE_SOURCE"
- scalar_value: {
- int32_t: 130
- }
- enumerator: "GIVE_PHYSICAL_ADDRESS"
- scalar_value: {
- int32_t: 131
- }
- enumerator: "REPORT_PHYSICAL_ADDRESS"
- scalar_value: {
- int32_t: 132
- }
- enumerator: "REQUEST_ACTIVE_SOURCE"
- scalar_value: {
- int32_t: 133
- }
- enumerator: "SET_STREAM_PATH"
- scalar_value: {
- int32_t: 134
- }
- enumerator: "DEVICE_VENDOR_ID"
- scalar_value: {
- int32_t: 135
- }
- enumerator: "VENDOR_COMMAND"
- scalar_value: {
- int32_t: 137
- }
- enumerator: "VENDOR_REMOTE_BUTTON_DOWN"
- scalar_value: {
- int32_t: 138
- }
- enumerator: "VENDOR_REMOTE_BUTTON_UP"
- scalar_value: {
- int32_t: 139
- }
- enumerator: "GIVE_DEVICE_VENDOR_ID"
- scalar_value: {
- int32_t: 140
- }
- enumerator: "MENU_REQUEST"
- scalar_value: {
- int32_t: 141
- }
- enumerator: "MENU_STATUS"
- scalar_value: {
- int32_t: 142
- }
- enumerator: "GIVE_DEVICE_POWER_STATUS"
- scalar_value: {
- int32_t: 143
- }
- enumerator: "REPORT_POWER_STATUS"
- scalar_value: {
- int32_t: 144
- }
- enumerator: "GET_MENU_LANGUAGE"
- scalar_value: {
- int32_t: 145
- }
- enumerator: "SELECT_ANALOG_SERVICE"
- scalar_value: {
- int32_t: 146
- }
- enumerator: "SELECT_DIGITAL_SERVICE"
- scalar_value: {
- int32_t: 147
- }
- enumerator: "SET_DIGITAL_TIMER"
- scalar_value: {
- int32_t: 151
- }
- enumerator: "CLEAR_DIGITAL_TIMER"
- scalar_value: {
- int32_t: 153
- }
- enumerator: "SET_AUDIO_RATE"
- scalar_value: {
- int32_t: 154
- }
- enumerator: "INACTIVE_SOURCE"
- scalar_value: {
- int32_t: 157
- }
- enumerator: "CEC_VERSION"
- scalar_value: {
- int32_t: 158
- }
- enumerator: "GET_CEC_VERSION"
- scalar_value: {
- int32_t: 159
- }
- enumerator: "VENDOR_COMMAND_WITH_ID"
- scalar_value: {
- int32_t: 160
- }
- enumerator: "CLEAR_EXTERNAL_TIMER"
- scalar_value: {
- int32_t: 161
- }
- enumerator: "SET_EXTERNAL_TIMER"
- scalar_value: {
- int32_t: 162
- }
- enumerator: "INITIATE_ARC"
- scalar_value: {
- int32_t: 192
- }
- enumerator: "REPORT_ARC_INITIATED"
- scalar_value: {
- int32_t: 193
- }
- enumerator: "REPORT_ARC_TERMINATED"
- scalar_value: {
- int32_t: 194
- }
- enumerator: "REQUEST_ARC_INITIATION"
- scalar_value: {
- int32_t: 195
- }
- enumerator: "REQUEST_ARC_TERMINATION"
- scalar_value: {
- int32_t: 196
- }
- enumerator: "TERMINATE_ARC"
- scalar_value: {
- int32_t: 197
- }
- enumerator: "ABORT"
- scalar_value: {
- int32_t: 255
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::tv::cec::V1_0::AbortReason"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "UNRECOGNIZED_MODE"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "NOT_IN_CORRECT_MODE"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "CANNOT_PROVIDE_SOURCE"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "INVALID_OPERAND"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "REFUSED"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "UNABLE_TO_DETERMINE"
- scalar_value: {
- int32_t: 5
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::tv::cec::V1_0::Result"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "SUCCESS"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "FAILURE_UNKNOWN"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "FAILURE_INVALID_ARGS"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "FAILURE_INVALID_STATE"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "FAILURE_NOT_SUPPORTED"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "FAILURE_BUSY"
- scalar_value: {
- int32_t: 5
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::tv::cec::V1_0::SendMessageResult"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "SUCCESS"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "NACK"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "BUSY"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "FAIL"
- scalar_value: {
- int32_t: 3
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::tv::cec::V1_0::HdmiPortType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "INPUT"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "OUTPUT"
- scalar_value: {
- int32_t: 1
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::tv::cec::V1_0::OptionKey"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "WAKEUP"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "ENABLE_CEC"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "SYSTEM_CEC_CONTROL"
- scalar_value: {
- int32_t: 3
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::tv::cec::V1_0::CecMessage"
- type: TYPE_STRUCT
- struct_value: {
- name: "initiator"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::tv::cec::V1_0::CecLogicalAddress"
- }
- struct_value: {
- name: "destination"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::tv::cec::V1_0::CecLogicalAddress"
- }
- struct_value: {
- name: "body"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::tv::cec::V1_0::HotplugEvent"
- type: TYPE_STRUCT
- struct_value: {
- name: "connected"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "portId"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::tv::cec::V1_0::HdmiPortInfo"
- type: TYPE_STRUCT
- struct_value: {
- name: "type"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::tv::cec::V1_0::HdmiPortType"
- }
- struct_value: {
- name: "portId"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "cecSupported"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "arcSupported"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "physicalAddress"
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
-}
-
diff --git a/tv/input/1.0/default/Android.mk b/tv/input/1.0/default/Android.mk
index be1775d..210da86 100644
--- a/tv/input/1.0/default/Android.mk
+++ b/tv/input/1.0/default/Android.mk
@@ -13,7 +13,6 @@
libhardware \
libhidlbase \
libhidltransport \
- libhwbinder \
libutils \
android.hardware.audio.common@2.0 \
android.hardware.tv.input@1.0 \
@@ -38,7 +37,6 @@
libhardware \
LOCAL_SHARED_LIBRARIES += \
- libhwbinder \
libhidlbase \
libhidltransport \
android.hardware.audio.common@2.0 \
diff --git a/tv/input/1.0/vts/TvInput.vts b/tv/input/1.0/vts/TvInput.vts
deleted file mode 100644
index f049fc1..0000000
--- a/tv/input/1.0/vts/TvInput.vts
+++ /dev/null
@@ -1,99 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "ITvInput"
-
-package: "android.hardware.tv.input"
-
-import: "android.hardware.audio.common@2.0::types"
-import: "android.hardware.tv.input@1.0::ITvInputCallback"
-import: "android.hardware.tv.input@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- api: {
- name: "setCallback"
- arg: {
- type: TYPE_HIDL_CALLBACK
- predefined_type: "::android::hardware::tv::input::V1_0::ITvInputCallback"
- }
- callflow: {
- entry: true
- }
- callflow: {
- exit: true
- }
- callflow: {
- next: "getStreamConfigurations"
- }
- }
-
- api: {
- name: "getStreamConfigurations"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::tv::input::V1_0::Result"
- }
- return_type_hidl: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::tv::input::V1_0::TvStreamConfig"
- }
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- callflow: {
- next: "openStream"
- next: "getStreamConfigurations"
- next: "closeStream"
- }
- }
-
- api: {
- name: "openStream"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::tv::input::V1_0::Result"
- }
- return_type_hidl: {
- type: TYPE_HANDLE
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- callflow: {
- next: "closeStream"
- next: "getStreamConfigurations"
- next: "openStream"
- }
- }
-
- api: {
- name: "closeStream"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::tv::input::V1_0::Result"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- callflow: {
- next: "getStreamConfigurations"
- next: "openStream"
- next: "closeStream"
- }
- }
-
-}
diff --git a/tv/input/1.0/vts/TvInputCallback.vts b/tv/input/1.0/vts/TvInputCallback.vts
deleted file mode 100644
index 8082b9f..0000000
--- a/tv/input/1.0/vts/TvInputCallback.vts
+++ /dev/null
@@ -1,20 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "ITvInputCallback"
-
-package: "android.hardware.tv.input"
-
-import: "android.hardware.audio.common@2.0::types"
-import: "android.hardware.tv.input@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- api: {
- name: "notify"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::tv::input::V1_0::TvInputEvent"
- }
- }
-
-}
diff --git a/tv/input/1.0/vts/functional/Android.bp b/tv/input/1.0/vts/functional/Android.bp
index 979eb99..bcff457 100644
--- a/tv/input/1.0/vts/functional/Android.bp
+++ b/tv/input/1.0/vts/functional/Android.bp
@@ -15,29 +15,22 @@
//
cc_test {
- name: "tv_input_hidl_hal_test",
- gtest: true,
- srcs: ["tv_input_hidl_hal_test.cpp"],
+ name: "VtsHalTvInputV1_0TargetTest",
+ srcs: ["VtsHalTvInputV1_0TargetTest.cpp"],
shared_libs: [
"libbase",
"liblog",
"libcutils",
"libhidlbase",
"libhidltransport",
- "libhwbinder",
"libnativehelper",
"libutils",
"android.hardware.tv.input@1.0",
],
- static_libs: ["libgtest"],
+ static_libs: ["VtsHalHidlTargetBaseTest"],
cflags: [
-// TODO: add --coverage when the segfault issue is fixed.
-// "--coverage",
"-O0",
"-g",
- ],
-// ldflags: [
-// "--coverage"
-// ]
+ ]
}
diff --git a/tv/input/1.0/vts/functional/tv_input_hidl_hal_test.cpp b/tv/input/1.0/vts/functional/VtsHalTvInputV1_0TargetTest.cpp
similarity index 98%
rename from tv/input/1.0/vts/functional/tv_input_hidl_hal_test.cpp
rename to tv/input/1.0/vts/functional/VtsHalTvInputV1_0TargetTest.cpp
index 3747dc5..6757df1 100644
--- a/tv/input/1.0/vts/functional/tv_input_hidl_hal_test.cpp
+++ b/tv/input/1.0/vts/functional/VtsHalTvInputV1_0TargetTest.cpp
@@ -21,7 +21,7 @@
#include <android/hardware/tv/input/1.0/ITvInput.h>
#include <android/hardware/tv/input/1.0/ITvInputCallback.h>
-#include <gtest/gtest.h>
+#include <VtsHalHidlTargetBaseTest.h>
#include <utils/KeyedVector.h>
#include <mutex>
#include <vector>
@@ -43,10 +43,10 @@
#define DEFAULT_ID INT32_MIN
/* The main test class for TV Input HIDL HAL. */
-class TvInputHidlTest : public ::testing::Test {
+class TvInputHidlTest : public ::testing::VtsHalHidlTargetBaseTest {
public:
virtual void SetUp() override {
- tv_input_ = ITvInput::getService();
+ tv_input_ = ::testing::VtsHalHidlTargetBaseTest::getService<ITvInput>();
ASSERT_NE(tv_input_, nullptr);
tv_input_callback_ = new TvInputCallback(*this);
ASSERT_NE(tv_input_callback_, nullptr);
diff --git a/tv/input/1.0/vts/types.vts b/tv/input/1.0/vts/types.vts
deleted file mode 100644
index cb1d472..0000000
--- a/tv/input/1.0/vts/types.vts
+++ /dev/null
@@ -1,176 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "types"
-
-package: "android.hardware.tv.input"
-
-import: "android.hardware.audio.common@2.0::types"
-
-attribute: {
- name: "::android::hardware::tv::input::V1_0::Result"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "OK"
- scalar_value: {
- int32_t: 0
- }
- enumerator: "UNKNOWN"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "NO_RESOURCE"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "INVALID_ARGUMENTS"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "INVALID_STATE"
- scalar_value: {
- int32_t: 4
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::tv::input::V1_0::TvInputType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "OTHER"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "TUNER"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "COMPOSITE"
- scalar_value: {
- int32_t: 3
- }
- enumerator: "SVIDEO"
- scalar_value: {
- int32_t: 4
- }
- enumerator: "SCART"
- scalar_value: {
- int32_t: 5
- }
- enumerator: "COMPONENT"
- scalar_value: {
- int32_t: 6
- }
- enumerator: "VGA"
- scalar_value: {
- int32_t: 7
- }
- enumerator: "DVI"
- scalar_value: {
- int32_t: 8
- }
- enumerator: "HDMI"
- scalar_value: {
- int32_t: 9
- }
- enumerator: "DISPLAY_PORT"
- scalar_value: {
- int32_t: 10
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::tv::input::V1_0::TvInputDeviceInfo"
- type: TYPE_STRUCT
- struct_value: {
- name: "deviceId"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "type"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::tv::input::V1_0::TvInputType"
- }
- struct_value: {
- name: "portId"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "audioType"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::audio::common::V2_0::AudioDevice"
- }
- struct_value: {
- name: "audioAddress"
- type: TYPE_ARRAY
- vector_size: 32
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::tv::input::V1_0::TvInputEventType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "DEVICE_AVAILABLE"
- scalar_value: {
- int32_t: 1
- }
- enumerator: "DEVICE_UNAVAILABLE"
- scalar_value: {
- int32_t: 2
- }
- enumerator: "STREAM_CONFIGURATIONS_CHANGED"
- scalar_value: {
- int32_t: 3
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::tv::input::V1_0::TvInputEvent"
- type: TYPE_STRUCT
- struct_value: {
- name: "type"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::tv::input::V1_0::TvInputEventType"
- }
- struct_value: {
- name: "deviceInfo"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::tv::input::V1_0::TvInputDeviceInfo"
- }
-}
-
-attribute: {
- name: "::android::hardware::tv::input::V1_0::TvStreamConfig"
- type: TYPE_STRUCT
- struct_value: {
- name: "streamId"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "maxVideoWidth"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "maxVideoHeight"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
-}
-
diff --git a/usb/1.0/default/Android.mk b/usb/1.0/default/Android.mk
index 489293c..afd53cf 100644
--- a/usb/1.0/default/Android.mk
+++ b/usb/1.0/default/Android.mk
@@ -14,7 +14,6 @@
libhidlbase \
libhidltransport \
liblog \
- libhwbinder \
libutils \
libhardware \
android.hardware.usb@1.0 \
diff --git a/usb/1.0/default/Usb.cpp b/usb/1.0/default/Usb.cpp
index f46ff66..6eb8842 100644
--- a/usb/1.0/default/Usb.cpp
+++ b/usb/1.0/default/Usb.cpp
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+#include <assert.h>
#include <dirent.h>
#include <iostream>
#include <fstream>
@@ -34,6 +35,9 @@
namespace V1_0 {
namespace implementation {
+// Set by the signal handler to destroy the thread
+volatile bool destroyThread;
+
int32_t readFile(std::string filename, std::string& contents) {
std::ifstream file(filename);
@@ -172,17 +176,22 @@
ports++;
}
}
+
+ if (ports == 0) {
+ closedir(dp);
+ return Status::SUCCESS;
+ }
+
names.resize(ports);
rewinddir(dp);
while ((ep = readdir (dp))) {
- /* Check to see if new ports were added since the first pass. */
- if (current >= ports) {
- rewinddir(dp);
- goto rescan;
- }
-
if (ep->d_type == DT_LNK) {
+ /* Check to see if new ports were added since the first pass. */
+ if (current >= ports) {
+ rewinddir(dp);
+ goto rescan;
+ }
names[current++] = ep->d_name;
}
}
@@ -234,7 +243,7 @@
if (result == Status::SUCCESS) {
currentPortStatus.resize(names.size());
- for(std::vector<std::string>::size_type i = 0; i != names.size(); i++) {
+ for(std::vector<std::string>::size_type i = 0; i < names.size(); i++) {
ALOGI("%s", names[i].c_str());
currentPortStatus[i].portName = names[i];
@@ -374,7 +383,7 @@
goto error;
}
- while (1) {
+ while (!destroyThread) {
struct epoll_event events[64];
nevents = epoll_wait(epoll_fd, events, 64, -1);
@@ -392,6 +401,7 @@
}
}
+ ALOGI("exiting worker thread");
error:
close(uevent_fd);
@@ -401,26 +411,61 @@
return NULL;
}
+void sighandler(int sig)
+{
+ if (sig == SIGUSR1) {
+ destroyThread = true;
+ ALOGI("destroy set");
+ return;
+ }
+ signal(SIGUSR1, sighandler);
+}
Return<void> Usb::setCallback(const sp<IUsbCallback>& callback) {
- if (mCallback != NULL) {
- ALOGE("Callback already registered");
+ pthread_mutex_lock(&mLock);
+ if ((mCallback == NULL && callback == NULL) ||
+ (mCallback != NULL && callback != NULL)) {
+ mCallback = callback;
+ pthread_mutex_unlock(&mLock);
return Void();
}
mCallback = callback;
ALOGI("registering callback");
- if (pthread_create(&mPoll, NULL, work, this)) {
- ALOGE("pthread creation failed %d", errno);
- mCallback = NULL;
+ if (mCallback == NULL) {
+ if (!pthread_kill(mPoll, SIGUSR1)) {
+ pthread_join(mPoll, NULL);
+ ALOGI("pthread destroyed");
+ }
+ pthread_mutex_unlock(&mLock);
return Void();
}
+ destroyThread = false;
+ signal(SIGUSR1, sighandler);
+
+ if (pthread_create(&mPoll, NULL, work, this)) {
+ ALOGE("pthread creation failed %d", errno);
+ mCallback = NULL;
+ }
+ pthread_mutex_unlock(&mLock);
return Void();
}
+// Protects *usb assignment
+pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
+Usb *usb;
+
+Usb::Usb() {
+ pthread_mutex_lock(&lock);
+ // Make this a singleton class
+ assert(usb == NULL);
+ usb = this;
+ pthread_mutex_unlock(&lock);
+}
+
} // namespace implementation
} // namespace V1_0
} // namespace usb
diff --git a/usb/1.0/default/Usb.h b/usb/1.0/default/Usb.h
index cf418f4..c34d080 100644
--- a/usb/1.0/default/Usb.h
+++ b/usb/1.0/default/Usb.h
@@ -32,6 +32,7 @@
using ::android::sp;
struct Usb : public IUsb {
+ Usb();
Return<void> switchRole(const hidl_string& portName, const PortRole& role) override;
Return<void> setCallback(const sp<IUsbCallback>& callback) override;
Return<void> queryPortStatus() override;
@@ -39,6 +40,7 @@
sp<IUsbCallback> mCallback;
private:
pthread_t mPoll;
+ pthread_mutex_t mLock = PTHREAD_MUTEX_INITIALIZER;
};
} // namespace implementation
diff --git a/usb/1.0/vts/functional/Android.bp b/usb/1.0/vts/functional/Android.bp
new file mode 100644
index 0000000..ef47f25
--- /dev/null
+++ b/usb/1.0/vts/functional/Android.bp
@@ -0,0 +1,35 @@
+//
+// Copyright (C) 2017 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.
+//
+
+cc_test {
+ name: "VtsHalUsbV1_0TargetTest",
+ srcs: ["VtsHalUsbV1_0TargetTest.cpp"],
+ shared_libs: [
+ "libbase",
+ "liblog",
+ "libcutils",
+ "libhidlbase",
+ "libhidltransport",
+ "libnativehelper",
+ "libutils",
+ "android.hardware.usb@1.0",
+ ],
+ static_libs: ["VtsHalHidlTargetBaseTest"],
+ cflags: [
+ "-O0",
+ "-g",
+ ],
+}
diff --git a/usb/1.0/vts/functional/VtsHalUsbV1_0TargetTest.cpp b/usb/1.0/vts/functional/VtsHalUsbV1_0TargetTest.cpp
new file mode 100644
index 0000000..9d59fe2
--- /dev/null
+++ b/usb/1.0/vts/functional/VtsHalUsbV1_0TargetTest.cpp
@@ -0,0 +1,351 @@
+/*
+ * Copyright (C) 2017 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.
+ */
+
+#define LOG_TAG "VtsHalUsbV1_0TargetTest"
+#include <android-base/logging.h>
+
+#include <android/hardware/usb/1.0/IUsb.h>
+#include <android/hardware/usb/1.0/IUsbCallback.h>
+#include <android/hardware/usb/1.0/types.h>
+
+#include <VtsHalHidlTargetBaseTest.h>
+#include <stdlib.h>
+#include <chrono>
+#include <condition_variable>
+#include <mutex>
+
+#define TIMEOUT_PERIOD 10
+
+using ::android::hardware::usb::V1_0::IUsbCallback;
+using ::android::hardware::usb::V1_0::IUsb;
+using ::android::hardware::usb::V1_0::PortDataRole;
+using ::android::hardware::usb::V1_0::PortMode;
+using ::android::hardware::usb::V1_0::PortPowerRole;
+using ::android::hardware::usb::V1_0::PortRole;
+using ::android::hardware::usb::V1_0::PortRoleType;
+using ::android::hardware::usb::V1_0::PortStatus;
+using ::android::hardware::usb::V1_0::Status;
+using ::android::hidl::base::V1_0::IBase;
+using ::android::hardware::hidl_array;
+using ::android::hardware::hidl_memory;
+using ::android::hardware::hidl_string;
+using ::android::hardware::hidl_vec;
+using ::android::hardware::Return;
+using ::android::hardware::Void;
+using ::android::sp;
+
+#define USB_SERVICE_NAME "usb_hal"
+
+// The main test class for the USB hidl HAL
+class UsbHidlTest : public ::testing::VtsHalHidlTargetBaseTest {
+ public:
+ // Callback class for the USB HIDL hal.
+ // Usb Hal will call this object upon role switch or port query.
+ class UsbCallback : public IUsbCallback {
+ UsbHidlTest& parent_;
+ int cookie;
+
+ public:
+ UsbCallback(UsbHidlTest& parent, int cookie)
+ : parent_(parent), cookie(cookie){};
+
+ virtual ~UsbCallback() = default;
+
+ // Callback method for the port status.
+ Return<void> notifyPortStatusChange(
+ const hidl_vec<PortStatus>& currentPortStatus, Status retval) override {
+ if (retval == Status::SUCCESS) {
+ parent_.usb_last_port_status.portName =
+ currentPortStatus[0].portName.c_str();
+ parent_.usb_last_port_status.currentDataRole =
+ currentPortStatus[0].currentDataRole;
+ parent_.usb_last_port_status.currentPowerRole =
+ currentPortStatus[0].currentPowerRole;
+ parent_.usb_last_port_status.currentMode =
+ currentPortStatus[0].currentMode;
+ }
+ parent_.usb_last_cookie = cookie;
+ parent_.notify();
+ return Void();
+ };
+
+ // Callback method for the status of role switch operation.
+ Return<void> notifyRoleSwitchStatus(const hidl_string& /*portName*/,
+ const PortRole& newRole,
+ Status retval) override {
+ parent_.usb_last_status = retval;
+ parent_.usb_last_cookie = cookie;
+ parent_.usb_last_port_role = newRole;
+ parent_.usb_role_switch_done = true;
+ parent_.notify();
+ return Void();
+ };
+ };
+
+ virtual void SetUp() override {
+ ALOGI("Setup");
+ usb = ::testing::VtsHalHidlTargetBaseTest::getService<IUsb>(USB_SERVICE_NAME);
+ ASSERT_NE(usb, nullptr);
+
+ usb_cb_2 = new UsbCallback(*this, 2);
+ ASSERT_NE(usb_cb_2, nullptr);
+ Return<void> ret = usb->setCallback(usb_cb_2);
+ ASSERT_TRUE(ret.isOk());
+ }
+
+ virtual void TearDown() override { ALOGI("Teardown"); }
+
+ // Used as a mechanism to inform the test about data/event callback.
+ inline void notify() {
+ std::unique_lock<std::mutex> lock(usb_mtx);
+ usb_count++;
+ usb_cv.notify_one();
+ }
+
+ // Test code calls this function to wait for data/event callback.
+ inline std::cv_status wait() {
+ std::unique_lock<std::mutex> lock(usb_mtx);
+
+ std::cv_status status = std::cv_status::no_timeout;
+ auto now = std::chrono::system_clock::now();
+ while (usb_count == 0) {
+ status =
+ usb_cv.wait_until(lock, now + std::chrono::seconds(TIMEOUT_PERIOD));
+ if (status == std::cv_status::timeout) {
+ ALOGI("timeout");
+ return status;
+ }
+ }
+ usb_count--;
+ return status;
+ }
+
+ // USB hidl hal Proxy
+ sp<IUsb> usb;
+
+ // Callback objects for usb hidl
+ // Methods of these objects are called to notify port status updates.
+ sp<IUsbCallback> usb_cb_1, usb_cb_2;
+
+ // The last conveyed status of the USB ports.
+ // Stores information of currentt_data_role, power_role for all the USB ports
+ PortStatus usb_last_port_status;
+
+ // Status of the last role switch operation.
+ Status usb_last_status;
+
+ // Port role information of the last role switch operation.
+ PortRole usb_last_port_role;
+
+ // Flag to indicate the invocation of role switch callback.
+ bool usb_role_switch_done;
+
+ // Identifier for the usb callback object.
+ // Stores the cookie of the last invoked usb callback object.
+ int usb_last_cookie;
+
+ // synchronization primitives to coordinate between main test thread
+ // and the callback thread.
+ std::mutex usb_mtx;
+ std::condition_variable usb_cv;
+ int usb_count;
+};
+
+/*
+ * Test to see if setCallback succeeds.
+ * Callback oject is created and registered.
+ * Check to see if the hidl transaction succeeded.
+ */
+TEST_F(UsbHidlTest, setCallback) {
+ usb_cb_1 = new UsbCallback(*this, 1);
+ ASSERT_NE(usb_cb_1, nullptr);
+ Return<void> ret = usb->setCallback(usb_cb_1);
+ ASSERT_TRUE(ret.isOk());
+}
+
+/*
+ * Check to see if querying type-c
+ * port status succeeds.
+ */
+TEST_F(UsbHidlTest, queryPortStatus) {
+ Return<void> ret = usb->queryPortStatus();
+ ASSERT_TRUE(ret.isOk());
+ EXPECT_EQ(std::cv_status::no_timeout, wait());
+ EXPECT_EQ(2, usb_last_cookie);
+ ALOGI("rightafter: %s", usb_last_port_status.portName.c_str());
+}
+
+/*
+ * Trying to switch a non-existent port should fail.
+ * This test case tried to switch the port with empty
+ * name which is expected to fail.
+ */
+TEST_F(UsbHidlTest, switchEmptyPort) {
+ struct PortRole role;
+ role.type = PortRoleType::DATA_ROLE;
+
+ Return<void> ret = usb->switchRole("", role);
+ ASSERT_TRUE(ret.isOk());
+ EXPECT_EQ(std::cv_status::no_timeout, wait());
+ EXPECT_EQ(Status::ERROR, usb_last_status);
+ EXPECT_EQ(2, usb_last_cookie);
+}
+
+/*
+ * Test switching the mode of usb port.
+ * Test case queries the usb ports present in device.
+ * If there is atleast one usb port, a mode switch
+ * to DFP is attempted for the port.
+ * The callback parametes are checked to see if the mode
+ * switch was successfull. Upon success, Status::SUCCESS
+ * is expected to be returned.
+ */
+TEST_F(UsbHidlTest, switchModetoDFP) {
+ struct PortRole role;
+ role.type = PortRoleType::MODE;
+ role.role = static_cast<uint32_t>(PortMode::DFP);
+
+ Return<void> ret = usb->queryPortStatus();
+ ASSERT_TRUE(ret.isOk());
+ EXPECT_EQ(std::cv_status::no_timeout, wait());
+ EXPECT_EQ(2, usb_last_cookie);
+
+ if (!usb_last_port_status.portName.empty()) {
+ hidl_string portBeingSwitched = usb_last_port_status.portName;
+ ALOGI("mode portname:%s", portBeingSwitched.c_str());
+ usb_role_switch_done = false;
+ Return<void> ret = usb->switchRole(portBeingSwitched.c_str(), role);
+ ASSERT_TRUE(ret.isOk());
+
+ std::cv_status waitStatus = wait();
+ while (waitStatus == std::cv_status::no_timeout &&
+ usb_role_switch_done == false)
+ waitStatus = wait();
+
+ EXPECT_EQ(std::cv_status::no_timeout, waitStatus);
+ EXPECT_EQ(2, usb_last_cookie);
+
+ EXPECT_EQ(static_cast<uint32_t>(PortRoleType::MODE),
+ static_cast<uint32_t>(usb_last_port_role.type));
+ if (usb_last_status == Status::SUCCESS) {
+ EXPECT_EQ(static_cast<uint32_t>(PortMode::DFP),
+ static_cast<uint32_t>(usb_last_port_role.role));
+ } else {
+ EXPECT_NE(static_cast<uint32_t>(PortMode::UFP),
+ static_cast<uint32_t>(usb_last_port_role.role));
+ }
+ }
+}
+
+/*
+ * Test switching the power role of usb port.
+ * Test case queries the usb ports present in device.
+ * If there is atleast one usb port, a power role switch
+ * to SOURCE is attempted for the port.
+ * The callback parametes are checked to see if the power role
+ * switch was successfull. Upon success, Status::SUCCESS
+ * is expected to be returned.
+ */
+
+TEST_F(UsbHidlTest, switchPowerRole) {
+ struct PortRole role;
+ role.type = PortRoleType::POWER_ROLE;
+ role.role = static_cast<uint32_t>(PortPowerRole::SOURCE);
+
+ Return<void> ret = usb->queryPortStatus();
+ ASSERT_TRUE(ret.isOk());
+ EXPECT_EQ(std::cv_status::no_timeout, wait());
+ EXPECT_EQ(2, usb_last_cookie);
+
+ if (!usb_last_port_status.portName.empty()) {
+ hidl_string portBeingSwitched = usb_last_port_status.portName;
+ ALOGI("switchPower role portname:%s", portBeingSwitched.c_str());
+ usb_role_switch_done = false;
+ Return<void> ret = usb->switchRole(portBeingSwitched.c_str(), role);
+ ASSERT_TRUE(ret.isOk());
+
+ std::cv_status waitStatus = wait();
+ while (waitStatus == std::cv_status::no_timeout &&
+ usb_role_switch_done == false)
+ waitStatus = wait();
+
+ EXPECT_EQ(std::cv_status::no_timeout, waitStatus);
+ EXPECT_EQ(2, usb_last_cookie);
+
+ EXPECT_EQ(static_cast<uint32_t>(PortRoleType::POWER_ROLE),
+ static_cast<uint32_t>(usb_last_port_role.type));
+ if (usb_last_status == Status::SUCCESS) {
+ EXPECT_EQ(static_cast<uint32_t>(PortPowerRole::SOURCE),
+ static_cast<uint32_t>(usb_last_port_role.role));
+ } else {
+ EXPECT_NE(static_cast<uint32_t>(PortPowerRole::SINK),
+ static_cast<uint32_t>(usb_last_port_role.role));
+ }
+ }
+}
+
+/*
+ * Test switching the data role of usb port.
+ * Test case queries the usb ports present in device.
+ * If there is atleast one usb port, a power role switch
+ * to HOST is attempted for the port.
+ * The callback parametes are checked to see if the power role
+ * switch was successfull. Upon success, Status::SUCCESS
+ * is expected to be returned.
+ */
+TEST_F(UsbHidlTest, switchDataRole) {
+ struct PortRole role;
+ role.type = PortRoleType::DATA_ROLE;
+ role.role = static_cast<uint32_t>(PortDataRole::HOST);
+
+ Return<void> ret = usb->queryPortStatus();
+ ASSERT_TRUE(ret.isOk());
+ EXPECT_EQ(std::cv_status::no_timeout, wait());
+ EXPECT_EQ(2, usb_last_cookie);
+
+ if (!usb_last_port_status.portName.empty()) {
+ hidl_string portBeingSwitched = usb_last_port_status.portName;
+ ALOGI("portname:%s", portBeingSwitched.c_str());
+ usb_role_switch_done = false;
+ Return<void> ret = usb->switchRole(portBeingSwitched.c_str(), role);
+ ASSERT_TRUE(ret.isOk());
+
+ std::cv_status waitStatus = wait();
+ while (waitStatus == std::cv_status::no_timeout &&
+ usb_role_switch_done == false)
+ waitStatus = wait();
+
+ EXPECT_EQ(std::cv_status::no_timeout, waitStatus);
+ EXPECT_EQ(2, usb_last_cookie);
+
+ EXPECT_EQ(static_cast<uint32_t>(PortRoleType::DATA_ROLE),
+ static_cast<uint32_t>(usb_last_port_role.type));
+ if (usb_last_status == Status::SUCCESS) {
+ EXPECT_EQ(static_cast<uint32_t>(PortDataRole::HOST),
+ static_cast<uint32_t>(usb_last_port_role.role));
+ } else {
+ EXPECT_NE(static_cast<uint32_t>(PortDataRole::DEVICE),
+ static_cast<uint32_t>(usb_last_port_role.role));
+ }
+ }
+}
+
+int main(int argc, char** argv) {
+ ::testing::InitGoogleTest(&argc, argv);
+ int status = RUN_ALL_TESTS();
+ ALOGI("Test result = %d", status);
+ return status;
+}
diff --git a/usb/Android.bp b/usb/Android.bp
index bbb3e4b..33f70eb 100644
--- a/usb/Android.bp
+++ b/usb/Android.bp
@@ -1,4 +1,5 @@
// This is an autogenerated file, do not edit.
subdirs = [
"1.0",
+ "1.0/vts/functional",
]
diff --git a/vibrator/1.0/default/Android.bp b/vibrator/1.0/default/Android.bp
index 6cb9802..3bd317f 100644
--- a/vibrator/1.0/default/Android.bp
+++ b/vibrator/1.0/default/Android.bp
@@ -22,7 +22,6 @@
"libhidlbase",
"libhidltransport",
"liblog",
- "libhwbinder",
"libutils",
"libhardware",
"android.hardware.vibrator@1.0",
diff --git a/vibrator/1.0/default/Android.mk b/vibrator/1.0/default/Android.mk
index 091d615..af4a955 100644
--- a/vibrator/1.0/default/Android.mk
+++ b/vibrator/1.0/default/Android.mk
@@ -28,7 +28,6 @@
libhidlbase \
libhidltransport \
liblog \
- libhwbinder \
libutils \
libhardware \
android.hardware.vibrator@1.0
diff --git a/vibrator/1.0/vts/Vibrator.vts b/vibrator/1.0/vts/Vibrator.vts
deleted file mode 100644
index 07ec30e..0000000
--- a/vibrator/1.0/vts/Vibrator.vts
+++ /dev/null
@@ -1,31 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "IVibrator"
-
-package: "android.hardware.vibrator"
-
-import: "android.hardware.vibrator@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- api: {
- name: "on"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::vibrator::V1_0::Status"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "off"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::vibrator::V1_0::Status"
- }
- }
-
-}
diff --git a/vibrator/1.0/vts/functional/Android.bp b/vibrator/1.0/vts/functional/Android.bp
index a24cf5c..ff9dca8 100644
--- a/vibrator/1.0/vts/functional/Android.bp
+++ b/vibrator/1.0/vts/functional/Android.bp
@@ -15,9 +15,8 @@
//
cc_test {
- name: "vibrator_hidl_hal_test",
- gtest: true,
- srcs: ["vibrator_hidl_hal_test.cpp"],
+ name: "VtsHalVibratorV1_0TargetTest",
+ srcs: ["VtsHalVibratorV1_0TargetTest.cpp"],
shared_libs: [
"libbase",
"libhidlbase",
@@ -25,7 +24,7 @@
"libutils",
"android.hardware.vibrator@1.0",
],
- static_libs: ["libgtest"],
+ static_libs: ["VtsHalHidlTargetBaseTest"],
cflags: [
"-O0",
"-g",
diff --git a/vibrator/1.0/vts/functional/vibrator_hidl_hal_test.cpp b/vibrator/1.0/vts/functional/VtsHalVibratorV1_0TargetTest.cpp
similarity index 90%
rename from vibrator/1.0/vts/functional/vibrator_hidl_hal_test.cpp
rename to vibrator/1.0/vts/functional/VtsHalVibratorV1_0TargetTest.cpp
index 435b002..c9541fe 100644
--- a/vibrator/1.0/vts/functional/vibrator_hidl_hal_test.cpp
+++ b/vibrator/1.0/vts/functional/VtsHalVibratorV1_0TargetTest.cpp
@@ -19,7 +19,7 @@
#include <android-base/logging.h>
#include <android/hardware/vibrator/1.0/IVibrator.h>
#include <android/hardware/vibrator/1.0/types.h>
-#include <gtest/gtest.h>
+#include <VtsHalHidlTargetBaseTest.h>
#include <unistd.h>
using ::android::hardware::vibrator::V1_0::IVibrator;
@@ -29,10 +29,10 @@
using ::android::sp;
// The main test class for VIBRATOR HIDL HAL.
-class VibratorHidlTest : public ::testing::Test {
+class VibratorHidlTest : public ::testing::VtsHalHidlTargetBaseTest {
public:
virtual void SetUp() override {
- vibrator = IVibrator::getService();
+ vibrator = ::testing::VtsHalHidlTargetBaseTest::getService<IVibrator>();
ASSERT_NE(vibrator, nullptr);
}
diff --git a/vibrator/1.0/vts/types.vts b/vibrator/1.0/vts/types.vts
deleted file mode 100644
index d1bf1e1..0000000
--- a/vibrator/1.0/vts/types.vts
+++ /dev/null
@@ -1,24 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "types"
-
-package: "android.hardware.vibrator"
-
-
-attribute: {
- name: "::android::hardware::vibrator::V1_0::Status"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "OK"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "ERR"
- scalar_value: {
- uint32_t: 1
- }
- }
-}
-
diff --git a/vr/1.0/default/Android.bp b/vr/1.0/default/Android.bp
index 0d374d3..e7afa9a 100644
--- a/vr/1.0/default/Android.bp
+++ b/vr/1.0/default/Android.bp
@@ -7,7 +7,6 @@
"liblog",
"libcutils",
"libhardware",
- "libhwbinder",
"libbase",
"libcutils",
"libutils",
@@ -30,7 +29,6 @@
"libhardware",
"libhidlbase",
"libhidltransport",
- "libhwbinder",
"android.hardware.vr@1.0",
],
}
diff --git a/vr/1.0/default/Vr.cpp b/vr/1.0/default/Vr.cpp
index a0de998..345db99 100644
--- a/vr/1.0/default/Vr.cpp
+++ b/vr/1.0/default/Vr.cpp
@@ -42,16 +42,16 @@
return Void();
}
-IVr* HIDL_FETCH_IVr(const char *name) {
+IVr* HIDL_FETCH_IVr(const char * /*name*/) {
vr_module_t *vr_module;
const hw_module_t *hw_module = NULL;
- int ret = hw_get_module(name, &hw_module);
+ int ret = hw_get_module(VR_HARDWARE_MODULE_ID, &hw_module);
if (ret == 0) {
return new Vr(reinterpret_cast<vr_module_t*>(
const_cast<hw_module_t*>(hw_module)));
} else {
- ALOGE("hw_get_module %s failed: %d", name, ret);
+ ALOGE("hw_get_module %s failed: %d", VR_HARDWARE_MODULE_ID, ret);
return nullptr;
}
}
diff --git a/vr/1.0/default/service.cpp b/vr/1.0/default/service.cpp
index c27ceaf..22fb7d1 100644
--- a/vr/1.0/default/service.cpp
+++ b/vr/1.0/default/service.cpp
@@ -23,5 +23,5 @@
using android::hardware::defaultPassthroughServiceImplementation;
int main() {
- return defaultPassthroughServiceImplementation<IVr>("vr");
+ return defaultPassthroughServiceImplementation<IVr>();
}
diff --git a/vr/1.0/vts/Vr.vts b/vr/1.0/vts/Vr.vts
deleted file mode 100644
index fdc4a5c..0000000
--- a/vr/1.0/vts/Vr.vts
+++ /dev/null
@@ -1,37 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "IVr"
-
-package: "android.hardware.vr"
-
-import: "android.hidl.base@1.0::types"
-
-interface: {
- api: {
- name: "init"
- callflow: {
- next: "*"
- }
- callflow: {
- entry: true
- }
- callflow: {
- exit: true
- }
- }
-
- api: {
- name: "setVrMode"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- callflow: {
- next: "*"
- }
- callflow: {
- exit: true
- }
- }
-
-}
diff --git a/vr/1.0/vts/functional/Android.bp b/vr/1.0/vts/functional/Android.bp
index 551f27c..b2e50ad 100644
--- a/vr/1.0/vts/functional/Android.bp
+++ b/vr/1.0/vts/functional/Android.bp
@@ -15,22 +15,17 @@
//
cc_test {
- name: "vr_hidl_hal_test",
- gtest: true,
- srcs: ["vr_hidl_hal_test.cpp"],
+ name: "VtsHalVrV1_0TargetTest",
+ srcs: ["VtsHalVrV1_0TargetTest.cpp"],
shared_libs: [
"liblog",
"libhidlbase",
"libutils",
"android.hardware.vr@1.0",
],
- static_libs: ["libgtest"],
+ static_libs: ["VtsHalHidlTargetBaseTest"],
cflags: [
- "--coverage",
"-O0",
"-g",
- ],
- ldflags: [
- "--coverage"
]
}
diff --git a/vr/1.0/vts/functional/vr_hidl_hal_test.cpp b/vr/1.0/vts/functional/VtsHalVrV1_0TargetTest.cpp
similarity index 92%
rename from vr/1.0/vts/functional/vr_hidl_hal_test.cpp
rename to vr/1.0/vts/functional/VtsHalVrV1_0TargetTest.cpp
index 29888fd..6a7b078 100644
--- a/vr/1.0/vts/functional/vr_hidl_hal_test.cpp
+++ b/vr/1.0/vts/functional/VtsHalVrV1_0TargetTest.cpp
@@ -18,7 +18,7 @@
#include <android-base/logging.h>
#include <android/hardware/vr/1.0/IVr.h>
#include <android/log.h>
-#include <gtest/gtest.h>
+#include <VtsHalHidlTargetBaseTest.h>
#include <hardware/vr.h>
using ::android::hardware::vr::V1_0::IVr;
@@ -26,13 +26,11 @@
using ::android::hardware::Void;
using ::android::sp;
-#define VR_SERVICE_NAME "vr"
-
// The main test class for VR HIDL HAL.
-class VrHidlTest : public ::testing::Test {
+class VrHidlTest : public ::testing::VtsHalHidlTargetBaseTest {
public:
void SetUp() override {
- vr = IVr::getService(VR_SERVICE_NAME);
+ vr = ::testing::VtsHalHidlTargetBaseTest::getService<IVr>();
ASSERT_NE(vr, nullptr);
}
diff --git a/wifi/.clang-format b/wifi/.clang-format
new file mode 100644
index 0000000..25ed932
--- /dev/null
+++ b/wifi/.clang-format
@@ -0,0 +1,2 @@
+BasedOnStyle: Google
+IndentWidth: 4
\ No newline at end of file
diff --git a/wifi/1.0/Android.mk b/wifi/1.0/Android.mk
index 4476b14..fa6ef6c 100644
--- a/wifi/1.0/Android.mk
+++ b/wifi/1.0/Android.mk
@@ -796,25 +796,6 @@
LOCAL_GENERATED_SOURCES += $(GEN)
#
-# Build types.hal (StaBackgroundScanBand)
-#
-GEN := $(intermediates)/android/hardware/wifi/V1_0/StaBackgroundScanBand.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
- $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
- -Ljava \
- -randroid.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.wifi@1.0::types.StaBackgroundScanBand
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
# Build types.hal (StaBackgroundScanBucketEventReportSchemeMask)
#
GEN := $(intermediates)/android/hardware/wifi/V1_0/StaBackgroundScanBucketEventReportSchemeMask.java
@@ -1081,6 +1062,25 @@
LOCAL_GENERATED_SOURCES += $(GEN)
#
+# Build types.hal (WifiBand)
+#
+GEN := $(intermediates)/android/hardware/wifi/V1_0/WifiBand.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.wifi@1.0::types.WifiBand
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
# Build types.hal (WifiChannelInfo)
#
GEN := $(intermediates)/android/hardware/wifi/V1_0/WifiChannelInfo.java
@@ -2599,25 +2599,6 @@
LOCAL_GENERATED_SOURCES += $(GEN)
#
-# Build types.hal (StaBackgroundScanBand)
-#
-GEN := $(intermediates)/android/hardware/wifi/V1_0/StaBackgroundScanBand.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
- $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
- -Ljava \
- -randroid.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.wifi@1.0::types.StaBackgroundScanBand
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
# Build types.hal (StaBackgroundScanBucketEventReportSchemeMask)
#
GEN := $(intermediates)/android/hardware/wifi/V1_0/StaBackgroundScanBucketEventReportSchemeMask.java
@@ -2884,6 +2865,25 @@
LOCAL_GENERATED_SOURCES += $(GEN)
#
+# Build types.hal (WifiBand)
+#
+GEN := $(intermediates)/android/hardware/wifi/V1_0/WifiBand.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.wifi@1.0::types.WifiBand
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
# Build types.hal (WifiChannelInfo)
#
GEN := $(intermediates)/android/hardware/wifi/V1_0/WifiChannelInfo.java
diff --git a/wifi/1.0/IWifiApIface.hal b/wifi/1.0/IWifiApIface.hal
index aeca2cd..1f6ee7c 100644
--- a/wifi/1.0/IWifiApIface.hal
+++ b/wifi/1.0/IWifiApIface.hal
@@ -33,4 +33,21 @@
* |WifiStatusCode.FAILURE_IFACE_INVALID|
*/
setCountryCode(int8_t[2] code) generates (WifiStatus status);
+
+ /**
+ * Used to query the list of valid frequencies (depending on country code set)
+ * for the provided band.
+ *
+ * @param band Band for which the frequency list is being generated.
+ * @return status WifiStatus of the operation.
+ * Possible status codes:
+ * |WifiStatusCode.SUCCESS|,
+ * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|,
+ * |WifiStatusCode.ERROR_NOT_SUPPORTED|,
+ * |WifiStatusCode.ERROR_NOT_AVAILABLE|,
+ * |WifiStatusCode.ERROR_UNKNOWN|
+ * @return frequencies vector of valid frequencies for the provided band.
+ */
+ getValidFrequenciesForBand(WifiBand band)
+ generates (WifiStatus status, vec<WifiChannelInMhz> frequencies);
};
diff --git a/wifi/1.0/IWifiChip.hal b/wifi/1.0/IWifiChip.hal
index b0598a4..611c449 100644
--- a/wifi/1.0/IWifiChip.hal
+++ b/wifi/1.0/IWifiChip.hal
@@ -629,6 +629,19 @@
forceDumpToDebugRingBuffer(string ringName) generates (WifiStatus status);
/**
+ * API to stop the debug data collection for all ring buffers.
+ *
+ * @return status WifiStatus of the operation.
+ * Possible status codes:
+ * |WifiStatusCode.SUCCESS|,
+ * |WifiStatusCode.ERROR_WIFI_CHIP_INVALID|,
+ * |WifiStatusCode.ERROR_NOT_SUPPORTED|,
+ * |WifiStatusCode.NOT_AVAILABLE|,
+ * |WifiStatusCode.UNKNOWN|
+ */
+ stopLoggingToDebugRingBuffer() generates (WifiStatus status);
+
+ /**
* API to retrieve the wifi wake up reason stats for debugging.
* The driver is expected to start maintaining these stats once the chip
* is configured using |configureChip|. These stats must be reset whenever
diff --git a/wifi/1.0/IWifiNanIfaceEventCallback.hal b/wifi/1.0/IWifiNanIfaceEventCallback.hal
index 80d67ce..dd956d6 100644
--- a/wifi/1.0/IWifiNanIfaceEventCallback.hal
+++ b/wifi/1.0/IWifiNanIfaceEventCallback.hal
@@ -141,6 +141,7 @@
* |NanStatusType.INTERNAL_FAILURE|
* |NanStatusType.INVALID_SESSION_ID|
* |NanStatusType.INVALID_PEER_ID|
+ * |NanStatusType.FOLLOWUP_TX_QUEUE_FULL|
*/
oneway notifyTransmitFollowupResponse(CommandIdShort id, WifiNanStatus status);
@@ -281,8 +282,9 @@
*
* @param cmdId command Id corresponding to the original |transmitFollowupRequest| request.
* @param status WifiNanStatus of the operation. Possible status codes are:
+ * |NanStatusType.SUCCESS|
* |NanStatusType.NO_OTA_ACK|
- * |NanStatusType.FOLLOWUP_TX_QUEUE_FULL|
+ * |NanStatusType.PROTOCOL_FAILURE|
*/
oneway eventTransmitFollowup(CommandIdShort id, WifiNanStatus status);
diff --git a/wifi/1.0/IWifiStaIface.hal b/wifi/1.0/IWifiStaIface.hal
index 96dc54a..43c3126 100644
--- a/wifi/1.0/IWifiStaIface.hal
+++ b/wifi/1.0/IWifiStaIface.hal
@@ -180,7 +180,6 @@
* for the provided band. These channels may be specifed in the
* |BackgroundScanBucketParameters.frequenciesInMhz| for a background scan
* request.
- * Must fail if |StaIfaceCapabilityMask.BACKGROUND_SCAN| is not set.
*
* @param band Band for which the frequency list is being generated.
* @return status WifiStatus of the operation.
@@ -192,7 +191,7 @@
* |WifiStatusCode.ERROR_UNKNOWN|
* @return frequencies vector of valid frequencies for the provided band.
*/
- getValidFrequenciesForBackgroundScan(StaBackgroundScanBand band)
+ getValidFrequenciesForBand(WifiBand band)
generates (WifiStatus status, vec<WifiChannelInMhz> frequencies);
/**
diff --git a/wifi/1.0/IWifiStaIfaceEventCallback.hal b/wifi/1.0/IWifiStaIfaceEventCallback.hal
index e8df4c2..e51ea6d 100644
--- a/wifi/1.0/IWifiStaIfaceEventCallback.hal
+++ b/wifi/1.0/IWifiStaIfaceEventCallback.hal
@@ -31,9 +31,12 @@
* |StaBackgroundScanBucketParameters.eventReportScheme|.
*
* @param cmdId command ID corresponding to the request.
+ * @param bucketsScanned Bitset where each bit indicates if the bucket with
+ * that index (starting at 0) was scanned.
* @parm result Full scan result for an AP.
*/
- oneway onBackgroundFullScanResult(CommandId cmdId, StaScanResult result);
+ oneway onBackgroundFullScanResult(
+ CommandId cmdId, uint32_t bucketsScanned, StaScanResult result);
/**
* Called when the |StaBackgroundScanBucketParameters.eventReportScheme| flags
diff --git a/wifi/1.0/default/Android.mk b/wifi/1.0/default/Android.mk
index 2d2d898..00e5f98 100644
--- a/wifi/1.0/default/Android.mk
+++ b/wifi/1.0/default/Android.mk
@@ -39,7 +39,6 @@
libcutils \
libhidlbase \
libhidltransport \
- libhwbinder \
liblog \
libnl \
libutils \
diff --git a/wifi/1.0/default/hidl_callback_util.h b/wifi/1.0/default/hidl_callback_util.h
new file mode 100644
index 0000000..7136279
--- /dev/null
+++ b/wifi/1.0/default/hidl_callback_util.h
@@ -0,0 +1,121 @@
+/*
+ * Copyright (C) 2017 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.
+ */
+
+#ifndef HIDL_CALLBACK_UTIL_H_
+#define HIDL_CALLBACK_UTIL_H_
+
+#include <set>
+
+#include <hidl/HidlSupport.h>
+
+namespace {
+// Type of callback invoked by the death handler.
+using on_death_cb_function = std::function<void(uint64_t)>;
+
+// Private class used to keep track of death of individual
+// callbacks stored in HidlCallbackHandler.
+template <typename CallbackType>
+class HidlDeathHandler : public android::hardware::hidl_death_recipient {
+ public:
+ HidlDeathHandler(const on_death_cb_function& user_cb_function)
+ : cb_function_(user_cb_function) {}
+ ~HidlDeathHandler() = default;
+
+ // Death notification for callbacks.
+ void serviceDied(
+ uint64_t cookie,
+ const android::wp<android::hidl::base::V1_0::IBase>& /* who */) override {
+ cb_function_(cookie);
+ }
+
+ private:
+ on_death_cb_function cb_function_;
+
+ DISALLOW_COPY_AND_ASSIGN(HidlDeathHandler);
+};
+} // namespace
+
+namespace android {
+namespace hardware {
+namespace wifi {
+namespace V1_0 {
+namespace implementation {
+namespace hidl_callback_util {
+template <typename CallbackType>
+// Provides a class to manage callbacks for the various HIDL interfaces and
+// handle the death of the process hosting each callback.
+class HidlCallbackHandler {
+ public:
+ HidlCallbackHandler()
+ : death_handler_(new HidlDeathHandler<CallbackType>(
+ std::bind(&HidlCallbackHandler::onObjectDeath,
+ this,
+ std::placeholders::_1))) {}
+ ~HidlCallbackHandler() = default;
+
+ bool addCallback(const sp<CallbackType>& cb) {
+ // TODO(b/33818800): Can't compare proxies yet. So, use the cookie
+ // (callback proxy's raw pointer) to track the death of individual clients.
+ uint64_t cookie = reinterpret_cast<uint64_t>(cb.get());
+ if (cb_set_.find(cb) != cb_set_.end()) {
+ LOG(WARNING) << "Duplicate death notification registration";
+ return true;
+ }
+ if (!cb->linkToDeath(death_handler_, cookie)) {
+ LOG(ERROR) << "Failed to register death notification";
+ return false;
+ }
+ cb_set_.insert(cb);
+ return true;
+ }
+
+ const std::set<android::sp<CallbackType>> getCallbacks() { return cb_set_; }
+
+ // Death notification for callbacks.
+ void onObjectDeath(uint64_t cookie) {
+ CallbackType* cb = reinterpret_cast<CallbackType*>(cookie);
+ const auto& iter = cb_set_.find(cb);
+ if (iter == cb_set_.end()) {
+ LOG(ERROR) << "Unknown callback death notification received";
+ return;
+ }
+ cb_set_.erase(iter);
+ LOG(DEBUG) << "Dead callback removed from list";
+ }
+
+ void invalidate() {
+ for (const sp<CallbackType>& cb : cb_set_) {
+ if (!cb->unlinkToDeath(death_handler_)) {
+ LOG(ERROR) << "Failed to deregister death notification";
+ }
+ }
+ cb_set_.clear();
+ }
+
+ private:
+ std::set<sp<CallbackType>> cb_set_;
+ sp<HidlDeathHandler<CallbackType>> death_handler_;
+
+ DISALLOW_COPY_AND_ASSIGN(HidlCallbackHandler);
+};
+
+} // namespace hidl_callback_util
+} // namespace implementation
+} // namespace V1_0
+} // namespace wifi
+} // namespace hardware
+} // namespace android
+#endif // HIDL_CALLBACK_UTIL_H_
diff --git a/wifi/1.0/default/hidl_struct_util.cpp b/wifi/1.0/default/hidl_struct_util.cpp
index e57919d..82364cb 100644
--- a/wifi/1.0/default/hidl_struct_util.cpp
+++ b/wifi/1.0/default/hidl_struct_util.cpp
@@ -134,6 +134,7 @@
return false;
}
hidl_status->ringName = reinterpret_cast<const char*>(legacy_status.name);
+ hidl_status->flags = 0;
for (const auto flag : {WIFI_RING_BUFFER_FLAG_HAS_BINARY_ENTRIES,
WIFI_RING_BUFFER_FLAG_HAS_ASCII_ENTRIES}) {
if (flag & legacy_status.flags) {
@@ -305,21 +306,21 @@
return true;
}
-legacy_hal::wifi_band convertHidlGscanBandToLegacy(StaBackgroundScanBand band) {
+legacy_hal::wifi_band convertHidlWifiBandToLegacy(WifiBand band) {
switch (band) {
- case StaBackgroundScanBand::BAND_UNSPECIFIED:
+ case WifiBand::BAND_UNSPECIFIED:
return legacy_hal::WIFI_BAND_UNSPECIFIED;
- case StaBackgroundScanBand::BAND_24GHZ:
+ case WifiBand::BAND_24GHZ:
return legacy_hal::WIFI_BAND_BG;
- case StaBackgroundScanBand::BAND_5GHZ:
+ case WifiBand::BAND_5GHZ:
return legacy_hal::WIFI_BAND_A;
- case StaBackgroundScanBand::BAND_5GHZ_DFS:
+ case WifiBand::BAND_5GHZ_DFS:
return legacy_hal::WIFI_BAND_A_DFS;
- case StaBackgroundScanBand::BAND_5GHZ_WITH_DFS:
+ case WifiBand::BAND_5GHZ_WITH_DFS:
return legacy_hal::WIFI_BAND_A_WITH_DFS;
- case StaBackgroundScanBand::BAND_24GHZ_5GHZ:
+ case WifiBand::BAND_24GHZ_5GHZ:
return legacy_hal::WIFI_BAND_ABG;
- case StaBackgroundScanBand::BAND_24GHZ_5GHZ_WITH_DFS:
+ case WifiBand::BAND_24GHZ_5GHZ_WITH_DFS:
return legacy_hal::WIFI_BAND_ABG_WITH_DFS;
};
CHECK(false);
@@ -337,7 +338,6 @@
hidl_scan_params.reportThresholdPercent;
legacy_scan_params->report_threshold_num_scans =
hidl_scan_params.reportThresholdNumScans;
- // TODO(b/33194311): Expose these max limits in the HIDL interface.
if (hidl_scan_params.buckets.size() > MAX_BUCKETS) {
return false;
}
@@ -365,7 +365,6 @@
convertHidlGscanReportEventFlagToLegacy(flag);
}
}
- // TODO(b/33194311): Expose these max limits in the HIDL interface.
if (hidl_bucket_spec.frequencies.size() > MAX_CHANNELS) {
return false;
}
@@ -457,6 +456,7 @@
if (!hidl_scan_data) {
return false;
}
+ hidl_scan_data->flags = 0;
for (const auto flag : {legacy_hal::WIFI_SCAN_FLAG_INTERRUPTED}) {
if (legacy_cached_scan_result.flags & flag) {
hidl_scan_data->flags |=
@@ -793,9 +793,6 @@
legacy_request->config_disc_mac_addr_randomization = 1;
legacy_request->disc_mac_addr_rand_interval_sec =
hidl_request.configParams.macAddressRandomizationIntervalSec;
- legacy_request->config_responder_auto_response = 1;
- legacy_request->ranging_auto_response_cfg = hidl_request.configParams.acceptRangingRequests ?
- legacy_hal::NAN_RANGING_AUTO_RESPONSE_ENABLE : legacy_hal::NAN_RANGING_AUTO_RESPONSE_DISABLE;
legacy_request->config_2dot4g_rssi_close = 1;
if (hidl_request.configParams.bandSpecificConfig.size() != 2) {
LOG(ERROR) << "convertHidlNanEnableRequestToLegacy: bandSpecificConfig.size() != 2";
@@ -918,7 +915,15 @@
memcpy(legacy_request->service_specific_info,
hidl_request.baseConfigs.serviceSpecificInfo.data(),
legacy_request->service_specific_info_len);
- // TODO: b/35193423 add support for extended service specific info
+ legacy_request->sdea_service_specific_info_len =
+ hidl_request.baseConfigs.extendedServiceSpecificInfo.size();
+ if (legacy_request->sdea_service_specific_info_len > NAN_MAX_SDEA_SERVICE_SPECIFIC_INFO_LEN) {
+ LOG(ERROR) << "convertHidlNanPublishRequestToLegacy: sdea_service_specific_info_len too large";
+ return false;
+ }
+ memcpy(legacy_request->sdea_service_specific_info,
+ hidl_request.baseConfigs.extendedServiceSpecificInfo.data(),
+ legacy_request->sdea_service_specific_info_len);
legacy_request->rx_match_filter_len = hidl_request.baseConfigs.rxMatchFilter.size();
if (legacy_request->rx_match_filter_len > NAN_MAX_MATCH_FILTER_LEN) {
LOG(ERROR) << "convertHidlNanPublishRequestToLegacy: rx_match_filter_len too large";
@@ -943,7 +948,7 @@
hidl_request.baseConfigs.disableMatchExpirationIndication ? 0x2 : 0x0;
legacy_request->recv_indication_cfg |=
hidl_request.baseConfigs.disableFollowupReceivedIndication ? 0x4 : 0x0;
- legacy_request->cipher_type = hidl_request.baseConfigs.supportedCipherTypes;
+ legacy_request->cipher_type = (unsigned int) hidl_request.baseConfigs.cipherType;
legacy_request->pmk_len = hidl_request.baseConfigs.pmk.size();
if (legacy_request->pmk_len > NAN_PMK_INFO_LEN) {
LOG(ERROR) << "convertHidlNanPublishRequestToLegacy: pmk_len too large";
@@ -961,8 +966,13 @@
hidl_request.baseConfigs.configRangingIndications;
legacy_request->ranging_cfg.distance_ingress_cm = hidl_request.baseConfigs.distanceIngressCm;
legacy_request->ranging_cfg.distance_egress_cm = hidl_request.baseConfigs.distanceEgressCm;
+ legacy_request->ranging_auto_response = hidl_request.baseConfigs.rangingRequired ?
+ legacy_hal::NAN_RANGING_AUTO_RESPONSE_ENABLE : legacy_hal::NAN_RANGING_AUTO_RESPONSE_DISABLE;
+ legacy_request->range_report = legacy_hal::NAN_DISABLE_RANGE_REPORT;
legacy_request->publish_type = (legacy_hal::NanPublishType) hidl_request.publishType;
legacy_request->tx_type = (legacy_hal::NanTxType) hidl_request.txType;
+ legacy_request->service_responder_policy = hidl_request.autoAcceptDataPathRequests ?
+ legacy_hal::NAN_SERVICE_ACCEPT_POLICY_ALL : legacy_hal::NAN_SERVICE_ACCEPT_POLICY_NONE;
return true;
}
@@ -997,7 +1007,16 @@
memcpy(legacy_request->service_specific_info,
hidl_request.baseConfigs.serviceSpecificInfo.data(),
legacy_request->service_specific_info_len);
- // TODO: b/35193423 add support for extended service specific info
+ legacy_request->sdea_service_specific_info_len =
+ hidl_request.baseConfigs.extendedServiceSpecificInfo.size();
+ if (legacy_request->sdea_service_specific_info_len > NAN_MAX_SDEA_SERVICE_SPECIFIC_INFO_LEN) {
+ LOG(ERROR) <<
+ "convertHidlNanSubscribeRequestToLegacy: sdea_service_specific_info_len too large";
+ return false;
+ }
+ memcpy(legacy_request->sdea_service_specific_info,
+ hidl_request.baseConfigs.extendedServiceSpecificInfo.data(),
+ legacy_request->sdea_service_specific_info_len);
legacy_request->rx_match_filter_len = hidl_request.baseConfigs.rxMatchFilter.size();
if (legacy_request->rx_match_filter_len > NAN_MAX_MATCH_FILTER_LEN) {
LOG(ERROR) << "convertHidlNanSubscribeRequestToLegacy: rx_match_filter_len too large";
@@ -1022,7 +1041,7 @@
hidl_request.baseConfigs.disableMatchExpirationIndication ? 0x2 : 0x0;
legacy_request->recv_indication_cfg |=
hidl_request.baseConfigs.disableFollowupReceivedIndication ? 0x4 : 0x0;
- legacy_request->cipher_type = hidl_request.baseConfigs.supportedCipherTypes;
+ legacy_request->cipher_type = (unsigned int) hidl_request.baseConfigs.cipherType;
legacy_request->pmk_len = hidl_request.baseConfigs.pmk.size();
if (legacy_request->pmk_len > NAN_PMK_INFO_LEN) {
LOG(ERROR) << "convertHidlNanSubscribeRequestToLegacy: pmk_len too large";
@@ -1040,6 +1059,9 @@
hidl_request.baseConfigs.configRangingIndications;
legacy_request->ranging_cfg.distance_ingress_cm = hidl_request.baseConfigs.distanceIngressCm;
legacy_request->ranging_cfg.distance_egress_cm = hidl_request.baseConfigs.distanceEgressCm;
+ legacy_request->ranging_auto_response = hidl_request.baseConfigs.rangingRequired ?
+ legacy_hal::NAN_RANGING_AUTO_RESPONSE_ENABLE : legacy_hal::NAN_RANGING_AUTO_RESPONSE_DISABLE;
+ legacy_request->range_report = legacy_hal::NAN_DISABLE_RANGE_REPORT;
legacy_request->subscribe_type = (legacy_hal::NanSubscribeType) hidl_request.subscribeType;
legacy_request->serviceResponseFilter = (legacy_hal::NanSRFType) hidl_request.srfType;
legacy_request->serviceResponseInclude = hidl_request.srfRespondIfInAddressSet ?
@@ -1078,13 +1100,22 @@
legacy_hal::NAN_TRANSMIT_IN_DW : legacy_hal::NAN_TRANSMIT_IN_FAW;
legacy_request->service_specific_info_len = hidl_request.serviceSpecificInfo.size();
if (legacy_request->service_specific_info_len > NAN_MAX_SERVICE_SPECIFIC_INFO_LEN) {
- LOG(ERROR) << "convertHidlNanTransmitFollowupRequestToLegacy: service_specific_info_len too large";
+ LOG(ERROR) <<
+ "convertHidlNanTransmitFollowupRequestToLegacy: service_specific_info_len too large";
return false;
}
memcpy(legacy_request->service_specific_info,
hidl_request.serviceSpecificInfo.data(),
legacy_request->service_specific_info_len);
- // TODO: b/35193423 add support for extended service specific info
+ legacy_request->sdea_service_specific_info_len = hidl_request.extendedServiceSpecificInfo.size();
+ if (legacy_request->sdea_service_specific_info_len > NAN_MAX_SDEA_SERVICE_SPECIFIC_INFO_LEN) {
+ LOG(ERROR) <<
+ "convertHidlNanTransmitFollowupRequestToLegacy: sdea_service_specific_info_len too large";
+ return false;
+ }
+ memcpy(legacy_request->sdea_service_specific_info,
+ hidl_request.extendedServiceSpecificInfo.data(),
+ legacy_request->sdea_service_specific_info_len);
legacy_request->recv_indication_cfg = hidl_request.disableFollowupResultIndication ? 0x1 : 0x0;
return true;
@@ -1121,9 +1152,6 @@
legacy_request->config_disc_mac_addr_randomization = 1;
legacy_request->disc_mac_addr_rand_interval_sec =
hidl_request.macAddressRandomizationIntervalSec;
- legacy_request->config_responder_auto_response = 1;
- legacy_request->ranging_auto_response_cfg = hidl_request.acceptRangingRequests ?
- legacy_hal::NAN_RANGING_AUTO_RESPONSE_ENABLE : legacy_hal::NAN_RANGING_AUTO_RESPONSE_DISABLE;
/* TODO : missing
legacy_request->config_2dot4g_rssi_close = 1;
legacy_request->rssi_close_2dot4g_val =
@@ -1202,14 +1230,15 @@
legacy_hal::NAN_DP_CONFIG_SECURITY : legacy_hal::NAN_DP_CONFIG_NO_SECURITY;
legacy_request->app_info.ndp_app_info_len = hidl_request.appInfo.size();
if (legacy_request->app_info.ndp_app_info_len > NAN_DP_MAX_APP_INFO_LEN) {
- LOG(ERROR) << "convertHidlNanDataPathInitiatorRequestToLegacy: ndp_app_info_len to large";
+ LOG(ERROR) << "convertHidlNanDataPathInitiatorRequestToLegacy: ndp_app_info_len too large";
return false;
}
memcpy(legacy_request->app_info.ndp_app_info, hidl_request.appInfo.data(),
legacy_request->app_info.ndp_app_info_len);
- legacy_request->cipher_type = hidl_request.supportedCipherTypes;
+ legacy_request->cipher_type = (unsigned int) hidl_request.cipherType;
legacy_request->pmk_len = hidl_request.pmk.size();
if (legacy_request->pmk_len > NAN_PMK_INFO_LEN) {
+ LOG(ERROR) << "convertHidlNanDataPathInitiatorRequestToLegacy: pmk_len too large";
return false;
}
memcpy(legacy_request->pmk, hidl_request.pmk.data(), legacy_request->pmk_len);
@@ -1239,7 +1268,7 @@
}
memcpy(legacy_request->app_info.ndp_app_info, hidl_request.appInfo.data(),
legacy_request->app_info.ndp_app_info_len);
- legacy_request->cipher_type = hidl_request.supportedCipherTypes;
+ legacy_request->cipher_type = (unsigned int) hidl_request.cipherType;
legacy_request->pmk_len = hidl_request.pmk.size();
if (legacy_request->pmk_len > NAN_PMK_INFO_LEN) {
LOG(ERROR) << "convertHidlNanDataPathIndicationResponseToLegacy: pmk_len too large";
@@ -1277,14 +1306,13 @@
hidl_response->maxMatchFilterLen = legacy_response.max_match_filter_len;
hidl_response->maxTotalMatchFilterLen = legacy_response.max_total_match_filter_len;
hidl_response->maxServiceSpecificInfoLen = legacy_response.max_service_specific_info_len;
- // TODO: b/35193423 add support for extended service specific info
- hidl_response->maxExtendedServiceSpecificInfoLen = 0;
+ hidl_response->maxExtendedServiceSpecificInfoLen =
+ legacy_response.max_sdea_service_specific_info_len;
hidl_response->maxNdiInterfaces = legacy_response.max_ndi_interfaces;
hidl_response->maxNdpSessions = legacy_response.max_ndp_sessions;
hidl_response->maxAppInfoLen = legacy_response.max_app_info_len;
hidl_response->maxQueuedTransmitFollowupMsgs = legacy_response.max_queued_transmit_followup_msgs;
- // TODO: b/34059183 to add to underlying HAL
- hidl_response->maxSubscribeInterfaceAddresses = NAN_MAX_SUBSCRIBE_MAX_ADDRESS;
+ hidl_response->maxSubscribeInterfaceAddresses = legacy_response.max_subscribe_address;
hidl_response->supportedCipherSuites = legacy_response.cipher_suites_supported;
return true;
@@ -1302,19 +1330,21 @@
hidl_ind->addr = hidl_array<uint8_t, 6>(legacy_ind.addr);
hidl_ind->serviceSpecificInfo = std::vector<uint8_t>(legacy_ind.service_specific_info,
legacy_ind.service_specific_info + legacy_ind.service_specific_info_len);
- // TODO: b/35193423 add support for extended service specific info
+ hidl_ind->extendedServiceSpecificInfo = std::vector<uint8_t>(
+ legacy_ind.sdea_service_specific_info,
+ legacy_ind.sdea_service_specific_info + legacy_ind.sdea_service_specific_info_len);
hidl_ind->matchFilter = std::vector<uint8_t>(legacy_ind.sdf_match_filter,
legacy_ind.sdf_match_filter + legacy_ind.sdf_match_filter_len);
hidl_ind->matchOccuredInBeaconFlag = legacy_ind.match_occured_flag == 1;
hidl_ind->outOfResourceFlag = legacy_ind.out_of_resource_flag == 1;
hidl_ind->rssiValue = legacy_ind.rssi_value;
- hidl_ind->peerSupportedCipherTypes = legacy_ind.peer_cipher_type;
+ hidl_ind->peerCipherType = (NanCipherSuiteType) legacy_ind.peer_cipher_type;
hidl_ind->peerRequiresSecurityEnabledInNdp =
legacy_ind.peer_sdea_params.security_cfg == legacy_hal::NAN_DP_CONFIG_SECURITY;
hidl_ind->peerRequiresRanging =
legacy_ind.peer_sdea_params.ranging_state == legacy_hal::NAN_RANGING_ENABLE;
- hidl_ind->rangingMeasurementInCm = legacy_ind.range_result.range_measurement_cm;
- hidl_ind->rangingIndicationType = legacy_ind.range_result.ranging_event_type;
+ hidl_ind->rangingMeasurementInCm = legacy_ind.range_info.range_measurement_cm;
+ hidl_ind->rangingIndicationType = legacy_ind.range_info.ranging_event_type;
return true;
}
@@ -1332,6 +1362,9 @@
hidl_ind->receivedInFaw = legacy_ind.dw_or_faw == 1;
hidl_ind->serviceSpecificInfo = std::vector<uint8_t>(legacy_ind.service_specific_info,
legacy_ind.service_specific_info + legacy_ind.service_specific_info_len);
+ hidl_ind->extendedServiceSpecificInfo = std::vector<uint8_t>(
+ legacy_ind.sdea_service_specific_info,
+ legacy_ind.sdea_service_specific_info + legacy_ind.sdea_service_specific_info_len);
return true;
}
@@ -1749,6 +1782,7 @@
hidl_capabilities->lcrSupported = legacy_capabilities.lcr_support;
hidl_capabilities->responderSupported =
legacy_capabilities.responder_supported;
+ hidl_capabilities->preambleSupport = 0;
for (const auto flag : {legacy_hal::WIFI_RTT_PREAMBLE_LEGACY,
legacy_hal::WIFI_RTT_PREAMBLE_HT,
legacy_hal::WIFI_RTT_PREAMBLE_VHT}) {
@@ -1758,6 +1792,7 @@
convertLegacyRttPreambleToHidl(flag));
}
}
+ hidl_capabilities->bwSupport = 0;
for (const auto flag : {legacy_hal::WIFI_RTT_BW_5,
legacy_hal::WIFI_RTT_BW_10,
legacy_hal::WIFI_RTT_BW_20,
diff --git a/wifi/1.0/default/hidl_struct_util.h b/wifi/1.0/default/hidl_struct_util.h
index 490dcae..41e97b3 100644
--- a/wifi/1.0/default/hidl_struct_util.h
+++ b/wifi/1.0/default/hidl_struct_util.h
@@ -60,7 +60,7 @@
bool convertLegacyGscanCapabilitiesToHidl(
const legacy_hal::wifi_gscan_capabilities& legacy_caps,
StaBackgroundScanCapabilities* hidl_caps);
-legacy_hal::wifi_band convertHidlGscanBandToLegacy(StaBackgroundScanBand band);
+legacy_hal::wifi_band convertHidlWifiBandToLegacy(WifiBand band);
bool convertHidlGscanParamsToLegacy(
const StaBackgroundScanParameters& hidl_scan_params,
legacy_hal::wifi_scan_cmd_params* legacy_scan_params);
diff --git a/wifi/1.0/default/wifi.cpp b/wifi/1.0/default/wifi.cpp
index 8feb836..3d482b4 100644
--- a/wifi/1.0/default/wifi.cpp
+++ b/wifi/1.0/default/wifi.cpp
@@ -85,8 +85,9 @@
WifiStatus Wifi::registerEventCallbackInternal(
const sp<IWifiEventCallback>& event_callback) {
- // TODO(b/31632518): remove the callback when the client is destroyed
- event_callbacks_.emplace_back(event_callback);
+ if (!event_cb_handler_.addCallback(event_callback)) {
+ return createWifiStatus(WifiStatusCode::ERROR_UNKNOWN);
+ }
return createWifiStatus(WifiStatusCode::SUCCESS);
}
@@ -102,13 +103,13 @@
// Create the chip instance once the HAL is started.
chip_ = new WifiChip(kChipId, legacy_hal_, mode_controller_);
run_state_ = RunState::STARTED;
- for (const auto& callback : event_callbacks_) {
+ for (const auto& callback : event_cb_handler_.getCallbacks()) {
if (!callback->onStart().isOk()) {
LOG(ERROR) << "Failed to invoke onStart callback";
};
}
} else {
- for (const auto& callback : event_callbacks_) {
+ for (const auto& callback : event_cb_handler_.getCallbacks()) {
if (!callback->onFailure(wifi_status).isOk()) {
LOG(ERROR) << "Failed to invoke onFailure callback";
}
@@ -126,13 +127,13 @@
}
WifiStatus wifi_status = stopLegacyHalAndDeinitializeModeController();
if (wifi_status.code == WifiStatusCode::SUCCESS) {
- for (const auto& callback : event_callbacks_) {
+ for (const auto& callback : event_cb_handler_.getCallbacks()) {
if (!callback->onStop().isOk()) {
LOG(ERROR) << "Failed to invoke onStop callback";
};
}
} else {
- for (const auto& callback : event_callbacks_) {
+ for (const auto& callback : event_cb_handler_.getCallbacks()) {
if (!callback->onFailure(wifi_status).isOk()) {
LOG(ERROR) << "Failed to invoke onFailure callback";
}
diff --git a/wifi/1.0/default/wifi.h b/wifi/1.0/default/wifi.h
index 40d3552..c6fa84c 100644
--- a/wifi/1.0/default/wifi.h
+++ b/wifi/1.0/default/wifi.h
@@ -23,6 +23,7 @@
#include <android/hardware/wifi/1.0/IWifi.h>
#include <utils/Looper.h>
+#include "hidl_callback_util.h"
#include "wifi_chip.h"
#include "wifi_legacy_hal.h"
#include "wifi_mode_controller.h"
@@ -71,8 +72,8 @@
std::shared_ptr<legacy_hal::WifiLegacyHal> legacy_hal_;
std::shared_ptr<mode_controller::WifiModeController> mode_controller_;
RunState run_state_;
- std::vector<sp<IWifiEventCallback>> event_callbacks_;
sp<WifiChip> chip_;
+ hidl_callback_util::HidlCallbackHandler<IWifiEventCallback> event_cb_handler_;
DISALLOW_COPY_AND_ASSIGN(Wifi);
};
diff --git a/wifi/1.0/default/wifi_ap_iface.cpp b/wifi/1.0/default/wifi_ap_iface.cpp
index 1a8b31d..e2beec2 100644
--- a/wifi/1.0/default/wifi_ap_iface.cpp
+++ b/wifi/1.0/default/wifi_ap_iface.cpp
@@ -17,6 +17,7 @@
#include <android-base/logging.h>
#include "hidl_return_util.h"
+#include "hidl_struct_util.h"
#include "wifi_ap_iface.h"
#include "wifi_status_util.h"
@@ -64,6 +65,15 @@
code);
}
+Return<void> WifiApIface::getValidFrequenciesForBand(
+ WifiBand band, getValidFrequenciesForBand_cb hidl_status_cb) {
+ return validateAndCall(this,
+ WifiStatusCode::ERROR_WIFI_IFACE_INVALID,
+ &WifiApIface::getValidFrequenciesForBandInternal,
+ hidl_status_cb,
+ band);
+}
+
std::pair<WifiStatus, std::string> WifiApIface::getNameInternal() {
return {createWifiStatus(WifiStatusCode::SUCCESS), ifname_};
}
@@ -79,6 +89,16 @@
return createWifiStatusFromLegacyError(legacy_status);
}
+std::pair<WifiStatus, std::vector<WifiChannelInMhz>>
+WifiApIface::getValidFrequenciesForBandInternal(WifiBand band) {
+ static_assert(sizeof(WifiChannelInMhz) == sizeof(uint32_t), "Size mismatch");
+ legacy_hal::wifi_error legacy_status;
+ std::vector<uint32_t> valid_frequencies;
+ std::tie(legacy_status, valid_frequencies) =
+ legacy_hal_.lock()->getValidFrequenciesForBand(
+ hidl_struct_util::convertHidlWifiBandToLegacy(band));
+ return {createWifiStatusFromLegacyError(legacy_status), valid_frequencies};
+}
} // namespace implementation
} // namespace V1_0
} // namespace wifi
diff --git a/wifi/1.0/default/wifi_ap_iface.h b/wifi/1.0/default/wifi_ap_iface.h
index 23d6435..efc168a 100644
--- a/wifi/1.0/default/wifi_ap_iface.h
+++ b/wifi/1.0/default/wifi_ap_iface.h
@@ -44,12 +44,16 @@
Return<void> getType(getType_cb hidl_status_cb) override;
Return<void> setCountryCode(const hidl_array<int8_t, 2>& code,
setCountryCode_cb hidl_status_cb) override;
+ Return<void> getValidFrequenciesForBand(
+ WifiBand band, getValidFrequenciesForBand_cb hidl_status_cb) override;
private:
// Corresponding worker functions for the HIDL methods.
std::pair<WifiStatus, std::string> getNameInternal();
std::pair<WifiStatus, IfaceType> getTypeInternal();
WifiStatus setCountryCodeInternal(const std::array<int8_t, 2>& code);
+ std::pair<WifiStatus, std::vector<WifiChannelInMhz>>
+ getValidFrequenciesForBandInternal(WifiBand band);
std::string ifname_;
std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal_;
diff --git a/wifi/1.0/default/wifi_chip.cpp b/wifi/1.0/default/wifi_chip.cpp
index 0e2d54e..6f980c0 100644
--- a/wifi/1.0/default/wifi_chip.cpp
+++ b/wifi/1.0/default/wifi_chip.cpp
@@ -63,7 +63,7 @@
void WifiChip::invalidate() {
invalidateAndRemoveAllIfaces();
legacy_hal_.reset();
- event_callbacks_.clear();
+ event_cb_handler_.invalidate();
is_valid_ = false;
}
@@ -71,8 +71,8 @@
return is_valid_;
}
-std::vector<sp<IWifiChipEventCallback>> WifiChip::getEventCallbacks() {
- return event_callbacks_;
+std::set<sp<IWifiChipEventCallback>> WifiChip::getEventCallbacks() {
+ return event_cb_handler_.getCallbacks();
}
Return<void> WifiChip::getId(getId_cb hidl_status_cb) {
@@ -317,6 +317,14 @@
ring_name);
}
+Return<void> WifiChip::stopLoggingToDebugRingBuffer(
+ stopLoggingToDebugRingBuffer_cb hidl_status_cb) {
+ return validateAndCall(this,
+ WifiStatusCode::ERROR_WIFI_CHIP_INVALID,
+ &WifiChip::stopLoggingToDebugRingBufferInternal,
+ hidl_status_cb);
+}
+
Return<void> WifiChip::getDebugHostWakeReasonStats(
getDebugHostWakeReasonStats_cb hidl_status_cb) {
return validateAndCall(this,
@@ -353,8 +361,9 @@
WifiStatus WifiChip::registerEventCallbackInternal(
const sp<IWifiChipEventCallback>& event_callback) {
- // TODO(b/31632518): remove the callback when the client is destroyed
- event_callbacks_.emplace_back(event_callback);
+ if (!event_cb_handler_.addCallback(event_callback)) {
+ return createWifiStatus(WifiStatusCode::ERROR_UNKNOWN);
+ }
return createWifiStatus(WifiStatusCode::SUCCESS);
}
@@ -414,14 +423,14 @@
}
WifiStatus status = handleChipConfiguration(mode_id);
if (status.code != WifiStatusCode::SUCCESS) {
- for (const auto& callback : event_callbacks_) {
+ for (const auto& callback : event_cb_handler_.getCallbacks()) {
if (!callback->onChipReconfigureFailure(status).isOk()) {
LOG(ERROR) << "Failed to invoke onChipReconfigureFailure callback";
}
}
return status;
}
- for (const auto& callback : event_callbacks_) {
+ for (const auto& callback : event_cb_handler_.getCallbacks()) {
if (!callback->onChipReconfigured(mode_id).isOk()) {
LOG(ERROR) << "Failed to invoke onChipReconfigured callback";
}
@@ -503,7 +512,7 @@
}
std::string ifname = legacy_hal_.lock()->getApIfaceName();
ap_iface_ = new WifiApIface(ifname, legacy_hal_);
- for (const auto& callback : event_callbacks_) {
+ for (const auto& callback : event_cb_handler_.getCallbacks()) {
if (!callback->onIfaceAdded(IfaceType::AP, ifname).isOk()) {
LOG(ERROR) << "Failed to invoke onIfaceAdded callback";
}
@@ -533,7 +542,7 @@
return createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS);
}
invalidateAndClear(ap_iface_);
- for (const auto& callback : event_callbacks_) {
+ for (const auto& callback : event_cb_handler_.getCallbacks()) {
if (!callback->onIfaceRemoved(IfaceType::AP, ifname).isOk()) {
LOG(ERROR) << "Failed to invoke onIfaceRemoved callback";
}
@@ -549,7 +558,7 @@
}
std::string ifname = legacy_hal_.lock()->getNanIfaceName();
nan_iface_ = new WifiNanIface(ifname, legacy_hal_);
- for (const auto& callback : event_callbacks_) {
+ for (const auto& callback : event_cb_handler_.getCallbacks()) {
if (!callback->onIfaceAdded(IfaceType::NAN, ifname).isOk()) {
LOG(ERROR) << "Failed to invoke onIfaceAdded callback";
}
@@ -579,7 +588,7 @@
return createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS);
}
invalidateAndClear(nan_iface_);
- for (const auto& callback : event_callbacks_) {
+ for (const auto& callback : event_cb_handler_.getCallbacks()) {
if (!callback->onIfaceRemoved(IfaceType::NAN, ifname).isOk()) {
LOG(ERROR) << "Failed to invoke onIfaceAdded callback";
}
@@ -595,7 +604,7 @@
}
std::string ifname = legacy_hal_.lock()->getP2pIfaceName();
p2p_iface_ = new WifiP2pIface(ifname, legacy_hal_);
- for (const auto& callback : event_callbacks_) {
+ for (const auto& callback : event_cb_handler_.getCallbacks()) {
if (!callback->onIfaceAdded(IfaceType::P2P, ifname).isOk()) {
LOG(ERROR) << "Failed to invoke onIfaceAdded callback";
}
@@ -625,7 +634,7 @@
return createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS);
}
invalidateAndClear(p2p_iface_);
- for (const auto& callback : event_callbacks_) {
+ for (const auto& callback : event_cb_handler_.getCallbacks()) {
if (!callback->onIfaceRemoved(IfaceType::P2P, ifname).isOk()) {
LOG(ERROR) << "Failed to invoke onIfaceRemoved callback";
}
@@ -639,7 +648,7 @@
}
std::string ifname = legacy_hal_.lock()->getStaIfaceName();
sta_iface_ = new WifiStaIface(ifname, legacy_hal_);
- for (const auto& callback : event_callbacks_) {
+ for (const auto& callback : event_cb_handler_.getCallbacks()) {
if (!callback->onIfaceAdded(IfaceType::STA, ifname).isOk()) {
LOG(ERROR) << "Failed to invoke onIfaceAdded callback";
}
@@ -669,7 +678,7 @@
return createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS);
}
invalidateAndClear(sta_iface_);
- for (const auto& callback : event_callbacks_) {
+ for (const auto& callback : event_cb_handler_.getCallbacks()) {
if (!callback->onIfaceRemoved(IfaceType::STA, ifname).isOk()) {
LOG(ERROR) << "Failed to invoke onIfaceRemoved callback";
}
@@ -734,6 +743,12 @@
return createWifiStatusFromLegacyError(legacy_status);
}
+WifiStatus WifiChip::stopLoggingToDebugRingBufferInternal() {
+ legacy_hal::wifi_error legacy_status =
+ legacy_hal_.lock()->deregisterRingBufferCallbackHandler();
+ return createWifiStatusFromLegacyError(legacy_status);
+}
+
std::pair<WifiStatus, WifiDebugHostWakeReasonStats>
WifiChip::getDebugHostWakeReasonStatsInternal() {
legacy_hal::wifi_error legacy_status;
diff --git a/wifi/1.0/default/wifi_chip.h b/wifi/1.0/default/wifi_chip.h
index 938b180..406938c 100644
--- a/wifi/1.0/default/wifi_chip.h
+++ b/wifi/1.0/default/wifi_chip.h
@@ -22,6 +22,7 @@
#include <android-base/macros.h>
#include <android/hardware/wifi/1.0/IWifiChip.h>
+#include "hidl_callback_util.h"
#include "wifi_ap_iface.h"
#include "wifi_legacy_hal.h"
#include "wifi_mode_controller.h"
@@ -62,7 +63,7 @@
// valid before processing them.
void invalidate();
bool isValid();
- std::vector<sp<IWifiChipEventCallback>> getEventCallbacks();
+ std::set<sp<IWifiChipEventCallback>> getEventCallbacks();
// HIDL methods exposed.
Return<void> getId(getId_cb hidl_status_cb) override;
@@ -118,6 +119,8 @@
Return<void> forceDumpToDebugRingBuffer(
const hidl_string& ring_name,
forceDumpToDebugRingBuffer_cb hidl_status_cb) override;
+ Return<void> stopLoggingToDebugRingBuffer(
+ stopLoggingToDebugRingBuffer_cb hidl_status_cb) override;
Return<void> getDebugHostWakeReasonStats(
getDebugHostWakeReasonStats_cb hidl_status_cb) override;
Return<void> enableDebugErrorAlerts(
@@ -169,6 +172,7 @@
uint32_t max_interval_in_sec,
uint32_t min_data_size_in_bytes);
WifiStatus forceDumpToDebugRingBufferInternal(const hidl_string& ring_name);
+ WifiStatus stopLoggingToDebugRingBufferInternal();
std::pair<WifiStatus, WifiDebugHostWakeReasonStats>
getDebugHostWakeReasonStatsInternal();
WifiStatus enableDebugErrorAlertsInternal(bool enable);
@@ -179,7 +183,6 @@
ChipId chip_id_;
std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal_;
std::weak_ptr<mode_controller::WifiModeController> mode_controller_;
- std::vector<sp<IWifiChipEventCallback>> event_callbacks_;
sp<WifiApIface> ap_iface_;
sp<WifiNanIface> nan_iface_;
sp<WifiP2pIface> p2p_iface_;
@@ -191,6 +194,8 @@
// registration mechanism. Use this to check if we have already
// registered a callback.
bool debug_ring_buffer_cb_registered_;
+ hidl_callback_util::HidlCallbackHandler<IWifiChipEventCallback>
+ event_cb_handler_;
DISALLOW_COPY_AND_ASSIGN(WifiChip);
};
diff --git a/wifi/1.0/default/wifi_legacy_hal.cpp b/wifi/1.0/default/wifi_legacy_hal.cpp
index cd89acc..7390b65 100644
--- a/wifi/1.0/default/wifi_legacy_hal.cpp
+++ b/wifi/1.0/default/wifi_legacy_hal.cpp
@@ -289,6 +289,24 @@
on_nan_event_transmit_follow_up_user_callback(*event);
}
}
+
+std::function<void(const NanRangeRequestInd&)>
+ on_nan_event_range_request_user_callback;
+void onAysncNanEventRangeRequest(NanRangeRequestInd* event) {
+ const auto lock = hidl_sync_util::acquireGlobalLock();
+ if (on_nan_event_range_request_user_callback && event) {
+ on_nan_event_range_request_user_callback(*event);
+ }
+}
+
+std::function<void(const NanRangeReportInd&)>
+ on_nan_event_range_report_user_callback;
+void onAysncNanEventRangeReport(NanRangeReportInd* event) {
+ const auto lock = hidl_sync_util::acquireGlobalLock();
+ if (on_nan_event_range_report_user_callback && event) {
+ on_nan_event_range_report_user_callback(*event);
+ }
+}
// End of the free-standing "C" style callbacks.
WifiLegacyHal::WifiLegacyHal()
@@ -544,7 +562,7 @@
}
std::pair<wifi_error, std::vector<uint32_t>>
-WifiLegacyHal::getValidFrequenciesForGscan(wifi_band band) {
+WifiLegacyHal::getValidFrequenciesForBand(wifi_band band) {
static_assert(sizeof(uint32_t) >= sizeof(wifi_channel),
"Wifi Channel cannot be represented in output");
std::vector<uint32_t> freqs;
@@ -1023,6 +1041,10 @@
user_callbacks.on_event_data_path_end;
on_nan_event_transmit_follow_up_user_callback =
user_callbacks.on_event_transmit_follow_up;
+ on_nan_event_range_request_user_callback =
+ user_callbacks.on_event_range_request;
+ on_nan_event_range_report_user_callback =
+ user_callbacks.on_event_range_report;
return global_func_table_.wifi_nan_register_handler(
wlan_interface_handle_,
@@ -1039,7 +1061,9 @@
onAysncNanEventDataPathRequest,
onAysncNanEventDataPathConfirm,
onAysncNanEventDataPathEnd,
- onAysncNanEventTransmitFollowUp});
+ onAysncNanEventTransmitFollowUp,
+ onAysncNanEventRangeRequest,
+ onAysncNanEventRangeReport});
}
wifi_error WifiLegacyHal::nanEnableRequest(transaction_id id,
@@ -1261,6 +1285,8 @@
on_nan_event_data_path_confirm_user_callback = nullptr;
on_nan_event_data_path_end_user_callback = nullptr;
on_nan_event_transmit_follow_up_user_callback = nullptr;
+ on_nan_event_range_request_user_callback = nullptr;
+ on_nan_event_range_report_user_callback = nullptr;
}
} // namespace legacy_hal
diff --git a/wifi/1.0/default/wifi_legacy_hal.h b/wifi/1.0/default/wifi_legacy_hal.h
index e65b79b..c8fd5bd 100644
--- a/wifi/1.0/default/wifi_legacy_hal.h
+++ b/wifi/1.0/default/wifi_legacy_hal.h
@@ -89,6 +89,10 @@
std::function<void(const NanDataPathEndInd&)> on_event_data_path_end;
std::function<void(const NanTransmitFollowupInd&)>
on_event_transmit_follow_up;
+ std::function<void(const NanRangeRequestInd&)>
+ on_event_range_request;
+ std::function<void(const NanRangeReportInd&)>
+ on_event_range_report;
};
// Full scan results contain IE info and are hence passed by reference, to
@@ -171,7 +175,7 @@
const on_gscan_results_callback& on_results_callback,
const on_gscan_full_result_callback& on_full_result_callback);
wifi_error stopGscan(wifi_request_id id);
- std::pair<wifi_error, std::vector<uint32_t>> getValidFrequenciesForGscan(
+ std::pair<wifi_error, std::vector<uint32_t>> getValidFrequenciesForBand(
wifi_band band);
// Link layer stats functions.
wifi_error enableLinkLayerStats(bool debug);
diff --git a/wifi/1.0/default/wifi_nan_iface.cpp b/wifi/1.0/default/wifi_nan_iface.cpp
index 8d76f91..6977fc0 100644
--- a/wifi/1.0/default/wifi_nan_iface.cpp
+++ b/wifi/1.0/default/wifi_nan_iface.cpp
@@ -55,7 +55,7 @@
switch (msg.response_type) {
case legacy_hal::NAN_RESPONSE_ENABLED: {
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->notifyEnableResponse(id, wifiNanStatus).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
}
@@ -63,7 +63,7 @@
break;
}
case legacy_hal::NAN_RESPONSE_DISABLED: {
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->notifyDisableResponse(id, wifiNanStatus).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
}
@@ -71,7 +71,7 @@
break;
}
case legacy_hal::NAN_RESPONSE_PUBLISH: {
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->notifyStartPublishResponse(id, wifiNanStatus,
msg.body.publish_response.publish_id).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
@@ -80,7 +80,7 @@
break;
}
case legacy_hal::NAN_RESPONSE_PUBLISH_CANCEL: {
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->notifyStopPublishResponse(id, wifiNanStatus).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
}
@@ -88,7 +88,7 @@
break;
}
case legacy_hal::NAN_RESPONSE_TRANSMIT_FOLLOWUP: {
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->notifyTransmitFollowupResponse(id, wifiNanStatus).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
}
@@ -96,7 +96,7 @@
break;
}
case legacy_hal::NAN_RESPONSE_SUBSCRIBE: {
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->notifyStartSubscribeResponse(id, wifiNanStatus,
msg.body.subscribe_response.subscribe_id).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
@@ -105,7 +105,7 @@
break;
}
case legacy_hal::NAN_RESPONSE_SUBSCRIBE_CANCEL: {
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->notifyStopSubscribeResponse(id, wifiNanStatus).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
}
@@ -113,7 +113,7 @@
break;
}
case legacy_hal::NAN_RESPONSE_CONFIG: {
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->notifyConfigResponse(id, wifiNanStatus).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
}
@@ -127,7 +127,7 @@
LOG(ERROR) << "Failed to convert nan capabilities response";
return;
}
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->notifyCapabilitiesResponse(id, wifiNanStatus,
hidl_struct).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
@@ -136,7 +136,7 @@
break;
}
case legacy_hal::NAN_DP_INTERFACE_CREATE: {
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->notifyCreateDataInterfaceResponse(id, wifiNanStatus).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
}
@@ -144,7 +144,7 @@
break;
}
case legacy_hal::NAN_DP_INTERFACE_DELETE: {
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->notifyDeleteDataInterfaceResponse(id, wifiNanStatus).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
}
@@ -152,7 +152,7 @@
break;
}
case legacy_hal::NAN_DP_INITIATOR_RESPONSE: {
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->notifyInitiateDataPathResponse(id, wifiNanStatus,
msg.body.data_request_response.ndp_instance_id).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
@@ -161,14 +161,15 @@
break;
}
case legacy_hal::NAN_DP_RESPONDER_RESPONSE: {
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->notifyRespondToDataPathIndicationResponse(id, wifiNanStatus).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
}
}
+ break;
}
case legacy_hal::NAN_DP_END: {
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->notifyTerminateDataPathResponse(id, wifiNanStatus).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
}
@@ -201,7 +202,7 @@
hidl_struct.eventType = (NanClusterEventType) msg.event_type;
hidl_struct.addr = msg.data.mac_addr.addr;
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->eventClusterEvent(hidl_struct).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
}
@@ -219,7 +220,7 @@
status.status = hidl_struct_util::convertLegacyNanStatusTypeToHidl(msg.reason);
status.description = msg.nan_reason;
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->eventDisabled(status).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
}
@@ -237,7 +238,7 @@
status.status = hidl_struct_util::convertLegacyNanStatusTypeToHidl(msg.reason);
status.description = msg.nan_reason;
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->eventPublishTerminated(msg.publish_id, status).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
}
@@ -255,7 +256,7 @@
status.status = hidl_struct_util::convertLegacyNanStatusTypeToHidl(msg.reason);
status.description = msg.nan_reason;
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->eventSubscribeTerminated(msg.subscribe_id, status).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
}
@@ -276,7 +277,7 @@
return;
}
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->eventMatch(hidl_struct).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
}
@@ -290,7 +291,7 @@
LOG(ERROR) << "Callback invoked on an invalid object";
return;
}
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->eventMatchExpired(msg.publish_subscribe_id,
msg.requestor_instance_id).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
@@ -312,7 +313,7 @@
return;
}
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->eventFollowupReceived(hidl_struct).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
}
@@ -330,7 +331,7 @@
status.status = hidl_struct_util::convertLegacyNanStatusTypeToHidl(msg.reason);
status.description = msg.nan_reason;
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->eventTransmitFollowup(msg.id, status).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
}
@@ -351,7 +352,7 @@
return;
}
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->eventDataPathRequest(hidl_struct).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
}
@@ -372,7 +373,7 @@
return;
}
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->eventDataPathConfirm(hidl_struct).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
}
@@ -386,7 +387,7 @@
LOG(ERROR) << "Callback invoked on an invalid object";
return;
}
- for (const auto& callback : shared_ptr_this->event_callbacks_) {
+ for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
for (int i = 0; i < msg.num_ndp_instances; ++i) {
if (!callback->eventDataPathTerminated(msg.ndp_instance_id[i]).isOk()) {
LOG(ERROR) << "Failed to invoke the callback";
@@ -400,6 +401,16 @@
LOG(ERROR) << "on_event_beacon_sdf_payload - should not be called";
};
+ callback_handlers.on_event_range_request = [weak_ptr_this](
+ const legacy_hal::NanRangeRequestInd& /* msg */) {
+ LOG(ERROR) << "on_event_range_request - should not be called";
+ };
+
+ callback_handlers.on_event_range_report = [weak_ptr_this](
+ const legacy_hal::NanRangeReportInd& /* msg */) {
+ LOG(ERROR) << "on_event_range_report - should not be called";
+ };
+
legacy_hal::wifi_error legacy_status =
legacy_hal_.lock()->nanRegisterCallbackHandlers(callback_handlers);
if (legacy_status != legacy_hal::WIFI_SUCCESS) {
@@ -410,7 +421,7 @@
void WifiNanIface::invalidate() {
legacy_hal_.reset();
- event_callbacks_.clear();
+ event_cb_handler_.invalidate();
is_valid_ = false;
}
@@ -418,6 +429,10 @@
return is_valid_;
}
+std::set<sp<IWifiNanIfaceEventCallback>> WifiNanIface::getEventCallbacks() {
+ return event_cb_handler_.getCallbacks();
+}
+
Return<void> WifiNanIface::getName(getName_cb hidl_status_cb) {
return validateAndCall(this,
WifiStatusCode::ERROR_WIFI_IFACE_INVALID,
@@ -609,11 +624,9 @@
WifiStatus WifiNanIface::registerEventCallbackInternal(
const sp<IWifiNanIfaceEventCallback>& callback) {
- // TODO(b/31632518): remove the callback when the client is destroyed and/or
- // make sure that the same callback is only registered once (i.e. detect duplicates)
- // OR: consider having a single listener - not clear why multiple listeners (managers) are
- // necessary, nor how they would coordinate (at least command IDs).
- event_callbacks_.emplace_back(callback);
+ if (!event_cb_handler_.addCallback(callback)) {
+ return createWifiStatus(WifiStatusCode::ERROR_UNKNOWN);
+ }
return createWifiStatus(WifiStatusCode::SUCCESS);
}
diff --git a/wifi/1.0/default/wifi_nan_iface.h b/wifi/1.0/default/wifi_nan_iface.h
index d1da60e..e1edd29 100644
--- a/wifi/1.0/default/wifi_nan_iface.h
+++ b/wifi/1.0/default/wifi_nan_iface.h
@@ -21,6 +21,7 @@
#include <android/hardware/wifi/1.0/IWifiNanIface.h>
#include <android/hardware/wifi/1.0/IWifiNanIfaceEventCallback.h>
+#include "hidl_callback_util.h"
#include "wifi_legacy_hal.h"
namespace android {
@@ -119,10 +120,13 @@
WifiStatus terminateDataPathRequestInternal(
uint16_t cmd_id, uint32_t ndpInstanceId);
+ std::set<sp<IWifiNanIfaceEventCallback>> getEventCallbacks();
+
std::string ifname_;
std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal_;
- std::vector<sp<IWifiNanIfaceEventCallback>> event_callbacks_;
bool is_valid_;
+ hidl_callback_util::HidlCallbackHandler<IWifiNanIfaceEventCallback>
+ event_cb_handler_;
DISALLOW_COPY_AND_ASSIGN(WifiNanIface);
};
diff --git a/wifi/1.0/default/wifi_sta_iface.cpp b/wifi/1.0/default/wifi_sta_iface.cpp
index 6100334..626b195 100644
--- a/wifi/1.0/default/wifi_sta_iface.cpp
+++ b/wifi/1.0/default/wifi_sta_iface.cpp
@@ -35,7 +35,7 @@
void WifiStaIface::invalidate() {
legacy_hal_.reset();
- event_callbacks_.clear();
+ event_cb_handler_.invalidate();
is_valid_ = false;
}
@@ -43,8 +43,8 @@
return is_valid_;
}
-std::vector<sp<IWifiStaIfaceEventCallback>> WifiStaIface::getEventCallbacks() {
- return event_callbacks_;
+std::set<sp<IWifiStaIfaceEventCallback>> WifiStaIface::getEventCallbacks() {
+ return event_cb_handler_.getCallbacks();
}
Return<void> WifiStaIface::getName(getName_cb hidl_status_cb) {
@@ -106,15 +106,13 @@
hidl_status_cb);
}
-Return<void> WifiStaIface::getValidFrequenciesForBackgroundScan(
- StaBackgroundScanBand band,
- getValidFrequenciesForBackgroundScan_cb hidl_status_cb) {
- return validateAndCall(
- this,
- WifiStatusCode::ERROR_WIFI_IFACE_INVALID,
- &WifiStaIface::getValidFrequenciesForBackgroundScanInternal,
- hidl_status_cb,
- band);
+Return<void> WifiStaIface::getValidFrequenciesForBand(
+ WifiBand band, getValidFrequenciesForBand_cb hidl_status_cb) {
+ return validateAndCall(this,
+ WifiStatusCode::ERROR_WIFI_IFACE_INVALID,
+ &WifiStaIface::getValidFrequenciesForBandInternal,
+ hidl_status_cb,
+ band);
}
Return<void> WifiStaIface::startBackgroundScan(
@@ -293,8 +291,9 @@
WifiStatus WifiStaIface::registerEventCallbackInternal(
const sp<IWifiStaIfaceEventCallback>& callback) {
- // TODO(b/31632518): remove the callback when the client is destroyed
- event_callbacks_.emplace_back(callback);
+ if (!event_cb_handler_.addCallback(callback)) {
+ return createWifiStatus(WifiStatusCode::ERROR_UNKNOWN);
+ }
return createWifiStatus(WifiStatusCode::SUCCESS);
}
@@ -362,14 +361,13 @@
}
std::pair<WifiStatus, std::vector<WifiChannelInMhz>>
-WifiStaIface::getValidFrequenciesForBackgroundScanInternal(
- StaBackgroundScanBand band) {
+WifiStaIface::getValidFrequenciesForBandInternal(WifiBand band) {
static_assert(sizeof(WifiChannelInMhz) == sizeof(uint32_t), "Size mismatch");
legacy_hal::wifi_error legacy_status;
std::vector<uint32_t> valid_frequencies;
std::tie(legacy_status, valid_frequencies) =
- legacy_hal_.lock()->getValidFrequenciesForGscan(
- hidl_struct_util::convertHidlGscanBandToLegacy(band));
+ legacy_hal_.lock()->getValidFrequenciesForBand(
+ hidl_struct_util::convertHidlWifiBandToLegacy(band));
return {createWifiStatusFromLegacyError(legacy_status), valid_frequencies};
}
@@ -417,7 +415,7 @@
const auto& on_full_result_callback = [weak_ptr_this](
legacy_hal::wifi_request_id id,
const legacy_hal::wifi_scan_result* result,
- uint32_t /* buckets_scanned */) {
+ uint32_t buckets_scanned) {
const auto shared_ptr_this = weak_ptr_this.promote();
if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) {
LOG(ERROR) << "Callback invoked on an invalid object";
@@ -430,7 +428,8 @@
return;
}
for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
- if (!callback->onBackgroundFullScanResult(id, hidl_scan_result).isOk()) {
+ if (!callback->onBackgroundFullScanResult(
+ id, buckets_scanned, hidl_scan_result).isOk()) {
LOG(ERROR) << "Failed to invoke onBackgroundFullScanResult callback";
}
}
@@ -570,7 +569,8 @@
return createWifiStatusFromLegacyError(legacy_status);
}
-WifiStatus WifiStaIface::setScanningMacOuiInternal(const std::array<uint8_t, 3>& oui) {
+WifiStatus WifiStaIface::setScanningMacOuiInternal(
+ const std::array<uint8_t, 3>& oui) {
legacy_hal::wifi_error legacy_status =
legacy_hal_.lock()->setScanningMacOui(oui);
return createWifiStatusFromLegacyError(legacy_status);
diff --git a/wifi/1.0/default/wifi_sta_iface.h b/wifi/1.0/default/wifi_sta_iface.h
index bc2d75f..08faa2f 100644
--- a/wifi/1.0/default/wifi_sta_iface.h
+++ b/wifi/1.0/default/wifi_sta_iface.h
@@ -21,6 +21,7 @@
#include <android/hardware/wifi/1.0/IWifiStaIface.h>
#include <android/hardware/wifi/1.0/IWifiStaIfaceEventCallback.h>
+#include "hidl_callback_util.h"
#include "wifi_legacy_hal.h"
namespace android {
@@ -39,7 +40,7 @@
// Refer to |WifiChip::invalidate()|.
void invalidate();
bool isValid();
- std::vector<sp<IWifiStaIfaceEventCallback>> getEventCallbacks();
+ std::set<sp<IWifiStaIfaceEventCallback>> getEventCallbacks();
// HIDL methods exposed.
Return<void> getName(getName_cb hidl_status_cb) override;
@@ -56,9 +57,8 @@
installApfPacketFilter_cb hidl_status_cb) override;
Return<void> getBackgroundScanCapabilities(
getBackgroundScanCapabilities_cb hidl_status_cb) override;
- Return<void> getValidFrequenciesForBackgroundScan(
- StaBackgroundScanBand band,
- getValidFrequenciesForBackgroundScan_cb hidl_status_cb) override;
+ Return<void> getValidFrequenciesForBand(
+ WifiBand band, getValidFrequenciesForBand_cb hidl_status_cb) override;
Return<void> startBackgroundScan(
uint32_t cmd_id,
const StaBackgroundScanParameters& params,
@@ -118,7 +118,7 @@
std::pair<WifiStatus, StaBackgroundScanCapabilities>
getBackgroundScanCapabilitiesInternal();
std::pair<WifiStatus, std::vector<WifiChannelInMhz>>
- getValidFrequenciesForBackgroundScanInternal(StaBackgroundScanBand band);
+ getValidFrequenciesForBandInternal(WifiBand band);
WifiStatus startBackgroundScanInternal(
uint32_t cmd_id, const StaBackgroundScanParameters& params);
WifiStatus stopBackgroundScanInternal(uint32_t cmd_id);
@@ -151,8 +151,9 @@
std::string ifname_;
std::weak_ptr<legacy_hal::WifiLegacyHal> legacy_hal_;
- std::vector<sp<IWifiStaIfaceEventCallback>> event_callbacks_;
bool is_valid_;
+ hidl_callback_util::HidlCallbackHandler<IWifiStaIfaceEventCallback>
+ event_cb_handler_;
DISALLOW_COPY_AND_ASSIGN(WifiStaIface);
};
diff --git a/wifi/1.0/types.hal b/wifi/1.0/types.hal
index 1c6d0e0..83e6660 100644
--- a/wifi/1.0/types.hal
+++ b/wifi/1.0/types.hal
@@ -210,6 +210,37 @@
};
/**
+ * Wifi bands defined in 80211 spec.
+ */
+enum WifiBand : uint32_t {
+ BAND_UNSPECIFIED = 0,
+ /**
+ * 2.4 GHz.
+ */
+ BAND_24GHZ = 1,
+ /**
+ * 5 GHz without DFS.
+ */
+ BAND_5GHZ = 2,
+ /**
+ * 5 GHz DFS only.
+ */
+ BAND_5GHZ_DFS = 4,
+ /**
+ * 5 GHz with DFS.
+ */
+ BAND_5GHZ_WITH_DFS = 6,
+ /**
+ * 2.4 GHz + 5 GHz; no DFS.
+ */
+ BAND_24GHZ_5GHZ = 3,
+ /**
+ * 2.4 GHz + 5 GHz with DFS
+ */
+ BAND_24GHZ_5GHZ_WITH_DFS = 7
+};
+
+/**
* STA specific types.
* TODO(b/32159498): Move to a separate sta_types.hal.
*/
@@ -251,37 +282,6 @@
};
/**
- * Bands that can be specified in Background scan requests.
- */
-enum StaBackgroundScanBand : uint32_t {
- BAND_UNSPECIFIED = 0,
- /**
- * 2.4 GHz.
- */
- BAND_24GHZ = 1,
- /**
- * 5 GHz without DFS.
- */
- BAND_5GHZ = 2,
- /**
- * 5 GHz DFS only.
- */
- BAND_5GHZ_DFS = 4,
- /**
- * 5 GHz with DFS.
- */
- BAND_5GHZ_WITH_DFS = 6,
- /**
- * 2.4 GHz + 5 GHz; no DFS.
- */
- BAND_24GHZ_5GHZ = 3,
- /**
- * 2.4 GHz + 5 GHz with DFS
- */
- BAND_24GHZ_5GHZ_WITH_DFS = 7
-};
-
-/**
* Mask of event reporting schemes that can be specified in background scan
* requests.
*/
@@ -306,17 +306,28 @@
};
/**
+ * Max limits for background scan.
+ */
+enum StaScanLimits : uint32_t {
+ MAX_CHANNELS = 16,
+ MAX_BUCKETS = 16,
+ MAX_AP_CACHE_PER_SCAN = 32
+};
+
+/**
* Background Scan parameters per bucket that can be specified in background
* scan requests.
*/
struct StaBackgroundScanBucketParameters {
/**
- * Bands to scan or 0 if frequencies list must be used instead.
+ * Bands to scan or |BAND_UNSPECIFIED| if frequencies list must be used
+ * instead.
*/
- StaBackgroundScanBand band;
+ WifiBand band;
/**
* Channel frequencies (in Mhz) to scan if |band| is set to
- * |UNSPECIFIED|.
+ * |BAND_UNSPECIFIED|.
+ * Max length: |StaScanLimits.MAX_CHANNELS|.
*/
vec<WifiChannelInMhz> frequencies;
/**
@@ -360,6 +371,7 @@
/**
* Maximum number of APs that must be stored for each scan. If the maximum
* is reached the highest RSSI results must be returned.
+ * Max length: |StaScanLimits.MAX_AP_CACHE_PER_SCAN|.
*/
uint32_t maxApPerScan;
/**
@@ -373,6 +385,7 @@
uint32_t reportThresholdNumScans;
/**
* List of buckets to be scheduled.
+ * Max length: |StaScanLimits.MAX_BUCKETS|.
*/
vec<StaBackgroundScanBucketParameters> buckets;
};
@@ -505,8 +518,8 @@
*/
bitfield<StaScanDataFlagMask> flags;
/**
- * Bitset where each bit indicates if the bucket with that index was
- * scanned.
+ * Bitset where each bit indicates if the bucket with that index (starting at
+ * 0) was scanned.
*/
uint32_t bucketsScanned;
/**
@@ -844,11 +857,6 @@
*/
uint32_t macAddressRandomizationIntervalSec;
/**
- * Accept (if true) or not (if false) ranging requests from peers - whether in the context of
- * discovery or otherwise.
- */
- bool acceptRangingRequests;
- /**
* Additional configuration provided per band: indexed by |NanBandIndex|.
*/
NanBandSpecificConfig[2] bandSpecificConfig;
@@ -881,6 +889,7 @@
* Cipher suite flags.
*/
enum NanCipherSuiteType : uint32_t {
+ NONE = 0, // No (open) security
SHARED_KEY_128_MASK = 1 << 0, // NCS-SK-128
SHARED_KEY_256_MASK = 1 << 1 // NCS-SK-256
};
@@ -995,13 +1004,15 @@
*/
bool disableFollowupReceivedIndication;
/**
- * Cipher types supported in data-paths constructed in the context of this discovery session.
+ * Cipher type for data-paths constructed in the context of this discovery session. Must be
+ * specified as |NanCipherSuiteType.NONE| if no |pmk| is provided.
*/
- bitfield<NanCipherSuiteType> supportedCipherTypes;
+ NanCipherSuiteType cipherType;
/**
* Optional Pairwise Master Key (PMK) for data-paths constructed in the context of this discovery
* session. A PMK can also be provided during the actual construction of the data-path (which
- * allows for unique PMKs for each data-path).
+ * allows for unique PMKs for each data-path). The |cipherType| must be specified if a PMK is
+ * provided.
* Max length: 32
* Ref: IEEE 802.11i
*/
@@ -1014,7 +1025,12 @@
bool securityEnabledInNdp;
/**
* Specifies whether or not there is a ranging requirement in this discovery session.
- * Note that ranging is only performed if all other match criteria with the peer are met.
+ * Ranging is only performed if all other match criteria with the peer are met. Ranging must
+ * be performed if both peers in the discovery session (publisher and subscriber) set this
+ * flag to true. Otherwise, if either peer sets this flag to false, ranging must not be performed
+ * and must not impact discovery decisions.
+ * Note: specifying that ranging is required also implies that this device must automatically
+ * accept ranging requests from peers.
* NAN Spec: Service Discovery Extension Attribute (SDEA) / Control / Ranging Require.
*/
bool rangingRequired;
@@ -1058,6 +1074,13 @@
* peer.
*/
NanTxType txType;
+ /**
+ * Specifies whether data-path requests |IWifiNanIfaceEventCallback.eventDataPathRequest| (in
+ * the context of this discovery session) are automatically accepted (if true) - in which case
+ * the Responder must not call the |IWifiNanIface.respondToDataPathIndicationRequest| method and
+ * the device must automatically accept the data-path request and complete the negotiation.
+ */
+ bool autoAcceptDataPathRequests;
};
/**
@@ -1198,11 +1221,13 @@
*/
vec<uint8_t> appInfo;
/**
- * Cipher types supported in data-paths constructed in the context of this discovery session.
+ * Cipher type for the data-path being requested. Must be specified as |NanCipherSuiteType.NONE|
+ * if no |pmk| is provided.
*/
- bitfield<NanCipherSuiteType> supportedCipherTypes;
+ NanCipherSuiteType cipherType;
/**
* Pairwise Master Key (PMK) for the data-path being requested (if |securityRequired| is true).
+ * The |cipherType| must be specified if a PMK is provided.
* Max length: 32
* Ref: IEEE 802.11i
*/
@@ -1242,11 +1267,13 @@
*/
vec<uint8_t> appInfo;
/**
- * Cipher types supported in data-paths constructed in the context of this discovery session.
+ * Cipher type for the data-path being negotiated. Must be specified as |NanCipherSuiteType.NONE|
+ * if no |pmk| is provided.
*/
- bitfield<NanCipherSuiteType> supportedCipherTypes;
+ NanCipherSuiteType cipherType;
/**
* Pairwise Master Key (PMK) for the data-path being negotiated (if |securityRequired| is true).
+ * The |cipherType| must be specified if a PMK is provided.
* Max length: 32
*/
vec<uint8_t> pmk;
@@ -1373,13 +1400,14 @@
*/
uint8_t rssiValue;
/**
- * Cipher types supported by the peer for data-paths constructed in the context of this discovery
- * session.
+ * Cipher type for data-paths constructed in the context of this discovery session. Valid if
+ * |peerRequiresSecurityEnabledInNdp| is true.
*/
- bitfield<NanCipherSuiteType> peerSupportedCipherTypes;
+ NanCipherSuiteType peerCipherType;
/**
* Indicates whether or not the peer requires security enabled in any data-path (NDP) constructed
- * in the context of this discovery session.
+ * in the context of this discovery session. The |cipherType| specifies the cipher type for such
+ * data-paths.
* NAN Spec: Service Discovery Extension Attribute (SDEA) / Control / Security Required
*/
bool peerRequiresSecurityEnabledInNdp;
diff --git a/wifi/1.0/vts/Wifi.vts b/wifi/1.0/vts/Wifi.vts
deleted file mode 100644
index 3f567a4..0000000
--- a/wifi/1.0/vts/Wifi.vts
+++ /dev/null
@@ -1,119 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "IWifi"
-
-package: "android.hardware.wifi"
-
-import: "android.hardware.wifi@1.0::IWifiApIface"
-import: "android.hardware.wifi@1.0::IWifiChip"
-import: "android.hardware.wifi@1.0::IWifiChipEventCallback"
-import: "android.hardware.wifi@1.0::IWifiEventCallback"
-import: "android.hardware.wifi@1.0::IWifiIface"
-import: "android.hardware.wifi@1.0::IWifiNanIface"
-import: "android.hardware.wifi@1.0::IWifiNanIfaceEventCallback"
-import: "android.hardware.wifi@1.0::IWifiP2pIface"
-import: "android.hardware.wifi@1.0::IWifiRttController"
-import: "android.hardware.wifi@1.0::IWifiRttControllerEventCallback"
-import: "android.hardware.wifi@1.0::IWifiStaIface"
-import: "android.hardware.wifi@1.0::IWifiStaIfaceEventCallback"
-import: "android.hardware.wifi@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- api: {
- name: "registerEventCallback"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_HIDL_CALLBACK
- predefined_type: "::android::hardware::wifi::V1_0::IWifiEventCallback"
- }
- callflow: {
- entry: true
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "isStarted"
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "start"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- callflow: {
- entry: true
- }
- callflow: {
- next: "registerEventCallback"
- next: "start"
- next: "stop"
- next: "getChip"
- }
- }
-
- api: {
- name: "stop"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- callflow: {
- exit: true
- }
- callflow: {
- next: "registerEventCallback"
- next: "start"
- next: "stop"
- }
- }
-
- api: {
- name: "getChipIds"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- return_type_hidl: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
- callflow: {
- next: "*"
- }
- }
-
- api: {
- name: "getChip"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- return_type_hidl: {
- type: TYPE_HIDL_INTERFACE
- predefined_type: "::android::hardware::wifi::V1_0::IWifiChip"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- callflow: {
- next: "*"
- }
- }
-
-}
diff --git a/wifi/1.0/vts/WifiApIface.vts b/wifi/1.0/vts/WifiApIface.vts
deleted file mode 100644
index 6b58058..0000000
--- a/wifi/1.0/vts/WifiApIface.vts
+++ /dev/null
@@ -1,51 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "IWifiApIface"
-
-package: "android.hardware.wifi"
-
-import: "android.hardware.wifi@1.0::IWifiIface"
-import: "android.hardware.wifi@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- api: {
- name: "getType"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::V1_0::IfaceType"
- }
- }
-
- api: {
- name: "getName"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- return_type_hidl: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "setCountryCode"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_ARRAY
- vector_size: 2
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "int8_t"
- }
- }
- }
-
-}
diff --git a/wifi/1.0/vts/WifiChip.vts b/wifi/1.0/vts/WifiChip.vts
deleted file mode 100644
index 1208202..0000000
--- a/wifi/1.0/vts/WifiChip.vts
+++ /dev/null
@@ -1,539 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "IWifiChip"
-
-package: "android.hardware.wifi"
-
-import: "android.hardware.wifi@1.0::IWifiApIface"
-import: "android.hardware.wifi@1.0::IWifiChipEventCallback"
-import: "android.hardware.wifi@1.0::IWifiIface"
-import: "android.hardware.wifi@1.0::IWifiNanIface"
-import: "android.hardware.wifi@1.0::IWifiNanIfaceEventCallback"
-import: "android.hardware.wifi@1.0::IWifiP2pIface"
-import: "android.hardware.wifi@1.0::IWifiRttController"
-import: "android.hardware.wifi@1.0::IWifiRttControllerEventCallback"
-import: "android.hardware.wifi@1.0::IWifiStaIface"
-import: "android.hardware.wifi@1.0::IWifiStaIfaceEventCallback"
-import: "android.hardware.wifi@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- attribute: {
- name: "::android::hardware::wifi::V1_0::IWifiChip::ChipIfaceCombinationLimit"
- type: TYPE_STRUCT
- struct_value: {
- name: "types"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::V1_0::IfaceType"
- }
- }
- struct_value: {
- name: "maxIfaces"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- attribute: {
- name: "::android::hardware::wifi::V1_0::IWifiChip::ChipIfaceCombination"
- type: TYPE_STRUCT
- struct_value: {
- name: "limits"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::IWifiChip::ChipIfaceCombinationLimit"
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::wifi::V1_0::IWifiChip::ChipMode"
- type: TYPE_STRUCT
- struct_value: {
- name: "id"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "availableCombinations"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::IWifiChip::ChipIfaceCombination"
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::wifi::V1_0::IWifiChip::ChipDebugInfo"
- type: TYPE_STRUCT
- struct_value: {
- name: "driverDescription"
- type: TYPE_STRING
- }
- struct_value: {
- name: "firmwareDescription"
- type: TYPE_STRING
- }
- }
-
- attribute: {
- name: "::android::hardware::wifi::V1_0::IWifiChip::ChipCapabilityMask"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "DEBUG_MEMORY_FIRMWARE_DUMP"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "DEBUG_MEMORY_DRIVER_DUMP"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "DEBUG_RING_BUFFER_CONNECT_EVENT"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "DEBUG_RING_BUFFER_POWER_EVENT"
- scalar_value: {
- uint32_t: 8
- }
- enumerator: "DEBUG_RING_BUFFER_WAKELOCK_EVENT"
- scalar_value: {
- uint32_t: 16
- }
- enumerator: "DEBUG_RING_BUFFER_VENDOR_DATA"
- scalar_value: {
- uint32_t: 32
- }
- enumerator: "DEBUG_HOST_WAKE_REASON_STATS"
- scalar_value: {
- uint32_t: 64
- }
- enumerator: "DEBUG_ERROR_ALERTS"
- scalar_value: {
- uint32_t: 128
- }
- }
- }
-
- api: {
- name: "getId"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "registerEventCallback"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_HIDL_CALLBACK
- predefined_type: "::android::hardware::wifi::V1_0::IWifiChipEventCallback"
- }
- }
-
- api: {
- name: "getCapabilities"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- return_type_hidl: {
- type: TYPE_MASK
- scalar_type: "uint32_t"
- predefined_type: "::android::hardware::wifi::V1_0::IWifiChip::ChipCapabilityMask"
- }
- }
-
- api: {
- name: "getAvailableModes"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- return_type_hidl: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::IWifiChip::ChipMode"
- }
- }
- }
-
- api: {
- name: "configureChip"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "getMode"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "requestChipDebugInfo"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::IWifiChip::ChipDebugInfo"
- }
- }
-
- api: {
- name: "requestDriverDebugDump"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- return_type_hidl: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "requestFirmwareDebugDump"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- return_type_hidl: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "createApIface"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- return_type_hidl: {
- type: TYPE_HIDL_INTERFACE
- predefined_type: "::android::hardware::wifi::V1_0::IWifiApIface"
- }
- }
-
- api: {
- name: "getApIfaceNames"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- return_type_hidl: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRING
- }
- }
- }
-
- api: {
- name: "getApIface"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- return_type_hidl: {
- type: TYPE_HIDL_INTERFACE
- predefined_type: "::android::hardware::wifi::V1_0::IWifiApIface"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "removeApIface"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "createNanIface"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- return_type_hidl: {
- type: TYPE_HIDL_INTERFACE
- predefined_type: "::android::hardware::wifi::V1_0::IWifiNanIface"
- }
- }
-
- api: {
- name: "getNanIfaceNames"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- return_type_hidl: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRING
- }
- }
- }
-
- api: {
- name: "getNanIface"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- return_type_hidl: {
- type: TYPE_HIDL_INTERFACE
- predefined_type: "::android::hardware::wifi::V1_0::IWifiNanIface"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "removeNanIface"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "createP2pIface"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- return_type_hidl: {
- type: TYPE_HIDL_INTERFACE
- predefined_type: "::android::hardware::wifi::V1_0::IWifiP2pIface"
- }
- }
-
- api: {
- name: "getP2pIfaceNames"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- return_type_hidl: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRING
- }
- }
- }
-
- api: {
- name: "getP2pIface"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- return_type_hidl: {
- type: TYPE_HIDL_INTERFACE
- predefined_type: "::android::hardware::wifi::V1_0::IWifiP2pIface"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "removeP2pIface"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "createStaIface"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- return_type_hidl: {
- type: TYPE_HIDL_INTERFACE
- predefined_type: "::android::hardware::wifi::V1_0::IWifiStaIface"
- }
- }
-
- api: {
- name: "getStaIfaceNames"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- return_type_hidl: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRING
- }
- }
- }
-
- api: {
- name: "getStaIface"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- return_type_hidl: {
- type: TYPE_HIDL_INTERFACE
- predefined_type: "::android::hardware::wifi::V1_0::IWifiStaIface"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "removeStaIface"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "createRttController"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- return_type_hidl: {
- type: TYPE_HIDL_INTERFACE
- predefined_type: "::android::hardware::wifi::V1_0::IWifiRttController"
- }
- arg: {
- type: TYPE_HIDL_INTERFACE
- predefined_type: "::android::hardware::wifi::V1_0::IWifiIface"
- }
- }
-
- api: {
- name: "getDebugRingBuffersStatus"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- return_type_hidl: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiDebugRingBufferStatus"
- }
- }
- }
-
- api: {
- name: "startLoggingToDebugRingBuffer"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::V1_0::WifiDebugRingBufferVerboseLevel"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "forceDumpToDebugRingBuffer"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "getDebugHostWakeReasonStats"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiDebugHostWakeReasonStats"
- }
- }
-
- api: {
- name: "enableDebugErrorAlerts"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
-}
diff --git a/wifi/1.0/vts/WifiChipEventCallback.vts b/wifi/1.0/vts/WifiChipEventCallback.vts
deleted file mode 100644
index 2246f82..0000000
--- a/wifi/1.0/vts/WifiChipEventCallback.vts
+++ /dev/null
@@ -1,79 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "IWifiChipEventCallback"
-
-package: "android.hardware.wifi"
-
-import: "android.hardware.wifi@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- api: {
- name: "onChipReconfigured"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "onChipReconfigureFailure"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- }
-
- api: {
- name: "onIfaceAdded"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::V1_0::IfaceType"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "onIfaceRemoved"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::V1_0::IfaceType"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "onDebugRingBufferDataAvailable"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiDebugRingBufferStatus"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "onDebugErrorAlert"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
-}
diff --git a/wifi/1.0/vts/WifiEventCallback.vts b/wifi/1.0/vts/WifiEventCallback.vts
deleted file mode 100644
index 60ec87c..0000000
--- a/wifi/1.0/vts/WifiEventCallback.vts
+++ /dev/null
@@ -1,27 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "IWifiEventCallback"
-
-package: "android.hardware.wifi"
-
-import: "android.hardware.wifi@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- api: {
- name: "onStart"
- }
-
- api: {
- name: "onStop"
- }
-
- api: {
- name: "onFailure"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- }
-
-}
diff --git a/wifi/1.0/vts/WifiIface.vts b/wifi/1.0/vts/WifiIface.vts
deleted file mode 100644
index 0de0f8d..0000000
--- a/wifi/1.0/vts/WifiIface.vts
+++ /dev/null
@@ -1,34 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "IWifiIface"
-
-package: "android.hardware.wifi"
-
-import: "android.hardware.wifi@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- api: {
- name: "getType"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::V1_0::IfaceType"
- }
- }
-
- api: {
- name: "getName"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- return_type_hidl: {
- type: TYPE_STRING
- }
- }
-
-}
diff --git a/wifi/1.0/vts/WifiNanIface.vts b/wifi/1.0/vts/WifiNanIface.vts
deleted file mode 100644
index 66c8755..0000000
--- a/wifi/1.0/vts/WifiNanIface.vts
+++ /dev/null
@@ -1,262 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "IWifiNanIface"
-
-package: "android.hardware.wifi"
-
-import: "android.hardware.wifi@1.0::IWifiIface"
-import: "android.hardware.wifi@1.0::IWifiNanIfaceEventCallback"
-import: "android.hardware.wifi@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- api: {
- name: "getType"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::V1_0::IfaceType"
- }
- }
-
- api: {
- name: "getName"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- return_type_hidl: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "registerEventCallback"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_HIDL_CALLBACK
- predefined_type: "::android::hardware::wifi::V1_0::IWifiNanIfaceEventCallback"
- }
- }
-
- api: {
- name: "getCapabilitiesRequest"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- }
-
- api: {
- name: "enableRequest"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::NanEnableRequest"
- }
- }
-
- api: {
- name: "configRequest"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::NanConfigRequest"
- }
- }
-
- api: {
- name: "disableRequest"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- }
-
- api: {
- name: "startPublishRequest"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::NanPublishRequest"
- }
- }
-
- api: {
- name: "stopPublishRequest"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
-
- api: {
- name: "startSubscribeRequest"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::NanSubscribeRequest"
- }
- }
-
- api: {
- name: "stopSubscribeRequest"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
-
- api: {
- name: "transmitFollowupRequest"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::NanTransmitFollowupRequest"
- }
- }
-
- api: {
- name: "createDataInterfaceRequest"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "deleteDataInterfaceRequest"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "initiateDataPathRequest"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::NanInitiateDataPathRequest"
- }
- }
-
- api: {
- name: "respondToDataPathIndicationRequest"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::NanRespondToDataPathIndicationRequest"
- }
- }
-
- api: {
- name: "terminateDataPathRequest"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
-}
diff --git a/wifi/1.0/vts/WifiNanIfaceEventCallback.vts b/wifi/1.0/vts/WifiNanIfaceEventCallback.vts
deleted file mode 100644
index e3e82f7..0000000
--- a/wifi/1.0/vts/WifiNanIfaceEventCallback.vts
+++ /dev/null
@@ -1,299 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "IWifiNanIfaceEventCallback"
-
-package: "android.hardware.wifi"
-
-import: "android.hardware.wifi@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- api: {
- name: "notifyCapabilitiesResponse"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiNanStatus"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::NanCapabilities"
- }
- }
-
- api: {
- name: "notifyEnableResponse"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiNanStatus"
- }
- }
-
- api: {
- name: "notifyConfigResponse"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiNanStatus"
- }
- }
-
- api: {
- name: "notifyDisableResponse"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiNanStatus"
- }
- }
-
- api: {
- name: "notifyStartPublishResponse"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiNanStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
-
- api: {
- name: "notifyStopPublishResponse"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiNanStatus"
- }
- }
-
- api: {
- name: "notifyStartSubscribeResponse"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiNanStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
-
- api: {
- name: "notifyStopSubscribeResponse"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiNanStatus"
- }
- }
-
- api: {
- name: "notifyTransmitFollowupResponse"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiNanStatus"
- }
- }
-
- api: {
- name: "notifyCreateDataInterfaceResponse"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiNanStatus"
- }
- }
-
- api: {
- name: "notifyDeleteDataInterfaceResponse"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiNanStatus"
- }
- }
-
- api: {
- name: "notifyInitiateDataPathResponse"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiNanStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "notifyRespondToDataPathIndicationResponse"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiNanStatus"
- }
- }
-
- api: {
- name: "notifyTerminateDataPathResponse"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiNanStatus"
- }
- }
-
- api: {
- name: "eventClusterEvent"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::NanClusterEventInd"
- }
- }
-
- api: {
- name: "eventDisabled"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiNanStatus"
- }
- }
-
- api: {
- name: "eventPublishTerminated"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiNanStatus"
- }
- }
-
- api: {
- name: "eventSubscribeTerminated"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiNanStatus"
- }
- }
-
- api: {
- name: "eventMatch"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::NanMatchInd"
- }
- }
-
- api: {
- name: "eventMatchExpired"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "eventFollowupReceived"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::NanFollowupReceivedInd"
- }
- }
-
- api: {
- name: "eventTransmitFollowup"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiNanStatus"
- }
- }
-
- api: {
- name: "eventDataPathRequest"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::NanDataPathRequestInd"
- }
- }
-
- api: {
- name: "eventDataPathConfirm"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::NanDataPathConfirmInd"
- }
- }
-
- api: {
- name: "eventDataPathTerminated"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
-}
diff --git a/wifi/1.0/vts/WifiP2pIface.vts b/wifi/1.0/vts/WifiP2pIface.vts
deleted file mode 100644
index 220f332..0000000
--- a/wifi/1.0/vts/WifiP2pIface.vts
+++ /dev/null
@@ -1,35 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "IWifiP2pIface"
-
-package: "android.hardware.wifi"
-
-import: "android.hardware.wifi@1.0::IWifiIface"
-import: "android.hardware.wifi@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- api: {
- name: "getType"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::V1_0::IfaceType"
- }
- }
-
- api: {
- name: "getName"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- return_type_hidl: {
- type: TYPE_STRING
- }
- }
-
-}
diff --git a/wifi/1.0/vts/WifiRttController.vts b/wifi/1.0/vts/WifiRttController.vts
deleted file mode 100644
index 45fb309..0000000
--- a/wifi/1.0/vts/WifiRttController.vts
+++ /dev/null
@@ -1,171 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "IWifiRttController"
-
-package: "android.hardware.wifi"
-
-import: "android.hardware.wifi@1.0::IWifiIface"
-import: "android.hardware.wifi@1.0::IWifiRttControllerEventCallback"
-import: "android.hardware.wifi@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- api: {
- name: "getBoundIface"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- return_type_hidl: {
- type: TYPE_HIDL_INTERFACE
- predefined_type: "::android::hardware::wifi::V1_0::IWifiIface"
- }
- }
-
- api: {
- name: "registerEventCallback"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_HIDL_CALLBACK
- predefined_type: "::android::hardware::wifi::V1_0::IWifiRttControllerEventCallback"
- }
- }
-
- api: {
- name: "rangeRequest"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::RttConfig"
- }
- }
- }
-
- api: {
- name: "rangeCancel"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
- }
-
- api: {
- name: "getCapabilities"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::RttCapabilities"
- }
- }
-
- api: {
- name: "setLci"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::RttLciInformation"
- }
- }
-
- api: {
- name: "setLcr"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::RttLcrInformation"
- }
- }
-
- api: {
- name: "getResponderInfo"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::RttResponder"
- }
- }
-
- api: {
- name: "enableResponder"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiChannelInfo"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::RttResponder"
- }
- }
-
- api: {
- name: "disableResponder"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
-}
diff --git a/wifi/1.0/vts/WifiRttControllerEventCallback.vts b/wifi/1.0/vts/WifiRttControllerEventCallback.vts
deleted file mode 100644
index e3c2651..0000000
--- a/wifi/1.0/vts/WifiRttControllerEventCallback.vts
+++ /dev/null
@@ -1,26 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "IWifiRttControllerEventCallback"
-
-package: "android.hardware.wifi"
-
-import: "android.hardware.wifi@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- api: {
- name: "onResults"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::RttResult"
- }
- }
- }
-
-}
diff --git a/wifi/1.0/vts/WifiStaIface.vts b/wifi/1.0/vts/WifiStaIface.vts
deleted file mode 100644
index 1edf4db..0000000
--- a/wifi/1.0/vts/WifiStaIface.vts
+++ /dev/null
@@ -1,441 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "IWifiStaIface"
-
-package: "android.hardware.wifi"
-
-import: "android.hardware.wifi@1.0::IWifiIface"
-import: "android.hardware.wifi@1.0::IWifiStaIfaceEventCallback"
-import: "android.hardware.wifi@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- attribute: {
- name: "::android::hardware::wifi::V1_0::IWifiStaIface::StaIfaceCapabilityMask"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "APF"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "BACKGROUND_SCAN"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "LINK_LAYER_STATS"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "RSSI_MONITOR"
- scalar_value: {
- uint32_t: 8
- }
- enumerator: "CONTROL_ROAMING"
- scalar_value: {
- uint32_t: 16
- }
- enumerator: "PROBE_IE_WHITELIST"
- scalar_value: {
- uint32_t: 32
- }
- enumerator: "SCAN_RAND"
- scalar_value: {
- uint32_t: 64
- }
- enumerator: "STA_5G"
- scalar_value: {
- uint32_t: 128
- }
- enumerator: "HOTSPOT"
- scalar_value: {
- uint32_t: 256
- }
- enumerator: "PNO"
- scalar_value: {
- uint32_t: 512
- }
- enumerator: "TDLS"
- scalar_value: {
- uint32_t: 1024
- }
- enumerator: "TDLS_OFFCHANNEL"
- scalar_value: {
- uint32_t: 2048
- }
- enumerator: "ND_OFFLOAD"
- scalar_value: {
- uint32_t: 4096
- }
- enumerator: "KEEP_ALIVE"
- scalar_value: {
- uint32_t: 8192
- }
- enumerator: "DEBUG_PACKET_FATE"
- scalar_value: {
- uint32_t: 16384
- }
- }
- }
-
- api: {
- name: "getType"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::V1_0::IfaceType"
- }
- }
-
- api: {
- name: "getName"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- return_type_hidl: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "registerEventCallback"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_HIDL_CALLBACK
- predefined_type: "::android::hardware::wifi::V1_0::IWifiStaIfaceEventCallback"
- }
- }
-
- api: {
- name: "getCapabilities"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- return_type_hidl: {
- type: TYPE_MASK
- scalar_type: "uint32_t"
- predefined_type: "::android::hardware::wifi::V1_0::IWifiStaIface::StaIfaceCapabilityMask"
- }
- }
-
- api: {
- name: "getApfPacketFilterCapabilities"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::StaApfPacketFilterCapabilities"
- }
- }
-
- api: {
- name: "installApfPacketFilter"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "getBackgroundScanCapabilities"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::StaBackgroundScanCapabilities"
- }
- }
-
- api: {
- name: "getValidFrequenciesForBackgroundScan"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- return_type_hidl: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::V1_0::StaBackgroundScanBand"
- }
- }
-
- api: {
- name: "startBackgroundScan"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::StaBackgroundScanParameters"
- }
- }
-
- api: {
- name: "stopBackgroundScan"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "enableLinkLayerStatsCollection"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "disableLinkLayerStatsCollection"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- }
-
- api: {
- name: "getLinkLayerStats"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::StaLinkLayerStats"
- }
- }
-
- api: {
- name: "startRssiMonitoring"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
- api: {
- name: "stopRssiMonitoring"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "getRoamingCapabilities"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::StaRoamingCapabilities"
- }
- }
-
- api: {
- name: "configureRoaming"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::StaRoamingConfig"
- }
- }
-
- api: {
- name: "setRoamingState"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::V1_0::StaRoamingState"
- }
- }
-
- api: {
- name: "enableNdOffload"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "startSendingKeepAlivePackets"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "stopSendingKeepAlivePackets"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "setScanningMacOui"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- arg: {
- type: TYPE_ARRAY
- vector_size: 3
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "startDebugPacketFateMonitoring"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- }
-
- api: {
- name: "getDebugTxPacketFates"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- return_type_hidl: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiDebugTxPacketFateReport"
- }
- }
- }
-
- api: {
- name: "getDebugRxPacketFates"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
- }
- return_type_hidl: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiDebugRxPacketFateReport"
- }
- }
- }
-
-}
diff --git a/wifi/1.0/vts/WifiStaIfaceEventCallback.vts b/wifi/1.0/vts/WifiStaIfaceEventCallback.vts
deleted file mode 100644
index 99bf03f..0000000
--- a/wifi/1.0/vts/WifiStaIfaceEventCallback.vts
+++ /dev/null
@@ -1,66 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "IWifiStaIfaceEventCallback"
-
-package: "android.hardware.wifi"
-
-import: "android.hardware.wifi@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- api: {
- name: "onBackgroundScanFailure"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "onBackgroundFullScanResult"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::StaScanResult"
- }
- }
-
- api: {
- name: "onBackgroundScanResults"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::StaScanData"
- }
- }
- }
-
- api: {
- name: "onRssiThresholdBreached"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- }
-
-}
diff --git a/wifi/1.0/vts/functional/Android.bp b/wifi/1.0/vts/functional/Android.bp
index e2cd7b1..de917c0 100644
--- a/wifi/1.0/vts/functional/Android.bp
+++ b/wifi/1.0/vts/functional/Android.bp
@@ -15,12 +15,12 @@
//
cc_test {
- name: "wifi_hidl_test",
- gtest: true,
+ name: "VtsHalWifiV1_0TargetTest",
srcs: [
- "main.cpp",
+ "VtsHalWifiV1_0TargetTest.cpp",
"wifi_ap_iface_hidl_test.cpp",
"wifi_chip_hidl_test.cpp",
+ "wifi_hidl_call_util_selftest.cpp",
"wifi_hidl_test.cpp",
"wifi_hidl_test_utils.cpp",
"wifi_nan_iface_hidl_test.cpp",
@@ -33,12 +33,11 @@
"libcutils",
"libhidlbase",
"libhidltransport",
- "libhwbinder",
"libnativehelper",
"libutils",
"android.hardware.wifi@1.0",
],
- static_libs: ["libgtest"],
+ static_libs: ["VtsHalHidlTargetBaseTest"],
cflags: [
"-O0",
"-g",
diff --git a/wifi/1.0/vts/functional/main.cpp b/wifi/1.0/vts/functional/VtsHalWifiV1_0TargetTest.cpp
similarity index 96%
rename from wifi/1.0/vts/functional/main.cpp
rename to wifi/1.0/vts/functional/VtsHalWifiV1_0TargetTest.cpp
index b33b5eb..51512a1 100644
--- a/wifi/1.0/vts/functional/main.cpp
+++ b/wifi/1.0/vts/functional/VtsHalWifiV1_0TargetTest.cpp
@@ -16,7 +16,7 @@
#include <android-base/logging.h>
-#include <gtest/gtest.h>
+#include <VtsHalHidlTargetBaseTest.h>
#include "wifi_hidl_test_utils.h"
diff --git a/wifi/1.0/vts/functional/wifi_ap_iface_hidl_test.cpp b/wifi/1.0/vts/functional/wifi_ap_iface_hidl_test.cpp
index dc7b0b9..dd3df56 100644
--- a/wifi/1.0/vts/functional/wifi_ap_iface_hidl_test.cpp
+++ b/wifi/1.0/vts/functional/wifi_ap_iface_hidl_test.cpp
@@ -18,7 +18,7 @@
#include <android/hardware/wifi/1.0/IWifiApIface.h>
-#include <gtest/gtest.h>
+#include <VtsHalHidlTargetBaseTest.h>
#include "wifi_hidl_test_utils.h"
@@ -28,7 +28,7 @@
/**
* Fixture to use for all AP Iface HIDL interface tests.
*/
-class WifiApIfaceHidlTest : public ::testing::Test {
+class WifiApIfaceHidlTest : public ::testing::VtsHalHidlTargetBaseTest {
public:
virtual void SetUp() override {}
diff --git a/wifi/1.0/vts/functional/wifi_chip_hidl_test.cpp b/wifi/1.0/vts/functional/wifi_chip_hidl_test.cpp
index b6ecd8b..3c2ba9a 100644
--- a/wifi/1.0/vts/functional/wifi_chip_hidl_test.cpp
+++ b/wifi/1.0/vts/functional/wifi_chip_hidl_test.cpp
@@ -18,7 +18,7 @@
#include <android/hardware/wifi/1.0/IWifiChip.h>
-#include <gtest/gtest.h>
+#include <VtsHalHidlTargetBaseTest.h>
#include "wifi_hidl_test_utils.h"
@@ -28,7 +28,7 @@
/**
* Fixture to use for all Wifi chip HIDL interface tests.
*/
-class WifiChipHidlTest : public ::testing::Test {
+class WifiChipHidlTest : public ::testing::VtsHalHidlTargetBaseTest {
public:
virtual void SetUp() override {}
diff --git a/wifi/1.0/vts/functional/wifi_hidl_call_util.h b/wifi/1.0/vts/functional/wifi_hidl_call_util.h
new file mode 100644
index 0000000..4797423
--- /dev/null
+++ b/wifi/1.0/vts/functional/wifi_hidl_call_util.h
@@ -0,0 +1,123 @@
+/*
+ * Copyright (C) 2017 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.
+ */
+
+#pragma once
+
+#include <functional>
+#include <tuple>
+#include <type_traits>
+#include <utility>
+
+#include <VtsHalHidlTargetBaseTest.h>
+
+namespace {
+namespace detail {
+template <typename>
+struct functionArgSaver;
+
+// Provides a std::function that takes one argument, and a buffer
+// wherein the function will store its argument. The buffer has
+// the same type as the argument, but with const and reference
+// modifiers removed.
+template <typename ArgT>
+struct functionArgSaver<std::function<void(ArgT)>> final {
+ using StorageT = typename std::remove_const<
+ typename std::remove_reference<ArgT>::type>::type;
+
+ std::function<void(ArgT)> saveArgs = [this](ArgT arg) {
+ this->saved_values = arg;
+ };
+
+ StorageT saved_values;
+};
+
+// Provides a std::function that takes two arguments, and a buffer
+// wherein the function will store its arguments. The buffer is a
+// std::pair, whose elements have the same types as the arguments
+// (but with const and reference modifiers removed).
+template <typename Arg1T, typename Arg2T>
+struct functionArgSaver<std::function<void(Arg1T, Arg2T)>> final {
+ using StorageT =
+ std::pair<typename std::remove_const<
+ typename std::remove_reference<Arg1T>::type>::type,
+ typename std::remove_const<
+ typename std::remove_reference<Arg2T>::type>::type>;
+
+ std::function<void(Arg1T, Arg2T)> saveArgs = [this](Arg1T arg1,
+ Arg2T arg2) {
+ this->saved_values = {arg1, arg2};
+ };
+
+ StorageT saved_values;
+};
+
+// Provides a std::function that takes three or more arguments, and a
+// buffer wherein the function will store its arguments. The buffer is a
+// std::tuple whose elements have the same types as the arguments (but
+// with const and reference modifiers removed).
+template <typename... ArgT>
+struct functionArgSaver<std::function<void(ArgT...)>> final {
+ using StorageT = std::tuple<typename std::remove_const<
+ typename std::remove_reference<ArgT>::type>::type...>;
+
+ std::function<void(ArgT...)> saveArgs = [this](ArgT... arg) {
+ this->saved_values = {arg...};
+ };
+
+ StorageT saved_values;
+};
+
+// Invokes |method| on |object|, providing |method| a CallbackT as the
+// final argument. Returns a copy of the parameters that |method| provided
+// to CallbackT. (The parameters are returned by value.)
+template <typename CallbackT, typename MethodT, typename ObjectT,
+ typename... ArgT>
+typename functionArgSaver<CallbackT>::StorageT invokeMethod(
+ MethodT method, ObjectT object, ArgT&&... methodArg) {
+ functionArgSaver<CallbackT> result_buffer;
+ const auto& res = ((*object).*method)(std::forward<ArgT>(methodArg)...,
+ result_buffer.saveArgs);
+ EXPECT_TRUE(res.isOk());
+ return result_buffer.saved_values;
+}
+} // namespace detail
+} // namespace
+
+// Invokes |method| on |strong_pointer|, passing provided arguments through to
+// |method|.
+//
+// Returns either:
+// - A copy of the result callback parameter (for callbacks with a single
+// parameter), OR
+// - A pair containing a copy of the result callback parameters (for callbacks
+// with two parameters), OR
+// - A tuple containing a copy of the result callback paramters (for callbacks
+// with three or more parameters).
+//
+// Example usage:
+// EXPECT_EQ(WifiStatusCode::SUCCESS,
+// HIDL_INVOKE(strong_pointer, methodReturningWifiStatus).code);
+// EXPECT_EQ(WifiStatusCode::SUCCESS,
+// HIDL_INVOKE(strong_pointer, methodReturningWifiStatusAndOneMore)
+// .first.code);
+// EXPECT_EQ(WifiStatusCode::SUCCESS, std::get<0>(
+// HIDL_INVOKE(strong_pointer, methodReturningWifiStatusAndTwoMore))
+// .code);
+#define HIDL_INVOKE(strong_pointer, method, ...) \
+ (detail::invokeMethod< \
+ std::remove_reference<decltype(*strong_pointer)>::type::method##_cb>( \
+ &std::remove_reference<decltype(*strong_pointer)>::type::method, \
+ strong_pointer, ##__VA_ARGS__))
diff --git a/wifi/1.0/vts/functional/wifi_hidl_call_util_selftest.cpp b/wifi/1.0/vts/functional/wifi_hidl_call_util_selftest.cpp
new file mode 100644
index 0000000..129bdb2
--- /dev/null
+++ b/wifi/1.0/vts/functional/wifi_hidl_call_util_selftest.cpp
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2017 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.
+ */
+
+#include <functional>
+#include <type_traits>
+
+#include <hidl/Status.h>
+#include <utils/RefBase.h>
+#include <utils/StrongPointer.h>
+
+#include "wifi_hidl_call_util.h"
+
+namespace {
+/*
+ * Example of a user-defined data-type.
+ *
+ * Used to verify that, within the internals of HIDL_INVOKE,
+ * reference parameters are stored by copy.
+ */
+class Dummy {};
+
+/*
+ * Example of what a HIDL-generated proxy might look like.
+ */
+class IExample : public ::android::RefBase {
+ public:
+ // The callback type, for a method called startWithCallbackCopy, which
+ // has a callback that takes an |int|. Both the name, and the value,
+ // must match what would appear in HIDL-generated code.
+ using startWithCallbackCopy_cb = std::function<void(int)>;
+
+ // The callback type, for a method called startWithCallbackReference, which
+ // has a callback that takes an |int|. Both the name, and the value,
+ // must match what would appear in HIDL-generated code.
+ using startWithCallbackReference_cb = std::function<void(int)>;
+
+ // Constants which allow tests to verify that the proxy methods can
+ // correctly return a value. We use different values for by-copy and
+ // by-reference, to double-check that a call was dispatched properly.
+ static constexpr int kByCopyResult = 42;
+ static constexpr int kByReferenceResult = 420;
+
+ // Example of what a no-arg method would look like, if the callback
+ // is passed by-value.
+ ::android::hardware::Return<void> startWithCallbackCopy(
+ startWithCallbackCopy_cb _hidl_cb) {
+ _hidl_cb(kByCopyResult);
+ return ::android::hardware::Void();
+ }
+ // Example of what a no-arg method would look like, if the callback
+ // is passed by const-reference.
+ ::android::hardware::Return<void> startWithCallbackReference(
+ const startWithCallbackReference_cb& _hidl_cb) {
+ _hidl_cb(kByReferenceResult);
+ return ::android::hardware::Void();
+ }
+};
+
+constexpr int IExample::kByCopyResult;
+constexpr int IExample::kByReferenceResult;
+} // namespace
+
+static_assert(std::is_same<int, detail::functionArgSaver<
+ std::function<void(int)>>::StorageT>::value,
+ "Single-arg result should be stored directly.");
+
+static_assert(
+ std::is_same<std::pair<int, long>, detail::functionArgSaver<std::function<
+ void(int, long)>>::StorageT>::value,
+ "Two-arg result should be stored as a pair.");
+
+static_assert(
+ std::is_same<std::tuple<char, int, long>,
+ detail::functionArgSaver<
+ std::function<void(char, int, long)>>::StorageT>::value,
+ "Three-arg result should be stored as a tuple.");
+
+static_assert(std::is_same<Dummy, detail::functionArgSaver<std::function<
+ void(const Dummy&)>>::StorageT>::value,
+ "Reference should be stored by copy.");
+
+/*
+ * Verifies that HIDL_INVOKE can be used with methods that take the result
+ * callback as a by-value parameter. (This reflects the current implementation
+ * of HIDL-generated code.)
+ */
+TEST(HidlInvokeTest, WorksWithMethodThatTakesResultCallbackByValue) {
+ ::android::sp<IExample> sp = new IExample();
+ EXPECT_EQ(IExample::kByCopyResult, HIDL_INVOKE(sp, startWithCallbackCopy));
+}
+
+/*
+ * Verifies that HIDL_INVOKE can be used with methods that take the result
+ * callback as a const-reference parameter. (This ensures that HIDL_INVOKE will
+ * continue to work, if the HIDL-generated code switches to const-ref.)
+ */
+TEST(HidlInvokeTest, WorksWithMethodThatTakesResultCallbackByConstReference) {
+ ::android::sp<IExample> sp = new IExample();
+ EXPECT_EQ(IExample::kByReferenceResult,
+ HIDL_INVOKE(sp, startWithCallbackReference));
+}
diff --git a/wifi/1.0/vts/functional/wifi_hidl_test.cpp b/wifi/1.0/vts/functional/wifi_hidl_test.cpp
index 3e350e5..2f4e01e 100644
--- a/wifi/1.0/vts/functional/wifi_hidl_test.cpp
+++ b/wifi/1.0/vts/functional/wifi_hidl_test.cpp
@@ -18,7 +18,7 @@
#include <android/hardware/wifi/1.0/IWifi.h>
-#include <gtest/gtest.h>
+#include <VtsHalHidlTargetBaseTest.h>
#include "wifi_hidl_test_utils.h"
@@ -28,7 +28,7 @@
/**
* Fixture to use for all root Wifi HIDL interface tests.
*/
-class WifiHidlTest : public ::testing::Test {
+class WifiHidlTest : public ::testing::VtsHalHidlTargetBaseTest {
public:
virtual void SetUp() override {}
diff --git a/wifi/1.0/vts/functional/wifi_hidl_test_utils.cpp b/wifi/1.0/vts/functional/wifi_hidl_test_utils.cpp
index 050bba3..9042075 100644
--- a/wifi/1.0/vts/functional/wifi_hidl_test_utils.cpp
+++ b/wifi/1.0/vts/functional/wifi_hidl_test_utils.cpp
@@ -14,8 +14,9 @@
* limitations under the License.
*/
-#include <gtest/gtest.h>
+#include <VtsHalHidlTargetBaseTest.h>
+#include "wifi_hidl_call_util.h"
#include "wifi_hidl_test_utils.h"
using ::android::hardware::wifi::V1_0::IWifi;
@@ -42,7 +43,7 @@
void startFramework() { ASSERT_EQ(std::system("svc wifi enable"), 0); }
sp<IWifi> getWifi() {
- sp<IWifi> wifi = IWifi::getService();
+ sp<IWifi> wifi = ::testing::VtsHalHidlTargetBaseTest::getService<IWifi>();
return wifi;
}
@@ -52,41 +53,23 @@
return nullptr;
}
- bool operation_failed = false;
- wifi->start([&](WifiStatus status) {
- if (status.code != WifiStatusCode::SUCCESS) {
- operation_failed = true;
- }
- });
- if (operation_failed) {
+ if (HIDL_INVOKE(wifi, start).code != WifiStatusCode::SUCCESS) {
return nullptr;
}
- std::vector<ChipId> wifi_chip_ids;
- wifi->getChipIds(
- [&](const WifiStatus& status, const hidl_vec<ChipId>& chip_ids) {
- if (status.code != WifiStatusCode::SUCCESS) {
- operation_failed = true;
- }
- wifi_chip_ids = chip_ids;
- });
- // We don't expect more than 1 chip currently.
- if (operation_failed || wifi_chip_ids.size() != 1) {
+ const auto& status_and_chip_ids = HIDL_INVOKE(wifi, getChipIds);
+ const auto& chip_ids = status_and_chip_ids.second;
+ if (status_and_chip_ids.first.code != WifiStatusCode::SUCCESS ||
+ chip_ids.size() != 1) {
return nullptr;
}
- sp<IWifiChip> wifi_chip;
- wifi->getChip(wifi_chip_ids[0],
- [&](const WifiStatus& status, const sp<IWifiChip>& chip) {
- if (status.code != WifiStatusCode::SUCCESS) {
- operation_failed = true;
- }
- wifi_chip = chip;
- });
- if (operation_failed) {
+ const auto& status_and_chip = HIDL_INVOKE(wifi, getChip, chip_ids[0]);
+ if (status_and_chip.first.code != WifiStatusCode::SUCCESS) {
return nullptr;
}
- return wifi_chip;
+
+ return status_and_chip.second;
}
// Since we currently only support one iface of each type. Just iterate thru the
@@ -116,30 +99,18 @@
bool configureChipToSupportIfaceType(const sp<IWifiChip>& wifi_chip,
IfaceType type) {
- bool operation_failed = false;
- std::vector<IWifiChip::ChipMode> chip_modes;
- wifi_chip->getAvailableModes(
- [&](WifiStatus status, const hidl_vec<IWifiChip::ChipMode>& modes) {
- if (status.code != WifiStatusCode::SUCCESS) {
- operation_failed = true;
- }
- chip_modes = modes;
- });
- if (operation_failed) {
+ const auto& status_and_modes = HIDL_INVOKE(wifi_chip, getAvailableModes);
+ if (status_and_modes.first.code != WifiStatusCode::SUCCESS) {
return false;
}
ChipModeId mode_id;
- if (!findModeToSupportIfaceType(type, chip_modes, &mode_id)) {
+ if (!findModeToSupportIfaceType(type, status_and_modes.second, &mode_id)) {
return false;
}
- wifi_chip->configureChip(mode_id, [&](WifiStatus status) {
- if (status.code != WifiStatusCode::SUCCESS) {
- operation_failed = true;
- }
- });
- if (operation_failed) {
+ if (HIDL_INVOKE(wifi_chip, configureChip, mode_id).code !=
+ WifiStatusCode::SUCCESS) {
return false;
}
return true;
@@ -154,19 +125,11 @@
return nullptr;
}
- bool operation_failed = false;
- sp<IWifiApIface> wifi_ap_iface;
- wifi_chip->createApIface(
- [&](const WifiStatus& status, const sp<IWifiApIface>& iface) {
- if (status.code != WifiStatusCode::SUCCESS) {
- operation_failed = true;
- }
- wifi_ap_iface = iface;
- });
- if (operation_failed) {
+ const auto& status_and_iface = HIDL_INVOKE(wifi_chip, createApIface);
+ if (status_and_iface.first.code != WifiStatusCode::SUCCESS) {
return nullptr;
}
- return wifi_ap_iface;
+ return status_and_iface.second;
}
sp<IWifiNanIface> getWifiNanIface() {
@@ -178,19 +141,11 @@
return nullptr;
}
- bool operation_failed = false;
- sp<IWifiNanIface> wifi_nan_iface;
- wifi_chip->createNanIface(
- [&](const WifiStatus& status, const sp<IWifiNanIface>& iface) {
- if (status.code != WifiStatusCode::SUCCESS) {
- operation_failed = true;
- }
- wifi_nan_iface = iface;
- });
- if (operation_failed) {
+ const auto& status_and_iface = HIDL_INVOKE(wifi_chip, createNanIface);
+ if (status_and_iface.first.code != WifiStatusCode::SUCCESS) {
return nullptr;
}
- return wifi_nan_iface;
+ return status_and_iface.second;
}
sp<IWifiP2pIface> getWifiP2pIface() {
@@ -202,19 +157,11 @@
return nullptr;
}
- bool operation_failed = false;
- sp<IWifiP2pIface> wifi_p2p_iface;
- wifi_chip->createP2pIface(
- [&](const WifiStatus& status, const sp<IWifiP2pIface>& iface) {
- if (status.code != WifiStatusCode::SUCCESS) {
- operation_failed = true;
- }
- wifi_p2p_iface = iface;
- });
- if (operation_failed) {
+ const auto& status_and_iface = HIDL_INVOKE(wifi_chip, createP2pIface);
+ if (status_and_iface.first.code != WifiStatusCode::SUCCESS) {
return nullptr;
}
- return wifi_p2p_iface;
+ return status_and_iface.second;
}
sp<IWifiStaIface> getWifiStaIface() {
@@ -226,19 +173,11 @@
return nullptr;
}
- bool operation_failed = false;
- sp<IWifiStaIface> wifi_sta_iface;
- wifi_chip->createStaIface(
- [&](const WifiStatus& status, const sp<IWifiStaIface>& iface) {
- if (status.code != WifiStatusCode::SUCCESS) {
- operation_failed = true;
- }
- wifi_sta_iface = iface;
- });
- if (operation_failed) {
+ const auto& status_and_iface = HIDL_INVOKE(wifi_chip, createStaIface);
+ if (status_and_iface.first.code != WifiStatusCode::SUCCESS) {
return nullptr;
}
- return wifi_sta_iface;
+ return status_and_iface.second;
}
sp<IWifiRttController> getWifiRttController() {
@@ -251,26 +190,16 @@
return nullptr;
}
- bool operation_failed = false;
- sp<IWifiRttController> wifi_rtt_controller;
- wifi_chip->createRttController(
- wifi_sta_iface, [&](const WifiStatus& status,
- const sp<IWifiRttController>& controller) {
- if (status.code != WifiStatusCode::SUCCESS) {
- operation_failed = true;
- }
- wifi_rtt_controller = controller;
- });
- if (operation_failed) {
+ const auto& status_and_controller =
+ HIDL_INVOKE(wifi_chip, createRttController, wifi_sta_iface);
+ if (status_and_controller.first.code != WifiStatusCode::SUCCESS) {
return nullptr;
}
- return wifi_rtt_controller;
+ return status_and_controller.second;
}
void stopWifi() {
sp<IWifi> wifi = getWifi();
ASSERT_NE(wifi, nullptr);
- wifi->stop([](const WifiStatus& status) {
- ASSERT_EQ(status.code, WifiStatusCode::SUCCESS);
- });
+ ASSERT_EQ(HIDL_INVOKE(wifi, stop).code, WifiStatusCode::SUCCESS);
}
diff --git a/wifi/1.0/vts/functional/wifi_nan_iface_hidl_test.cpp b/wifi/1.0/vts/functional/wifi_nan_iface_hidl_test.cpp
index a8be48c..eb482c9 100644
--- a/wifi/1.0/vts/functional/wifi_nan_iface_hidl_test.cpp
+++ b/wifi/1.0/vts/functional/wifi_nan_iface_hidl_test.cpp
@@ -18,7 +18,7 @@
#include <android/hardware/wifi/1.0/IWifiNanIface.h>
-#include <gtest/gtest.h>
+#include <VtsHalHidlTargetBaseTest.h>
#include "wifi_hidl_test_utils.h"
@@ -28,7 +28,7 @@
/**
* Fixture to use for all NAN Iface HIDL interface tests.
*/
-class WifiNanIfaceHidlTest : public ::testing::Test {
+class WifiNanIfaceHidlTest : public ::testing::VtsHalHidlTargetBaseTest {
public:
virtual void SetUp() override {}
diff --git a/wifi/1.0/vts/functional/wifi_p2p_iface_hidl_test.cpp b/wifi/1.0/vts/functional/wifi_p2p_iface_hidl_test.cpp
index e29226d..d53096c 100644
--- a/wifi/1.0/vts/functional/wifi_p2p_iface_hidl_test.cpp
+++ b/wifi/1.0/vts/functional/wifi_p2p_iface_hidl_test.cpp
@@ -18,7 +18,7 @@
#include <android/hardware/wifi/1.0/IWifiP2pIface.h>
-#include <gtest/gtest.h>
+#include <VtsHalHidlTargetBaseTest.h>
#include "wifi_hidl_test_utils.h"
@@ -28,7 +28,7 @@
/**
* Fixture to use for all P2P Iface HIDL interface tests.
*/
-class WifiP2pIfaceHidlTest : public ::testing::Test {
+class WifiP2pIfaceHidlTest : public ::testing::VtsHalHidlTargetBaseTest {
public:
virtual void SetUp() override {}
diff --git a/wifi/1.0/vts/functional/wifi_rtt_controller_hidl_test.cpp b/wifi/1.0/vts/functional/wifi_rtt_controller_hidl_test.cpp
index 7aee761..4d08919 100644
--- a/wifi/1.0/vts/functional/wifi_rtt_controller_hidl_test.cpp
+++ b/wifi/1.0/vts/functional/wifi_rtt_controller_hidl_test.cpp
@@ -18,7 +18,7 @@
#include <android/hardware/wifi/1.0/IWifiRttController.h>
-#include <gtest/gtest.h>
+#include <VtsHalHidlTargetBaseTest.h>
#include "wifi_hidl_test_utils.h"
@@ -28,7 +28,7 @@
/**
* Fixture to use for all RTT controller HIDL interface tests.
*/
-class WifiRttControllerHidlTest : public ::testing::Test {
+class WifiRttControllerHidlTest : public ::testing::VtsHalHidlTargetBaseTest {
public:
virtual void SetUp() override {}
diff --git a/wifi/1.0/vts/functional/wifi_sta_iface_hidl_test.cpp b/wifi/1.0/vts/functional/wifi_sta_iface_hidl_test.cpp
index 770763c..4457487 100644
--- a/wifi/1.0/vts/functional/wifi_sta_iface_hidl_test.cpp
+++ b/wifi/1.0/vts/functional/wifi_sta_iface_hidl_test.cpp
@@ -18,7 +18,7 @@
#include <android/hardware/wifi/1.0/IWifiStaIface.h>
-#include <gtest/gtest.h>
+#include <VtsHalHidlTargetBaseTest.h>
#include "wifi_hidl_test_utils.h"
@@ -28,7 +28,7 @@
/**
* Fixture to use for all STA Iface HIDL interface tests.
*/
-class WifiStaIfaceHidlTest : public ::testing::Test {
+class WifiStaIfaceHidlTest : public ::testing::VtsHalHidlTargetBaseTest {
public:
virtual void SetUp() override {}
diff --git a/wifi/1.0/vts/types.vts b/wifi/1.0/vts/types.vts
deleted file mode 100644
index 388dbc3..0000000
--- a/wifi/1.0/vts/types.vts
+++ /dev/null
@@ -1,2834 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "types"
-
-package: "android.hardware.wifi"
-
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::WifiStatusCode"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "SUCCESS"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "ERROR_WIFI_CHIP_INVALID"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "ERROR_WIFI_IFACE_INVALID"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "ERROR_WIFI_RTT_CONTROLLER_INVALID"
- scalar_value: {
- uint32_t: 3
- }
- enumerator: "ERROR_NOT_SUPPORTED"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "ERROR_NOT_AVAILABLE"
- scalar_value: {
- uint32_t: 5
- }
- enumerator: "ERROR_NOT_STARTED"
- scalar_value: {
- uint32_t: 6
- }
- enumerator: "ERROR_INVALID_ARGS"
- scalar_value: {
- uint32_t: 7
- }
- enumerator: "ERROR_BUSY"
- scalar_value: {
- uint32_t: 8
- }
- enumerator: "ERROR_UNKNOWN"
- scalar_value: {
- uint32_t: 9
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::WifiStatus"
- type: TYPE_STRUCT
- struct_value: {
- name: "code"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::V1_0::WifiStatusCode"
- }
- struct_value: {
- name: "description"
- type: TYPE_STRING
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::IfaceType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "STA"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "AP"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "P2P"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "NAN"
- scalar_value: {
- uint32_t: 3
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::WifiChannelWidthInMhz"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "WIDTH_20"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "WIDTH_40"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "WIDTH_80"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "WIDTH_160"
- scalar_value: {
- uint32_t: 3
- }
- enumerator: "WIDTH_80P80"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "WIDTH_5"
- scalar_value: {
- uint32_t: 5
- }
- enumerator: "WIDTH_10"
- scalar_value: {
- uint32_t: 6
- }
- enumerator: "WIDTH_INVALID"
- scalar_value: {
- uint32_t: 4294967295
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::WifiChannelInfo"
- type: TYPE_STRUCT
- struct_value: {
- name: "width"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::V1_0::WifiChannelWidthInMhz"
- }
- struct_value: {
- name: "centerFreq"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "centerFreq0"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "centerFreq1"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::WifiInformationElement"
- type: TYPE_STRUCT
- struct_value: {
- name: "id"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "data"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::WifiRatePreamble"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "OFDM"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "CCK"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "HT"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "VHT"
- scalar_value: {
- uint32_t: 3
- }
- enumerator: "RESERVED"
- scalar_value: {
- uint32_t: 4
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::WifiRateNss"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "NSS_1x1"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "NSS_2x2"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "NSS_3x3"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "NSS_4x4"
- scalar_value: {
- uint32_t: 3
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::WifiRateInfo"
- type: TYPE_STRUCT
- struct_value: {
- name: "preamble"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::V1_0::WifiRatePreamble"
- }
- struct_value: {
- name: "nss"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::V1_0::WifiRateNss"
- }
- struct_value: {
- name: "bw"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::V1_0::WifiChannelWidthInMhz"
- }
- struct_value: {
- name: "rateMcsIdx"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "bitRateInKbps"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::StaApfPacketFilterCapabilities"
- type: TYPE_STRUCT
- struct_value: {
- name: "version"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "maxLength"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::StaBackgroundScanCapabilities"
- type: TYPE_STRUCT
- struct_value: {
- name: "maxCacheSize"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "maxBuckets"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "maxApCachePerScan"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "maxReportingThreshold"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::StaBackgroundScanBand"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "BAND_UNSPECIFIED"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "BAND_24GHZ"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "BAND_5GHZ"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "BAND_5GHZ_DFS"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "BAND_5GHZ_WITH_DFS"
- scalar_value: {
- uint32_t: 6
- }
- enumerator: "BAND_24GHZ_5GHZ"
- scalar_value: {
- uint32_t: 3
- }
- enumerator: "BAND_24GHZ_5GHZ_WITH_DFS"
- scalar_value: {
- uint32_t: 7
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::StaBackgroundScanBucketEventReportSchemeMask"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "EACH_SCAN"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "FULL_RESULTS"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "NO_BATCH"
- scalar_value: {
- uint32_t: 4
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::StaBackgroundScanBucketParameters"
- type: TYPE_STRUCT
- struct_value: {
- name: "band"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::V1_0::StaBackgroundScanBand"
- }
- struct_value: {
- name: "frequencies"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
- struct_value: {
- name: "periodInMs"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "eventReportScheme"
- type: TYPE_MASK
- scalar_type: "uint32_t"
- predefined_type: "::android::hardware::wifi::V1_0::StaBackgroundScanBucketEventReportSchemeMask"
- }
- struct_value: {
- name: "exponentialMaxPeriodInMs"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "exponentialBase"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "exponentialStepCount"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::StaBackgroundScanParameters"
- type: TYPE_STRUCT
- struct_value: {
- name: "basePeriodInMs"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "maxApPerScan"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "reportThresholdPercent"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "reportThresholdNumScans"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "buckets"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::StaBackgroundScanBucketParameters"
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::StaLinkLayerIfacePacketStats"
- type: TYPE_STRUCT
- struct_value: {
- name: "rxMpdu"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- struct_value: {
- name: "txMpdu"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- struct_value: {
- name: "lostMpdu"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- struct_value: {
- name: "retries"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::StaLinkLayerIfaceStats"
- type: TYPE_STRUCT
- struct_value: {
- name: "beaconRx"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "avgRssiMgmt"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "wmeBePktStats"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::StaLinkLayerIfacePacketStats"
- }
- struct_value: {
- name: "wmeBkPktStats"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::StaLinkLayerIfacePacketStats"
- }
- struct_value: {
- name: "wmeViPktStats"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::StaLinkLayerIfacePacketStats"
- }
- struct_value: {
- name: "wmeVoPktStats"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::StaLinkLayerIfacePacketStats"
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::StaLinkLayerRadioStats"
- type: TYPE_STRUCT
- struct_value: {
- name: "onTimeInMs"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "txTimeInMs"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "txTimeInMsPerLevel"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
- struct_value: {
- name: "rxTimeInMs"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "onTimeInMsForScan"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::StaLinkLayerStats"
- type: TYPE_STRUCT
- struct_value: {
- name: "iface"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::StaLinkLayerIfaceStats"
- }
- struct_value: {
- name: "radio"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::StaLinkLayerRadioStats"
- }
- struct_value: {
- name: "timeStampInMs"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::StaScanResult"
- type: TYPE_STRUCT
- struct_value: {
- name: "timeStampInUs"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- struct_value: {
- name: "ssid"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- struct_value: {
- name: "bssid"
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- struct_value: {
- name: "rssi"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "frequency"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "beaconPeriodInMs"
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- struct_value: {
- name: "capability"
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- struct_value: {
- name: "informationElements"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiInformationElement"
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::StaScanDataFlagMask"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "int32_t"
-
- enumerator: "INTERRUPTED"
- scalar_value: {
- int32_t: 1
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::StaScanData"
- type: TYPE_STRUCT
- struct_value: {
- name: "flags"
- type: TYPE_MASK
- scalar_type: "int32_t"
- predefined_type: "::android::hardware::wifi::V1_0::StaScanDataFlagMask"
- }
- struct_value: {
- name: "bucketsScanned"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "results"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::StaScanResult"
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::StaRoamingCapabilities"
- type: TYPE_STRUCT
- struct_value: {
- name: "maxBlacklistSize"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "maxWhitelistSize"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::StaRoamingConfig"
- type: TYPE_STRUCT
- struct_value: {
- name: "bssidBlacklist"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
- struct_value: {
- name: "ssidWhitelist"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_ARRAY
- vector_size: 32
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::StaRoamingState"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint8_t"
-
- enumerator: "DISABLED"
- scalar_value: {
- uint8_t: 0
- }
- enumerator: "ENABLED"
- scalar_value: {
- uint8_t: 1
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::NanStatusType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "SUCCESS"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "INTERNAL_FAILURE"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "PROTOCOL_FAILURE"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "INVALID_SESSION_ID"
- scalar_value: {
- uint32_t: 3
- }
- enumerator: "NO_RESOURCES_AVAILABLE"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "INVALID_ARGS"
- scalar_value: {
- uint32_t: 5
- }
- enumerator: "INVALID_PEER_ID"
- scalar_value: {
- uint32_t: 6
- }
- enumerator: "INVALID_NDP_ID"
- scalar_value: {
- uint32_t: 7
- }
- enumerator: "NAN_NOT_ALLOWED"
- scalar_value: {
- uint32_t: 8
- }
- enumerator: "NO_OTA_ACK"
- scalar_value: {
- uint32_t: 9
- }
- enumerator: "ALREADY_ENABLED"
- scalar_value: {
- uint32_t: 10
- }
- enumerator: "FOLLOWUP_TX_QUEUE_FULL"
- scalar_value: {
- uint32_t: 11
- }
- enumerator: "UNSUPPORTED_CONCURRENCY_NAN_DISABLED"
- scalar_value: {
- uint32_t: 12
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::NanBandIndex"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "NAN_BAND_24GHZ"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "NAN_BAND_5GHZ"
- scalar_value: {
- uint32_t: 1
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::WifiNanStatus"
- type: TYPE_STRUCT
- struct_value: {
- name: "status"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::V1_0::NanStatusType"
- }
- struct_value: {
- name: "description"
- type: TYPE_STRING
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::NanMatchAlg"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "MATCH_ONCE"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "MATCH_CONTINUOUS"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "MATCH_NEVER"
- scalar_value: {
- uint32_t: 2
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::NanPublishType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "UNSOLICITED"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "SOLICITED"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "UNSOLICITED_SOLICITED"
- scalar_value: {
- uint32_t: 2
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::NanTxType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "BROADCAST"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "UNICAST"
- scalar_value: {
- uint32_t: 1
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::NanSubscribeType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "PASSIVE"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "ACTIVE"
- scalar_value: {
- uint32_t: 1
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::NanSrfType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "BLOOM_FILTER"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "PARTIAL_MAC_ADDR"
- scalar_value: {
- uint32_t: 1
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::NanDataPathChannelCfg"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "CHANNEL_NOT_REQUESTED"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "REQUEST_CHANNEL_SETUP"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "FORCE_CHANNEL_SETUP"
- scalar_value: {
- uint32_t: 2
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::NanBandSpecificConfig"
- type: TYPE_STRUCT
- struct_value: {
- name: "rssiClose"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "rssiMiddle"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "rssiCloseProximity"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "dwellTimeMs"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "scanPeriodSec"
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- struct_value: {
- name: "validDiscoveryWindowIntervalVal"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "discoveryWindowIntervalVal"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::NanDebugConfig"
- type: TYPE_STRUCT
- struct_value: {
- name: "validClusterIdVals"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "clusterIdBottomRangeVal"
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- struct_value: {
- name: "clusterIdTopRangeVal"
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- struct_value: {
- name: "validIntfAddrVal"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "intfAddrVal"
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- struct_value: {
- name: "validOuiVal"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "ouiVal"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "validRandomFactorForceVal"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "randomFactorForceVal"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "validHopCountForceVal"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "hopCountForceVal"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "validDiscoveryChannelVal"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "discoveryChannelMhzVal"
- type: TYPE_ARRAY
- vector_size: 2
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
- struct_value: {
- name: "validUseBeaconsInBandVal"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "useBeaconsInBandVal"
- type: TYPE_ARRAY
- vector_size: 2
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
- struct_value: {
- name: "validUseSdfInBandVal"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "useSdfInBandVal"
- type: TYPE_ARRAY
- vector_size: 2
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::NanConfigRequest"
- type: TYPE_STRUCT
- struct_value: {
- name: "masterPref"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "disableDiscoveryAddressChangeIndication"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "disableStartedClusterIndication"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "disableJoinedClusterIndication"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "includePublishServiceIdsInBeacon"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "numberOfPublishServiceIdsInBeacon"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "includeSubscribeServiceIdsInBeacon"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "numberOfSubscribeServiceIdsInBeacon"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "rssiWindowSize"
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- struct_value: {
- name: "macAddressRandomizationIntervalSec"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "acceptRangingRequests"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "bandSpecificConfig"
- type: TYPE_ARRAY
- vector_size: 2
- vector_value: {
- name: "::android::hardware::wifi::V1_0::NanBandSpecificConfig"
- type: TYPE_STRUCT
- struct_value: {
- name: "rssiClose"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "rssiMiddle"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "rssiCloseProximity"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "dwellTimeMs"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "scanPeriodSec"
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- struct_value: {
- name: "validDiscoveryWindowIntervalVal"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "discoveryWindowIntervalVal"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::NanEnableRequest"
- type: TYPE_STRUCT
- struct_value: {
- name: "operateInBand"
- type: TYPE_ARRAY
- vector_size: 2
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
- struct_value: {
- name: "hopCountMax"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "configParams"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::NanConfigRequest"
- }
- struct_value: {
- name: "debugConfigs"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::NanDebugConfig"
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::NanCipherSuiteType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "SHARED_KEY_128_MASK"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "SHARED_KEY_256_MASK"
- scalar_value: {
- uint32_t: 2
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::NanRangingIndication"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "CONTINUOUS_INDICATION_MASK"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "INGRESS_MET_MASK"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "EGRESS_MET_MASK"
- scalar_value: {
- uint32_t: 4
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::NanDiscoveryCommonConfig"
- type: TYPE_STRUCT
- struct_value: {
- name: "sessionId"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "ttlSec"
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- struct_value: {
- name: "discoveryWindowPeriod"
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- struct_value: {
- name: "discoveryCount"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "serviceName"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- struct_value: {
- name: "discoveryMatchIndicator"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::V1_0::NanMatchAlg"
- }
- struct_value: {
- name: "serviceSpecificInfo"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- struct_value: {
- name: "extendedServiceSpecificInfo"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- struct_value: {
- name: "rxMatchFilter"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- struct_value: {
- name: "txMatchFilter"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- struct_value: {
- name: "useRssiThreshold"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "disableDiscoveryTerminationIndication"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "disableMatchExpirationIndication"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "disableFollowupReceivedIndication"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "supportedCipherTypes"
- type: TYPE_MASK
- scalar_type: "uint32_t"
- predefined_type: "::android::hardware::wifi::V1_0::NanCipherSuiteType"
- }
- struct_value: {
- name: "pmk"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- struct_value: {
- name: "securityEnabledInNdp"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "rangingRequired"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "rangingIntervalMsec"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "configRangingIndications"
- type: TYPE_MASK
- scalar_type: "uint32_t"
- predefined_type: "::android::hardware::wifi::V1_0::NanRangingIndication"
- }
- struct_value: {
- name: "distanceIngressCm"
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- struct_value: {
- name: "distanceEgressCm"
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::NanPublishRequest"
- type: TYPE_STRUCT
- struct_value: {
- name: "baseConfigs"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::NanDiscoveryCommonConfig"
- }
- struct_value: {
- name: "publishType"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::V1_0::NanPublishType"
- }
- struct_value: {
- name: "txType"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::V1_0::NanTxType"
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::NanSubscribeRequest"
- type: TYPE_STRUCT
- struct_value: {
- name: "baseConfigs"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::NanDiscoveryCommonConfig"
- }
- struct_value: {
- name: "subscribeType"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::V1_0::NanSubscribeType"
- }
- struct_value: {
- name: "srfType"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::V1_0::NanSrfType"
- }
- struct_value: {
- name: "srfRespondIfInAddressSet"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "shouldUseSrf"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "isSsiRequiredForMatch"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "intfAddr"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::NanTransmitFollowupRequest"
- type: TYPE_STRUCT
- struct_value: {
- name: "discoverySessionId"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "peerId"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "addr"
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- struct_value: {
- name: "isHighPriority"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "shouldUseDiscoveryWindow"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "serviceSpecificInfo"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- struct_value: {
- name: "extendedServiceSpecificInfo"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- struct_value: {
- name: "disableFollowupResultIndication"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::NanInitiateDataPathRequest"
- type: TYPE_STRUCT
- struct_value: {
- name: "peerId"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "peerDiscMacAddr"
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- struct_value: {
- name: "channelRequestType"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::V1_0::NanDataPathChannelCfg"
- }
- struct_value: {
- name: "channel"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "ifaceName"
- type: TYPE_STRING
- }
- struct_value: {
- name: "securityRequired"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "appInfo"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- struct_value: {
- name: "supportedCipherTypes"
- type: TYPE_MASK
- scalar_type: "uint32_t"
- predefined_type: "::android::hardware::wifi::V1_0::NanCipherSuiteType"
- }
- struct_value: {
- name: "pmk"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::NanRespondToDataPathIndicationRequest"
- type: TYPE_STRUCT
- struct_value: {
- name: "acceptRequest"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "ndpInstanceId"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "ifaceName"
- type: TYPE_STRING
- }
- struct_value: {
- name: "securityRequired"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "appInfo"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- struct_value: {
- name: "supportedCipherTypes"
- type: TYPE_MASK
- scalar_type: "uint32_t"
- predefined_type: "::android::hardware::wifi::V1_0::NanCipherSuiteType"
- }
- struct_value: {
- name: "pmk"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::NanCapabilities"
- type: TYPE_STRUCT
- struct_value: {
- name: "maxConcurrentClusters"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "maxPublishes"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "maxSubscribes"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "maxServiceNameLen"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "maxMatchFilterLen"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "maxTotalMatchFilterLen"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "maxServiceSpecificInfoLen"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "maxExtendedServiceSpecificInfoLen"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "maxNdiInterfaces"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "maxNdpSessions"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "maxAppInfoLen"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "maxQueuedTransmitFollowupMsgs"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "maxSubscribeInterfaceAddresses"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "supportedCipherSuites"
- type: TYPE_MASK
- scalar_type: "uint32_t"
- predefined_type: "::android::hardware::wifi::V1_0::NanCipherSuiteType"
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::NanMatchInd"
- type: TYPE_STRUCT
- struct_value: {
- name: "discoverySessionId"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "peerId"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "addr"
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- struct_value: {
- name: "serviceSpecificInfo"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- struct_value: {
- name: "extendedServiceSpecificInfo"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- struct_value: {
- name: "matchFilter"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- struct_value: {
- name: "matchOccuredInBeaconFlag"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "outOfResourceFlag"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "rssiValue"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "peerSupportedCipherTypes"
- type: TYPE_MASK
- scalar_type: "uint32_t"
- predefined_type: "::android::hardware::wifi::V1_0::NanCipherSuiteType"
- }
- struct_value: {
- name: "peerRequiresSecurityEnabledInNdp"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "peerRequiresRanging"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "rangingMeasurementInCm"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "rangingIndicationType"
- type: TYPE_MASK
- scalar_type: "uint32_t"
- predefined_type: "::android::hardware::wifi::V1_0::NanRangingIndication"
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::NanFollowupReceivedInd"
- type: TYPE_STRUCT
- struct_value: {
- name: "discoverySessionId"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "peerId"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "addr"
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- struct_value: {
- name: "receivedInFaw"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "serviceSpecificInfo"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- struct_value: {
- name: "extendedServiceSpecificInfo"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::NanClusterEventType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "DISCOVERY_MAC_ADDRESS_CHANGED"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "STARTED_CLUSTER"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "JOINED_CLUSTER"
- scalar_value: {
- uint32_t: 2
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::NanClusterEventInd"
- type: TYPE_STRUCT
- struct_value: {
- name: "eventType"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::V1_0::NanClusterEventType"
- }
- struct_value: {
- name: "addr"
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::NanDataPathRequestInd"
- type: TYPE_STRUCT
- struct_value: {
- name: "discoverySessionId"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "peerDiscMacAddr"
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- struct_value: {
- name: "ndpInstanceId"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "securityRequired"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "appInfo"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::NanDataPathConfirmInd"
- type: TYPE_STRUCT
- struct_value: {
- name: "ndpInstanceId"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "dataPathSetupSuccess"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "peerNdiMacAddr"
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- struct_value: {
- name: "appInfo"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- struct_value: {
- name: "status"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiNanStatus"
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::RttStatus"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "SUCCESS"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "FAILURE"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "FAIL_NO_RSP"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "FAIL_REJECTED"
- scalar_value: {
- uint32_t: 3
- }
- enumerator: "FAIL_NOT_SCHEDULED_YET"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "FAIL_TM_TIMEOUT"
- scalar_value: {
- uint32_t: 5
- }
- enumerator: "FAIL_AP_ON_DIFF_CHANNEL"
- scalar_value: {
- uint32_t: 6
- }
- enumerator: "FAIL_NO_CAPABILITY"
- scalar_value: {
- uint32_t: 7
- }
- enumerator: "ABORTED"
- scalar_value: {
- uint32_t: 8
- }
- enumerator: "FAIL_INVALID_TS"
- scalar_value: {
- uint32_t: 9
- }
- enumerator: "FAIL_PROTOCOL"
- scalar_value: {
- uint32_t: 10
- }
- enumerator: "FAIL_SCHEDULE"
- scalar_value: {
- uint32_t: 11
- }
- enumerator: "FAIL_BUSY_TRY_LATER"
- scalar_value: {
- uint32_t: 12
- }
- enumerator: "INVALID_REQ"
- scalar_value: {
- uint32_t: 13
- }
- enumerator: "NO_WIFI"
- scalar_value: {
- uint32_t: 14
- }
- enumerator: "FAIL_FTM_PARAM_OVERRIDE"
- scalar_value: {
- uint32_t: 15
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::RttPeerType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "AP"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "STA"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "P2P_GO"
- scalar_value: {
- uint32_t: 3
- }
- enumerator: "P2P_CLIENT"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "NAN"
- scalar_value: {
- uint32_t: 5
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::RttBw"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "BW_5MHZ"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "BW_10MHZ"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "BW_20MHZ"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "BW_40MHZ"
- scalar_value: {
- uint32_t: 8
- }
- enumerator: "BW_80MHZ"
- scalar_value: {
- uint32_t: 16
- }
- enumerator: "BW_160MHZ"
- scalar_value: {
- uint32_t: 32
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::RttPreamble"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "LEGACY"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "HT"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "VHT"
- scalar_value: {
- uint32_t: 4
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::RttType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "ONE_SIDED"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "TWO_SIDED"
- scalar_value: {
- uint32_t: 2
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::RttConfig"
- type: TYPE_STRUCT
- struct_value: {
- name: "addr"
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- struct_value: {
- name: "type"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::V1_0::RttType"
- }
- struct_value: {
- name: "peer"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::V1_0::RttPeerType"
- }
- struct_value: {
- name: "channel"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiChannelInfo"
- }
- struct_value: {
- name: "burstPeriod"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "numBurst"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "numFramesPerBurst"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "numRetriesPerRttFrame"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "numRetriesPerFtmr"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "mustRequestLci"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "mustRequestLcr"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "burstDuration"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "preamble"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::V1_0::RttPreamble"
- }
- struct_value: {
- name: "bw"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::V1_0::RttBw"
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::RttResult"
- type: TYPE_STRUCT
- struct_value: {
- name: "addr"
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- struct_value: {
- name: "burstNum"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "measurementNumber"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "successNumber"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "numberPerBurstPeer"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "status"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::V1_0::RttStatus"
- }
- struct_value: {
- name: "retryAfterDuration"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "type"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::V1_0::RttType"
- }
- struct_value: {
- name: "rssi"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "rssiSpread"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "txRate"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiRateInfo"
- }
- struct_value: {
- name: "rxRate"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiRateInfo"
- }
- struct_value: {
- name: "rtt"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- struct_value: {
- name: "rttSd"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- struct_value: {
- name: "rttSpread"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- struct_value: {
- name: "distanceInMm"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "distanceSdInMm"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "distanceSpreadInMm"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "timeStampInUs"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- struct_value: {
- name: "burstDurationInMs"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "negotiatedBurstNum"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "lci"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiInformationElement"
- }
- struct_value: {
- name: "lcr"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiInformationElement"
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::RttCapabilities"
- type: TYPE_STRUCT
- struct_value: {
- name: "rttOneSidedSupported"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "rttFtmSupported"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "lciSupported"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "lcrSupported"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "responderSupported"
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- struct_value: {
- name: "preambleSupport"
- type: TYPE_MASK
- scalar_type: "uint32_t"
- predefined_type: "::android::hardware::wifi::V1_0::RttPreamble"
- }
- struct_value: {
- name: "bwSupport"
- type: TYPE_MASK
- scalar_type: "uint32_t"
- predefined_type: "::android::hardware::wifi::V1_0::RttBw"
- }
- struct_value: {
- name: "mcVersion"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::RttMotionPattern"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "NOT_EXPECTED"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "EXPECTED"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "UNKNOWN"
- scalar_value: {
- uint32_t: 2
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::RttLciInformation"
- type: TYPE_STRUCT
- struct_value: {
- name: "latitude"
- type: TYPE_SCALAR
- scalar_type: "int64_t"
- }
- struct_value: {
- name: "longitude"
- type: TYPE_SCALAR
- scalar_type: "int64_t"
- }
- struct_value: {
- name: "altitude"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "latitudeUnc"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "longitudeUnc"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "altitudeUnc"
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- struct_value: {
- name: "motionPattern"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::V1_0::RttMotionPattern"
- }
- struct_value: {
- name: "floor"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "heightAboveFloor"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
- struct_value: {
- name: "heightUnc"
- type: TYPE_SCALAR
- scalar_type: "int32_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::RttLcrInformation"
- type: TYPE_STRUCT
- struct_value: {
- name: "countryCode"
- type: TYPE_ARRAY
- vector_size: 2
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "int8_t"
- }
- }
- struct_value: {
- name: "civicInfo"
- type: TYPE_STRING
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::RttResponder"
- type: TYPE_STRUCT
- struct_value: {
- name: "channel"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiChannelInfo"
- }
- struct_value: {
- name: "preamble"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::V1_0::RttPreamble"
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::WifiDebugRingBufferFlags"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "HAS_BINARY_ENTRIES"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "HAS_ASCII_ENTRIES"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "HAS_PER_PACKET_ENTRIES"
- scalar_value: {
- uint32_t: 4
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::WifiDebugRingBufferStatus"
- type: TYPE_STRUCT
- struct_value: {
- name: "ringName"
- type: TYPE_STRING
- }
- struct_value: {
- name: "flags"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "ringId"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "sizeInBytes"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "freeSizeInBytes"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "verboseLevel"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::WifiDebugRingBufferVerboseLevel"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "NONE"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "DEFAULT"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "VERBOSE"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "EXCESSIVE"
- scalar_value: {
- uint32_t: 3
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::WifiDebugTxPacketFate"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "ACKED"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "SENT"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "FW_QUEUED"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "FW_DROP_INVALID"
- scalar_value: {
- uint32_t: 3
- }
- enumerator: "FW_DROP_NOBUFS"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "FW_DROP_OTHER"
- scalar_value: {
- uint32_t: 5
- }
- enumerator: "DRV_QUEUED"
- scalar_value: {
- uint32_t: 6
- }
- enumerator: "DRV_DROP_INVALID"
- scalar_value: {
- uint32_t: 7
- }
- enumerator: "DRV_DROP_NOBUFS"
- scalar_value: {
- uint32_t: 8
- }
- enumerator: "DRV_DROP_OTHER"
- scalar_value: {
- uint32_t: 9
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::WifiDebugRxPacketFate"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "SUCCESS"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "FW_QUEUED"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "FW_DROP_FILTER"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "FW_DROP_INVALID"
- scalar_value: {
- uint32_t: 3
- }
- enumerator: "FW_DROP_NOBUFS"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "FW_DROP_OTHER"
- scalar_value: {
- uint32_t: 5
- }
- enumerator: "DRV_QUEUED"
- scalar_value: {
- uint32_t: 6
- }
- enumerator: "DRV_DROP_FILTER"
- scalar_value: {
- uint32_t: 7
- }
- enumerator: "DRV_DROP_INVALID"
- scalar_value: {
- uint32_t: 8
- }
- enumerator: "DRV_DROP_NOBUFS"
- scalar_value: {
- uint32_t: 9
- }
- enumerator: "DRV_DROP_OTHER"
- scalar_value: {
- uint32_t: 10
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::WifiDebugPacketFateFrameType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "UNKNOWN"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "ETHERNET_II"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "MGMT_80211"
- scalar_value: {
- uint32_t: 2
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::WifiDebugPacketFateFrameInfo"
- type: TYPE_STRUCT
- struct_value: {
- name: "frameType"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::V1_0::WifiDebugPacketFateFrameType"
- }
- struct_value: {
- name: "frameLen"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- struct_value: {
- name: "driverTimestampUsec"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- struct_value: {
- name: "firmwareTimestampUsec"
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- struct_value: {
- name: "frameContent"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::WifiDebugTxPacketFateReport"
- type: TYPE_STRUCT
- struct_value: {
- name: "fate"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::V1_0::WifiDebugTxPacketFate"
- }
- struct_value: {
- name: "frameInfo"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiDebugPacketFateFrameInfo"
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::WifiDebugRxPacketFateReport"
- type: TYPE_STRUCT
- struct_value: {
- name: "fate"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::V1_0::WifiDebugRxPacketFate"
- }
- struct_value: {
- name: "frameInfo"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiDebugPacketFateFrameInfo"
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::WifiDebugHostWakeReasonRxPacketDetails"
- type: TYPE_STRUCT
- struct_value: {
- name: "rxUnicastCnt"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "rxMulticastCnt"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "rxBroadcastCnt"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::WifiDebugHostWakeReasonRxMulticastPacketDetails"
- type: TYPE_STRUCT
- struct_value: {
- name: "ipv4RxMulticastAddrCnt"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "ipv6RxMulticastAddrCnt"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "otherRxMulticastAddrCnt"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::WifiDebugHostWakeReasonRxIcmpPacketDetails"
- type: TYPE_STRUCT
- struct_value: {
- name: "icmpPkt"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "icmp6Pkt"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "icmp6Ra"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "icmp6Na"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "icmp6Ns"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::V1_0::WifiDebugHostWakeReasonStats"
- type: TYPE_STRUCT
- struct_value: {
- name: "totalCmdEventWakeCnt"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "cmdEventWakeCntPerType"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
- struct_value: {
- name: "totalDriverFwLocalWakeCnt"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "driverFwLocalWakeCntPerType"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
- struct_value: {
- name: "totalRxPacketWakeCnt"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "rxPktWakeDetails"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiDebugHostWakeReasonRxPacketDetails"
- }
- struct_value: {
- name: "rxMulticastPkWakeDetails"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiDebugHostWakeReasonRxMulticastPacketDetails"
- }
- struct_value: {
- name: "rxIcmpPkWakeDetails"
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::V1_0::WifiDebugHostWakeReasonRxIcmpPacketDetails"
- }
-}
-
diff --git a/wifi/supplicant/1.0/ISupplicantP2pIface.hal b/wifi/supplicant/1.0/ISupplicantP2pIface.hal
index 45e90f3..dc1388a 100644
--- a/wifi/supplicant/1.0/ISupplicantP2pIface.hal
+++ b/wifi/supplicant/1.0/ISupplicantP2pIface.hal
@@ -612,4 +612,64 @@
* |SupplicantStatusCode.FAILURE_IFACE_INVALID|
*/
setWfdDeviceInfo(uint8_t[8] info) generates (SupplicantStatus status);
+
+ /**
+ * Creates a NFC handover request message.
+ *
+ * @return status Status of the operation.
+ * Possible status codes:
+ * |SupplicantStatusCode.SUCCESS|,
+ * |SupplicantStatusCode.FAILURE_UNKNOWN|,
+ * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
+ * @return request Bytes representing the handover request as specified in
+ * section 3.1.1 of NFC Connection Handover 1.2 Technical
+ * Specification.
+ */
+ createNfcHandoverRequestMessage()
+ generates (SupplicantStatus status, vec<uint8_t> request);
+
+ /**
+ * Creates a NFC handover select message.
+ *
+ * @return status Status of the operation.
+ * Possible status codes:
+ * |SupplicantStatusCode.SUCCESS|,
+ * |SupplicantStatusCode.FAILURE_UNKNOWN|,
+ * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
+ * @return select Bytes representing the handover select as specified in
+ * section 3.1.2 of NFC Connection Handover 1.2 Technical
+ * Specification.
+ */
+ createNfcHandoverSelectMessage()
+ generates (SupplicantStatus status, vec<uint8_t> select);
+
+ /**
+ * Report the response of the NFC handover request.
+ *
+ * @param request Bytes representing the handover request as specified in
+ * section 3.1.1 of NFC Connection Handover 1.2 Technical
+ * Specification.
+ * @return status Status of the operation.
+ * Possible status codes:
+ * |SupplicantStatusCode.SUCCESS|,
+ * |SupplicantStatusCode.FAILURE_UNKNOWN|,
+ * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
+ */
+ reportNfcHandoverResponse(vec<uint8_t> request)
+ generates (SupplicantStatus status);
+
+ /**
+ * Report the initiation of the NFC handover select.
+ *
+ * @param select Bytes representing the handover select as specified in
+ * section 3.1.2 of NFC Connection Handover 1.2 Technical
+ * Specification.
+ * @return status Status of the operation.
+ * Possible status codes:
+ * |SupplicantStatusCode.SUCCESS|,
+ * |SupplicantStatusCode.FAILURE_UNKNOWN|,
+ * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
+ */
+ reportNfcHandoverInitiation(vec<uint8_t> select)
+ generates (SupplicantStatus status);
};
diff --git a/wifi/supplicant/1.0/ISupplicantStaIfaceCallback.hal b/wifi/supplicant/1.0/ISupplicantStaIfaceCallback.hal
index 34237f0..dd1d1c4 100644
--- a/wifi/supplicant/1.0/ISupplicantStaIfaceCallback.hal
+++ b/wifi/supplicant/1.0/ISupplicantStaIfaceCallback.hal
@@ -214,45 +214,46 @@
* Used to indicate the result of ANQP (either for IEEE 802.11u Interworking
* or Hotspot 2.0) query.
*
- * @param macAddress MAC address of the access point.
+ * @param bssid BSSID of the access point.
* @param data ANQP data fetched from the access point.
* All the fields in this struct must be empty if the query failed.
* @param hs20Data ANQP data fetched from the Hotspot 2.0 access point.
* All the fields in this struct must be empty if the query failed.
*/
- oneway onAnqpQueryDone(MacAddress macAddress,
- AnqpData data,
- Hs20AnqpData hs20Data);
+ oneway onAnqpQueryDone(Bssid bssid, AnqpData data, Hs20AnqpData hs20Data);
/**
* Used to indicate the result of Hotspot 2.0 Icon query.
*
- * @param macAddress MAC address of the access point.
+ * @param bssid BSSID of the access point.
* @param fileName Name of the file that was requested.
* @param data Icon data fetched from the access point.
* Must be empty if the query failed.
*/
- oneway onHs20IconQueryDone(MacAddress macAddress,
- string fileName,
- vec<uint8_t> data);
+ oneway onHs20IconQueryDone(Bssid bssid, string fileName, vec<uint8_t> data);
/**
* Used to indicate a Hotspot 2.0 subscription remediation event.
*
+ * @param bssid BSSID of the access point.
* @param osuMethod OSU method.
* @param url URL of the server.
*/
- oneway onHs20SubscriptionRemediation(OsuMethod osuMethod, string url);
+ oneway onHs20SubscriptionRemediation(Bssid bssid,
+ OsuMethod osuMethod,
+ string url);
/**
* Used to indicate a Hotspot 2.0 imminent deauth notice.
*
+ * @param bssid BSSID of the access point.
* @param reasonCode Code to indicate the deauth reason.
* Refer to section 3.2.1.2 of the Hotspot 2.0 spec.
* @param reAuthDelayInSec Delay before reauthenticating.
* @param url URL of the server.
*/
- oneway onHs20DeauthImminentNotice(uint32_t reasonCode,
+ oneway onHs20DeauthImminentNotice(Bssid bssid,
+ uint32_t reasonCode,
uint32_t reAuthDelayInSec,
string url);
diff --git a/wifi/supplicant/1.0/ISupplicantStaNetwork.hal b/wifi/supplicant/1.0/ISupplicantStaNetwork.hal
index deaad5d..37e8d3f 100644
--- a/wifi/supplicant/1.0/ISupplicantStaNetwork.hal
+++ b/wifi/supplicant/1.0/ISupplicantStaNetwork.hal
@@ -106,7 +106,10 @@
PAP = 1,
MSPAP = 2,
MSPAPV2 = 3,
- GTC = 4
+ GTC = 4,
+ SIM = 5,
+ AKA = 6,
+ AKA_PRIME = 7
};
/** Params of |sendNetworkEapSimGsmAuthResponse| request. (Refer RFC 4186) */
@@ -431,9 +434,11 @@
setEapClientCert(string path) generates (SupplicantStatus status);
/**
- * Set EAP private key file path for this network.
+ * Set EAP private key Id for this network.
+ * This is used if private key operations for EAP-TLS are performed
+ * using a smartcard.
*
- * @param path value to set.
+ * @param id value to set.
* @return status Status of the operation.
* Possible status codes:
* |SupplicantStatusCode.SUCCESS|,
@@ -441,7 +446,7 @@
* |SupplicantStatusCode.FAILURE_UNKNOWN|,
* |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
*/
- setEapPrivateKey(string path) generates (SupplicantStatus status);
+ setEapPrivateKeyId(string id) generates (SupplicantStatus status);
/**
* Set EAP subject match for this network.
@@ -807,16 +812,16 @@
getEapClientCert() generates (SupplicantStatus status, string path);
/**
- * Get EAP private key file path set for this network.
+ * Get EAP private key Id set for this network.
*
* @return status Status of the operation.
* Possible status codes:
* |SupplicantStatusCode.SUCCESS|,
* |SupplicantStatusCode.FAILURE_UNKNOWN|,
* |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
- * @return path value set.
+ * @return id value set.
*/
- getEapPrivateKey() generates (SupplicantStatus status, string path);
+ getEapPrivateKeyId() generates (SupplicantStatus status, string id);
/**
* Get EAP subject match set for this network.
@@ -896,6 +901,22 @@
getIdStr() generates (SupplicantStatus status, string idStr);
/**
+ * Retrieves a WPS-NFC configuration token for this network.
+ *
+ * @return status Status of the operation.
+ * Possible status codes:
+ * |SupplicantStatusCode.SUCCESS|,
+ * |SupplicantStatusCode.FAILURE_ARGS_INVALID|,
+ * |SupplicantStatusCode.FAILURE_UNKNOWN|,
+ * |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
+ * @return token Bytes representing WPS-NFC configuration token.
+ * This is a dump of all the WPS atrributes of the AP configuration
+ * as specified in the Wi-Fi Protected Setup Specification.
+ */
+ getWpsNfcConfigurationToken()
+ generates (SupplicantStatus status, vec<uint8_t> token);
+
+ /**
* Enable the network for connection purposes.
*
* This must trigger a connection to the network if:
diff --git a/wifi/supplicant/1.0/vts/Supplicant.vts b/wifi/supplicant/1.0/vts/Supplicant.vts
deleted file mode 100644
index 534b1cf..0000000
--- a/wifi/supplicant/1.0/vts/Supplicant.vts
+++ /dev/null
@@ -1,160 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "ISupplicant"
-
-package: "android.hardware.wifi.supplicant"
-
-import: "android.hardware.wifi.supplicant@1.0::ISupplicantCallback"
-import: "android.hardware.wifi.supplicant@1.0::ISupplicantIface"
-import: "android.hardware.wifi.supplicant@1.0::ISupplicantNetwork"
-import: "android.hardware.wifi.supplicant@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- attribute: {
- name: "::android::hardware::wifi::supplicant::V1_0::ISupplicant::DebugLevel"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "EXCESSIVE"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "MSGDUMP"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "DEBUG"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "INFO"
- scalar_value: {
- uint32_t: 3
- }
- enumerator: "WARNING"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "ERROR"
- scalar_value: {
- uint32_t: 5
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::wifi::supplicant::V1_0::ISupplicant::IfaceInfo"
- type: TYPE_STRUCT
- struct_value: {
- name: "type"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::IfaceType"
- }
- struct_value: {
- name: "name"
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "getInterface"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_HIDL_INTERFACE
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantIface"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicant::IfaceInfo"
- }
- }
-
- api: {
- name: "listInterfaces"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicant::IfaceInfo"
- }
- }
- }
-
- api: {
- name: "registerCallback"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_HIDL_CALLBACK
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantCallback"
- }
- }
-
- api: {
- name: "setDebugParams"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicant::DebugLevel"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "getDebugLevel"
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicant::DebugLevel"
- }
- }
-
- api: {
- name: "isDebugShowTimestampEnabled"
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "isDebugShowKeysEnabled"
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "setConcurrencyPriority"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::IfaceType"
- }
- }
-
-}
diff --git a/wifi/supplicant/1.0/vts/SupplicantCallback.vts b/wifi/supplicant/1.0/vts/SupplicantCallback.vts
deleted file mode 100644
index 2d9e991..0000000
--- a/wifi/supplicant/1.0/vts/SupplicantCallback.vts
+++ /dev/null
@@ -1,28 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "ISupplicantCallback"
-
-package: "android.hardware.wifi.supplicant"
-
-import: "android.hidl.base@1.0::types"
-
-interface: {
- api: {
- name: "onInterfaceCreated"
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "onInterfaceRemoved"
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "onTerminating"
- }
-
-}
diff --git a/wifi/supplicant/1.0/vts/SupplicantIface.vts b/wifi/supplicant/1.0/vts/SupplicantIface.vts
deleted file mode 100644
index c703ec0..0000000
--- a/wifi/supplicant/1.0/vts/SupplicantIface.vts
+++ /dev/null
@@ -1,203 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "ISupplicantIface"
-
-package: "android.hardware.wifi.supplicant"
-
-import: "android.hardware.wifi.supplicant@1.0::ISupplicantNetwork"
-import: "android.hardware.wifi.supplicant@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- attribute: {
- name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantIface::ParamSizeLimits"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "WPS_DEVICE_NAME_MAX_LEN"
- scalar_value: {
- uint32_t: 32
- }
- enumerator: "WPS_MANUFACTURER_MAX_LEN"
- scalar_value: {
- uint32_t: 64
- }
- enumerator: "WPS_MODEL_NAME_MAX_LEN"
- scalar_value: {
- uint32_t: 32
- }
- enumerator: "WPS_MODEL_NUMBER_MAX_LEN"
- scalar_value: {
- uint32_t: 32
- }
- enumerator: "WPS_SERIAL_NUMBER_MAX_LEN"
- scalar_value: {
- uint32_t: 32
- }
- }
- }
-
- api: {
- name: "getName"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "getType"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::IfaceType"
- }
- }
-
- api: {
- name: "addNetwork"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_HIDL_INTERFACE
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantNetwork"
- }
- }
-
- api: {
- name: "removeNetwork"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "getNetwork"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_HIDL_INTERFACE
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantNetwork"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "listNetworks"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
- }
-
- api: {
- name: "setWpsDeviceName"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "setWpsDeviceType"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_ARRAY
- vector_size: 8
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "setWpsManufacturer"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "setWpsModelName"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "setWpsModelNumber"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "setWpsSerialNumber"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "setWpsConfigMethods"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_MASK
- scalar_type: "uint16_t"
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::WpsConfigMethods"
- }
- }
-
-}
diff --git a/wifi/supplicant/1.0/vts/SupplicantNetwork.vts b/wifi/supplicant/1.0/vts/SupplicantNetwork.vts
deleted file mode 100644
index c90f396..0000000
--- a/wifi/supplicant/1.0/vts/SupplicantNetwork.vts
+++ /dev/null
@@ -1,46 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "ISupplicantNetwork"
-
-package: "android.hardware.wifi.supplicant"
-
-import: "android.hardware.wifi.supplicant@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- api: {
- name: "getId"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "getInterfaceName"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "getType"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::IfaceType"
- }
- }
-
-}
diff --git a/wifi/supplicant/1.0/vts/SupplicantP2pIface.vts b/wifi/supplicant/1.0/vts/SupplicantP2pIface.vts
deleted file mode 100644
index 2515b60..0000000
--- a/wifi/supplicant/1.0/vts/SupplicantP2pIface.vts
+++ /dev/null
@@ -1,801 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "ISupplicantP2pIface"
-
-package: "android.hardware.wifi.supplicant"
-
-import: "android.hardware.wifi.supplicant@1.0::ISupplicantIface"
-import: "android.hardware.wifi.supplicant@1.0::ISupplicantNetwork"
-import: "android.hardware.wifi.supplicant@1.0::ISupplicantP2pIfaceCallback"
-import: "android.hardware.wifi.supplicant@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- attribute: {
- name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantP2pIface::WpsProvisionMethod"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "PBC"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "DISPLAY"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "KEYPAD"
- scalar_value: {
- uint32_t: 2
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantP2pIface::FreqRange"
- type: TYPE_STRUCT
- struct_value: {
- name: "min"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- struct_value: {
- name: "max"
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- attribute: {
- name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantP2pIface::MiracastMode"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint8_t"
-
- enumerator: "DISABLED"
- scalar_value: {
- uint8_t: 0
- }
- enumerator: "SOURCE"
- scalar_value: {
- uint8_t: 1
- }
- enumerator: "SINK"
- scalar_value: {
- uint8_t: 2
- }
- }
- }
-
- api: {
- name: "getName"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "getType"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::IfaceType"
- }
- }
-
- api: {
- name: "addNetwork"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_HIDL_INTERFACE
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantNetwork"
- }
- }
-
- api: {
- name: "removeNetwork"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "getNetwork"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_HIDL_INTERFACE
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantNetwork"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "listNetworks"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
- }
-
- api: {
- name: "setWpsDeviceName"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "setWpsDeviceType"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_ARRAY
- vector_size: 8
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "setWpsManufacturer"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "setWpsModelName"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "setWpsModelNumber"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "setWpsSerialNumber"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "setWpsConfigMethods"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_MASK
- scalar_type: "uint16_t"
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::WpsConfigMethods"
- }
- }
-
- api: {
- name: "registerCallback"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_HIDL_CALLBACK
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantP2pIfaceCallback"
- }
- }
-
- api: {
- name: "getDeviceAddress"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "setSsidPostfix"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "setGroupIdle"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "setPowerSave"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "find"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "stopFind"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- }
-
- api: {
- name: "flush"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- }
-
- api: {
- name: "connect"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantP2pIface::WpsProvisionMethod"
- }
- arg: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "cancelConnect"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- }
-
- api: {
- name: "provisionDiscovery"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantP2pIface::WpsProvisionMethod"
- }
- }
-
- api: {
- name: "addGroup"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "removeGroup"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "reject"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "invite"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "reinvoke"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "configureExtListen"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "setListenChannel"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "setDisallowedFrequencies"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantP2pIface::FreqRange"
- }
- }
- }
-
- api: {
- name: "getSsid"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "getGroupCapability"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_MASK
- scalar_type: "uint32_t"
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::P2pGroupCapabilityMask"
- }
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "addBonjourService"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "removeBonjourService"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "addUpnpService"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "removeUpnpService"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "flushServices"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- }
-
- api: {
- name: "requestServiceDiscovery"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "cancelServiceDiscovery"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint64_t"
- }
- }
-
- api: {
- name: "setMiracastMode"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantP2pIface::MiracastMode"
- }
- }
-
- api: {
- name: "startWpsPbc"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "startWpsPinKeypad"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "startWpsPinDisplay"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "cancelWps"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "enableWfd"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "setWfdDeviceInfo"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_ARRAY
- vector_size: 8
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
-}
diff --git a/wifi/supplicant/1.0/vts/SupplicantP2pIfaceCallback.vts b/wifi/supplicant/1.0/vts/SupplicantP2pIfaceCallback.vts
deleted file mode 100644
index b3cf05b..0000000
--- a/wifi/supplicant/1.0/vts/SupplicantP2pIfaceCallback.vts
+++ /dev/null
@@ -1,524 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "ISupplicantP2pIfaceCallback"
-
-package: "android.hardware.wifi.supplicant"
-
-import: "android.hardware.wifi.supplicant@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- attribute: {
- name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantP2pIfaceCallback::WpsDevPasswordId"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint16_t"
-
- enumerator: "DEFAULT"
- scalar_value: {
- uint16_t: 0
- }
- enumerator: "USER_SPECIFIED"
- scalar_value: {
- uint16_t: 1
- }
- enumerator: "MACHINE_SPECIFIED"
- scalar_value: {
- uint16_t: 2
- }
- enumerator: "REKEY"
- scalar_value: {
- uint16_t: 3
- }
- enumerator: "PUSHBUTTON"
- scalar_value: {
- uint16_t: 4
- }
- enumerator: "REGISTRAR_SPECIFIED"
- scalar_value: {
- uint16_t: 5
- }
- enumerator: "NFC_CONNECTION_HANDOVER"
- scalar_value: {
- uint16_t: 7
- }
- enumerator: "P2PS_DEFAULT"
- scalar_value: {
- uint16_t: 8
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantP2pIfaceCallback::P2pStatusCode"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "SUCCESS"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "FAIL_INFO_CURRENTLY_UNAVAILABLE"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "FAIL_INCOMPATIBLE_PARAMS"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "FAIL_LIMIT_REACHED"
- scalar_value: {
- uint32_t: 3
- }
- enumerator: "FAIL_INVALID_PARAMS"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "FAIL_UNABLE_TO_ACCOMMODATE"
- scalar_value: {
- uint32_t: 5
- }
- enumerator: "FAIL_PREV_PROTOCOL_ERROR"
- scalar_value: {
- uint32_t: 6
- }
- enumerator: "FAIL_NO_COMMON_CHANNELS"
- scalar_value: {
- uint32_t: 7
- }
- enumerator: "FAIL_UNKNOWN_GROUP"
- scalar_value: {
- uint32_t: 8
- }
- enumerator: "FAIL_BOTH_GO_INTENT_15"
- scalar_value: {
- uint32_t: 9
- }
- enumerator: "FAIL_INCOMPATIBLE_PROV_METHOD"
- scalar_value: {
- uint32_t: 10
- }
- enumerator: "FAIL_REJECTED_BY_USER"
- scalar_value: {
- uint32_t: 11
- }
- enumerator: "SUCCESS_DEFERRED"
- scalar_value: {
- uint32_t: 12
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantP2pIfaceCallback::P2pProvDiscStatusCode"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint8_t"
-
- enumerator: "SUCCESS"
- scalar_value: {
- uint8_t: 0
- }
- enumerator: "TIMEOUT"
- scalar_value: {
- uint8_t: 1
- }
- enumerator: "REJECTED"
- scalar_value: {
- uint8_t: 2
- }
- enumerator: "TIMEOUT_JOIN"
- scalar_value: {
- uint8_t: 3
- }
- enumerator: "INFO_UNAVAILABLE"
- scalar_value: {
- uint8_t: 4
- }
- }
- }
-
- api: {
- name: "onNetworkAdded"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "onNetworkRemoved"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "onDeviceFound"
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- arg: {
- type: TYPE_ARRAY
- vector_size: 8
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- arg: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_MASK
- scalar_type: "uint16_t"
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::WpsConfigMethods"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- arg: {
- type: TYPE_MASK
- scalar_type: "uint32_t"
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::P2pGroupCapabilityMask"
- }
- arg: {
- type: TYPE_ARRAY
- vector_size: 8
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "onDeviceLost"
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "onFindStopped"
- }
-
- api: {
- name: "onGoNegotiationRequest"
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantP2pIfaceCallback::WpsDevPasswordId"
- }
- }
-
- api: {
- name: "onGoNegotiationCompleted"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantP2pIfaceCallback::P2pStatusCode"
- }
- }
-
- api: {
- name: "onGroupFormationSuccess"
- }
-
- api: {
- name: "onGroupFormationFailure"
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "onGroupStarted"
- arg: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_ARRAY
- vector_size: 32
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- arg: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "onGroupRemoved"
- arg: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "onInvitationReceived"
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "onInvitationResult"
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantP2pIfaceCallback::P2pStatusCode"
- }
- }
-
- api: {
- name: "onProvisionDiscoveryPbcRequest"
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "onProvisionDiscoveryPbcResponse"
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "onProvisionDiscoveryShowPin"
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "onProvisionDiscoveryEnterPin"
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "onProvisionDiscoveryFailure"
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "onProvisionDiscoveryCompleted"
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantP2pIfaceCallback::P2pProvDiscStatusCode"
- }
- arg: {
- type: TYPE_MASK
- scalar_type: "uint16_t"
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::WpsConfigMethods"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "onServiceDiscoveryResponse"
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint16_t"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "onStaAuthorized"
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "onStaDeauthorized"
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
-}
diff --git a/wifi/supplicant/1.0/vts/SupplicantP2pNetwork.vts b/wifi/supplicant/1.0/vts/SupplicantP2pNetwork.vts
deleted file mode 100644
index 8d0b5a1..0000000
--- a/wifi/supplicant/1.0/vts/SupplicantP2pNetwork.vts
+++ /dev/null
@@ -1,127 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "ISupplicantP2pNetwork"
-
-package: "android.hardware.wifi.supplicant"
-
-import: "android.hardware.wifi.supplicant@1.0::ISupplicantNetwork"
-import: "android.hardware.wifi.supplicant@1.0::ISupplicantP2pNetworkCallback"
-import: "android.hardware.wifi.supplicant@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- api: {
- name: "getId"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "getInterfaceName"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "getType"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::IfaceType"
- }
- }
-
- api: {
- name: "registerCallback"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_HIDL_CALLBACK
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantP2pNetworkCallback"
- }
- }
-
- api: {
- name: "getSsid"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "getBssid"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "isCurrent"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "isPersistent"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "isGo"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
-}
diff --git a/wifi/supplicant/1.0/vts/SupplicantP2pNetworkCallback.vts b/wifi/supplicant/1.0/vts/SupplicantP2pNetworkCallback.vts
deleted file mode 100644
index 9493c5e..0000000
--- a/wifi/supplicant/1.0/vts/SupplicantP2pNetworkCallback.vts
+++ /dev/null
@@ -1,10 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "ISupplicantP2pNetworkCallback"
-
-package: "android.hardware.wifi.supplicant"
-
-import: "android.hidl.base@1.0::types"
-
-interface: {
-}
diff --git a/wifi/supplicant/1.0/vts/SupplicantStaIface.vts b/wifi/supplicant/1.0/vts/SupplicantStaIface.vts
deleted file mode 100644
index cc52487..0000000
--- a/wifi/supplicant/1.0/vts/SupplicantStaIface.vts
+++ /dev/null
@@ -1,658 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "ISupplicantStaIface"
-
-package: "android.hardware.wifi.supplicant"
-
-import: "android.hardware.wifi.supplicant@1.0::ISupplicantIface"
-import: "android.hardware.wifi.supplicant@1.0::ISupplicantNetwork"
-import: "android.hardware.wifi.supplicant@1.0::ISupplicantStaIfaceCallback"
-import: "android.hardware.wifi.supplicant@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- attribute: {
- name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIface::AnqpInfoId"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint16_t"
-
- enumerator: "VENUE_NAME"
- scalar_value: {
- uint16_t: 258
- }
- enumerator: "ROAMING_CONSORTIUM"
- scalar_value: {
- uint16_t: 261
- }
- enumerator: "IP_ADDR_TYPE_AVAILABILITY"
- scalar_value: {
- uint16_t: 262
- }
- enumerator: "NAI_REALM"
- scalar_value: {
- uint16_t: 263
- }
- enumerator: "ANQP_3GPP_CELLULAR_NETWORK"
- scalar_value: {
- uint16_t: 264
- }
- enumerator: "DOMAIN_NAME"
- scalar_value: {
- uint16_t: 268
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIface::Hs20AnqpSubtypes"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "OPERATOR_FRIENDLY_NAME"
- scalar_value: {
- uint32_t: 3
- }
- enumerator: "WAN_METRICS"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "CONNECTION_CAPABILITY"
- scalar_value: {
- uint32_t: 5
- }
- enumerator: "OSU_PROVIDERS_LIST"
- scalar_value: {
- uint32_t: 8
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIface::RxFilterType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint8_t"
-
- enumerator: "V4_MULTICAST"
- scalar_value: {
- uint8_t: 0
- }
- enumerator: "V6_MULTICAST"
- scalar_value: {
- uint8_t: 1
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIface::BtCoexistenceMode"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint8_t"
-
- enumerator: "ENABLED"
- scalar_value: {
- uint8_t: 0
- }
- enumerator: "DISABLED"
- scalar_value: {
- uint8_t: 1
- }
- enumerator: "SENSE"
- scalar_value: {
- uint8_t: 2
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIface::ExtRadioWorkDefaults"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "TIMEOUT_IN_SECS"
- scalar_value: {
- uint32_t: 10
- }
- }
- }
-
- api: {
- name: "getName"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "getType"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::IfaceType"
- }
- }
-
- api: {
- name: "addNetwork"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_HIDL_INTERFACE
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantNetwork"
- }
- }
-
- api: {
- name: "removeNetwork"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "getNetwork"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_HIDL_INTERFACE
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantNetwork"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "listNetworks"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
- }
-
- api: {
- name: "setWpsDeviceName"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "setWpsDeviceType"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_ARRAY
- vector_size: 8
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "setWpsManufacturer"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "setWpsModelName"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "setWpsModelNumber"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "setWpsSerialNumber"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "setWpsConfigMethods"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_MASK
- scalar_type: "uint16_t"
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::WpsConfigMethods"
- }
- }
-
- api: {
- name: "registerCallback"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_HIDL_CALLBACK
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIfaceCallback"
- }
- }
-
- api: {
- name: "reassociate"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- }
-
- api: {
- name: "reconnect"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- }
-
- api: {
- name: "disconnect"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- }
-
- api: {
- name: "setPowerSave"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "initiateTdlsDiscover"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "initiateTdlsSetup"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "initiateTdlsTeardown"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "initiateAnqpQuery"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIface::AnqpInfoId"
- }
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIface::Hs20AnqpSubtypes"
- }
- }
- }
-
- api: {
- name: "initiateHs20IconQuery"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "getMacAddress"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "startRxFilter"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- }
-
- api: {
- name: "stopRxFilter"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- }
-
- api: {
- name: "addRxFilter"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIface::RxFilterType"
- }
- }
-
- api: {
- name: "removeRxFilter"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIface::RxFilterType"
- }
- }
-
- api: {
- name: "setBtCoexistenceMode"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIface::BtCoexistenceMode"
- }
- }
-
- api: {
- name: "setBtCoexistenceScanModeEnabled"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "setSuspendModeEnabled"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "setCountryCode"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_ARRAY
- vector_size: 2
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "int8_t"
- }
- }
- }
-
- api: {
- name: "startWpsRegistrar"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "startWpsPbc"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "startWpsPinKeypad"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "startWpsPinDisplay"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "cancelWps"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- }
-
- api: {
- name: "setExternalSim"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "addExtRadioWork"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "removeExtRadioWork"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
-}
diff --git a/wifi/supplicant/1.0/vts/SupplicantStaIfaceCallback.vts b/wifi/supplicant/1.0/vts/SupplicantStaIfaceCallback.vts
deleted file mode 100644
index 0a35848..0000000
--- a/wifi/supplicant/1.0/vts/SupplicantStaIfaceCallback.vts
+++ /dev/null
@@ -1,516 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "ISupplicantStaIfaceCallback"
-
-package: "android.hardware.wifi.supplicant"
-
-import: "android.hardware.wifi.supplicant@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- attribute: {
- name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIfaceCallback::State"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "DISCONNECTED"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "IFACE_DISABLED"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "INACTIVE"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "SCANNING"
- scalar_value: {
- uint32_t: 3
- }
- enumerator: "AUTHENTICATING"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "ASSOCIATING"
- scalar_value: {
- uint32_t: 5
- }
- enumerator: "ASSOCIATED"
- scalar_value: {
- uint32_t: 6
- }
- enumerator: "FOURWAY_HANDSHAKE"
- scalar_value: {
- uint32_t: 7
- }
- enumerator: "GROUP_HANDSHAKE"
- scalar_value: {
- uint32_t: 8
- }
- enumerator: "COMPLETED"
- scalar_value: {
- uint32_t: 9
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIfaceCallback::OsuMethod"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint8_t"
-
- enumerator: "OMA_DM"
- scalar_value: {
- uint8_t: 0
- }
- enumerator: "SOAP_XML_SPP"
- scalar_value: {
- uint8_t: 1
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIfaceCallback::AnqpData"
- type: TYPE_STRUCT
- struct_value: {
- name: "venueName"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- struct_value: {
- name: "roamingConsortium"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- struct_value: {
- name: "ipAddrTypeAvailability"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- struct_value: {
- name: "naiRealm"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- struct_value: {
- name: "anqp3gppCellularNetwork"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- struct_value: {
- name: "domainName"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIfaceCallback::Hs20AnqpData"
- type: TYPE_STRUCT
- struct_value: {
- name: "operatorFriendlyName"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- struct_value: {
- name: "wanMetrics"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- struct_value: {
- name: "connectionCapability"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- struct_value: {
- name: "osuProvidersList"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIfaceCallback::WpsConfigError"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint16_t"
-
- enumerator: "NO_ERROR"
- scalar_value: {
- uint16_t: 0
- }
- enumerator: "OOB_IFACE_READ_ERROR"
- scalar_value: {
- uint16_t: 1
- }
- enumerator: "DECRYPTION_CRC_FAILURE"
- scalar_value: {
- uint16_t: 2
- }
- enumerator: "CHAN_24_NOT_SUPPORTED"
- scalar_value: {
- uint16_t: 3
- }
- enumerator: "CHAN_50_NOT_SUPPORTED"
- scalar_value: {
- uint16_t: 4
- }
- enumerator: "SIGNAL_TOO_WEAK"
- scalar_value: {
- uint16_t: 5
- }
- enumerator: "NETWORK_AUTH_FAILURE"
- scalar_value: {
- uint16_t: 6
- }
- enumerator: "NETWORK_ASSOC_FAILURE"
- scalar_value: {
- uint16_t: 7
- }
- enumerator: "NO_DHCP_RESPONSE"
- scalar_value: {
- uint16_t: 8
- }
- enumerator: "FAILED_DHCP_CONFIG"
- scalar_value: {
- uint16_t: 9
- }
- enumerator: "IP_ADDR_CONFLICT"
- scalar_value: {
- uint16_t: 10
- }
- enumerator: "NO_CONN_TO_REGISTRAR"
- scalar_value: {
- uint16_t: 11
- }
- enumerator: "MULTIPLE_PBC_DETECTED"
- scalar_value: {
- uint16_t: 12
- }
- enumerator: "ROGUE_SUSPECTED"
- scalar_value: {
- uint16_t: 13
- }
- enumerator: "DEVICE_BUSY"
- scalar_value: {
- uint16_t: 14
- }
- enumerator: "SETUP_LOCKED"
- scalar_value: {
- uint16_t: 15
- }
- enumerator: "MSG_TIMEOUT"
- scalar_value: {
- uint16_t: 16
- }
- enumerator: "REG_SESS_TIMEOUT"
- scalar_value: {
- uint16_t: 17
- }
- enumerator: "DEV_PASSWORD_AUTH_FAILURE"
- scalar_value: {
- uint16_t: 18
- }
- enumerator: "CHAN_60G_NOT_SUPPORTED"
- scalar_value: {
- uint16_t: 19
- }
- enumerator: "PUBLIC_KEY_HASH_MISMATCH"
- scalar_value: {
- uint16_t: 20
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIfaceCallback::WpsErrorIndication"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint16_t"
-
- enumerator: "NO_ERROR"
- scalar_value: {
- uint16_t: 0
- }
- enumerator: "SECURITY_TKIP_ONLY_PROHIBITED"
- scalar_value: {
- uint16_t: 1
- }
- enumerator: "SECURITY_WEP_PROHIBITED"
- scalar_value: {
- uint16_t: 2
- }
- enumerator: "AUTH_FAILURE"
- scalar_value: {
- uint16_t: 3
- }
- }
- }
-
- api: {
- name: "onNetworkAdded"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "onNetworkRemoved"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "onStateChanged"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIfaceCallback::State"
- }
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "onAnqpQueryDone"
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIfaceCallback::AnqpData"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIfaceCallback::Hs20AnqpData"
- }
- }
-
- api: {
- name: "onHs20IconQueryDone"
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- arg: {
- type: TYPE_STRING
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "onHs20SubscriptionRemediation"
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIfaceCallback::OsuMethod"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "onHs20DeauthImminentNotice"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "onConnected"
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "onDisconnected"
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "onAssociationCompleted"
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "onAssociationRejected"
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "onAuthenticationTimeout"
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "onEapFailure"
- }
-
- api: {
- name: "onWpsEventSuccess"
- }
-
- api: {
- name: "onWpsEventFail"
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIfaceCallback::WpsConfigError"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIfaceCallback::WpsErrorIndication"
- }
- }
-
- api: {
- name: "onWpsEventPbcOverlap"
- }
-
- api: {
- name: "onExtRadioWorkStart"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "onExtRadioWorkTimeout"
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
-}
diff --git a/wifi/supplicant/1.0/vts/SupplicantStaNetwork.vts b/wifi/supplicant/1.0/vts/SupplicantStaNetwork.vts
deleted file mode 100644
index 8ad72f1..0000000
--- a/wifi/supplicant/1.0/vts/SupplicantStaNetwork.vts
+++ /dev/null
@@ -1,1156 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "ISupplicantStaNetwork"
-
-package: "android.hardware.wifi.supplicant"
-
-import: "android.hardware.wifi.supplicant@1.0::ISupplicantNetwork"
-import: "android.hardware.wifi.supplicant@1.0::ISupplicantStaNetworkCallback"
-import: "android.hardware.wifi.supplicant@1.0::types"
-import: "android.hidl.base@1.0::types"
-
-interface: {
- attribute: {
- name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::ParamSizeLimits"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "SSID_MAX_LEN_IN_BYTES"
- scalar_value: {
- uint32_t: 32
- }
- enumerator: "PSK_PASSPHRASE_MIN_LEN_IN_BYTES"
- scalar_value: {
- uint32_t: 8
- }
- enumerator: "PSK_PASSPHRASE_MAX_LEN_IN_BYTES"
- scalar_value: {
- uint32_t: 63
- }
- enumerator: "WEP_KEYS_MAX_NUM"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "WEP40_KEY_LEN_IN_BYTES"
- scalar_value: {
- uint32_t: 5
- }
- enumerator: "WEP104_KEY_LEN_IN_BYTES"
- scalar_value: {
- uint32_t: 13
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::KeyMgmtMask"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "WPA_EAP"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "WPA_PSK"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "NONE"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "IEEE8021X"
- scalar_value: {
- uint32_t: 8
- }
- enumerator: "FT_EAP"
- scalar_value: {
- uint32_t: 32
- }
- enumerator: "FT_PSK"
- scalar_value: {
- uint32_t: 64
- }
- enumerator: "OSEN"
- scalar_value: {
- uint32_t: 32768
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::ProtoMask"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "WPA"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "RSN"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "OSEN"
- scalar_value: {
- uint32_t: 8
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::AuthAlgMask"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "OPEN"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "SHARED"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "LEAP"
- scalar_value: {
- uint32_t: 4
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::GroupCipherMask"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "WEP40"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "WEP104"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "TKIP"
- scalar_value: {
- uint32_t: 8
- }
- enumerator: "CCMP"
- scalar_value: {
- uint32_t: 16
- }
- enumerator: "GTK_NOT_USED"
- scalar_value: {
- uint32_t: 16384
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::PairwiseCipherMask"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "NONE"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "TKIP"
- scalar_value: {
- uint32_t: 8
- }
- enumerator: "CCMP"
- scalar_value: {
- uint32_t: 16
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::EapMethod"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "PEAP"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "TLS"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "TTLS"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "PWD"
- scalar_value: {
- uint32_t: 3
- }
- enumerator: "SIM"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "AKA"
- scalar_value: {
- uint32_t: 5
- }
- enumerator: "AKA_PRIME"
- scalar_value: {
- uint32_t: 6
- }
- enumerator: "WFA_UNAUTH_TLS"
- scalar_value: {
- uint32_t: 7
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::EapPhase2Method"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "NONE"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "PAP"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "MSPAP"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "MSPAPV2"
- scalar_value: {
- uint32_t: 3
- }
- enumerator: "GTC"
- scalar_value: {
- uint32_t: 4
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::NetworkResponseEapSimGsmAuthParams"
- type: TYPE_STRUCT
- struct_value: {
- name: "kc"
- type: TYPE_ARRAY
- vector_size: 8
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- struct_value: {
- name: "sres"
- type: TYPE_ARRAY
- vector_size: 4
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::NetworkResponseEapSimUmtsAuthParams"
- type: TYPE_STRUCT
- struct_value: {
- name: "res"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- struct_value: {
- name: "ik"
- type: TYPE_ARRAY
- vector_size: 16
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- struct_value: {
- name: "ck"
- type: TYPE_ARRAY
- vector_size: 16
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "getId"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "getInterfaceName"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "getType"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::IfaceType"
- }
- }
-
- api: {
- name: "registerCallback"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_HIDL_CALLBACK
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetworkCallback"
- }
- }
-
- api: {
- name: "setSsid"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "setBssid"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "setScanSsid"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "setKeyMgmt"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_MASK
- scalar_type: "uint32_t"
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::KeyMgmtMask"
- }
- }
-
- api: {
- name: "setProto"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_MASK
- scalar_type: "uint32_t"
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::ProtoMask"
- }
- }
-
- api: {
- name: "setAuthAlg"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_MASK
- scalar_type: "uint32_t"
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::AuthAlgMask"
- }
- }
-
- api: {
- name: "setGroupCipher"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_MASK
- scalar_type: "uint32_t"
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::GroupCipherMask"
- }
- }
-
- api: {
- name: "setPairwiseCipher"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_MASK
- scalar_type: "uint32_t"
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::PairwiseCipherMask"
- }
- }
-
- api: {
- name: "setPskPassphrase"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "setWepKey"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "setWepTxKeyIdx"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "setRequirePmf"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "setEapMethod"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::EapMethod"
- }
- }
-
- api: {
- name: "setEapPhase2Method"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::EapPhase2Method"
- }
- }
-
- api: {
- name: "setEapIdentity"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "setEapAnonymousIdentity"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "setEapPassword"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "setEapCACert"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "setEapCAPath"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "setEapClientCert"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "setEapPrivateKey"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "setEapSubjectMatch"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "setEapAltSubjectMatch"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "setEapEngine"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "setEapEngineID"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "setEapDomainSuffixMatch"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "setProactiveKeyCaching"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "setIdStr"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "setUpdateIdentifier"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "getSsid"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "getBssid"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_ARRAY
- vector_size: 6
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "getScanSsid"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "getKeyMgmt"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_MASK
- scalar_type: "uint32_t"
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::KeyMgmtMask"
- }
- }
-
- api: {
- name: "getProto"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_MASK
- scalar_type: "uint32_t"
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::ProtoMask"
- }
- }
-
- api: {
- name: "getAuthAlg"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_MASK
- scalar_type: "uint32_t"
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::AuthAlgMask"
- }
- }
-
- api: {
- name: "getGroupCipher"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_MASK
- scalar_type: "uint32_t"
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::GroupCipherMask"
- }
- }
-
- api: {
- name: "getPairwiseCipher"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_MASK
- scalar_type: "uint32_t"
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::PairwiseCipherMask"
- }
- }
-
- api: {
- name: "getPskPassphrase"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "getWepKey"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "getWepTxKeyIdx"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "uint32_t"
- }
- }
-
- api: {
- name: "getRequirePmf"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "getEapMethod"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::EapMethod"
- }
- }
-
- api: {
- name: "getEapPhase2Method"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::EapPhase2Method"
- }
- }
-
- api: {
- name: "getEapIdentity"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "getEapAnonymousIdentity"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "getEapPassword"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "getEapCACert"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "getEapCAPath"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "getEapClientCert"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "getEapPrivateKey"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "getEapSubjectMatch"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "getEapAltSubjectMatch"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "getEapEngine"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "getEapEngineID"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "getEapDomainSuffixMatch"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "getIdStr"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- return_type_hidl: {
- type: TYPE_STRING
- }
- }
-
- api: {
- name: "enable"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_SCALAR
- scalar_type: "bool_t"
- }
- }
-
- api: {
- name: "disable"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- }
-
- api: {
- name: "select"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- }
-
- api: {
- name: "sendNetworkEapSimGsmAuthResponse"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::NetworkResponseEapSimGsmAuthParams"
- }
- }
- }
-
- api: {
- name: "sendNetworkEapSimGsmAuthFailure"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- }
-
- api: {
- name: "sendNetworkEapSimUmtsAuthResponse"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::NetworkResponseEapSimUmtsAuthParams"
- }
- }
-
- api: {
- name: "sendNetworkEapSimUmtsAutsResponse"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_ARRAY
- vector_size: 14
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "sendNetworkEapSimUmtsAuthFailure"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- }
-
- api: {
- name: "sendNetworkEapIdentityResponse"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- }
- arg: {
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
-}
diff --git a/wifi/supplicant/1.0/vts/SupplicantStaNetworkCallback.vts b/wifi/supplicant/1.0/vts/SupplicantStaNetworkCallback.vts
deleted file mode 100644
index 1c91d57..0000000
--- a/wifi/supplicant/1.0/vts/SupplicantStaNetworkCallback.vts
+++ /dev/null
@@ -1,70 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "ISupplicantStaNetworkCallback"
-
-package: "android.hardware.wifi.supplicant"
-
-import: "android.hidl.base@1.0::types"
-
-interface: {
- attribute: {
- name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetworkCallback::NetworkRequestEapSimGsmAuthParams"
- type: TYPE_STRUCT
- struct_value: {
- name: "rands"
- type: TYPE_VECTOR
- vector_value: {
- type: TYPE_ARRAY
- vector_size: 16
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
- }
-
- attribute: {
- name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetworkCallback::NetworkRequestEapSimUmtsAuthParams"
- type: TYPE_STRUCT
- struct_value: {
- name: "rand"
- type: TYPE_ARRAY
- vector_size: 16
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- struct_value: {
- name: "autn"
- type: TYPE_ARRAY
- vector_size: 16
- vector_value: {
- type: TYPE_SCALAR
- scalar_type: "uint8_t"
- }
- }
- }
-
- api: {
- name: "onNetworkEapSimGsmAuthRequest"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetworkCallback::NetworkRequestEapSimGsmAuthParams"
- }
- }
-
- api: {
- name: "onNetworkEapSimUmtsAuthRequest"
- arg: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetworkCallback::NetworkRequestEapSimUmtsAuthParams"
- }
- }
-
- api: {
- name: "onNetworkEapIdentityRequest"
- }
-
-}
diff --git a/wifi/supplicant/1.0/vts/functional/Android.mk b/wifi/supplicant/1.0/vts/functional/Android.mk
index 8fa649f..93e5250 100644
--- a/wifi/supplicant/1.0/vts/functional/Android.mk
+++ b/wifi/supplicant/1.0/vts/functional/Android.mk
@@ -16,10 +16,10 @@
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
-LOCAL_MODULE := supplicant_hidl_test
+LOCAL_MODULE := VtsHalWifiSupplicantV1_0TargetTest
LOCAL_CPPFLAGS := -Wall -Werror -Wextra
LOCAL_SRC_FILES := \
- main.cpp \
+ VtsHalWifiSupplicantV1_0TargetTest.cpp \
supplicant_hidl_test.cpp \
supplicant_hidl_test_utils.cpp \
supplicant_p2p_iface_hidl_test.cpp \
@@ -31,13 +31,12 @@
libcutils \
libhidlbase \
libhidltransport \
- libhwbinder \
liblog \
libutils \
libwifi-hal \
libwifi-system
LOCAL_STATIC_LIBRARIES := \
libgmock \
- libgtest
+ VtsHalHidlTargetBaseTest
include $(BUILD_NATIVE_TEST)
diff --git a/wifi/supplicant/1.0/vts/functional/main.cpp b/wifi/supplicant/1.0/vts/functional/VtsHalWifiSupplicantV1_0TargetTest.cpp
similarity index 96%
rename from wifi/supplicant/1.0/vts/functional/main.cpp
rename to wifi/supplicant/1.0/vts/functional/VtsHalWifiSupplicantV1_0TargetTest.cpp
index 81a2947..802d11c 100644
--- a/wifi/supplicant/1.0/vts/functional/main.cpp
+++ b/wifi/supplicant/1.0/vts/functional/VtsHalWifiSupplicantV1_0TargetTest.cpp
@@ -16,7 +16,7 @@
#include <android-base/logging.h>
-#include <gtest/gtest.h>
+#include <VtsHalHidlTargetBaseTest.h>
#include "supplicant_hidl_test_utils.h"
diff --git a/wifi/supplicant/1.0/vts/functional/supplicant_hidl_test.cpp b/wifi/supplicant/1.0/vts/functional/supplicant_hidl_test.cpp
index 9922447..eb02445 100644
--- a/wifi/supplicant/1.0/vts/functional/supplicant_hidl_test.cpp
+++ b/wifi/supplicant/1.0/vts/functional/supplicant_hidl_test.cpp
@@ -16,7 +16,7 @@
#include <android-base/logging.h>
-#include <gtest/gtest.h>
+#include <VtsHalHidlTargetBaseTest.h>
#include "supplicant_hidl_test_utils.h"
diff --git a/wifi/supplicant/1.0/vts/functional/supplicant_hidl_test_utils.cpp b/wifi/supplicant/1.0/vts/functional/supplicant_hidl_test_utils.cpp
index 2f3405d..3f7ee1a 100644
--- a/wifi/supplicant/1.0/vts/functional/supplicant_hidl_test_utils.cpp
+++ b/wifi/supplicant/1.0/vts/functional/supplicant_hidl_test_utils.cpp
@@ -15,7 +15,7 @@
*/
#include <android-base/logging.h>
-#include <gtest/gtest.h>
+#include <VtsHalHidlTargetBaseTest.h>
#include <hidl/HidlTransportSupport.h>
#include <android/hidl/manager/1.0/IServiceManager.h>
@@ -174,7 +174,7 @@
}
sp<ISupplicant> getSupplicant() {
- return ISupplicant::getService(kSupplicantServiceName);
+ return getService<ISupplicant>(kSupplicantServiceName);
}
sp<ISupplicantStaIface> getSupplicantStaIface() {
diff --git a/wifi/supplicant/1.0/vts/functional/supplicant_p2p_iface_hidl_test.cpp b/wifi/supplicant/1.0/vts/functional/supplicant_p2p_iface_hidl_test.cpp
index 968d4c9..200845b 100644
--- a/wifi/supplicant/1.0/vts/functional/supplicant_p2p_iface_hidl_test.cpp
+++ b/wifi/supplicant/1.0/vts/functional/supplicant_p2p_iface_hidl_test.cpp
@@ -16,7 +16,7 @@
#include <android-base/logging.h>
-#include <gtest/gtest.h>
+#include <VtsHalHidlTargetBaseTest.h>
#include "supplicant_hidl_test_utils.h"
diff --git a/wifi/supplicant/1.0/vts/functional/supplicant_sta_iface_hidl_test.cpp b/wifi/supplicant/1.0/vts/functional/supplicant_sta_iface_hidl_test.cpp
index 45cc6bc..a1f5513 100644
--- a/wifi/supplicant/1.0/vts/functional/supplicant_sta_iface_hidl_test.cpp
+++ b/wifi/supplicant/1.0/vts/functional/supplicant_sta_iface_hidl_test.cpp
@@ -16,7 +16,7 @@
#include <android-base/logging.h>
-#include <gtest/gtest.h>
+#include <VtsHalHidlTargetBaseTest.h>
#include "supplicant_hidl_test_utils.h"
diff --git a/wifi/supplicant/1.0/vts/functional/supplicant_sta_network_hidl_test.cpp b/wifi/supplicant/1.0/vts/functional/supplicant_sta_network_hidl_test.cpp
index 8c42a22..e2572c2 100644
--- a/wifi/supplicant/1.0/vts/functional/supplicant_sta_network_hidl_test.cpp
+++ b/wifi/supplicant/1.0/vts/functional/supplicant_sta_network_hidl_test.cpp
@@ -16,7 +16,7 @@
#include <android-base/logging.h>
-#include <gtest/gtest.h>
+#include <VtsHalHidlTargetBaseTest.h>
#include "supplicant_hidl_test_utils.h"
diff --git a/wifi/supplicant/1.0/vts/types.vts b/wifi/supplicant/1.0/vts/types.vts
deleted file mode 100644
index b8b29b3..0000000
--- a/wifi/supplicant/1.0/vts/types.vts
+++ /dev/null
@@ -1,189 +0,0 @@
-component_class: HAL_HIDL
-component_type_version: 1.0
-component_name: "types"
-
-package: "android.hardware.wifi.supplicant"
-
-
-attribute: {
- name: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatusCode"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "SUCCESS"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "FAILURE_UNKNOWN"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "FAILURE_ARGS_INVALID"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "FAILURE_IFACE_INVALID"
- scalar_value: {
- uint32_t: 3
- }
- enumerator: "FAILURE_IFACE_UNKNOWN"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "FAILURE_IFACE_EXISTS"
- scalar_value: {
- uint32_t: 5
- }
- enumerator: "FAILURE_IFACE_DISABLED"
- scalar_value: {
- uint32_t: 6
- }
- enumerator: "FAILURE_IFACE_NOT_DISCONNECTED"
- scalar_value: {
- uint32_t: 7
- }
- enumerator: "FAILURE_NETWORK_INVALID"
- scalar_value: {
- uint32_t: 8
- }
- enumerator: "FAILURE_NETWORK_UNKNOWN"
- scalar_value: {
- uint32_t: 9
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
- type: TYPE_STRUCT
- struct_value: {
- name: "code"
- type: TYPE_ENUM
- predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatusCode"
- }
- struct_value: {
- name: "debugMessage"
- type: TYPE_STRING
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::supplicant::V1_0::IfaceType"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "STA"
- scalar_value: {
- uint32_t: 0
- }
- enumerator: "P2P"
- scalar_value: {
- uint32_t: 1
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::supplicant::V1_0::P2pGroupCapabilityMask"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint32_t"
-
- enumerator: "GROUP_OWNER"
- scalar_value: {
- uint32_t: 1
- }
- enumerator: "PERSISTENT_GROUP"
- scalar_value: {
- uint32_t: 2
- }
- enumerator: "GROUP_LIMIT"
- scalar_value: {
- uint32_t: 4
- }
- enumerator: "INTRA_BSS_DIST"
- scalar_value: {
- uint32_t: 8
- }
- enumerator: "CROSS_CONN"
- scalar_value: {
- uint32_t: 16
- }
- enumerator: "PERSISTENT_RECONN"
- scalar_value: {
- uint32_t: 32
- }
- enumerator: "GROUP_FORMATION"
- scalar_value: {
- uint32_t: 64
- }
- }
-}
-
-attribute: {
- name: "::android::hardware::wifi::supplicant::V1_0::WpsConfigMethods"
- type: TYPE_ENUM
- enum_value: {
- scalar_type: "uint16_t"
-
- enumerator: "USBA"
- scalar_value: {
- uint16_t: 1
- }
- enumerator: "ETHERNET"
- scalar_value: {
- uint16_t: 2
- }
- enumerator: "LABEL"
- scalar_value: {
- uint16_t: 4
- }
- enumerator: "DISPLAY"
- scalar_value: {
- uint16_t: 8
- }
- enumerator: "EXT_NFC_TOKEN"
- scalar_value: {
- uint16_t: 16
- }
- enumerator: "INT_NFC_TOKEN"
- scalar_value: {
- uint16_t: 32
- }
- enumerator: "NFC_INTERFACE"
- scalar_value: {
- uint16_t: 64
- }
- enumerator: "PUSHBUTTON"
- scalar_value: {
- uint16_t: 128
- }
- enumerator: "KEYPAD"
- scalar_value: {
- uint16_t: 256
- }
- enumerator: "VIRT_PUSHBUTTON"
- scalar_value: {
- uint16_t: 640
- }
- enumerator: "PHY_PUSHBUTTON"
- scalar_value: {
- uint16_t: 1152
- }
- enumerator: "P2PS"
- scalar_value: {
- uint16_t: 4096
- }
- enumerator: "VIRT_DISPLAY"
- scalar_value: {
- uint16_t: 8200
- }
- enumerator: "PHY_DISPLAY"
- scalar_value: {
- uint16_t: 16392
- }
- }
-}
-