Loading Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -804,6 +804,7 @@ filegroup { srcs: [ "core/java/android/os/IStatsCompanionService.aidl", "core/java/android/os/IStatsManager.aidl", "core/java/android/os/IStatsPullerCallback.aidl", ], } Loading cmds/statsd/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -71,6 +71,7 @@ cc_defaults { "src/external/Perfetto.cpp", "src/external/Perfprofd.cpp", "src/external/StatsPuller.cpp", "src/external/StatsCallbackPuller.cpp", "src/external/StatsCompanionServicePuller.cpp", "src/external/SubsystemSleepStatePuller.cpp", "src/external/PowerStatsPuller.cpp", Loading cmds/statsd/src/StatsService.cpp +18 −0 Original line number Diff line number Diff line Loading @@ -1057,6 +1057,24 @@ Status StatsService::sendAppBreadcrumbAtom(int32_t label, int32_t state) { return Status::ok(); } Status StatsService::registerPullerCallback(int32_t atomTag, const sp<android::os::IStatsPullerCallback>& pullerCallback, const String16& packageName) { ENFORCE_DUMP_AND_USAGE_STATS(packageName); VLOG("StatsService::registerPullerCallback called."); mPullerManager->RegisterPullerCallback(atomTag, pullerCallback); return Status::ok(); } Status StatsService::unregisterPullerCallback(int32_t atomTag, const String16& packageName) { ENFORCE_DUMP_AND_USAGE_STATS(packageName); VLOG("StatsService::unregisterPullerCallback called."); mPullerManager->UnregisterPullerCallback(atomTag); return Status::ok(); } hardware::Return<void> StatsService::reportSpeakerImpedance( const SpeakerImpedance& speakerImpedance) { LogEvent event(getWallClockSec() * NS_PER_SEC, getElapsedRealtimeNs(), speakerImpedance); Loading cmds/statsd/src/StatsService.h +13 −0 Original line number Diff line number Diff line Loading @@ -172,6 +172,19 @@ public: */ virtual Status sendAppBreadcrumbAtom(int32_t label, int32_t state) override; /** * Binder call to register a callback function for a vendor pulled atom. * Note: this atom must NOT have uid as a field. */ virtual Status registerPullerCallback(int32_t atomTag, const sp<android::os::IStatsPullerCallback>& pullerCallback, const String16& packageName) override; /** * Binder call to unregister any existing callback function for a vendor pulled atom. */ virtual Status unregisterPullerCallback(int32_t atomTag, const String16& packageName) override; /** * Binder call to get SpeakerImpedance atom. */ Loading cmds/statsd/src/external/StatsCallbackPuller.cpp 0 → 100644 +61 −0 Original line number Diff line number Diff line /* * Copyright (C) 2019 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #define DEBUG false // STOPSHIP if true #include "Log.h" #include <android/os/IStatsPullerCallback.h> #include "StatsCallbackPuller.h" #include "logd/LogEvent.h" #include "stats_log_util.h" using namespace android::binder; namespace android { namespace os { namespace statsd { StatsCallbackPuller::StatsCallbackPuller(int tagId, const sp<IStatsPullerCallback>& callback) : StatsPuller(tagId), mCallback(callback) { VLOG("StatsCallbackPuller created for tag %d", tagId); } bool StatsCallbackPuller::PullInternal(vector<shared_ptr<LogEvent>>* data) { VLOG("StatsCallbackPuller called for tag %d", mTagId) if(mCallback == nullptr) { ALOGW("No callback registered"); return false; } int64_t wallClockTimeNs = getWallClockNs(); int64_t elapsedTimeNs = getElapsedRealtimeNs(); vector<StatsLogEventWrapper> returned_value; Status status = mCallback->pullData(mTagId, elapsedTimeNs, wallClockTimeNs, &returned_value); if (!status.isOk()) { ALOGW("StatsCallbackPuller::pull failed for %d", mTagId); return false; } data->clear(); for (const StatsLogEventWrapper& it: returned_value) { LogEvent::createLogEvents(it, *data); } VLOG("StatsCallbackPuller::pull succeeded for %d", mTagId); return true; } } // namespace statsd } // namespace os } // namespace android Loading
Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -804,6 +804,7 @@ filegroup { srcs: [ "core/java/android/os/IStatsCompanionService.aidl", "core/java/android/os/IStatsManager.aidl", "core/java/android/os/IStatsPullerCallback.aidl", ], } Loading
cmds/statsd/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -71,6 +71,7 @@ cc_defaults { "src/external/Perfetto.cpp", "src/external/Perfprofd.cpp", "src/external/StatsPuller.cpp", "src/external/StatsCallbackPuller.cpp", "src/external/StatsCompanionServicePuller.cpp", "src/external/SubsystemSleepStatePuller.cpp", "src/external/PowerStatsPuller.cpp", Loading
cmds/statsd/src/StatsService.cpp +18 −0 Original line number Diff line number Diff line Loading @@ -1057,6 +1057,24 @@ Status StatsService::sendAppBreadcrumbAtom(int32_t label, int32_t state) { return Status::ok(); } Status StatsService::registerPullerCallback(int32_t atomTag, const sp<android::os::IStatsPullerCallback>& pullerCallback, const String16& packageName) { ENFORCE_DUMP_AND_USAGE_STATS(packageName); VLOG("StatsService::registerPullerCallback called."); mPullerManager->RegisterPullerCallback(atomTag, pullerCallback); return Status::ok(); } Status StatsService::unregisterPullerCallback(int32_t atomTag, const String16& packageName) { ENFORCE_DUMP_AND_USAGE_STATS(packageName); VLOG("StatsService::unregisterPullerCallback called."); mPullerManager->UnregisterPullerCallback(atomTag); return Status::ok(); } hardware::Return<void> StatsService::reportSpeakerImpedance( const SpeakerImpedance& speakerImpedance) { LogEvent event(getWallClockSec() * NS_PER_SEC, getElapsedRealtimeNs(), speakerImpedance); Loading
cmds/statsd/src/StatsService.h +13 −0 Original line number Diff line number Diff line Loading @@ -172,6 +172,19 @@ public: */ virtual Status sendAppBreadcrumbAtom(int32_t label, int32_t state) override; /** * Binder call to register a callback function for a vendor pulled atom. * Note: this atom must NOT have uid as a field. */ virtual Status registerPullerCallback(int32_t atomTag, const sp<android::os::IStatsPullerCallback>& pullerCallback, const String16& packageName) override; /** * Binder call to unregister any existing callback function for a vendor pulled atom. */ virtual Status unregisterPullerCallback(int32_t atomTag, const String16& packageName) override; /** * Binder call to get SpeakerImpedance atom. */ Loading
cmds/statsd/src/external/StatsCallbackPuller.cpp 0 → 100644 +61 −0 Original line number Diff line number Diff line /* * Copyright (C) 2019 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #define DEBUG false // STOPSHIP if true #include "Log.h" #include <android/os/IStatsPullerCallback.h> #include "StatsCallbackPuller.h" #include "logd/LogEvent.h" #include "stats_log_util.h" using namespace android::binder; namespace android { namespace os { namespace statsd { StatsCallbackPuller::StatsCallbackPuller(int tagId, const sp<IStatsPullerCallback>& callback) : StatsPuller(tagId), mCallback(callback) { VLOG("StatsCallbackPuller created for tag %d", tagId); } bool StatsCallbackPuller::PullInternal(vector<shared_ptr<LogEvent>>* data) { VLOG("StatsCallbackPuller called for tag %d", mTagId) if(mCallback == nullptr) { ALOGW("No callback registered"); return false; } int64_t wallClockTimeNs = getWallClockNs(); int64_t elapsedTimeNs = getElapsedRealtimeNs(); vector<StatsLogEventWrapper> returned_value; Status status = mCallback->pullData(mTagId, elapsedTimeNs, wallClockTimeNs, &returned_value); if (!status.isOk()) { ALOGW("StatsCallbackPuller::pull failed for %d", mTagId); return false; } data->clear(); for (const StatsLogEventWrapper& it: returned_value) { LogEvent::createLogEvents(it, *data); } VLOG("StatsCallbackPuller::pull succeeded for %d", mTagId); return true; } } // namespace statsd } // namespace os } // namespace android