diff options
| author | 2020-09-10 17:22:18 +0000 | |
|---|---|---|
| committer | 2020-09-10 17:22:18 +0000 | |
| commit | cdb6b16dec3a541b455be99d075004cb2f0a0cd7 (patch) | |
| tree | f7110d50445c67a337105034b1f2db3946a88fef /services/stats/StatsHal.cpp | |
| parent | 171cac1b603e4bb83412eb596d05a500af5d7a76 (diff) | |
| parent | ac07d0f5ab16bb9e8bbbabb589d1c7d36817baa9 (diff) | |
Merge "Merge Android R"
Diffstat (limited to 'services/stats/StatsHal.cpp')
| -rw-r--r-- | services/stats/StatsHal.cpp | 36 |
1 files changed, 33 insertions, 3 deletions
diff --git a/services/stats/StatsHal.cpp b/services/stats/StatsHal.cpp index b775431cff..80c3b65ae8 100644 --- a/services/stats/StatsHal.cpp +++ b/services/stats/StatsHal.cpp @@ -112,9 +112,39 @@ hardware::Return<void> StatsHal::reportSpeechDspStat( } hardware::Return<void> StatsHal::reportVendorAtom(const VendorAtom& vendorAtom) { - ALOGW("reportVendorAtom unsupported"); - std::string reverDomainName = vendorAtom.reverseDomainName; - return hardware::Void(); + std::string reverseDomainName = (std::string) vendorAtom.reverseDomainName; + if (vendorAtom.atomId < 100000 || vendorAtom.atomId >= 200000) { + ALOGE("Atom ID %ld is not a valid vendor atom ID", (long) vendorAtom.atomId); + return hardware::Void(); + } + if (reverseDomainName.length() > 50) { + ALOGE("Vendor atom reverse domain name %s is too long.", reverseDomainName.c_str()); + return hardware::Void(); + } + AStatsEvent* event = AStatsEvent_obtain(); + AStatsEvent_setAtomId(event, vendorAtom.atomId); + AStatsEvent_writeString(event, vendorAtom.reverseDomainName.c_str()); + for (int i = 0; i < (int)vendorAtom.values.size(); i++) { + switch (vendorAtom.values[i].getDiscriminator()) { + case VendorAtom::Value::hidl_discriminator::intValue: + AStatsEvent_writeInt32(event, vendorAtom.values[i].intValue()); + break; + case VendorAtom::Value::hidl_discriminator::longValue: + AStatsEvent_writeInt64(event, vendorAtom.values[i].longValue()); + break; + case VendorAtom::Value::hidl_discriminator::floatValue: + AStatsEvent_writeFloat(event, vendorAtom.values[i].floatValue()); + break; + case VendorAtom::Value::hidl_discriminator::stringValue: + AStatsEvent_writeString(event, vendorAtom.values[i].stringValue().c_str()); + break; + } + } + AStatsEvent_build(event); + AStatsEvent_write(event); + AStatsEvent_release(event); + + return hardware::Void(); } } // namespace implementation |