Modified ITestMsgQ hal service interface

am: 58d52f70b3

Change-Id: Iaea0a9ebef6ff4ef5a2cb0beedafd05376d0c09c
This commit is contained in:
Hans Chen
2018-07-17 16:22:03 -07:00
committed by android-build-merger
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;