StatsCompanionService sends messages to statsd

StatsCompanionService can now inform statsd that an alarm (for anomaly
alerting and for polling) has fired, so that statsd can act accordingly.

Test: manual created an alarm from statsd.main and checked logcat that
statsd received the broadcast that it fired
Change-Id: I1d33dfbee0d3e213c91dd6973d2622ecacc890c8
diff --git a/cmds/statsd/src/StatsService.cpp b/cmds/statsd/src/StatsService.cpp
index 24413f6..67f6782 100644
--- a/cmds/statsd/src/StatsService.cpp
+++ b/cmds/statsd/src/StatsService.cpp
@@ -162,6 +162,38 @@
 }
 
 Status
+StatsService::informAnomalyAlarmFired()
+{
+    ALOGD("StatsService::informAnomalyAlarmFired was called");
+
+    if (IPCThreadState::self()->getCallingUid() != AID_SYSTEM) {
+        return Status::fromExceptionCode(Status::EX_SECURITY,
+                "Only system uid can call informAnomalyAlarmFired");
+    }
+
+    ALOGD("StatsService::informAnomalyAlarmFired succeeded");
+    // TODO: check through all counters/timers and see if an anomaly has indeed occurred.
+
+    return Status::ok();
+}
+
+Status
+StatsService::informPollAlarmFired()
+{
+    ALOGD("StatsService::informPollAlarmFired was called");
+
+    if (IPCThreadState::self()->getCallingUid() != AID_SYSTEM) {
+        return Status::fromExceptionCode(Status::EX_SECURITY,
+                "Only system uid can call informPollAlarmFired");
+    }
+
+    ALOGD("StatsService::informPollAlarmFired succeeded");
+    // TODO: determine what services to poll and poll (or ask StatsCompanionService to poll) them.
+
+    return Status::ok();
+}
+
+Status
 StatsService::systemRunning()
 {
     if (IPCThreadState::self()->getCallingUid() != AID_SYSTEM) {
diff --git a/cmds/statsd/src/StatsService.h b/cmds/statsd/src/StatsService.h
index ef52b562..2a8c3f6 100644
--- a/cmds/statsd/src/StatsService.h
+++ b/cmds/statsd/src/StatsService.h
@@ -49,6 +49,10 @@
 
     virtual Status systemRunning();
 
+    virtual Status informAnomalyAlarmFired();
+
+    virtual Status informPollAlarmFired();
+
     virtual status_t setProcessor(const sp<StatsLogProcessor>& main_processor);
 
 private: