Loading cmds/hid/jni/com_android_commands_hid_Device.cpp +6 −4 Original line number Diff line number Diff line Loading @@ -113,9 +113,10 @@ void DeviceCallback::onDeviceGetReport(uint32_t requestId, uint8_t reportId) { checkAndClearException(env, "onDeviceGetReport"); } void DeviceCallback::onDeviceOutput(uint8_t rType, const std::vector<uint8_t>& data) { void DeviceCallback::onDeviceOutput(uint8_t eventId, uint8_t rType, const std::vector<uint8_t>& data) { JNIEnv* env = getJNIEnv(); env->CallVoidMethod(mCallbackObject, gDeviceCallbackClassInfo.onDeviceOutput, rType, env->CallVoidMethod(mCallbackObject, gDeviceCallbackClassInfo.onDeviceOutput, eventId, rType, toJbyteArray(env, data).get()); checkAndClearException(env, "onDeviceOutput"); } Loading Loading @@ -261,6 +262,7 @@ int Device::handleEvents(int events) { ALOGD("Received SET_REPORT: id=%" PRIu32 " rnum=%" PRIu8 " data=%s", set_report.id, set_report.rnum, toString(data).c_str()); } mDeviceCallback->onDeviceOutput(UHID_SET_REPORT, set_report.rtype, data); break; } case UHID_OUTPUT: { Loading @@ -269,7 +271,7 @@ int Device::handleEvents(int events) { if (DEBUG_OUTPUT) { ALOGD("UHID_OUTPUT rtype=%" PRIu8 " data=%s", output.rtype, toString(data).c_str()); } mDeviceCallback->onDeviceOutput(output.rtype, data); mDeviceCallback->onDeviceOutput(UHID_OUTPUT, output.rtype, data); break; } default: { Loading Loading @@ -365,7 +367,7 @@ int register_com_android_commands_hid_Device(JNIEnv* env) { uhid::gDeviceCallbackClassInfo.onDeviceGetReport = env->GetMethodID(clazz, "onDeviceGetReport", "(II)V"); uhid::gDeviceCallbackClassInfo.onDeviceOutput = env->GetMethodID(clazz, "onDeviceOutput", "(B[B)V"); env->GetMethodID(clazz, "onDeviceOutput", "(BB[B)V"); uhid::gDeviceCallbackClassInfo.onDeviceError = env->GetMethodID(clazz, "onDeviceError", "()V"); if (uhid::gDeviceCallbackClassInfo.onDeviceOpen == NULL || Loading cmds/hid/jni/com_android_commands_hid_Device.h +1 −1 Original line number Diff line number Diff line Loading @@ -31,7 +31,7 @@ public: void onDeviceOpen(); void onDeviceGetReport(uint32_t requestId, uint8_t reportId); void onDeviceOutput(uint8_t rType, const std::vector<uint8_t>& data); void onDeviceOutput(uint8_t eventId, uint8_t rType, const std::vector<uint8_t>& data); void onDeviceError(); private: Loading cmds/hid/src/com/android/commands/hid/Device.java +4 −3 Original line number Diff line number Diff line Loading @@ -46,7 +46,8 @@ public class Device { // Sync with linux uhid_event_type::UHID_OUTPUT private static final byte UHID_EVENT_TYPE_UHID_OUTPUT = 6; // Sync with linux uhid_event_type::UHID_SET_REPORT private static final byte UHID_EVENT_TYPE_SET_REPORT = 13; private final int mId; private final HandlerThread mThread; private final DeviceHandler mHandler; Loading Loading @@ -199,10 +200,10 @@ public class Device { } // native callback public void onDeviceOutput(byte rtype, byte[] data) { public void onDeviceOutput(byte eventId, byte rtype, byte[] data) { JSONObject json = new JSONObject(); try { json.put("eventId", UHID_EVENT_TYPE_UHID_OUTPUT); json.put("eventId", eventId); json.put("deviceId", mId); json.put("reportType", rtype); JSONArray dataArray = new JSONArray(); Loading core/api/current.txt +53 −0 Original line number Diff line number Diff line Loading @@ -18659,6 +18659,58 @@ package android.hardware.input { } package android.hardware.lights { public final class Light implements android.os.Parcelable { method public int describeContents(); method public int getId(); method @NonNull public String getName(); method public int getOrdinal(); method public int getType(); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.hardware.lights.Light> CREATOR; field public static final int LIGHT_TYPE_INPUT_PLAYER_ID = 10; // 0xa field public static final int LIGHT_TYPE_INPUT_RGB = 11; // 0xb field public static final int LIGHT_TYPE_INPUT_SINGLE = 9; // 0x9 field public static final int LIGHT_TYPE_MICROPHONE = 8; // 0x8 } public final class LightState implements android.os.Parcelable { method public int describeContents(); method @NonNull public static android.hardware.lights.LightState forColor(@ColorInt int); method @NonNull public static android.hardware.lights.LightState forPlayerId(int); method @ColorInt public int getColor(); method public int getPlayerId(); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.hardware.lights.LightState> CREATOR; } public abstract class LightsManager { method @NonNull public abstract android.hardware.lights.LightState getLightState(@NonNull android.hardware.lights.Light); method @NonNull public abstract java.util.List<android.hardware.lights.Light> getLights(); method @NonNull public abstract android.hardware.lights.LightsManager.LightsSession openSession(); } public abstract static class LightsManager.LightsSession implements java.lang.AutoCloseable { ctor public LightsManager.LightsSession(); method public abstract void close(); method public abstract void requestLights(@NonNull android.hardware.lights.LightsRequest); } public final class LightsRequest { method @NonNull public java.util.List<android.hardware.lights.LightState> getLightStates(); method @NonNull public java.util.List<java.lang.Integer> getLights(); } public static final class LightsRequest.Builder { ctor public LightsRequest.Builder(); method @NonNull public android.hardware.lights.LightsRequest.Builder addLight(@NonNull android.hardware.lights.Light, @NonNull android.hardware.lights.LightState); method @NonNull public android.hardware.lights.LightsRequest build(); method @NonNull public android.hardware.lights.LightsRequest.Builder clearLight(@NonNull android.hardware.lights.Light); } } package android.hardware.usb { public class UsbAccessory implements android.os.Parcelable { Loading Loading @@ -46898,6 +46950,7 @@ package android.view { method public int getId(); method public android.view.KeyCharacterMap getKeyCharacterMap(); method public int getKeyboardType(); method @NonNull public android.hardware.lights.LightsManager getLightsManager(); method public android.view.InputDevice.MotionRange getMotionRange(int); method public android.view.InputDevice.MotionRange getMotionRange(int, int); method public java.util.List<android.view.InputDevice.MotionRange> getMotionRanges(); core/api/system-current.txt +3 −33 Original line number Diff line number Diff line Loading @@ -3398,42 +3398,12 @@ package android.hardware.hdmi { package android.hardware.lights { public final class Light implements android.os.Parcelable { method public int describeContents(); method public int getId(); method public int getOrdinal(); method public int getType(); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.hardware.lights.Light> CREATOR; } public final class LightState implements android.os.Parcelable { ctor public LightState(@ColorInt int); method public int describeContents(); method @ColorInt public int getColor(); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.hardware.lights.LightState> CREATOR; } public final class LightsManager { method @NonNull @RequiresPermission(android.Manifest.permission.CONTROL_DEVICE_LIGHTS) public java.util.List<android.hardware.lights.Light> getLights(); method @NonNull @RequiresPermission(android.Manifest.permission.CONTROL_DEVICE_LIGHTS) public android.hardware.lights.LightsManager.LightsSession openSession(); field public static final int LIGHT_TYPE_MICROPHONE = 8; // 0x8 } public final class LightsManager.LightsSession implements java.lang.AutoCloseable { method @RequiresPermission(android.Manifest.permission.CONTROL_DEVICE_LIGHTS) public void close(); method @RequiresPermission(android.Manifest.permission.CONTROL_DEVICE_LIGHTS) public void requestLights(@NonNull android.hardware.lights.LightsRequest); } public final class LightsRequest { ctor @Deprecated public LightState(@ColorInt int); } public static final class LightsRequest.Builder { ctor public LightsRequest.Builder(); method @NonNull public android.hardware.lights.LightsRequest build(); method @NonNull public android.hardware.lights.LightsRequest.Builder clearLight(@NonNull android.hardware.lights.Light); method @NonNull public android.hardware.lights.LightsRequest.Builder setLight(@NonNull android.hardware.lights.Light, @NonNull android.hardware.lights.LightState); public abstract class LightsManager { field @Deprecated public static final int LIGHT_TYPE_MICROPHONE = 8; // 0x8 } } Loading Loading
cmds/hid/jni/com_android_commands_hid_Device.cpp +6 −4 Original line number Diff line number Diff line Loading @@ -113,9 +113,10 @@ void DeviceCallback::onDeviceGetReport(uint32_t requestId, uint8_t reportId) { checkAndClearException(env, "onDeviceGetReport"); } void DeviceCallback::onDeviceOutput(uint8_t rType, const std::vector<uint8_t>& data) { void DeviceCallback::onDeviceOutput(uint8_t eventId, uint8_t rType, const std::vector<uint8_t>& data) { JNIEnv* env = getJNIEnv(); env->CallVoidMethod(mCallbackObject, gDeviceCallbackClassInfo.onDeviceOutput, rType, env->CallVoidMethod(mCallbackObject, gDeviceCallbackClassInfo.onDeviceOutput, eventId, rType, toJbyteArray(env, data).get()); checkAndClearException(env, "onDeviceOutput"); } Loading Loading @@ -261,6 +262,7 @@ int Device::handleEvents(int events) { ALOGD("Received SET_REPORT: id=%" PRIu32 " rnum=%" PRIu8 " data=%s", set_report.id, set_report.rnum, toString(data).c_str()); } mDeviceCallback->onDeviceOutput(UHID_SET_REPORT, set_report.rtype, data); break; } case UHID_OUTPUT: { Loading @@ -269,7 +271,7 @@ int Device::handleEvents(int events) { if (DEBUG_OUTPUT) { ALOGD("UHID_OUTPUT rtype=%" PRIu8 " data=%s", output.rtype, toString(data).c_str()); } mDeviceCallback->onDeviceOutput(output.rtype, data); mDeviceCallback->onDeviceOutput(UHID_OUTPUT, output.rtype, data); break; } default: { Loading Loading @@ -365,7 +367,7 @@ int register_com_android_commands_hid_Device(JNIEnv* env) { uhid::gDeviceCallbackClassInfo.onDeviceGetReport = env->GetMethodID(clazz, "onDeviceGetReport", "(II)V"); uhid::gDeviceCallbackClassInfo.onDeviceOutput = env->GetMethodID(clazz, "onDeviceOutput", "(B[B)V"); env->GetMethodID(clazz, "onDeviceOutput", "(BB[B)V"); uhid::gDeviceCallbackClassInfo.onDeviceError = env->GetMethodID(clazz, "onDeviceError", "()V"); if (uhid::gDeviceCallbackClassInfo.onDeviceOpen == NULL || Loading
cmds/hid/jni/com_android_commands_hid_Device.h +1 −1 Original line number Diff line number Diff line Loading @@ -31,7 +31,7 @@ public: void onDeviceOpen(); void onDeviceGetReport(uint32_t requestId, uint8_t reportId); void onDeviceOutput(uint8_t rType, const std::vector<uint8_t>& data); void onDeviceOutput(uint8_t eventId, uint8_t rType, const std::vector<uint8_t>& data); void onDeviceError(); private: Loading
cmds/hid/src/com/android/commands/hid/Device.java +4 −3 Original line number Diff line number Diff line Loading @@ -46,7 +46,8 @@ public class Device { // Sync with linux uhid_event_type::UHID_OUTPUT private static final byte UHID_EVENT_TYPE_UHID_OUTPUT = 6; // Sync with linux uhid_event_type::UHID_SET_REPORT private static final byte UHID_EVENT_TYPE_SET_REPORT = 13; private final int mId; private final HandlerThread mThread; private final DeviceHandler mHandler; Loading Loading @@ -199,10 +200,10 @@ public class Device { } // native callback public void onDeviceOutput(byte rtype, byte[] data) { public void onDeviceOutput(byte eventId, byte rtype, byte[] data) { JSONObject json = new JSONObject(); try { json.put("eventId", UHID_EVENT_TYPE_UHID_OUTPUT); json.put("eventId", eventId); json.put("deviceId", mId); json.put("reportType", rtype); JSONArray dataArray = new JSONArray(); Loading
core/api/current.txt +53 −0 Original line number Diff line number Diff line Loading @@ -18659,6 +18659,58 @@ package android.hardware.input { } package android.hardware.lights { public final class Light implements android.os.Parcelable { method public int describeContents(); method public int getId(); method @NonNull public String getName(); method public int getOrdinal(); method public int getType(); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.hardware.lights.Light> CREATOR; field public static final int LIGHT_TYPE_INPUT_PLAYER_ID = 10; // 0xa field public static final int LIGHT_TYPE_INPUT_RGB = 11; // 0xb field public static final int LIGHT_TYPE_INPUT_SINGLE = 9; // 0x9 field public static final int LIGHT_TYPE_MICROPHONE = 8; // 0x8 } public final class LightState implements android.os.Parcelable { method public int describeContents(); method @NonNull public static android.hardware.lights.LightState forColor(@ColorInt int); method @NonNull public static android.hardware.lights.LightState forPlayerId(int); method @ColorInt public int getColor(); method public int getPlayerId(); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.hardware.lights.LightState> CREATOR; } public abstract class LightsManager { method @NonNull public abstract android.hardware.lights.LightState getLightState(@NonNull android.hardware.lights.Light); method @NonNull public abstract java.util.List<android.hardware.lights.Light> getLights(); method @NonNull public abstract android.hardware.lights.LightsManager.LightsSession openSession(); } public abstract static class LightsManager.LightsSession implements java.lang.AutoCloseable { ctor public LightsManager.LightsSession(); method public abstract void close(); method public abstract void requestLights(@NonNull android.hardware.lights.LightsRequest); } public final class LightsRequest { method @NonNull public java.util.List<android.hardware.lights.LightState> getLightStates(); method @NonNull public java.util.List<java.lang.Integer> getLights(); } public static final class LightsRequest.Builder { ctor public LightsRequest.Builder(); method @NonNull public android.hardware.lights.LightsRequest.Builder addLight(@NonNull android.hardware.lights.Light, @NonNull android.hardware.lights.LightState); method @NonNull public android.hardware.lights.LightsRequest build(); method @NonNull public android.hardware.lights.LightsRequest.Builder clearLight(@NonNull android.hardware.lights.Light); } } package android.hardware.usb { public class UsbAccessory implements android.os.Parcelable { Loading Loading @@ -46898,6 +46950,7 @@ package android.view { method public int getId(); method public android.view.KeyCharacterMap getKeyCharacterMap(); method public int getKeyboardType(); method @NonNull public android.hardware.lights.LightsManager getLightsManager(); method public android.view.InputDevice.MotionRange getMotionRange(int); method public android.view.InputDevice.MotionRange getMotionRange(int, int); method public java.util.List<android.view.InputDevice.MotionRange> getMotionRanges();
core/api/system-current.txt +3 −33 Original line number Diff line number Diff line Loading @@ -3398,42 +3398,12 @@ package android.hardware.hdmi { package android.hardware.lights { public final class Light implements android.os.Parcelable { method public int describeContents(); method public int getId(); method public int getOrdinal(); method public int getType(); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.hardware.lights.Light> CREATOR; } public final class LightState implements android.os.Parcelable { ctor public LightState(@ColorInt int); method public int describeContents(); method @ColorInt public int getColor(); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.hardware.lights.LightState> CREATOR; } public final class LightsManager { method @NonNull @RequiresPermission(android.Manifest.permission.CONTROL_DEVICE_LIGHTS) public java.util.List<android.hardware.lights.Light> getLights(); method @NonNull @RequiresPermission(android.Manifest.permission.CONTROL_DEVICE_LIGHTS) public android.hardware.lights.LightsManager.LightsSession openSession(); field public static final int LIGHT_TYPE_MICROPHONE = 8; // 0x8 } public final class LightsManager.LightsSession implements java.lang.AutoCloseable { method @RequiresPermission(android.Manifest.permission.CONTROL_DEVICE_LIGHTS) public void close(); method @RequiresPermission(android.Manifest.permission.CONTROL_DEVICE_LIGHTS) public void requestLights(@NonNull android.hardware.lights.LightsRequest); } public final class LightsRequest { ctor @Deprecated public LightState(@ColorInt int); } public static final class LightsRequest.Builder { ctor public LightsRequest.Builder(); method @NonNull public android.hardware.lights.LightsRequest build(); method @NonNull public android.hardware.lights.LightsRequest.Builder clearLight(@NonNull android.hardware.lights.Light); method @NonNull public android.hardware.lights.LightsRequest.Builder setLight(@NonNull android.hardware.lights.Light, @NonNull android.hardware.lights.LightState); public abstract class LightsManager { field @Deprecated public static final int LIGHT_TYPE_MICROPHONE = 8; // 0x8 } } Loading