blob: b5e7f436cd25fb60aba7b5b6d96a4d00c4e2b957 [file] [log] [blame]
/**
* Copyright (C) 2014 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.service.dreams;
import android.os.RemoteException;
import android.util.Log;
/**
* Provides access to low-level hardware features that a dream may use to provide
* a richer user experience while dozing.
* <p>
* This class contains functions that should be called by the dream to configure
* hardware before starting to doze and allowing the application processor to suspend.
* For example, the dream may provide the hardware with enough information to render
* some content on its own without any further assistance from the application processor.
* </p><p>
* This object is obtained by calling {@link DreamService#getDozeHardware()}.
* </p>
*
* @hide experimental
*/
public final class DozeHardware {
private static final String TAG = "DozeHardware";
public static final String MSG_ENABLE_MCU = "enable_mcu";
public static final byte[] VALUE_ON = "on".getBytes();
public static final byte[] VALUE_OFF = "off".getBytes();
private final IDozeHardware mHardware;
DozeHardware(IDozeHardware hardware) {
mHardware = hardware;
}
/**
* Sets whether to enable the microcontroller.
*
* @param enable If true, enables the MCU otherwise disables it.
*/
public void setEnableMcu(boolean enable) {
sendMessage(MSG_ENABLE_MCU, enable ? VALUE_ON : VALUE_OFF);
}
/**
* Sends a message to the doze hardware module.
*
* @param msg The name of the message to send.
* @param arg An optional argument data blob, may be null.
* @return A result data blob, may be null.
*/
public byte[] sendMessage(String msg, byte[] arg) {
if (msg == null) {
throw new IllegalArgumentException("msg must not be null");
}
try {
return mHardware.sendMessage(msg, arg);
} catch (RemoteException ex) {
Log.e(TAG, "Failed to send message to doze hardware module.", ex);
return null;
}
}
}