Files
device_google_wahoo/usb/Usb.h
Badhri Jagan Sridharan 07caa115dc USB HAL: Use 1.1 IUsb intead of 1.0 IUsb
Use 1.1 IUsb in order to make register the service as 1.1 compatible.
This enables lshal to recognize the hal service as 1.1 implementation.

Bug: 62917546
Test: Manually verified lshal output
android.hardware.usb@1.0::IUsb/default   0/1             782     6024 568
android.hardware.usb@1.1::IUsb/default   0/1             782     6024 568

Change-Id: I9b0817841dbcc345a1d854ee4a5193797181ea3f
2017-06-27 17:03:49 -07:00

71 lines
2.4 KiB
C++

#ifndef ANDROID_HARDWARE_USB_V1_1_USB_H
#define ANDROID_HARDWARE_USB_V1_1_USB_H
#include <android/hardware/usb/1.1/IUsb.h>
#include <android/hardware/usb/1.1/types.h>
#include <android/hardware/usb/1.1/IUsbCallback.h>
#include <hidl/Status.h>
#include <utils/Log.h>
#define UEVENT_MSG_LEN 2048
// The type-c stack waits for 4.5 - 5.5 secs before declaring a port non-pd.
// The -partner directory would not be created until this is done.
// Having a margin of ~3 secs for the directory and other related bookeeping
// structures created and uvent fired.
#define PORT_TYPE_TIMEOUT 8
namespace android {
namespace hardware {
namespace usb {
namespace V1_1 {
namespace implementation {
using ::android::hardware::usb::V1_0::PortRole;
using ::android::hardware::usb::V1_0::PortRoleType;
using ::android::hardware::usb::V1_0::PortDataRole;
using ::android::hardware::usb::V1_0::PortPowerRole;
using ::android::hardware::usb::V1_0::Status;
using ::android::hardware::usb::V1_1::IUsb;
using ::android::hardware::usb::V1_1::IUsbCallback;
using ::android::hardware::usb::V1_1::PortMode_1_1;
using ::android::hardware::usb::V1_1::PortStatus_1_1;
using ::android::hidl::base::V1_0::DebugInfo;
using ::android::hidl::base::V1_0::IBase;
using ::android::hardware::hidl_array;
using ::android::hardware::hidl_memory;
using ::android::hardware::hidl_string;
using ::android::hardware::hidl_vec;
using ::android::hardware::Return;
using ::android::hardware::Void;
using ::android::sp;
struct Usb : public IUsb {
Return<void> switchRole(const hidl_string& portName, const PortRole& role) override;
Return<void> setCallback(const sp<V1_0::IUsbCallback>& callback) override;
Return<void> queryPortStatus() override;
sp<V1_0::IUsbCallback> mCallback_1_0;
// Protects mCallback variable
pthread_mutex_t mLock = PTHREAD_MUTEX_INITIALIZER;
// Protects roleSwitch operation
pthread_mutex_t mRoleSwitchLock = PTHREAD_MUTEX_INITIALIZER;
// Threads waiting for the partner to come back wait here
pthread_cond_t mPartnerCV = PTHREAD_COND_INITIALIZER;
// lock protecting mPartnerCV
pthread_mutex_t mPartnerLock = PTHREAD_MUTEX_INITIALIZER;
// Variable to signal partner coming back online after type switch
bool mPartnerUp;
private:
pthread_t mPoll;
};
} // namespace implementation
} // namespace V1_0
} // namespace usb
} // namespace hardware
} // namespace android
#endif // ANDROID_HARDWARE_USB_V1_1_USB_H