diff options
| author | 2020-09-09 20:21:16 -0700 | |
|---|---|---|
| committer | 2020-09-09 20:21:16 -0700 | |
| commit | ac07d0f5ab16bb9e8bbbabb589d1c7d36817baa9 (patch) | |
| tree | f7110d50445c67a337105034b1f2db3946a88fef /services/stats/StatsHal.cpp | |
| parent | 171cac1b603e4bb83412eb596d05a500af5d7a76 (diff) | |
| parent | c83049d93712f12279dbeabfa1857c1921804979 (diff) | |
Merge Android R
Bug: 168057903
Merged-In: I1428ead11c6c2d6fd107a014df0082fdbfa9ba8a
Change-Id: I7e084a4c5a3fd06152ea6f1bfe17c53f95faba79
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 |