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

Commit 54787a5f authored by Ashutosh Joshi's avatar Ashutosh Joshi
Browse files

Add state for loading/unloading apps

Add state for loading/unloading nanoApps.
Pass on OS response to ContextHubService clients.
Fix Build Breakage due to uninitalized variables.

Bug: 29193948
Change-Id: Ibebecf704bb3ad2583e110f1fcf05400a53b1b4c
parent 1165790f
Loading
Loading
Loading
Loading
+53 −27
Original line number Original line Diff line number Diff line
@@ -16,6 +16,11 @@


package android.hardware.location;
package android.hardware.location;


import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;

import android.Manifest;
import android.Manifest;
import android.content.Context;
import android.content.Context;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager;
@@ -53,10 +58,14 @@ public class ContextHubService extends IContextHubService.Stub {
    private static final int PRE_LOADED_APP_MEM_REQ = 0;
    private static final int PRE_LOADED_APP_MEM_REQ = 0;


    private static final int MSG_HEADER_SIZE = 4;
    private static final int MSG_HEADER_SIZE = 4;
    private static final int MSG_FIELD_TYPE = 0;
    private static final int HEADER_FIELD_MSG_TYPE = 0;
    private static final int MSG_FIELD_VERSION = 1;
    private static final int HEADER_FIELD_MSG_VERSION = 1;
    private static final int MSG_FIELD_HUB_HANDLE = 2;
    private static final int HEADER_FIELD_HUB_HANDLE = 2;
    private static final int MSG_FIELD_APP_INSTANCE = 3;
    private static final int HEADER_FIELD_APP_INSTANCE = 3;

    private static final int HEADER_FIELD_LOAD_APP_ID_LO = MSG_HEADER_SIZE;
    private static final int HEADER_FIELD_LOAD_APP_ID_HI = MSG_HEADER_SIZE + 1;
    private static final int MSG_LOAD_APP_HEADER_SIZE = MSG_HEADER_SIZE + 2;


    private static final int OS_APP_INSTANCE = -1;
    private static final int OS_APP_INSTANCE = -1;


@@ -146,11 +155,16 @@ public class ContextHubService extends IContextHubService.Stub {
            return -1;
            return -1;
        }
        }


        int[] msgHeader = new int[MSG_HEADER_SIZE];
        int[] msgHeader = new int[MSG_LOAD_APP_HEADER_SIZE];
        msgHeader[MSG_FIELD_HUB_HANDLE] = contextHubHandle;
        msgHeader[HEADER_FIELD_HUB_HANDLE] = contextHubHandle;
        msgHeader[MSG_FIELD_APP_INSTANCE] = OS_APP_INSTANCE;
        msgHeader[HEADER_FIELD_APP_INSTANCE] = OS_APP_INSTANCE;
        msgHeader[MSG_FIELD_VERSION] = 0;
        msgHeader[HEADER_FIELD_MSG_VERSION] = 0;
        msgHeader[MSG_FIELD_TYPE] = MSG_LOAD_NANO_APP;
        msgHeader[HEADER_FIELD_MSG_TYPE] = MSG_LOAD_NANO_APP;

        long appId = app.getAppId();

        msgHeader[HEADER_FIELD_LOAD_APP_ID_LO] = (int)(appId & 0xFFFFFFFF);
        msgHeader[HEADER_FIELD_LOAD_APP_ID_HI] = (int)((appId >> 32) & 0xFFFFFFFF);


        if (nativeSendMessage(msgHeader, app.getAppBinary()) != 0) {
        if (nativeSendMessage(msgHeader, app.getAppBinary()) != 0) {
            return -1;
            return -1;
@@ -169,12 +183,14 @@ public class ContextHubService extends IContextHubService.Stub {


        // Call Native interface here
        // Call Native interface here
        int[] msgHeader = new int[MSG_HEADER_SIZE];
        int[] msgHeader = new int[MSG_HEADER_SIZE];
        msgHeader[MSG_FIELD_HUB_HANDLE] = ANY_HUB;
        msgHeader[HEADER_FIELD_HUB_HANDLE] = ANY_HUB;
        msgHeader[MSG_FIELD_APP_INSTANCE] = OS_APP_INSTANCE;
        msgHeader[HEADER_FIELD_APP_INSTANCE] = nanoAppInstanceHandle;
        msgHeader[MSG_FIELD_VERSION] = 0;
        msgHeader[HEADER_FIELD_MSG_VERSION] = 0;
        msgHeader[MSG_FIELD_TYPE] = MSG_UNLOAD_NANO_APP;
        msgHeader[HEADER_FIELD_MSG_TYPE] = MSG_UNLOAD_NANO_APP;


        if (nativeSendMessage(msgHeader, null) != 0) {
        byte msg[] = new byte[0];

        if (nativeSendMessage(msgHeader, msg) != 0) {
            return -1;
            return -1;
        }
        }


@@ -222,10 +238,10 @@ public class ContextHubService extends IContextHubService.Stub {
        checkPermissions();
        checkPermissions();


        int[] msgHeader = new int[MSG_HEADER_SIZE];
        int[] msgHeader = new int[MSG_HEADER_SIZE];
        msgHeader[MSG_FIELD_HUB_HANDLE] = hubHandle;
        msgHeader[HEADER_FIELD_HUB_HANDLE] = hubHandle;
        msgHeader[MSG_FIELD_APP_INSTANCE] = nanoAppHandle;
        msgHeader[HEADER_FIELD_APP_INSTANCE] = nanoAppHandle;
        msgHeader[MSG_FIELD_VERSION] = msg.getVersion();
        msgHeader[HEADER_FIELD_MSG_VERSION] = msg.getVersion();
        msgHeader[MSG_FIELD_TYPE] = msg.getMsgType();
        msgHeader[HEADER_FIELD_MSG_TYPE] = msg.getMsgType();


        return nativeSendMessage(msgHeader, msg.getData());
        return nativeSendMessage(msgHeader, msg.getData());
    }
    }
@@ -269,15 +285,17 @@ public class ContextHubService extends IContextHubService.Stub {
            Log.v(TAG, "No message callbacks registered.");
            Log.v(TAG, "No message callbacks registered.");
            return 0;
            return 0;
        }
        }
        ContextHubMessage message =

                new ContextHubMessage(header[MSG_FIELD_TYPE], header[MSG_FIELD_VERSION], data);
        ContextHubMessage msg = new ContextHubMessage(header[HEADER_FIELD_MSG_TYPE],
                                                      header[HEADER_FIELD_MSG_VERSION],
                                                      data);
        for (int i = 0; i < callbacksCount; ++i) {
        for (int i = 0; i < callbacksCount; ++i) {
            IContextHubCallback callback = mCallbacksList.getBroadcastItem(i);
            IContextHubCallback callback = mCallbacksList.getBroadcastItem(i);
            try {
            try {
                callback.onMessageReceipt(
                callback.onMessageReceipt(
                        header[MSG_FIELD_HUB_HANDLE],
                        header[HEADER_FIELD_HUB_HANDLE],
                        header[MSG_FIELD_APP_INSTANCE],
                        header[HEADER_FIELD_APP_INSTANCE],
                        message);
                        msg);
            } catch (RemoteException e) {
            } catch (RemoteException e) {
                Log.i(TAG, "Exception (" + e + ") calling remote callback (" + callback + ").");
                Log.i(TAG, "Exception (" + e + ") calling remote callback (" + callback + ").");
                continue;
                continue;
@@ -308,12 +326,20 @@ public class ContextHubService extends IContextHubService.Stub {
        return 0;
        return 0;
    }
    }


    private int deleteAppInstance(int appInstanceHandle) {
        if (mNanoAppHash.remove(appInstanceHandle) == null) {
            return -1;
        }

        return 0;
    }

    private void sendVrStateChangeMessageToApp(NanoAppInstanceInfo app, boolean vrModeEnabled) {
    private void sendVrStateChangeMessageToApp(NanoAppInstanceInfo app, boolean vrModeEnabled) {
        int[] msgHeader = new int[MSG_HEADER_SIZE];
        int[] msgHeader = new int[MSG_HEADER_SIZE];
        msgHeader[MSG_FIELD_TYPE] = 0;
        msgHeader[HEADER_FIELD_MSG_TYPE] = 0;
        msgHeader[MSG_FIELD_VERSION] = 0;
        msgHeader[HEADER_FIELD_MSG_VERSION] = 0;
        msgHeader[MSG_FIELD_HUB_HANDLE] = ANY_HUB;
        msgHeader[HEADER_FIELD_HUB_HANDLE] = ANY_HUB;
        msgHeader[MSG_FIELD_APP_INSTANCE] = app.getHandle();
        msgHeader[HEADER_FIELD_APP_INSTANCE] = app.getHandle();


        byte[] data = new byte[1];
        byte[] data = new byte[1];
        data[0] = (byte) ((vrModeEnabled) ? 1 : 0);
        data[0] = (byte) ((vrModeEnabled) ? 1 : 0);
+503 −91

File changed.

Preview size limit exceeded, changes collapsed.