Extended exsisting servicetracker HAL for callbacks
With it's newer version, client will be able to register for callbacks.
Support has been added for notifying registered clients for change
in activity state.
Change-Id: I47ee97062ad4c4e7be363d6ea279608e6d8c4219
diff --git a/servicetracker/1.2/IActivityEventInfoCallback.hal b/servicetracker/1.2/IActivityEventInfoCallback.hal
new file mode 100644
index 0000000..16ae469
--- /dev/null
+++ b/servicetracker/1.2/IActivityEventInfoCallback.hal
@@ -0,0 +1,34 @@
+/*
+* Copyright (c) 2020 The Linux Foundation. All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are
+* met:
+* * Redistributions of source code must retain the above copyright
+* notice, this list of conditions and the following disclaimer.
+* * Redistributions in binary form must reproduce the above
+* copyright notice, this list of conditions and the following
+* disclaimer in the documentation and/or other materials provided
+* with the distribution.
+* * Neither the name of The Linux Foundation. nor the names of its
+* contributors may be used to endorse or promote products derived
+* from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+package vendor.qti.hardware.servicetracker@1.2;
+
+interface IActivityEventInfoCallback {
+ oneway notifyActivityEvent(ActivityStates aState, ActivityDetails aDetails, ActivityStats aStats, bool early_notify, int32_t userdata);
+};
diff --git a/servicetracker/1.2/IServicetracker.hal b/servicetracker/1.2/IServicetracker.hal
new file mode 100644
index 0000000..d7d4940
--- /dev/null
+++ b/servicetracker/1.2/IServicetracker.hal
@@ -0,0 +1,81 @@
+/*
+* Copyright (c) 2019-2020 The Linux Foundation. All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are
+* met:
+* * Redistributions of source code must retain the above copyright
+* notice, this list of conditions and the following disclaimer.
+* * Redistributions in binary form must reproduce the above
+* copyright notice, this list of conditions and the following
+* disclaimer in the documentation and/or other materials provided
+* with the distribution.
+* * Neither the name of The Linux Foundation. nor the names of its
+* contributors may be used to endorse or promote products derived
+* from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+package vendor.qti.hardware.servicetracker@1.2;
+
+import @1.1::IServicetracker;
+import @1.0::types;
+import IActivityEventInfoCallback;
+
+interface IServicetracker extends @1.1::IServicetracker {
+ /**
+ * Register a callback for any activity lifecycle events.
+ *
+ * Registering a new callback must not unregister the old one; the old
+ * callback remains registered until one of the following happens:
+ * - client explicitly calls {@link unregisterCallback} to unregister it.
+ * - The client process that hosts the callback dies.
+ *
+ * @param callback the callback to register.
+ * @param aNotify Type of notification client wants to listen for.
+ * @param userdata userdata passed by client when registered
+ * @return result SUCCESS if successful,
+ CALLBACK_EXIST if callback is already registered,
+ ERROR_INVALID_ARGS if invalid callback tries to register,
+ * UNKNOWN for other errors.
+ */
+ registerCallback(IActivityEventInfoCallback callback, NotifyType aNotify, int32_t userdata) generates (Status result);
+
+
+ /**
+ * Explicitly unregister a callback that is previously registered through
+ * {@link registerCallback}.
+ *
+ * @param callback the callback to unregister
+ * @return result SUCCESS if successful,
+ * NOT_FOUND if callback is not registered previously,
+ * UNKNOWN for other errors.
+ */
+ unregisterCallback(IActivityEventInfoCallback callback) generates (Status result);
+
+ /**
+ * Get notified whenever there is a change in activity state in ActivityManagerService
+ *
+ * @param aState New state attained by activity
+ * @param aDetails Information associated with an activity with every state change.
+ * @param aStats activity's statistics w.r.t it's create time, no. of launch etc.
+ * @param early_notify If notification is received as a part of early notification.
+ * @return result SUCCESS if successful,
+ * UNKNOWN for other errors.
+ */
+ oneway OnActivityStateChange(ActivityStates aState, ActivityDetails aDetails, ActivityStats aStats, bool early_notify);
+
+};
+
+
diff --git a/servicetracker/1.2/types.hal b/servicetracker/1.2/types.hal
new file mode 100644
index 0000000..320f5a0
--- /dev/null
+++ b/servicetracker/1.2/types.hal
@@ -0,0 +1,87 @@
+/*
+* Copyright (c) 2020 The Linux Foundation. All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are
+* met:
+* * Redistributions of source code must retain the above copyright
+* notice, this list of conditions and the following disclaimer.
+* * Redistributions in binary form must reproduce the above
+* copyright notice, this list of conditions and the following
+* disclaimer in the documentation and/or other materials provided
+* with the distribution.
+* * Neither the name of The Linux Foundation. nor the names of its
+* contributors may be used to endorse or promote products derived
+* from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+package vendor.qti.hardware.servicetracker@1.2;
+
+import @1.0::Status;
+
+enum Status : @1.0::Status {
+ CALLBACK_EXIST,
+ CALLBACK_DIED,
+};
+
+/**
+* Activity details provided by ActivityManagerServices
+*/
+struct ActivityDetails {
+ int32_t launchedFromPid;
+ int32_t launchedFromUid;
+ string packageName;
+ string processName;
+ string intent;
+ string className;
+ int32_t versioncode;
+};
+
+/**
+* Activity events related statists from AMS
+*/
+struct ActivityStats {
+ int64_t createTime;
+ int64_t lastVisibleTime;
+ int32_t launchCount;
+ int64_t lastLaunchTime;
+};
+
+/**
+*Enum values indicating the various activity states
+*/
+enum ActivityStates : int32_t {
+ INITIALIZING,
+ STARTED,
+ RESUMED,
+ PAUSING,
+ PAUSED,
+ STOPPING,
+ STOPPED,
+ FINISHING,
+ DESTROYING,
+ DESTROYED,
+ RESTARTING_PROCESS,
+ UNKNOWN,
+};
+
+/**
+*Enum values indicatiing notification type
+*/
+enum NotifyType : int32_t {
+ EARLY = 0,
+ LATE = 1,
+ BOTH = 2,
+};
diff --git a/servicetracker/current.txt b/servicetracker/current.txt
index 49922dc..ff4c089 100644
--- a/servicetracker/current.txt
+++ b/servicetracker/current.txt
@@ -1,4 +1,4 @@
-# Copyright (c) 2019, The Linux Foundation. All rights reserved.
+# Copyright (c) 2019-2020, The Linux Foundation. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
@@ -34,3 +34,8 @@
######HAL released in Android Q######
e1112e99ed844f2e3d9d653acc818391dc0470b810704f59928b021a11eca675 vendor.qti.hardware.servicetracker@1.1::IServicetracker
+
+######HAL released in Android R######
+b21a4655232991b5121fc0c86522bdb76f8d519540deac62c85de5b7315a3e55 vendor.qti.hardware.servicetracker@1.2::types
+75c7c3e72c2efa195b743d1395dd3ea6ef96761a8503392f945d2f691ea0d2d0 vendor.qti.hardware.servicetracker@1.2::IActivityEventInfoCallback
+dc8389391ce48795d11717f6973f8e92a1f660fd6d5bc60e5de8ae19c1d16103 vendor.qti.hardware.servicetracker@1.2::IServicetracker