diff --git a/usb/gadget/1.0/Android.bp b/usb/gadget/1.0/Android.bp new file mode 100644 index 0000000000..f38002fd00 --- /dev/null +++ b/usb/gadget/1.0/Android.bp @@ -0,0 +1,23 @@ +// This file is autogenerated by hidl-gen -Landroidbp. + +hidl_interface { + name: "android.hardware.usb.gadget@1.0", + root: "android.hardware", + vndk: { + enabled: true, + }, + srcs: [ + "types.hal", + "IUsbGadget.hal", + "IUsbGadgetCallback.hal", + ], + interfaces: [ + "android.hidl.base@1.0", + ], + types: [ + "GadgetFunction", + "Status", + ], + gen_java: true, +} + diff --git a/usb/gadget/1.0/IUsbGadget.hal b/usb/gadget/1.0/IUsbGadget.hal new file mode 100644 index 0000000000..41be401953 --- /dev/null +++ b/usb/gadget/1.0/IUsbGadget.hal @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2017 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.usb.gadget@1.0; + +import IUsbGadgetCallback; + +interface IUsbGadget { + /** + * This function is used to set the current USB gadget configuration. + * Usb gadget needs to teared down if an USB configuration is already + * active. + * + * @param functions list of functions defined by GadgetFunction to be + * included in the gadget composition. + * @param callback IUsbGadgetCallback::setCurrentUsbFunctionsCb used to + * propagate back the status. + * @param timeout The maximum time (in milliseconds) within which the + * IUsbGadgetCallback needs to be returned. + */ + oneway setCurrentUsbFunctions(bitfield functions, + IUsbGadgetCallback callback, + uint64_t timeout); + + /** + * This function is used to query the USB functions included in the + * current USB configuration. + * + * @param callback IUsbGadgetCallback::getCurrentUsbFunctionsCb used to + * propagate the current functions list. + */ + oneway getCurrentUsbFunctions(IUsbGadgetCallback callback); + +}; diff --git a/usb/gadget/1.0/IUsbGadgetCallback.hal b/usb/gadget/1.0/IUsbGadgetCallback.hal new file mode 100644 index 0000000000..8876abb416 --- /dev/null +++ b/usb/gadget/1.0/IUsbGadgetCallback.hal @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2017 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.usb.gadget@1.0; + +interface IUsbGadgetCallback { + /** + * Callback function used to propagate the status of configuration + * switch to the caller. + * + * @param functions list of functions defined by GadgetFunction + * included in the current USB gadget composition. + * @param status SUCCESS when the functions are applied. + * FUNCTIONS_NOT_SUPPORTED when the configuration is + * not supported. + * ERROR otherwise. + */ + oneway setCurrentUsbFunctionsCb(bitfield functions, + Status status); + + /** + * Callback function used to propagate the current USB gadget + * configuration. + * @param functions list of functions defined by GadgetFunction + * included in the current USB gadget composition. + * @param status FUNCTIONS_APPLIED when list of functions have been + * applied. + * FUNCTIONS_NOT_APPLIED when the functions have not + * been applied. + * ERROR otherwise. + */ + oneway getCurrentUsbFunctionsCb(bitfield functions, + Status status); +}; diff --git a/usb/gadget/1.0/types.hal b/usb/gadget/1.0/types.hal new file mode 100644 index 0000000000..3793fe2824 --- /dev/null +++ b/usb/gadget/1.0/types.hal @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2017 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.usb.gadget@1.0; + +enum GadgetFunction : uint64_t { + /** + * Removes all the functions and pulls down the gadget. + */ + NONE = 0, + + /** + * Android Debug Bridge function. + */ + ADB = 1 << 0, + + /** + * Android open accessory protocol function. + */ + ACCESSORY = 1 << 1, + + /** + * Media Transfer protocol function. + */ + MTP = 1 << 2, + + /** + * Peripheral mode USB Midi function. + */ + MIDI = 1 << 3, + + /** + * Picture transfer protocol function. + */ + PTP = 1 << 4, + + /** + * Tethering function. + */ + RNDIS = 1 << 5, + + /** + * AOAv2.0 - Audio Source function. + */ + AUDIO_SOURCE = 1 << 6, +}; + +enum Status : uint32_t { + SUCCESS = 0, + + /** + * Error value when the HAL operation fails for reasons not listed here. + */ + ERROR = 1, + + /** + * USB configuration applied successfully. + */ + FUNCTIONS_APPLIED = 2, + + /** + * USB confgiuration failed to apply. + */ + FUNCTIONS_NOT_APPLIED = 3, + + /** + * USB configuration not supported. + */ + CONFIGURATION_NOT_SUPPORTED = 4, +};