Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7d5bb6e1 authored by Arthur Ishiguro's avatar Arthur Ishiguro
Browse files

Notify CHRE of host endpoint [dis]connections

Bug: 194287786
Test: Verify via logs
Change-Id: I1dee042f8f0da2b20e9b50b26650d38137914443
parent d46eb6c3
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import android.compat.annotation.ChangeId;
import android.compat.annotation.EnabledAfter;
import android.content.Context;
import android.content.Intent;
import android.hardware.contexthub.HostEndpointInfo;
import android.hardware.location.ContextHubInfo;
import android.hardware.location.ContextHubManager;
import android.hardware.location.ContextHubTransaction;
@@ -42,6 +43,7 @@ import android.os.Binder;
import android.os.Build;
import android.os.IBinder;
import android.os.Looper;
import android.os.Process;
import android.os.RemoteException;
import android.util.Log;
import android.util.proto.ProtoOutputStream;
@@ -329,6 +331,15 @@ public class ContextHubClientBroker extends IContextHubClient.Stub
        mAppOpsManager = context.getSystemService(AppOpsManager.class);

        startMonitoringOpChanges();

        HostEndpointInfo info = new HostEndpointInfo();
        info.hostEndpointId = (char) mHostEndPointId;
        info.packageName = mPackage;
        info.attributionTag = mAttributionTag;
        info.type = (mUid == Process.SYSTEM_UID)
             ? HostEndpointInfo.Type.TYPE_FRAMEWORK
             : HostEndpointInfo.Type.TYPE_APP;
        mContextHubProxy.onHostEndpointConnected(info);
    }

    /* package */ ContextHubClientBroker(
@@ -862,6 +873,8 @@ public class ContextHubClientBroker extends IContextHubClient.Stub
            mRegistered = false;
        }
        mAppOpsManager.stopWatchingMode(this);

        mContextHubProxy.onHostEndpointDisconnected(mHostEndPointId);
    }

    private String authStateToString(@ContextHubManager.AuthorizationState int state) {
+33 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@ package com.android.server.location.contexthub;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.hardware.contexthub.HostEndpointInfo;
import android.hardware.contexthub.V1_0.ContextHub;
import android.hardware.contexthub.V1_0.ContextHubMsg;
import android.hardware.contexthub.V1_0.TransactionResult;
@@ -238,6 +239,20 @@ public abstract class IContextHubWrapper {
     */
    public abstract void onMicrophoneSettingChanged(boolean enabled);

    /**
     * Invoked whenever a host client connects with the framework.
     *
     * @param info The host endpoint info.
     */
    public void onHostEndpointConnected(HostEndpointInfo info) {}

    /**
     * Invoked whenever a host client disconnects from the framework.
     *
     * @param hostEndpointId The ID of the host endpoint that disconnected.
     */
    public void onHostEndpointDisconnected(short hostEndpointId) {}

    /**
     * Sends a message to the Context Hub.
     *
@@ -407,6 +422,24 @@ public abstract class IContextHubWrapper {
            onSettingChanged(android.hardware.contexthub.Setting.WIFI_SCANNING, enabled);
        }

        @Override
        public void onHostEndpointConnected(HostEndpointInfo info) {
            try {
                mHub.onHostEndpointConnected(info);
            } catch (RemoteException e) {
                Log.e(TAG, "RemoteException in onHostEndpointConnected");
            }
        }

        @Override
        public void onHostEndpointDisconnected(short hostEndpointId) {
            try {
                mHub.onHostEndpointDisconnected((char) hostEndpointId);
            } catch (RemoteException e) {
                Log.e(TAG, "RemoteException in onHostEndpointDisconnected");
            }
        }

        @ContextHubTransaction.Result
        public int sendMessageToContextHub(
                short hostEndpointId, int contextHubId, NanoAppMessage message)