Activity Recognition HAL.

Add separate methods for enabling/disabling activities and rename activity constants.

Change-Id: I5986f6cf6ceb12a88f3d881ac5ccb6b9b50a2e58
diff --git a/include/hardware/activity_recognition.h b/include/hardware/activity_recognition.h
index ecac856..6ae90b7 100644
--- a/include/hardware/activity_recognition.h
+++ b/include/hardware/activity_recognition.h
@@ -44,19 +44,19 @@
  */
 
 /* Reserved. get_supported_activities_list() should not return this activity. */
-#define DETECTED_ACTIVITY_RESERVED          (0)
+#define ACTIVITY_RESERVED          (0)
 
-#define DETECTED_ACTIVITY_IN_VEHICLE        (1)
+#define ACTIVITY_IN_VEHICLE        (1)
 
-#define DETECTED_ACTIVITY_ON_BICYCLE        (2)
+#define ACTIVITY_ON_BICYCLE        (2)
 
-#define DETECTED_ACTIVITY_WALKING           (3)
+#define ACTIVITY_WALKING           (3)
 
-#define DETECTED_ACTIVITY_RUNNING           (4)
+#define ACTIVITY_RUNNING           (4)
 
-#define DETECTED_ACTIVITY_STILL             (5)
+#define ACTIVITY_STILL             (5)
 
-#define DETECTED_ACTIVITY_TILTING           (6)
+#define ACTIVITY_TILTING           (6)
 
 /* Values for activity_event.event_types. */
 enum {
@@ -70,7 +70,7 @@
      *
      * A flush complete event should have the following parameters set.
      * activity_event_t.event_type = ACTIVITY_EVENT_TYPE_FLUSH_COMPLETE
-     * activity_event_t.detected_activity = DETECTED_ACTIVITY_RESERVED
+     * activity_event_t.activity = ACTIVITY_RESERVED
      * activity_event_t.timestamp = 0
      * activity_event_t.reserved = 0
      * See (*flush)() for more details.
@@ -86,14 +86,14 @@
 
 /*
  * Each event is a separate activity with event_type indicating whether this activity has started
- * or ended. Eg event: (event_type="enter", detected_activity="ON_FOOT", timestamp)
+ * or ended. Eg event: (event_type="enter", activity="ON_FOOT", timestamp)
  */
 typedef struct activity_event {
     /* One of the ACTIVITY_EVENT_TYPE_* constants defined above. */
     uint32_t event_type;
 
-    /* Detected Activity. One of DETECTED_ACTIVITY_TYPE_* constants defined above. */
-    int32_t detected_activity;
+    /* One of ACTIVITY_* constants defined above. */
+    uint32_t activity;
 
     /* Time at which the transition/event has occurred in nanoseconds using elapsedRealTimeNano. */
     int64_t timestamp;
@@ -113,7 +113,7 @@
 
     /*
      * List of all activities supported by this module. Each activity is represented as an integer.
-     * Each value in the list is one of the DETECTED_ACTIVITY_* constants defined above. Return
+     * Each value in the list is one of the ACTIVITY_* constants defined above. Return
      * value is the size of this list.
      */
     int (*get_supported_activities_list)(struct activity_recognition_module* module,
@@ -127,7 +127,7 @@
     // Memory allocated for the events can be reused after this method returns.
     //    events - Array of activity_event_t s that are reported.
     //    count  - size of the array.
-    void (*activity_callback)(const struct activity_recognition_device* dev,
+    void (*activity_callback)(const struct activity_recognition_callback_procs* procs,
             const activity_event_t* events, int count);
 } activity_recognition_callback_procs_t;
 
@@ -148,27 +148,31 @@
             const activity_recognition_callback_procs_t* callback);
 
     /*
-     * Activates and deactivates monitoring of activity transitions. Activities need not be reported
-     * as soon as they are detected. The detected activities are stored in a FIFO and reported in
-     * batches when the "max_batch_report_latency" expires or when the batch FIFO is full. The
-     * implementation should allow the AP to go into suspend mode while the activities are detected
-     * and stored in the batch FIFO. Whenever events need to be reported (like when the FIFO is full
-     * or when the max_batch_report_latency has expired for an activity, event pair), it should
-     * wake_up the AP so that no events are lost. Activities are stored as transitions and they are
-     * allowed to overlap with each other.
-     * detected_activity - The specific activity that needs to be monitored.
-     * event_type    - Specific transition of the activity that needs to be monitored.
-     * enabled       - Enable/Disable detection of an (detected_activity, event_type) pair. Each
-     *                 pair can be activated or deactivated independently of the other. The HAL
-     *                 implementation needs to keep track of which pairs are currently active
-     *                 and needs to detect only those activities.
-     * max_batch_report_latency - a transition can be delayed by at most
-     *                            “max_batch_report_latency” nanoseconds.
+     * Activates monitoring of activity transitions. Activities need not be reported as soon as they
+     * are detected. The detected activities are stored in a FIFO and reported in batches when the
+     * "max_batch_report_latency" expires or when the batch FIFO is full. The implementation should
+     * allow the AP to go into suspend mode while the activities are detected and stored in the
+     * batch FIFO. Whenever events need to be reported (like when the FIFO is full or when the
+     * max_batch_report_latency has expired for an activity, event pair), it should wake_up the AP
+     * so that no events are lost. Activities are stored as transitions and they are allowed to
+     * overlap with each other. Each (activity, event_type) pair can be activated or deactivated
+     * independently of the other. The HAL implementation needs to keep track of which pairs are
+     * currently active and needs to detect only those pairs.
+     *
+     * activity   - The specific activity that needs to be detected.
+     * event_type - Specific transition of the activity that needs to be detected.
+     * max_batch_report_latency_ns - a transition can be delayed by at most
+     *                               “max_batch_report_latency” nanoseconds.
      * Return 0 on success, negative errno code otherwise.
      */
-    int (*monitor_activity_event)(const struct activity_recognition_device* dev,
-            int32_t detected_activity, int32_t event_type, int64_t max_batch_report_latency_ns,
-            int32_t enabled);
+    int (*enable_activity_event)(const struct activity_recognition_device* dev,
+            uint32_t activity, uint32_t event_type, int64_t max_batch_report_latency_ns);
+
+    /*
+     * Disables detection of a specific (activity, event_type) pair.
+     */
+    int (*disable_activity_event)(const struct activity_recognition_device* dev,
+            uint32_t activity, uint32_t event_type);
 
     /*
      * Flush all the batch FIFOs. Report all the activities that were stored in the FIFO so far as
@@ -180,7 +184,7 @@
     int (*flush)(const struct activity_recognition_device* dev);
 
     // Must be set to NULL.
-    void (*reserved_procs[4])(void);
+    void (*reserved_procs[16 - 4])(void);
 } activity_recognition_device_t;
 
 static inline int activity_recognition_open(const hw_module_t* module,