Merge changes I5a26c853,Ie4ec660a
* changes: Implements disableNanoApp Implements enableNanoApp
This commit is contained in:
committed by
Android (Google) Code Review
commit
37924ca6ee
@@ -271,7 +271,7 @@ public final class ContextHubManager {
|
||||
throw new UnsupportedOperationException("TODO: Implement this");
|
||||
}
|
||||
|
||||
/*
|
||||
/**
|
||||
* Helper function to generate a stub for a non-query transaction callback.
|
||||
*
|
||||
* @param transaction the transaction to unblock when complete
|
||||
@@ -297,7 +297,7 @@ public final class ContextHubManager {
|
||||
};
|
||||
}
|
||||
|
||||
/*
|
||||
/**
|
||||
* Helper function to generate a stub for a query transaction callback.
|
||||
*
|
||||
* @param transaction the transaction to unblock when complete
|
||||
@@ -392,7 +392,17 @@ public final class ContextHubManager {
|
||||
*/
|
||||
@RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE)
|
||||
public ContextHubTransaction<Void> enableNanoApp(ContextHubInfo hubInfo, long nanoAppId) {
|
||||
throw new UnsupportedOperationException("TODO: Implement this");
|
||||
ContextHubTransaction<Void> transaction =
|
||||
new ContextHubTransaction<>(ContextHubTransaction.TYPE_ENABLE_NANOAPP);
|
||||
IContextHubTransactionCallback callback = createTransactionCallback(transaction);
|
||||
|
||||
try {
|
||||
mService.enableNanoApp(hubInfo.getId(), callback, nanoAppId);
|
||||
} catch (RemoteException e) {
|
||||
throw e.rethrowFromSystemServer();
|
||||
}
|
||||
|
||||
return transaction;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -407,7 +417,17 @@ public final class ContextHubManager {
|
||||
*/
|
||||
@RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE)
|
||||
public ContextHubTransaction<Void> disableNanoApp(ContextHubInfo hubInfo, long nanoAppId) {
|
||||
throw new UnsupportedOperationException("TODO: Implement this");
|
||||
ContextHubTransaction<Void> transaction =
|
||||
new ContextHubTransaction<>(ContextHubTransaction.TYPE_DISABLE_NANOAPP);
|
||||
IContextHubTransactionCallback callback = createTransactionCallback(transaction);
|
||||
|
||||
try {
|
||||
mService.disableNanoApp(hubInfo.getId(), callback, nanoAppId);
|
||||
} catch (RemoteException e) {
|
||||
throw e.rethrowFromSystemServer();
|
||||
}
|
||||
|
||||
return transaction;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -70,6 +70,16 @@ interface IContextHubService {
|
||||
int contextHubId, in IContextHubTransactionCallback transactionCallback,
|
||||
long nanoAppId);
|
||||
|
||||
// Enables a nanoapp at the specified hub
|
||||
void enableNanoApp(
|
||||
int contextHubId, in IContextHubTransactionCallback transactionCallback,
|
||||
long nanoAppId);
|
||||
|
||||
// Disables a nanoapp at the specified hub
|
||||
void disableNanoApp(
|
||||
int contextHubId, in IContextHubTransactionCallback transactionCallback,
|
||||
long nanoAppId);
|
||||
|
||||
// Queries for a list of nanoapps
|
||||
void queryNanoApps(int contextHubId, in IContextHubTransactionCallback transactionCallback);
|
||||
}
|
||||
|
||||
@@ -642,11 +642,10 @@ public class ContextHubService extends IContextHubService.Stub {
|
||||
/**
|
||||
* Loads a nanoapp binary at the specified Context hub.
|
||||
*
|
||||
* @param contextHubId the ID of the hub to load the binary
|
||||
* @param contextHubId the ID of the hub to load the binary
|
||||
* @param transactionCallback the client-facing transaction callback interface
|
||||
* @param nanoAppBinary the binary to load
|
||||
* @param nanoAppBinary the binary to load
|
||||
*
|
||||
* @throws RemoteException
|
||||
* @throws IllegalStateException if the transaction queue is full
|
||||
*/
|
||||
@Override
|
||||
@@ -673,11 +672,10 @@ public class ContextHubService extends IContextHubService.Stub {
|
||||
/**
|
||||
* Unloads a nanoapp from the specified Context Hub.
|
||||
*
|
||||
* @param contextHubId the ID of the hub to unload the nanoapp
|
||||
* @param contextHubId the ID of the hub to unload the nanoapp
|
||||
* @param transactionCallback the client-facing transaction callback interface
|
||||
* @param nanoAppId the ID of the nanoapp to unload
|
||||
* @param nanoAppId the ID of the nanoapp to unload
|
||||
*
|
||||
* @throws RemoteException
|
||||
* @throws IllegalStateException if the transaction queue is full
|
||||
*/
|
||||
@Override
|
||||
@@ -695,13 +693,60 @@ public class ContextHubService extends IContextHubService.Stub {
|
||||
mTransactionManager.addTransaction(transaction);
|
||||
}
|
||||
|
||||
/**
|
||||
* Enables a nanoapp at the specified Context Hub.
|
||||
*
|
||||
* @param contextHubId the ID of the hub to enable the nanoapp
|
||||
* @param transactionCallback the client-facing transaction callback interface
|
||||
* @param nanoAppId the ID of the nanoapp to enable
|
||||
*
|
||||
* @throws IllegalStateException if the transaction queue is full
|
||||
*/
|
||||
@Override
|
||||
public void enableNanoApp(
|
||||
int contextHubId, IContextHubTransactionCallback transactionCallback, long nanoAppId)
|
||||
throws RemoteException {
|
||||
checkPermissions();
|
||||
if (!checkHalProxyAndContextHubId(
|
||||
contextHubId, transactionCallback, ContextHubTransaction.TYPE_ENABLE_NANOAPP)) {
|
||||
return;
|
||||
}
|
||||
|
||||
ContextHubServiceTransaction transaction = mTransactionManager.createEnableTransaction(
|
||||
contextHubId, nanoAppId, transactionCallback);
|
||||
mTransactionManager.addTransaction(transaction);
|
||||
}
|
||||
|
||||
/**
|
||||
* Disables a nanoapp at the specified Context Hub.
|
||||
*
|
||||
* @param contextHubId the ID of the hub to disable the nanoapp
|
||||
* @param transactionCallback the client-facing transaction callback interface
|
||||
* @param nanoAppId the ID of the nanoapp to disable
|
||||
*
|
||||
* @throws IllegalStateException if the transaction queue is full
|
||||
*/
|
||||
@Override
|
||||
public void disableNanoApp(
|
||||
int contextHubId, IContextHubTransactionCallback transactionCallback, long nanoAppId)
|
||||
throws RemoteException {
|
||||
checkPermissions();
|
||||
if (!checkHalProxyAndContextHubId(
|
||||
contextHubId, transactionCallback, ContextHubTransaction.TYPE_DISABLE_NANOAPP)) {
|
||||
return;
|
||||
}
|
||||
|
||||
ContextHubServiceTransaction transaction = mTransactionManager.createDisableTransaction(
|
||||
contextHubId, nanoAppId, transactionCallback);
|
||||
mTransactionManager.addTransaction(transaction);
|
||||
}
|
||||
|
||||
/**
|
||||
* Queries for a list of nanoapps from the specified Context hub.
|
||||
*
|
||||
* @param contextHubId the ID of the hub to query
|
||||
* @param contextHubId the ID of the hub to query
|
||||
* @param transactionCallback the client-facing transaction callback interface
|
||||
*
|
||||
* @throws RemoteException
|
||||
* @throws IllegalStateException if the transaction queue is full
|
||||
*/
|
||||
@Override
|
||||
@@ -713,8 +758,8 @@ public class ContextHubService extends IContextHubService.Stub {
|
||||
return;
|
||||
}
|
||||
|
||||
ContextHubServiceTransaction transaction =
|
||||
mTransactionManager.createQueryTransaction(contextHubId, transactionCallback);
|
||||
ContextHubServiceTransaction transaction = mTransactionManager.createQueryTransaction(
|
||||
contextHubId, transactionCallback);
|
||||
mTransactionManager.addTransaction(transaction);
|
||||
}
|
||||
|
||||
|
||||
@@ -143,7 +143,7 @@ import java.util.concurrent.atomic.AtomicInteger;
|
||||
/**
|
||||
* Creates a transaction for unloading a nanoapp.
|
||||
*
|
||||
* @param contextHubId the ID of the hub to load the nanoapp to
|
||||
* @param contextHubId the ID of the hub to unload the nanoapp from
|
||||
* @param nanoAppId the ID of the nanoapp to unload
|
||||
* @param onCompleteCallback the client on complete callback
|
||||
* @return the generated transaction
|
||||
@@ -181,6 +181,76 @@ import java.util.concurrent.atomic.AtomicInteger;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a transaction for enabling a nanoapp.
|
||||
*
|
||||
* @param contextHubId the ID of the hub to enable the nanoapp on
|
||||
* @param nanoAppId the ID of the nanoapp to enable
|
||||
* @param onCompleteCallback the client on complete callback
|
||||
* @return the generated transaction
|
||||
*/
|
||||
/* package */ ContextHubServiceTransaction createEnableTransaction(
|
||||
int contextHubId, long nanoAppId, IContextHubTransactionCallback onCompleteCallback) {
|
||||
return new ContextHubServiceTransaction(
|
||||
mNextAvailableId.getAndIncrement(), ContextHubTransaction.TYPE_ENABLE_NANOAPP) {
|
||||
@Override
|
||||
/* package */ int onTransact() {
|
||||
try {
|
||||
return mContextHubProxy.enableNanoApp(
|
||||
contextHubId, nanoAppId, this.getTransactionId());
|
||||
} catch (RemoteException e) {
|
||||
Log.e(TAG, "RemoteException while trying to enable nanoapp with ID 0x" +
|
||||
Long.toHexString(nanoAppId), e);
|
||||
return Result.UNKNOWN_FAILURE;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
/* package */ void onTransactionComplete(@ContextHubTransaction.Result int result) {
|
||||
try {
|
||||
onCompleteCallback.onTransactionComplete(result);
|
||||
} catch (RemoteException e) {
|
||||
Log.e(TAG, "RemoteException while calling client onTransactionComplete", e);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a transaction for disabling a nanoapp.
|
||||
*
|
||||
* @param contextHubId the ID of the hub to disable the nanoapp on
|
||||
* @param nanoAppId the ID of the nanoapp to disable
|
||||
* @param onCompleteCallback the client on complete callback
|
||||
* @return the generated transaction
|
||||
*/
|
||||
/* package */ ContextHubServiceTransaction createDisableTransaction(
|
||||
int contextHubId, long nanoAppId, IContextHubTransactionCallback onCompleteCallback) {
|
||||
return new ContextHubServiceTransaction(
|
||||
mNextAvailableId.getAndIncrement(), ContextHubTransaction.TYPE_DISABLE_NANOAPP) {
|
||||
@Override
|
||||
/* package */ int onTransact() {
|
||||
try {
|
||||
return mContextHubProxy.disableNanoApp(
|
||||
contextHubId, nanoAppId, this.getTransactionId());
|
||||
} catch (RemoteException e) {
|
||||
Log.e(TAG, "RemoteException while trying to disable nanoapp with ID 0x" +
|
||||
Long.toHexString(nanoAppId), e);
|
||||
return Result.UNKNOWN_FAILURE;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
/* package */ void onTransactionComplete(@ContextHubTransaction.Result int result) {
|
||||
try {
|
||||
onCompleteCallback.onTransactionComplete(result);
|
||||
} catch (RemoteException e) {
|
||||
Log.e(TAG, "RemoteException while calling client onTransactionComplete", e);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a transaction for querying for a list of nanoapps.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user