Modified ITestMsgQ hal service interface

Test: make vts -j; fmq_test
Changes:
* Modified method that configures the synchronized queue. Now this method takes in a descriptor of an existing queue and creates a queue on the HAL server side.

Change-Id: I395d6311f3580af6a87556849b3e921fa9eaf097
This commit is contained in:
Hans Chen 2018-07-14 17:23:45 -07:00
parent 76b383d5c2
commit 58d52f70b3
3 changed files with 19 additions and 22 deletions

View file

@ -24,14 +24,14 @@ interface ITestMsgQ {
/**
* This method requests the service to set up a synchronous read/write
* wait-free FMQ with the client as reader.
* wait-free FMQ using the input descriptor with the client as reader.
*
* @param mqDesc This structure describes the FMQ that was set up by the
* client. Server uses this descriptor to set up a FMQ object at its end.
*
* @return ret True if the setup is successful.
* @return mqDesc This structure describes the FMQ that was
* set up by the service. Client can use it to set up the FMQ at its end.
*/
configureFmqSyncReadWrite()
generates(bool ret, fmq_sync<uint16_t> mqDesc);
configureFmqSyncReadWrite(fmq_sync<uint16_t> mqDesc) generates(bool ret);
/**
* This method requests the service to return an MQDescriptor to

View file

@ -24,24 +24,21 @@ namespace V1_0 {
namespace implementation {
// Methods from ::android::hardware::tests::msgq::V1_0::ITestMsgQ follow.
Return<void> TestMsgQ::configureFmqSyncReadWrite(configureFmqSyncReadWrite_cb _hidl_cb) {
static constexpr size_t kNumElementsInQueue = 1024;
mFmqSynchronized.reset(new (std::nothrow) MessageQueueSync(
kNumElementsInQueue, true /* configureEventFlagWord */));
Return<bool> TestMsgQ::configureFmqSyncReadWrite(
const android::hardware::MQDescriptorSync<uint16_t>& mqDesc) {
mFmqSynchronized.reset(new (std::nothrow) MessageQueueSync(mqDesc));
if ((mFmqSynchronized == nullptr) || (mFmqSynchronized->isValid() == false)) {
_hidl_cb(false /* ret */, MessageQueueSync::Descriptor());
} else {
/*
* Initialize the EventFlag word with bit FMQ_NOT_FULL.
*/
auto evFlagWordPtr = mFmqSynchronized->getEventFlagWord();
if (evFlagWordPtr != nullptr) {
std::atomic_init(evFlagWordPtr,
static_cast<uint32_t>(ITestMsgQ::EventFlagBits::FMQ_NOT_FULL));
}
_hidl_cb(true /* ret */, *mFmqSynchronized->getDesc());
return false;
}
return Void();
/*
* Initialize the EventFlag word with bit FMQ_NOT_FULL.
*/
auto evFlagWordPtr = mFmqSynchronized->getEventFlagWord();
if (evFlagWordPtr != nullptr) {
std::atomic_init(evFlagWordPtr,
static_cast<uint32_t>(ITestMsgQ::EventFlagBits::FMQ_NOT_FULL));
}
return true;
}
Return<void> TestMsgQ::getFmqUnsyncWrite(bool configureFmq, getFmqUnsyncWrite_cb _hidl_cb) {

View file

@ -55,7 +55,7 @@ struct TestMsgQ : public ITestMsgQ {
TestMsgQ() : mFmqSynchronized(nullptr), mFmqUnsynchronized(nullptr) {}
// Methods from ::android::hardware::tests::msgq::V1_0::ITestMsgQ follow.
Return<void> configureFmqSyncReadWrite(configureFmqSyncReadWrite_cb _hidl_cb) override;
Return<bool> configureFmqSyncReadWrite(const MQDescriptorSync<uint16_t>& mqDesc) override;
Return<void> getFmqUnsyncWrite(bool configureFmq, getFmqUnsyncWrite_cb _hidl_cb) override;
Return<bool> requestWriteFmqSync(int32_t count) override;
Return<bool> requestReadFmqSync(int32_t count) override;