blob: 36d181f91fba737534e220e79c2701de87e97ab1 [file] [log] [blame]
/*
* Copyright (C) 2016 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.hardware.location;
import android.annotation.SystemApi;
import android.os.Parcel;
import android.os.Parcelable;
/**
* A class describing nano apps.
* A nano app is a piece of executable code that can be
* downloaded onto a specific architecture. These are targtted
* for low power compute domains on a device.
*
* Nano apps are expected to be used only by bundled apps only
* at this time.
*
* @hide
*/
@SystemApi
public class NanoApp {
private String mPublisher;
private String mName;
private int mAppId;
private int mAppVersion;
private int mNeededReadMemBytes;
private int mNeededWriteMemBytes;
private int mNeededExecMemBytes;
private int[] mNeededSensors;
private int[] mOutputEvents;
private byte[] mAppBinary;
public NanoApp() {
}
/**
* Set the publisher name
*
* @param publisher name of the publisher of this nano app
*/
public void setPublisher(String publisher) {
mPublisher = publisher;
}
/**
* set the name of the app
*
* @param name name of the app
*/
public void setName(String name) {
mName = name;
}
/**
* set the app identifier
*
* @param appId add identifier
*/
public void setAppId(int appId) {
mAppId = appId;
}
/**
* Set the app version
*
* @param appVersion app version
*/
public void setAppVersion(int appVersion) {
mAppVersion = appVersion;
}
/**
* set memory needed as read only
*
* @param neededReadMemBytes
* read only memory needed in bytes
*/
public void setNeededReadMemBytes(int neededReadMemBytes) {
mNeededReadMemBytes = neededReadMemBytes;
}
/**
* set writable memory needed in bytes
*
* @param neededWriteMemBytes
* writable memory needed in bytes
*/
public void setNeededWriteMemBytes(int neededWriteMemBytes) {
mNeededWriteMemBytes = neededWriteMemBytes;
}
/**
* set executable memory needed
*
* @param neededExecMemBytes
* executable memory needed in bytes
*/
public void setNeededExecMemBytes(int neededExecMemBytes) {
mNeededExecMemBytes = neededExecMemBytes;
}
/**
* set the sensors needed for this app
*
* @param neededSensors
* needed Sensors
*/
public void setNeededSensors(int[] neededSensors) {
mNeededSensors = neededSensors;
}
public void setOutputEvents(int[] outputEvents) {
mOutputEvents = outputEvents;
}
/**
* set output events returned by the nano app
*
* @param appBinary generated events
*/
public void setAppBinary(byte[] appBinary) {
mAppBinary = appBinary;
}
/**
* get the publisher name
*
* @return publisher name
*/
public String getPublisher() {
return mPublisher;
}
/**
* get the name of the app
*
* @return app name
*/
public String getName() {
return mName;
}
/**
* get the identifier of the app
*
* @return identifier for this app
*/
public int getAppId() {
return mAppId;
}
/**
* get the app version
*
* @return app version
*/
public int getAppVersion() {
return mAppVersion;
}
/**
* get the ammount of readable memory needed by this app
*
* @return readable memory needed in bytes
*/
public int getNeededReadMemBytes() {
return mNeededReadMemBytes;
}
/**
* get the ammount og writable memory needed in bytes
*
* @return writable memory needed in bytes
*/
public int getNeededWriteMemBytes() {
return mNeededWriteMemBytes;
}
/**
* executable memory needed in bytes
*
* @return executable memory needed in bytes
*/
public int getNeededExecMemBytes() {
return mNeededExecMemBytes;
}
/**
* get the sensors needed by this app
*
* @return sensors needed
*/
public int[] getNeededSensors() {
return mNeededSensors;
}
/**
* get the events generated by this app
*
* @return generated events
*/
public int[] getOutputEvents() {
return mOutputEvents;
}
/**
* get the binary for this app
*
* @return app binary
*/
public byte[] getAppBinary() {
return mAppBinary;
}
private NanoApp(Parcel in) {
mPublisher = in.readString();
mName = in.readString();
mAppId = in.readInt();
mAppVersion = in.readInt();
mNeededReadMemBytes = in.readInt();
mNeededWriteMemBytes = in.readInt();
mNeededExecMemBytes = in.readInt();
int mNeededSensorsLength = in.readInt();
mNeededSensors = new int[mNeededSensorsLength];
in.readIntArray(mNeededSensors);
int mOutputEventsLength = in.readInt();
mOutputEvents = new int[mOutputEventsLength];
in.readIntArray(mOutputEvents);
int binaryLength = in.readInt();
mAppBinary = new byte[binaryLength];
in.readByteArray(mAppBinary);
}
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
out.writeString(mPublisher);
out.writeString(mName);
out.writeInt(mAppId);
out.writeInt(mAppVersion);
out.writeInt(mNeededReadMemBytes);
out.writeInt(mNeededWriteMemBytes);
out.writeInt(mNeededExecMemBytes);
out.writeInt(mNeededSensors.length);
out.writeIntArray(mNeededSensors);
out.writeInt(mOutputEvents.length);
out.writeIntArray(mOutputEvents);
out.writeInt(mAppBinary.length);
out.writeByteArray(mAppBinary);
}
public static final Parcelable.Creator<NanoApp> CREATOR
= new Parcelable.Creator<NanoApp>() {
public NanoApp createFromParcel(Parcel in) {
return new NanoApp(in);
}
public NanoApp[] newArray(int size) {
return new NanoApp[size];
}
};
}