Merge "Camera: fix camera_metadata address expectation" into oc-dev
diff --git a/bluetooth/1.0/default/vendor_interface.cc b/bluetooth/1.0/default/vendor_interface.cc
index 68cac5f..de6cd79 100644
--- a/bluetooth/1.0/default/vendor_interface.cc
+++ b/bluetooth/1.0/default/vendor_interface.cc
@@ -284,6 +284,8 @@
int power_state = BT_VND_PWR_OFF;
lib_interface_->op(BT_VND_OP_POWER_CTRL, &power_state);
+
+ lib_interface_->cleanup();
}
if (lib_handle_ != nullptr) {
diff --git a/keymaster/3.0/vts/functional/keymaster_hidl_hal_test.cpp b/keymaster/3.0/vts/functional/keymaster_hidl_hal_test.cpp
index 54c5ad5..0c888dc 100644
--- a/keymaster/3.0/vts/functional/keymaster_hidl_hal_test.cpp
+++ b/keymaster/3.0/vts/functional/keymaster_hidl_hal_test.cpp
@@ -1329,7 +1329,7 @@
*/
TEST_F(GetKeyCharacteristicsTest, SimpleRsa) {
ASSERT_EQ(ErrorCode::OK, GenerateKey(AuthorizationSetBuilder()
- .RsaSigningKey(256, 3)
+ .RsaSigningKey(1024, 3)
.Digest(Digest::NONE)
.Padding(PaddingMode::NONE)));
@@ -2201,7 +2201,7 @@
*/
TEST_F(ExportKeyTest, RsaUnsupportedKeyFormat) {
ASSERT_EQ(ErrorCode::OK, GenerateKey(AuthorizationSetBuilder()
- .RsaSigningKey(256, 3)
+ .RsaSigningKey(1024, 3)
.Digest(Digest::NONE)
.Padding(PaddingMode::NONE)));
HidlBuf export_data;
@@ -2218,7 +2218,7 @@
TEST_F(ExportKeyTest, DISABLED_RsaCorruptedKeyBlob) {
ASSERT_EQ(ErrorCode::OK, GenerateKey(AuthorizationSetBuilder()
.Authorization(TAG_NO_AUTH_REQUIRED)
- .RsaSigningKey(256, 3)
+ .RsaSigningKey(1024, 3)
.Digest(Digest::NONE)
.Padding(PaddingMode::NONE)));
for (size_t i = 0; i < key_blob_.size(); ++i) {
diff --git a/media/omx/1.0/vts/functional/audio/VtsHalMediaOmxV1_0TargetAudioDecTest.cpp b/media/omx/1.0/vts/functional/audio/VtsHalMediaOmxV1_0TargetAudioDecTest.cpp
index c836b88..fe67cb9 100644
--- a/media/omx/1.0/vts/functional/audio/VtsHalMediaOmxV1_0TargetAudioDecTest.cpp
+++ b/media/omx/1.0/vts/functional/audio/VtsHalMediaOmxV1_0TargetAudioDecTest.cpp
@@ -479,7 +479,9 @@
android::Vector<BufferInfo>* oBuffer,
OMX_AUDIO_CODINGTYPE eEncoding,
OMX_U32 kPortIndexInput, OMX_U32 kPortIndexOutput,
- Message msg) {
+ Message msg,
+ AudioDecHidlTest::standardComp comp =
+ AudioDecHidlTest::standardComp::unknown_comp) {
android::hardware::media::omx::V1_0::Status status;
if (msg.data.eventData.event == OMX_EventPortSettingsChanged) {
@@ -514,8 +516,18 @@
int32_t nSampleRate;
getInputChannelInfo(omxNode, kPortIndexInput, eEncoding, &nChannels,
&nSampleRate);
- setDefaultPortParam(omxNode, kPortIndexOutput, OMX_AUDIO_CodingPCM,
- nChannels, nSampleRate);
+ // Configure output port
+ // SPECIAL CASE: Soft Vorbis, Opus and Raw Decoders do not offer way
+ // to
+ // configure output PCM port. The port undergoes auto configuration
+ // internally basing on parsed elementary stream information.
+ if (comp != AudioDecHidlTest::standardComp::vorbis &&
+ comp != AudioDecHidlTest::standardComp::opus &&
+ comp != AudioDecHidlTest::standardComp::raw) {
+ setDefaultPortParam(omxNode, kPortIndexOutput,
+ OMX_AUDIO_CodingPCM, nChannels,
+ nSampleRate);
+ }
// If you can disable a port, then you should be able to
// enable
@@ -594,7 +606,7 @@
OMX_AUDIO_CODINGTYPE eEncoding, OMX_U32 kPortIndexInput,
OMX_U32 kPortIndexOutput, std::ifstream& eleStream,
android::Vector<FrameData>* Info, int offset, int range,
- bool signalEOS = true) {
+ AudioDecHidlTest::standardComp comp, bool signalEOS = true) {
android::hardware::media::omx::V1_0::Status status;
Message msg;
@@ -633,7 +645,7 @@
if (status == android::hardware::media::omx::V1_0::Status::OK &&
msg.type == Message::Type::EVENT) {
portReconfiguration(omxNode, observer, iBuffer, oBuffer, eEncoding,
- kPortIndexInput, kPortIndexOutput, msg);
+ kPortIndexInput, kPortIndexOutput, msg, comp);
}
if (frameID == (int)Info->size() || frameID == (offset + range)) break;
@@ -754,8 +766,13 @@
getInputChannelInfo(omxNode, kPortIndexInput, eEncoding, &nChannels,
&nSampleRate);
// Configure output port
- setDefaultPortParam(omxNode, kPortIndexOutput, OMX_AUDIO_CodingPCM,
- nChannels, nSampleRate);
+ // SPECIAL CASE: Soft Vorbis, Opus and Raw Decoders do not offer way to
+ // configure output PCM port. The port undergoes auto configuration
+ // internally basing on parsed elementary stream information.
+ if (compName != vorbis && compName != opus && compName != raw) {
+ setDefaultPortParam(omxNode, kPortIndexOutput, OMX_AUDIO_CodingPCM,
+ nChannels, nSampleRate);
+ }
android::Vector<BufferInfo> iBuffer, oBuffer;
@@ -769,7 +786,7 @@
ASSERT_EQ(eleStream.is_open(), true);
decodeNFrames(omxNode, observer, &iBuffer, &oBuffer, eEncoding,
kPortIndexInput, kPortIndexOutput, eleStream, &Info, 0,
- (int)Info.size());
+ (int)Info.size(), compName);
eleStream.close();
waitOnInputConsumption(omxNode, observer, &iBuffer, &oBuffer, eEncoding,
kPortIndexInput, kPortIndexOutput);
@@ -783,7 +800,11 @@
}
// end of sequence test
-TEST_F(AudioDecHidlTest, EOSTest_M) {
+// SPECIAL CASE; Sending Empty input EOS buffer is not supported across all
+// components. For instance soft vorbis and soft opus expects CSD buffers at
+// the start. Disabling this test for now. We shall revisit this at a later
+// stage
+TEST_F(AudioDecHidlTest, DISABLED_EOSTest_M) {
description("Test end of stream monkeying");
if (disableTest) return;
android::hardware::media::omx::V1_0::Status status;
@@ -808,8 +829,13 @@
getInputChannelInfo(omxNode, kPortIndexInput, eEncoding, &nChannels,
&nSampleRate);
// Configure output port
- setDefaultPortParam(omxNode, kPortIndexOutput, OMX_AUDIO_CodingPCM,
- nChannels, nSampleRate);
+ // SPECIAL CASE: Soft Vorbis, Opus and Raw Decoders do not offer way to
+ // configure output PCM port. The port undergoes auto configuration
+ // internally basing on parsed elementary stream information.
+ if (compName != vorbis && compName != opus && compName != raw) {
+ setDefaultPortParam(omxNode, kPortIndexOutput, OMX_AUDIO_CodingPCM,
+ nChannels, nSampleRate);
+ }
android::Vector<BufferInfo> iBuffer, oBuffer;
@@ -880,8 +906,13 @@
getInputChannelInfo(omxNode, kPortIndexInput, eEncoding, &nChannels,
&nSampleRate);
// Configure output port
- setDefaultPortParam(omxNode, kPortIndexOutput, OMX_AUDIO_CodingPCM,
- nChannels, nSampleRate);
+ // SPECIAL CASE: Soft Vorbis, Opus and Raw Decoders do not offer way to
+ // configure output PCM port. The port undergoes auto configuration
+ // internally basing on parsed elementary stream information.
+ if (compName != vorbis && compName != opus && compName != raw) {
+ setDefaultPortParam(omxNode, kPortIndexOutput, OMX_AUDIO_CodingPCM,
+ nChannels, nSampleRate);
+ }
android::Vector<BufferInfo> iBuffer, oBuffer;
@@ -898,8 +929,8 @@
eleStream.open(mURL, std::ifstream::binary);
ASSERT_EQ(eleStream.is_open(), true);
decodeNFrames(omxNode, observer, &iBuffer, &oBuffer, eEncoding,
- kPortIndexInput, kPortIndexOutput, eleStream, &Info, 0,
- i + 1);
+ kPortIndexInput, kPortIndexOutput, eleStream, &Info, 0, i + 1,
+ compName);
eleStream.close();
waitOnInputConsumption(omxNode, observer, &iBuffer, &oBuffer, eEncoding,
kPortIndexInput, kPortIndexOutput);
@@ -915,7 +946,7 @@
ASSERT_EQ(eleStream.is_open(), true);
decodeNFrames(omxNode, observer, &iBuffer, &oBuffer, eEncoding,
kPortIndexInput, kPortIndexOutput, eleStream, &Info, 0, i + 1,
- false);
+ compName, false);
eleStream.close();
waitOnInputConsumption(omxNode, observer, &iBuffer, &oBuffer, eEncoding,
kPortIndexInput, kPortIndexOutput);
@@ -979,8 +1010,13 @@
getInputChannelInfo(omxNode, kPortIndexInput, eEncoding, &nChannels,
&nSampleRate);
// Configure output port
- setDefaultPortParam(omxNode, kPortIndexOutput, OMX_AUDIO_CodingPCM,
- nChannels, nSampleRate);
+ // SPECIAL CASE: Soft Vorbis, Opus and Raw Decoders do not offer way to
+ // configure output PCM port. The port undergoes auto configuration
+ // internally basing on parsed elementary stream information.
+ if (compName != vorbis && compName != opus && compName != raw) {
+ setDefaultPortParam(omxNode, kPortIndexOutput, OMX_AUDIO_CodingPCM,
+ nChannels, nSampleRate);
+ }
android::Vector<BufferInfo> iBuffer, oBuffer;
@@ -995,11 +1031,11 @@
ASSERT_EQ(eleStream.is_open(), true);
decodeNFrames(omxNode, observer, &iBuffer, &oBuffer, eEncoding,
kPortIndexInput, kPortIndexOutput, eleStream, &Info, 0,
- (int)Info.size());
+ (int)Info.size(), compName, false);
eleStream.close();
waitOnInputConsumption(omxNode, observer, &iBuffer, &oBuffer, eEncoding,
kPortIndexInput, kPortIndexOutput);
- testEOS(omxNode, observer, &iBuffer, &oBuffer, false, eosFlag);
+ testEOS(omxNode, observer, &iBuffer, &oBuffer, true, eosFlag);
flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
kPortIndexOutput);
framesReceived = 0;
@@ -1058,8 +1094,13 @@
getInputChannelInfo(omxNode, kPortIndexInput, eEncoding, &nChannels,
&nSampleRate);
// Configure output port
- setDefaultPortParam(omxNode, kPortIndexOutput, OMX_AUDIO_CodingPCM,
- nChannels, nSampleRate);
+ // SPECIAL CASE: Soft Vorbis, Opus and Raw Decoders do not offer way to
+ // configure output PCM port. The port undergoes auto configuration
+ // internally basing on parsed elementary stream information.
+ if (compName != vorbis && compName != opus && compName != raw) {
+ setDefaultPortParam(omxNode, kPortIndexOutput, OMX_AUDIO_CodingPCM,
+ nChannels, nSampleRate);
+ }
android::Vector<BufferInfo> iBuffer, oBuffer;
@@ -1077,7 +1118,7 @@
ASSERT_EQ(eleStream.is_open(), true);
decodeNFrames(omxNode, observer, &iBuffer, &oBuffer, eEncoding,
kPortIndexInput, kPortIndexOutput, eleStream, &Info, 0,
- nFrames, false);
+ nFrames, compName, false);
// Note: Assumes 200 ms is enough to end any decode call that started
flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
kPortIndexOutput, 200000);
@@ -1099,7 +1140,7 @@
if (keyFrame) {
decodeNFrames(omxNode, observer, &iBuffer, &oBuffer, eEncoding,
kPortIndexInput, kPortIndexOutput, eleStream, &Info,
- index, Info.size() - index, false);
+ index, Info.size() - index, compName, false);
}
// Note: Assumes 200 ms is enough to end any decode call that started
flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
diff --git a/media/omx/1.0/vts/functional/common/media_hidl_test_common.h b/media/omx/1.0/vts/functional/common/media_hidl_test_common.h
index 53bbe60..d617e45 100644
--- a/media/omx/1.0/vts/functional/common/media_hidl_test_common.h
+++ b/media/omx/1.0/vts/functional/common/media_hidl_test_common.h
@@ -33,7 +33,7 @@
#include <media/openmax/OMX_AudioExt.h>
#include <media/openmax/OMX_VideoExt.h>
-#define DEFAULT_TIMEOUT 40000
+#define DEFAULT_TIMEOUT 100000
#define TIMEOUT_COUNTER (10000000 / DEFAULT_TIMEOUT)
enum bufferOwner {
diff --git a/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoDecTest.cpp b/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoDecTest.cpp
index 9b0be51..2ff8ed3 100644
--- a/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoDecTest.cpp
+++ b/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoDecTest.cpp
@@ -1062,11 +1062,11 @@
ASSERT_EQ(eleStream.is_open(), true);
decodeNFrames(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
kPortIndexOutput, eleStream, &Info, 0, (int)Info.size(),
- portMode[1]);
+ portMode[1], false);
eleStream.close();
waitOnInputConsumption(omxNode, observer, &iBuffer, &oBuffer,
kPortIndexInput, kPortIndexOutput, portMode[1]);
- testEOS(omxNode, observer, &iBuffer, &oBuffer, false, eosFlag, portMode);
+ testEOS(omxNode, observer, &iBuffer, &oBuffer, true, eosFlag, portMode);
flushPorts(omxNode, observer, &iBuffer, &oBuffer, kPortIndexInput,
kPortIndexOutput);
framesReceived = 0;
diff --git a/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoEncTest.cpp b/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoEncTest.cpp
index 45d0856..cd6eaf5 100644
--- a/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoEncTest.cpp
+++ b/media/omx/1.0/vts/functional/video/VtsHalMediaOmxV1_0TargetVideoEncTest.cpp
@@ -249,8 +249,7 @@
if (msg.data.extendedBufferData.rangeLength != 0) {
// Test if current timestamp is among the list of queued
// timestamps
- if (timestampDevTest && (prependSPSPPS ||
- (msg.data.extendedBufferData.flags &
+ if (timestampDevTest && ((msg.data.extendedBufferData.flags &
OMX_BUFFERFLAG_CODECCONFIG) == 0)) {
bool tsHit = false;
android::List<uint64_t>::iterator it =
@@ -643,7 +642,8 @@
rect.width = buffer->omxBuffer.attr.anwBuffer.width;
rect.height = buffer->omxBuffer.attr.anwBuffer.height;
- if (format == PixelFormat::YV12) {
+ if (format == PixelFormat::YV12 || format == PixelFormat::YCRCB_420_SP ||
+ format == PixelFormat::YCBCR_420_888) {
mapper->lockYCbCr(
buff, buffer->omxBuffer.attr.anwBuffer.usage, rect, fence,
[&](android::hardware::graphics::mapper::V2_0::Error _e,
@@ -656,26 +656,45 @@
if (error != android::hardware::graphics::mapper::V2_0::Error::NONE)
return 1;
- EXPECT_EQ(ycbcrLayout.chromaStep, 1U);
+ int size = ((rect.width * rect.height * 3) >> 1);
+ char* img = new char[size];
+ if (img == nullptr) return 1;
+ eleStream.read(img, size);
+ if (eleStream.gcount() != size) {
+ delete[] img;
+ return 1;
+ }
+
+ char* imgTmp = img;
char* ipBuffer = static_cast<char*>(ycbcrLayout.y);
for (size_t y = rect.height; y > 0; --y) {
- eleStream.read(ipBuffer, rect.width);
- if (eleStream.gcount() != rect.width) return 1;
+ memcpy(ipBuffer, imgTmp, rect.width);
ipBuffer += ycbcrLayout.yStride;
+ imgTmp += rect.width;
}
+
+ if (format == PixelFormat::YV12)
+ EXPECT_EQ(ycbcrLayout.chromaStep, 1U);
+ else if (format == PixelFormat::YCRCB_420_SP)
+ EXPECT_EQ(ycbcrLayout.chromaStep, 2U);
+
ipBuffer = static_cast<char*>(ycbcrLayout.cb);
for (size_t y = rect.height >> 1; y > 0; --y) {
- eleStream.read(ipBuffer, rect.width >> 1);
- if (eleStream.gcount() != rect.width >> 1) return 1;
+ for (int32_t x = 0; x < (rect.width >> 1); ++x) {
+ ipBuffer[ycbcrLayout.chromaStep * x] = *imgTmp++;
+ }
ipBuffer += ycbcrLayout.cStride;
}
ipBuffer = static_cast<char*>(ycbcrLayout.cr);
for (size_t y = rect.height >> 1; y > 0; --y) {
- eleStream.read(ipBuffer, rect.width >> 1);
- if (eleStream.gcount() != rect.width >> 1) return 1;
+ for (int32_t x = 0; x < (rect.width >> 1); ++x) {
+ ipBuffer[ycbcrLayout.chromaStep * x] = *imgTmp++;
+ }
ipBuffer += ycbcrLayout.cStride;
}
+ delete[] img;
+
mapper->unlock(buff,
[&](android::hardware::graphics::mapper::V2_0::Error _e,
android::hardware::hidl_handle _n1) {
@@ -699,66 +718,7 @@
if (error != android::hardware::graphics::mapper::V2_0::Error::NONE)
return 1;
- if (format == PixelFormat::YCBCR_420_888) {
- ycbcrLayout.chromaStep = 1;
- ycbcrLayout.yStride = buffer->omxBuffer.attr.anwBuffer.stride;
- ycbcrLayout.cStride = ycbcrLayout.yStride >> 1;
- ycbcrLayout.y = data;
- ycbcrLayout.cb = static_cast<char*>(ycbcrLayout.y) +
- (ycbcrLayout.yStride * rect.height);
- ycbcrLayout.cr = static_cast<char*>(ycbcrLayout.cb) +
- ((ycbcrLayout.yStride * rect.height) >> 2);
-
- char* ipBuffer = static_cast<char*>(ycbcrLayout.y);
- for (size_t y = rect.height; y > 0; --y) {
- eleStream.read(ipBuffer, rect.width);
- if (eleStream.gcount() != rect.width) return 1;
- ipBuffer += ycbcrLayout.yStride;
- }
- ipBuffer = static_cast<char*>(ycbcrLayout.cb);
- for (size_t y = rect.height >> 1; y > 0; --y) {
- eleStream.read(ipBuffer, rect.width >> 1);
- if (eleStream.gcount() != rect.width >> 1) return 1;
- ipBuffer += ycbcrLayout.cStride;
- }
- ipBuffer = static_cast<char*>(ycbcrLayout.cr);
- for (size_t y = rect.height >> 1; y > 0; --y) {
- eleStream.read(ipBuffer, rect.width >> 1);
- if (eleStream.gcount() != rect.width >> 1) return 1;
- ipBuffer += ycbcrLayout.cStride;
- }
- } else if (format == PixelFormat::YCRCB_420_SP) {
- ycbcrLayout.chromaStep = 2;
- ycbcrLayout.yStride = buffer->omxBuffer.attr.anwBuffer.stride;
- ycbcrLayout.cStride = ycbcrLayout.yStride;
- ycbcrLayout.y = data;
- ycbcrLayout.cr = static_cast<char*>(ycbcrLayout.y) +
- (ycbcrLayout.yStride * rect.height);
- ycbcrLayout.cb = static_cast<char*>(ycbcrLayout.cr) + 1;
-
- char* ipBuffer = static_cast<char*>(ycbcrLayout.y);
- for (size_t y = rect.height; y > 0; --y) {
- eleStream.read(ipBuffer, rect.width);
- if (eleStream.gcount() != rect.width) return 1;
- ipBuffer += ycbcrLayout.yStride;
- }
- ipBuffer = static_cast<char*>(ycbcrLayout.cb);
- for (size_t y = rect.height >> 1; y > 0; --y) {
- for (int32_t x = 0; x<rect.width>> 1; ++x) {
- eleStream.read(&ipBuffer[2 * x], 1);
- if (eleStream.gcount() != 1) return 1;
- }
- ipBuffer += ycbcrLayout.cStride;
- }
- ipBuffer = static_cast<char*>(ycbcrLayout.cr);
- for (size_t y = rect.height >> 1; y > 0; --y) {
- for (int32_t x = 0; x<rect.width>> 1; ++x) {
- eleStream.read(&ipBuffer[2 * x], 1);
- if (eleStream.gcount() != 1) return 1;
- }
- ipBuffer += ycbcrLayout.cStride;
- }
- } else if (format == PixelFormat::BGRA_8888) {
+ if (format == PixelFormat::BGRA_8888) {
char* ipBuffer = static_cast<char*>(data);
for (size_t y = rect.height; y > 0; --y) {
eleStream.read(ipBuffer, rect.width * 4);
@@ -842,7 +802,7 @@
::android::hardware::hidl_handle fence;
IGraphicBufferProducer::FrameEventHistoryDelta outTimestamps;
::android::hardware::media::V1_0::AnwBuffer AnwBuffer;
- PixelFormat format = PixelFormat::YV12;
+ PixelFormat format = PixelFormat::YCBCR_420_888;
producer->dequeueBuffer(
portDef.format.video.nFrameWidth, portDef.format.video.nFrameHeight,
format, BufferUsage::CPU_READ_OFTEN | BufferUsage::CPU_WRITE_OFTEN,
@@ -927,6 +887,74 @@
return 0;
}
+int fillByteBuffer(sp<IOmxNode> omxNode, char* ipBuffer, OMX_U32 portIndexInput,
+ std::ifstream& eleStream) {
+ android::hardware::media::omx::V1_0::Status status;
+ OMX_PARAM_PORTDEFINITIONTYPE portDef;
+ uint32_t i, j;
+
+ status = getPortParam(omxNode, OMX_IndexParamPortDefinition, portIndexInput,
+ &portDef);
+ EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+
+ int size = ((portDef.format.video.nFrameWidth *
+ portDef.format.video.nFrameHeight * 3) >>
+ 1);
+ char* img = new char[size];
+ if (img == nullptr) return 1;
+ eleStream.read(img, size);
+ if (eleStream.gcount() != size) {
+ delete[] img;
+ return 1;
+ }
+
+ char* Y = ipBuffer;
+ char* imgTmp = img;
+ for (j = 0; j < portDef.format.video.nFrameHeight; ++j) {
+ memcpy(Y, imgTmp, portDef.format.video.nFrameWidth);
+ Y += portDef.format.video.nStride;
+ imgTmp += portDef.format.video.nFrameWidth;
+ }
+
+ if (portDef.format.video.eColorFormat == OMX_COLOR_FormatYUV420SemiPlanar) {
+ char* Cb = ipBuffer + (portDef.format.video.nFrameHeight *
+ portDef.format.video.nStride);
+ char* Cr = Cb + 1;
+ for (j = 0; j<portDef.format.video.nFrameHeight>> 1; ++j) {
+ for (i = 0; i < (portDef.format.video.nFrameWidth >> 1); ++i) {
+ Cb[2 * i] = *imgTmp++;
+ }
+ Cb += portDef.format.video.nStride;
+ }
+ for (j = 0; j<portDef.format.video.nFrameHeight>> 1; ++j) {
+ for (i = 0; i < (portDef.format.video.nFrameWidth >> 1); ++i) {
+ Cr[2 * i] = *imgTmp++;
+ }
+ Cr += portDef.format.video.nStride;
+ }
+ } else if (portDef.format.video.eColorFormat ==
+ OMX_COLOR_FormatYUV420Planar) {
+ char* Cb = ipBuffer + (portDef.format.video.nFrameHeight *
+ portDef.format.video.nStride);
+ char* Cr = Cb + ((portDef.format.video.nFrameHeight *
+ portDef.format.video.nStride) >>
+ 2);
+ for (j = 0; j<portDef.format.video.nFrameHeight>> 1; ++j) {
+ memcpy(Cb, imgTmp, (portDef.format.video.nFrameWidth >> 1));
+ Cb += (portDef.format.video.nStride >> 1);
+ imgTmp += (portDef.format.video.nFrameWidth >> 1);
+ }
+ for (j = 0; j<portDef.format.video.nFrameHeight>> 1; ++j) {
+ memcpy(Cr, imgTmp, (portDef.format.video.nFrameWidth >> 1));
+ Cr += (portDef.format.video.nStride >> 1);
+ imgTmp += (portDef.format.video.nFrameWidth >> 1);
+ }
+ }
+
+ delete[] img;
+ return 0;
+}
+
// Encode N Frames
void encodeNFrames(sp<IOmxNode> omxNode, sp<CodecObserver> observer,
OMX_U32 portIndexInput, OMX_U32 portIndexOutput,
@@ -973,8 +1001,8 @@
static_cast<void*>((*iBuffer)[i].mMemory->getPointer()));
ASSERT_LE(bytesCount,
static_cast<int>((*iBuffer)[i].mMemory->getSize()));
- eleStream.read(ipBuffer, bytesCount);
- if (eleStream.gcount() != bytesCount) break;
+ if (fillByteBuffer(omxNode, ipBuffer, portIndexInput, eleStream))
+ break;
if (signalEOS && (nFrames == 1)) flags = OMX_BUFFERFLAG_EOS;
dispatchInputBuffer(omxNode, iBuffer, i, bytesCount, flags,
timestamp);
@@ -1028,8 +1056,9 @@
ASSERT_LE(
bytesCount,
static_cast<int>((*iBuffer)[index].mMemory->getSize()));
- eleStream.read(ipBuffer, bytesCount);
- if (eleStream.gcount() != bytesCount) break;
+ if (fillByteBuffer(omxNode, ipBuffer, portIndexInput,
+ eleStream))
+ break;
if (signalEOS && (nFrames == 1)) flags = OMX_BUFFERFLAG_EOS;
dispatchInputBuffer(omxNode, iBuffer, index, bytesCount, flags,
timestamp);
@@ -1183,9 +1212,26 @@
uint32_t nFrameWidth = 352;
uint32_t nFrameHeight = 288;
uint32_t xFramerate = (30U << 16);
- OMX_COLOR_FORMATTYPE eColorFormat = OMX_COLOR_FormatYUV420Planar;
+ OMX_COLOR_FORMATTYPE eColorFormat = OMX_COLOR_FormatUnused;
+ OMX_VIDEO_PARAM_PORTFORMATTYPE portFormat;
+ portFormat.nIndex = 0;
+ while (1) {
+ status = getPortParam(omxNode, OMX_IndexParamVideoPortFormat,
+ kPortIndexInput, &portFormat);
+ if (status != ::android::hardware::media::omx::V1_0::Status::OK) break;
+ EXPECT_EQ(portFormat.eCompressionFormat, OMX_VIDEO_CodingUnused);
+ if (OMX_COLOR_FormatYUV420SemiPlanar == portFormat.eColorFormat ||
+ OMX_COLOR_FormatYUV420Planar == portFormat.eColorFormat) {
+ eColorFormat = portFormat.eColorFormat;
+ break;
+ }
+ portFormat.nIndex++;
+ if (portFormat.nIndex == 512) break;
+ }
+ ASSERT_NE(eColorFormat, OMX_COLOR_FormatUnused);
setupRAWPort(omxNode, kPortIndexInput, nFrameWidth, nFrameHeight, 0,
xFramerate, eColorFormat);
+
// Configure output port
uint32_t nBitRate = 512000;
setDefaultPortParam(omxNode, kPortIndexOutput, eCompressionFormat, nBitRate,
@@ -1423,6 +1469,14 @@
kPortIndexOutput = kPortIndexInput + 1;
}
+ // Configure input port
+ uint32_t nFrameWidth = 352;
+ uint32_t nFrameHeight = 288;
+ uint32_t xFramerate = (30U << 16);
+ OMX_COLOR_FORMATTYPE eColorFormat = OMX_COLOR_FormatAndroidOpaque;
+ setupRAWPort(omxNode, kPortIndexInput, nFrameWidth, nFrameHeight, 0,
+ xFramerate, eColorFormat);
+
// CreateInputSurface
EXPECT_TRUE(omx->createInputSurface(
[&](android::hardware::media::omx::V1_0::Status _s,
diff --git a/media/omx/1.0/vts/functional/video/media_video_hidl_test_common.cpp b/media/omx/1.0/vts/functional/video/media_video_hidl_test_common.cpp
index 2c81805..77763d1 100644
--- a/media/omx/1.0/vts/functional/video/media_video_hidl_test_common.cpp
+++ b/media/omx/1.0/vts/functional/video/media_video_hidl_test_common.cpp
@@ -172,7 +172,7 @@
status = getPortParam(omxNode, OMX_IndexParamVideoAvc, portIndex, ¶m);
EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
param.nSliceHeaderSpacing = 0;
- param.nPFrames = 0xFFFFFFFE;
+ param.nPFrames = 300;
param.nBFrames = 0;
param.bUseHadamard = OMX_TRUE;
param.nRefFrames = 1;
@@ -197,9 +197,13 @@
status = getPortParam(omxNode, (OMX_INDEXTYPE)OMX_IndexParamVideoHevc,
portIndex, ¶m);
EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
- param.eProfile = eProfile;
- param.eLevel = eLevel;
- param.nKeyFrameInterval = 0xFFFFFFFE;
+ (void)eProfile;
+ (void)eLevel;
+ // SPECIAL CASE; OMX.qcom.video.encoder.hevc does not support the level it
+ // enumerated in the list. Lets skip this for now
+ // param.eProfile = eProfile;
+ // param.eLevel = eLevel;
+ param.nKeyFrameInterval = 300;
status = setPortParam(omxNode, (OMX_INDEXTYPE)OMX_IndexParamVideoHevc,
portIndex, ¶m);
EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
@@ -218,7 +222,7 @@
param.nSliceHeaderSpacing = 0;
param.bSVH = OMX_FALSE;
param.bGov = OMX_FALSE;
- param.nPFrames = 0xFFFFFFFE;
+ param.nPFrames = 300;
param.nBFrames = 0;
param.nIDCVLCThreshold = 0;
param.bACPred = OMX_TRUE;
@@ -243,7 +247,7 @@
status = getPortParam(omxNode, OMX_IndexParamVideoH263, portIndex, ¶m);
EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
- param.nPFrames = 0xFFFFFFFE;
+ param.nPFrames = 300;
param.nBFrames = 0;
param.eProfile = eProfile;
param.eLevel = eLevel;
@@ -265,16 +269,22 @@
status = getPortParam(omxNode,
(OMX_INDEXTYPE)OMX_IndexParamVideoAndroidVp8Encoder,
portIndex, ¶m);
- EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+ // EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+ // SPECIAL CASE; OMX.qcom.video.encoder.vp8 does not support this index
+ // type. Dont flag error for now
+ if (status != ::android::hardware::media::omx::V1_0::Status::OK) return;
- param.nKeyFrameInterval = 0xFFFFFFFE;
+ param.nKeyFrameInterval = 300;
param.eTemporalPattern = OMX_VIDEO_VPXTemporalLayerPatternNone;
param.nMinQuantizer = 2;
param.nMaxQuantizer = 63;
status = setPortParam(omxNode,
(OMX_INDEXTYPE)OMX_IndexParamVideoAndroidVp8Encoder,
portIndex, ¶m);
- EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+ // EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK);
+ // SPECIAL CASE; OMX.qcom.video.encoder.vp8 does not support this index
+ // type. Dont flag error for now
+ if (status != ::android::hardware::media::omx::V1_0::Status::OK) return;
}
void setupVP8Port(sp<IOmxNode> omxNode, OMX_U32 portIndex,
diff --git a/nfc/1.0/vts/functional/VtsHalNfcV1_0TargetTest.cpp b/nfc/1.0/vts/functional/VtsHalNfcV1_0TargetTest.cpp
index e77cc14..094e8a1 100644
--- a/nfc/1.0/vts/functional/VtsHalNfcV1_0TargetTest.cpp
+++ b/nfc/1.0/vts/functional/VtsHalNfcV1_0TargetTest.cpp
@@ -52,7 +52,8 @@
#define LOOP_BACK_HEADER_SIZE 3
#define SYNTAX_ERROR 5
#define NUMBER_LOOPS 3922
-#define VERSION 0x11
+#define NCI_VERSION_1_1 0x11
+#define NCI_VERSION_2 0x20
#define TIMEOUT_PERIOD 5
constexpr char kCallbackNameSendEvent[] = "sendEvent";
@@ -108,6 +109,42 @@
EXPECT_TRUE(res.no_timeout);
EXPECT_EQ(NfcEvent::OPEN_CPLT, res.args->last_event_);
EXPECT_EQ(NfcStatus::OK, res.args->last_status_);
+
+ /* Get the NCI version that the device supports */
+ std::vector<uint8_t> cmd = CORE_RESET_CMD;
+ NfcData data = cmd;
+ EXPECT_EQ(data.size(), nfc_->write(data));
+ // Wait for CORE_RESET_RSP
+ res = nfc_cb_->WaitForCallback(kCallbackNameSendData);
+ EXPECT_TRUE(res.no_timeout);
+ EXPECT_GE(6ul, res.args->last_data_.size());
+ EXPECT_EQ((int)NfcStatus::OK, res.args->last_data_[3]);
+ if (res.args->last_data_.size() == 6) {
+ nci_version = res.args->last_data_[4];
+ } else {
+ EXPECT_EQ(4ul, res.args->last_data_.size());
+ nci_version = NCI_VERSION_2;
+ res = nfc_cb_->WaitForCallback(kCallbackNameSendData);
+ EXPECT_TRUE(res.no_timeout);
+ }
+
+ /*
+ * Close the hal and then re-open to make sure we are in a predictable
+ * state for all the tests.
+ */
+ EXPECT_EQ(NfcStatus::OK, nfc_->close());
+ // Wait for CLOSE_CPLT event
+ res = nfc_cb_->WaitForCallback(kCallbackNameSendEvent);
+ EXPECT_TRUE(res.no_timeout);
+ EXPECT_EQ(NfcEvent::CLOSE_CPLT, res.args->last_event_);
+ EXPECT_EQ(NfcStatus::OK, res.args->last_status_);
+
+ EXPECT_EQ(NfcStatus::OK, nfc_->open(nfc_cb_));
+ // Wait for OPEN_CPLT event
+ res = nfc_cb_->WaitForCallback(kCallbackNameSendEvent);
+ EXPECT_TRUE(res.no_timeout);
+ EXPECT_EQ(NfcEvent::OPEN_CPLT, res.args->last_event_);
+ EXPECT_EQ(NfcStatus::OK, res.args->last_status_);
}
virtual void TearDown() override {
@@ -119,6 +156,9 @@
EXPECT_EQ(NfcStatus::OK, res.args->last_status_);
}
+ /* NCI version the device supports
+ * 0x11 for NCI 1.1, 0x20 for NCI 2.0 and so forth */
+ uint8_t nci_version;
sp<INfc> nfc_;
sp<NfcClientCallback> nfc_cb_;
};
@@ -154,10 +194,26 @@
// Wait for CORE_RESET_RSP
auto res = nfc_cb_->WaitForCallback(kCallbackNameSendData);
EXPECT_TRUE(res.no_timeout);
- EXPECT_EQ(6ul, res.args->last_data_.size());
- EXPECT_EQ((int)NfcStatus::OK, res.args->last_data_[3]);
- EXPECT_GE(VERSION, res.args->last_data_[4]);
- EXPECT_GE(1ul, res.args->last_data_[5]);
+
+ /* The response/notification format for CORE_RESET_CMD differs
+ * with NCI 1.0 and 2.0. */
+ if (nci_version <= NCI_VERSION_1_1) {
+ EXPECT_EQ(6ul, res.args->last_data_.size());
+ EXPECT_EQ((int)NfcStatus::OK, res.args->last_data_[3]);
+ EXPECT_GE(NCI_VERSION_1_1, res.args->last_data_[4]);
+ EXPECT_GE(1ul, res.args->last_data_[5]);
+ } else {
+ EXPECT_EQ(4ul, res.args->last_data_.size());
+ EXPECT_EQ((int)NfcStatus::OK, res.args->last_data_[3]);
+ // Wait for CORE_RESET_NTF
+ res = nfc_cb_->WaitForCallback(kCallbackNameSendData);
+ EXPECT_TRUE(res.no_timeout);
+ // Check if reset trigger was due to CORE_RESET_CMD
+ EXPECT_LE(8ul, res.args->last_data_.size());
+ EXPECT_EQ(2ul, res.args->last_data_[3]);
+ EXPECT_GE(1ul, res.args->last_data_[4]);
+ EXPECT_EQ(NCI_VERSION_2, res.args->last_data_[5]);
+ }
}
/*
@@ -173,10 +229,26 @@
// Wait for CORE_RESET_RSP
auto res = nfc_cb_->WaitForCallback(kCallbackNameSendData);
EXPECT_TRUE(res.no_timeout);
- EXPECT_EQ(6ul, res.args->last_data_.size());
- EXPECT_EQ((int)NfcStatus::OK, res.args->last_data_[3]);
- EXPECT_GE(VERSION, res.args->last_data_[4]);
- EXPECT_EQ(1ul, res.args->last_data_[5]);
+
+ /* The response/notification format for CORE_RESET_CMD differs
+ * with NCI 1.0 and 2.0. */
+ if (nci_version <= NCI_VERSION_1_1) {
+ EXPECT_EQ(6ul, res.args->last_data_.size());
+ EXPECT_EQ((int)NfcStatus::OK, res.args->last_data_[3]);
+ EXPECT_GE(NCI_VERSION_1_1, res.args->last_data_[4]);
+ EXPECT_EQ(1ul, res.args->last_data_[5]);
+ } else {
+ EXPECT_EQ(4ul, res.args->last_data_.size());
+ EXPECT_EQ((int)NfcStatus::OK, res.args->last_data_[3]);
+ // Wait for CORE_RESET_NTF
+ res = nfc_cb_->WaitForCallback(kCallbackNameSendData);
+ EXPECT_TRUE(res.no_timeout);
+ // Check if reset trigger was due to CORE_RESET_CMD
+ EXPECT_LE(8ul, res.args->last_data_.size());
+ EXPECT_EQ(2ul, res.args->last_data_[3]);
+ EXPECT_EQ(1ul, res.args->last_data_[4]);
+ EXPECT_EQ(NCI_VERSION_2, res.args->last_data_[5]);
+ }
}
/*
@@ -214,7 +286,13 @@
auto res = nfc_cb_->WaitForCallback(kCallbackNameSendData);
EXPECT_TRUE(res.no_timeout);
EXPECT_EQ((int)NfcStatus::OK, res.args->last_data_[3]);
- EXPECT_EQ((int)NfcStatus::OK, res.args->last_data_[3]);
+
+ /* NCI 2.0 sends CORE_RESET_NTF everytime. */
+ if (nci_version == NCI_VERSION_2) {
+ // Wait for CORE_RESET_NTF
+ res = nfc_cb_->WaitForCallback(kCallbackNameSendData);
+ EXPECT_TRUE(res.no_timeout);
+ }
cmd = CORE_INIT_CMD;
data = cmd;
@@ -268,7 +346,13 @@
auto res = nfc_cb_->WaitForCallback(kCallbackNameSendData);
EXPECT_TRUE(res.no_timeout);
EXPECT_EQ((int)NfcStatus::OK, res.args->last_data_[3]);
- EXPECT_EQ((int)NfcStatus::OK, res.args->last_data_[3]);
+
+ /* NCI 2.0 sends CORE_RESET_NTF everytime. */
+ if (nci_version == NCI_VERSION_2) {
+ // Wait for CORE_RESET_NTF
+ res = nfc_cb_->WaitForCallback(kCallbackNameSendData);
+ EXPECT_TRUE(res.no_timeout);
+ }
cmd = CORE_INIT_CMD;
data = cmd;
@@ -379,7 +463,13 @@
// most devices.
for (int i = 10; i <= 16; i++) {
data[0] = i;
- EXPECT_EQ(NfcStatus::OK, nfc_->coreInitialized(data));
+ NfcStatus status = nfc_->coreInitialized(data);
+
+ /* In case coreInitialized returned FAILED, do not wait for
+ * POST_INIT_CLPT event. */
+ if (status == NfcStatus::FAILED) continue;
+
+ EXPECT_EQ(NfcStatus::OK, status);
// Wait for NfcEvent.POST_INIT_CPLT
auto res = nfc_cb_->WaitForCallback(kCallbackNameSendEvent);
EXPECT_TRUE(res.no_timeout);
diff --git a/radio/1.0/vts/functional/radio_hidl_hal_misc.cpp b/radio/1.0/vts/functional/radio_hidl_hal_misc.cpp
index 1df5802..9e4f668 100644
--- a/radio/1.0/vts/functional/radio_hidl_hal_misc.cpp
+++ b/radio/1.0/vts/functional/radio_hidl_hal_misc.cpp
@@ -184,7 +184,7 @@
EXPECT_EQ(serial, radioRsp->rspInfo.serial);
if (cardStatus.cardState == CardState::ABSENT) {
- ASSERT_TRUE(radioRsp->rspInfo.error == RadioError::NONE);
+ EXPECT_EQ(radioRsp->rspInfo.error, RadioError::NONE);
}
}
@@ -216,7 +216,7 @@
EXPECT_EQ(serial, radioRsp->rspInfo.serial);
if (cardStatus.cardState == CardState::ABSENT) {
- ASSERT_TRUE(radioRsp->rspInfo.error == RadioError::NONE);
+ EXPECT_EQ(radioRsp->rspInfo.error, RadioError::NONE);
}
}
@@ -441,8 +441,10 @@
EXPECT_EQ(serial, radioRsp->rspInfo.serial);
if (cardStatus.cardState == CardState::ABSENT) {
- ASSERT_TRUE(radioRsp->rspInfo.error == RadioError::SIM_ABSENT ||
- radioRsp->rspInfo.error == RadioError::SUBSCRIPTION_NOT_AVAILABLE);
+ std::cout << static_cast<int>(radioRsp->rspInfo.error) << std::endl;
+ ASSERT_TRUE(CheckGeneralError() || radioRsp->rspInfo.error == RadioError::SIM_ABSENT ||
+ radioRsp->rspInfo.error == RadioError::SUBSCRIPTION_NOT_AVAILABLE ||
+ radioRsp->rspInfo.error == RadioError::NONE);
}
}
@@ -508,7 +510,7 @@
EXPECT_EQ(serial, radioRsp->rspInfo.serial);
if (cardStatus.cardState == CardState::ABSENT) {
- ASSERT_TRUE(radioRsp->rspInfo.error == RadioError::NONE);
+ ASSERT_TRUE(CheckGeneralError() || radioRsp->rspInfo.error == RadioError::NONE);
}
}
@@ -527,7 +529,7 @@
EXPECT_EQ(serial, radioRsp->rspInfo.serial);
if (cardStatus.cardState == CardState::ABSENT) {
- ASSERT_TRUE(radioRsp->rspInfo.error == RadioError::NONE);
+ ASSERT_TRUE(CheckGeneralError() || radioRsp->rspInfo.error == RadioError::NONE);
}
}
@@ -544,7 +546,7 @@
EXPECT_EQ(serial, radioRsp->rspInfo.serial);
if (cardStatus.cardState == CardState::ABSENT) {
- ASSERT_TRUE(radioRsp->rspInfo.error == RadioError::NONE);
+ ASSERT_TRUE(CheckGeneralError() || radioRsp->rspInfo.error == RadioError::NONE);
}
}
@@ -598,7 +600,7 @@
EXPECT_EQ(serial, radioRsp->rspInfo.serial);
if (cardStatus.cardState == CardState::ABSENT) {
- ASSERT_TRUE(radioRsp->rspInfo.error == RadioError::NONE);
+ ASSERT_TRUE(CheckGeneralError() || radioRsp->rspInfo.error == RadioError::NONE);
}
}
@@ -649,6 +651,7 @@
EXPECT_EQ(serial, radioRsp->rspInfo.serial);
if (cardStatus.cardState == CardState::ABSENT) {
+ std::cout << static_cast<int>(radioRsp->rspInfo.error) << std::endl;
ASSERT_TRUE(CheckGeneralError() ||
radioRsp->rspInfo.error == RadioError::INVALID_ARGUMENTS ||
radioRsp->rspInfo.error == RadioError::INVALID_STATE);
@@ -667,6 +670,7 @@
EXPECT_EQ(serial, radioRsp->rspInfo.serial);
if (cardStatus.cardState == CardState::ABSENT) {
+ std::cout << static_cast<int>(radioRsp->rspInfo.error) << std::endl;
ASSERT_TRUE(radioRsp->rspInfo.error == RadioError::RADIO_NOT_AVAILABLE ||
radioRsp->rspInfo.error == RadioError::LCE_NOT_SUPPORTED ||
radioRsp->rspInfo.error == RadioError::INTERNAL_ERR);
@@ -743,7 +747,7 @@
EXPECT_EQ(serial, radioRsp->rspInfo.serial);
if (cardStatus.cardState == CardState::ABSENT) {
- ASSERT_TRUE(radioRsp->rspInfo.error == RadioError::NONE);
+ EXPECT_EQ(radioRsp->rspInfo.error, RadioError::NONE);
}
/* Reset back to no carrier restriction */
@@ -757,7 +761,7 @@
EXPECT_EQ(serial, radioRsp->rspInfo.serial);
if (cardStatus.cardState == CardState::ABSENT) {
- ASSERT_TRUE(radioRsp->rspInfo.error == RadioError::NONE);
+ EXPECT_EQ(radioRsp->rspInfo.error, RadioError::NONE);
}
}
@@ -773,7 +777,7 @@
EXPECT_EQ(serial, radioRsp->rspInfo.serial);
if (cardStatus.cardState == CardState::ABSENT) {
- ASSERT_TRUE(radioRsp->rspInfo.error == RadioError::NONE);
+ EXPECT_EQ(radioRsp->rspInfo.error, RadioError::NONE);
}
}
@@ -823,6 +827,7 @@
EXPECT_EQ(serial, radioRsp->rspInfo.serial);
if (cardStatus.cardState == CardState::ABSENT) {
+ std::cout << static_cast<int>(radioRsp->rspInfo.error) << std::endl;
ASSERT_TRUE(radioRsp->rspInfo.error == RadioError::NONE ||
radioRsp->rspInfo.error == RadioError::REQUEST_NOT_SUPPORTED);
}
diff --git a/radio/1.0/vts/functional/radio_hidl_hal_stk.cpp b/radio/1.0/vts/functional/radio_hidl_hal_stk.cpp
index 0d86099..774df98 100644
--- a/radio/1.0/vts/functional/radio_hidl_hal_stk.cpp
+++ b/radio/1.0/vts/functional/radio_hidl_hal_stk.cpp
@@ -34,8 +34,10 @@
EXPECT_EQ(serial, radioRsp->rspInfo.serial);
if (cardStatus.cardState == CardState::ABSENT) {
+ std::cout << static_cast<int>(radioRsp->rspInfo.error) << std::endl;
ASSERT_TRUE(CheckGeneralError() ||
- radioRsp->rspInfo.error == RadioError::INVALID_ARGUMENTS);
+ radioRsp->rspInfo.error == RadioError::INVALID_ARGUMENTS ||
+ radioRsp->rspInfo.error == RadioError::NONE);
}
// Test with sending random string
@@ -49,8 +51,10 @@
EXPECT_EQ(serial, radioRsp->rspInfo.serial);
if (cardStatus.cardState == CardState::ABSENT) {
+ std::cout << static_cast<int>(radioRsp->rspInfo.error) << std::endl;
ASSERT_TRUE(CheckGeneralError() ||
- radioRsp->rspInfo.error == RadioError::INVALID_ARGUMENTS);
+ radioRsp->rspInfo.error == RadioError::INVALID_ARGUMENTS ||
+ radioRsp->rspInfo.error == RadioError::NONE);
}
}
@@ -70,7 +74,10 @@
EXPECT_EQ(serial, radioRsp->rspInfo.serial);
if (cardStatus.cardState == CardState::ABSENT) {
- EXPECT_EQ(RadioError::NONE, radioRsp->rspInfo.error);
+ std::cout << static_cast<int>(radioRsp->rspInfo.error) << std::endl;
+ ASSERT_TRUE(CheckGeneralError() ||
+ radioRsp->rspInfo.error == RadioError::INVALID_ARGUMENTS ||
+ radioRsp->rspInfo.error == RadioError::NONE);
}
serial = GetRandomSerialNumber();
@@ -85,6 +92,7 @@
EXPECT_EQ(serial, radioRsp->rspInfo.serial);
if (cardStatus.cardState == CardState::ABSENT) {
+ std::cout << static_cast<int>(radioRsp->rspInfo.error) << std::endl;
ASSERT_TRUE(CheckGeneralError() ||
radioRsp->rspInfo.error == RadioError::INVALID_ARGUMENTS);
}
diff --git a/radio/1.0/vts/functional/radio_hidl_hal_voice.cpp b/radio/1.0/vts/functional/radio_hidl_hal_voice.cpp
index 8fe04fd..d57360f 100644
--- a/radio/1.0/vts/functional/radio_hidl_hal_voice.cpp
+++ b/radio/1.0/vts/functional/radio_hidl_hal_voice.cpp
@@ -365,6 +365,7 @@
EXPECT_EQ(serial, radioRsp->rspInfo.serial);
if (cardStatus.cardState == CardState::ABSENT) {
+ std::cout << static_cast<int>(radioRsp->rspInfo.error) << std::endl;
ASSERT_TRUE(CheckGeneralError() ||
radioRsp->rspInfo.error == RadioError::INVALID_ARGUMENTS ||
radioRsp->rspInfo.error == RadioError::NONE ||
diff --git a/renderscript/1.0/vts/functional/VtsHalRenderscriptV1_0TargetTest.cpp b/renderscript/1.0/vts/functional/VtsHalRenderscriptV1_0TargetTest.cpp
index f505d01..2670b8d 100644
--- a/renderscript/1.0/vts/functional/VtsHalRenderscriptV1_0TargetTest.cpp
+++ b/renderscript/1.0/vts/functional/VtsHalRenderscriptV1_0TargetTest.cpp
@@ -28,6 +28,7 @@
}
void RenderscriptHidlTest::TearDown() {
+ context->contextFinish();
context->contextDestroy();
}