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:
parent
76b383d5c2
commit
58d52f70b3
3 changed files with 19 additions and 22 deletions
|
@ -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
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue