Merge "App upload to Context hub." into nyc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
b4cc448946
@@ -38,8 +38,8 @@ public class ContextHubService extends IContextHubService.Stub {
|
|||||||
|
|
||||||
|
|
||||||
public static final int ANY_HUB = -1;
|
public static final int ANY_HUB = -1;
|
||||||
public static final int MSG_LOAD_NANO_APP = 5;
|
public static final int MSG_LOAD_NANO_APP = 3;
|
||||||
public static final int MSG_UNLOAD_NANO_APP = 2;
|
public static final int MSG_UNLOAD_NANO_APP = 4;
|
||||||
|
|
||||||
private static final String PRE_LOADED_GENERIC_UNKNOWN = "Preloaded app, unknown";
|
private static final String PRE_LOADED_GENERIC_UNKNOWN = "Preloaded app, unknown";
|
||||||
private static final String PRE_LOADED_APP_NAME = PRE_LOADED_GENERIC_UNKNOWN;
|
private static final String PRE_LOADED_APP_NAME = PRE_LOADED_GENERIC_UNKNOWN;
|
||||||
|
|||||||
@@ -33,7 +33,7 @@
|
|||||||
#include "JNIHelp.h"
|
#include "JNIHelp.h"
|
||||||
#include "core_jni_helpers.h"
|
#include "core_jni_helpers.h"
|
||||||
|
|
||||||
//static constexpr int OS_APP_ID=-1;
|
static constexpr int OS_APP_ID=-1;
|
||||||
|
|
||||||
static constexpr int MIN_APP_ID=1;
|
static constexpr int MIN_APP_ID=1;
|
||||||
static constexpr int MAX_APP_ID=128;
|
static constexpr int MAX_APP_ID=128;
|
||||||
@@ -145,6 +145,14 @@ static int set_os_app_as_destination(hub_message_t *msg, int hubHandle) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int get_hub_id_for_hub_handle(int hubHandle) {
|
||||||
|
if (hubHandle < 0 || hubHandle >= db.hubInfo.numHubs) {
|
||||||
|
return -1;
|
||||||
|
} else {
|
||||||
|
return db.hubInfo.hubs[hubHandle].hub_id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static int get_hub_id_for_app_instance(int id) {
|
static int get_hub_id_for_app_instance(int id) {
|
||||||
if (db.appInstances.find(id) == db.appInstances.end()) {
|
if (db.appInstances.find(id) == db.appInstances.end()) {
|
||||||
ALOGD("%s: Cannot find app for app instance %d", __FUNCTION__, id);
|
ALOGD("%s: Cannot find app for app instance %d", __FUNCTION__, id);
|
||||||
@@ -616,7 +624,6 @@ static jobjectArray nativeInitialize(JNIEnv *env, jobject instance)
|
|||||||
|
|
||||||
static jint nativeSendMessage(JNIEnv *env, jobject instance, jintArray header_,
|
static jint nativeSendMessage(JNIEnv *env, jobject instance, jintArray header_,
|
||||||
jbyteArray data_) {
|
jbyteArray data_) {
|
||||||
hub_message_t msg;
|
|
||||||
jint retVal = -1; // Default to failure
|
jint retVal = -1; // Default to failure
|
||||||
|
|
||||||
jint *header = env->GetIntArrayElements(header_, 0);
|
jint *header = env->GetIntArrayElements(header_, 0);
|
||||||
@@ -624,16 +631,30 @@ static jint nativeSendMessage(JNIEnv *env, jobject instance, jintArray header_,
|
|||||||
jbyte *data = env->GetByteArrayElements(data_, 0);
|
jbyte *data = env->GetByteArrayElements(data_, 0);
|
||||||
int dataBufferLength = env->GetArrayLength(data_);
|
int dataBufferLength = env->GetArrayLength(data_);
|
||||||
|
|
||||||
|
|
||||||
if (numHeaderElements >= MSG_HEADER_SIZE) {
|
if (numHeaderElements >= MSG_HEADER_SIZE) {
|
||||||
if (set_dest_app(&msg, header[HEADER_FIELD_APP_INSTANCE]) == 0) {
|
int setAddressSuccess;
|
||||||
msg.message_type = header[HEADER_FIELD_MSG_TYPE];
|
int hubId;
|
||||||
msg.message_len = dataBufferLength;
|
hub_message_t msg;
|
||||||
msg.message = data;
|
|
||||||
retVal = db.hubInfo.contextHubModule->send_message(
|
if (header[HEADER_FIELD_APP_INSTANCE] == OS_APP_ID) {
|
||||||
get_hub_id_for_app_instance(header[HEADER_FIELD_APP_INSTANCE]),
|
setAddressSuccess = (set_os_app_as_destination(&msg, header[HEADER_FIELD_HUB_HANDLE]) == 0);
|
||||||
&msg);
|
hubId = get_hub_id_for_hub_handle(header[HEADER_FIELD_HUB_HANDLE]);
|
||||||
} else {
|
} else {
|
||||||
ALOGD("Could not find app instance %d", header[HEADER_FIELD_APP_INSTANCE]);
|
setAddressSuccess = (set_dest_app(&msg, header[HEADER_FIELD_APP_INSTANCE]) == 0);
|
||||||
|
hubId = get_hub_id_for_app_instance(header[HEADER_FIELD_APP_INSTANCE]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (setAddressSuccess && hubId >= 0) {
|
||||||
|
msg.message_type = header[HEADER_FIELD_MSG_TYPE];
|
||||||
|
msg.message_len = dataBufferLength;
|
||||||
|
msg.message = data;
|
||||||
|
retVal = db.hubInfo.contextHubModule->send_message(hubId, &msg);
|
||||||
|
} else {
|
||||||
|
ALOGD("Could not find app instance %d on hubHandle %d, setAddress %d",
|
||||||
|
header[HEADER_FIELD_APP_INSTANCE],
|
||||||
|
header[HEADER_FIELD_HUB_HANDLE],
|
||||||
|
setAddressSuccess);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ALOGD("Malformed header len");
|
ALOGD("Malformed header len");
|
||||||
|
|||||||
Reference in New Issue
Block a user