1 #ifndef ANDROID_HARDWARE_USB_V1_1_USB_H
2 #define ANDROID_HARDWARE_USB_V1_1_USB_H
4 #include <android/hardware/usb/1.1/IUsb.h>
5 #include <android/hardware/usb/1.1/types.h>
6 #include <android/hardware/usb/1.1/IUsbCallback.h>
7 #include <hidl/Status.h>
10 #define UEVENT_MSG_LEN 2048
11 // The type-c stack waits for 4.5 - 5.5 secs before declaring a port non-pd.
12 // The -partner directory would not be created until this is done.
13 // Having a margin of ~3 secs for the directory and other related bookeeping
14 // structures created and uvent fired.
15 #define PORT_TYPE_TIMEOUT 8
21 namespace implementation
{
23 using ::android::hardware::usb::V1_0::PortRole
;
24 using ::android::hardware::usb::V1_0::PortRoleType
;
25 using ::android::hardware::usb::V1_0::PortDataRole
;
26 using ::android::hardware::usb::V1_0::PortPowerRole
;
27 using ::android::hardware::usb::V1_0::Status
;
28 using ::android::hardware::usb::V1_0::IUsb
;
29 using ::android::hardware::usb::V1_1::IUsbCallback
;
30 using ::android::hardware::usb::V1_1::PortMode_1_1
;
31 using ::android::hardware::usb::V1_1::PortStatus_1_1
;
32 using ::android::hidl::base::V1_0::DebugInfo
;
33 using ::android::hidl::base::V1_0::IBase
;
34 using ::android::hardware::hidl_array
;
35 using ::android::hardware::hidl_memory
;
36 using ::android::hardware::hidl_string
;
37 using ::android::hardware::hidl_vec
;
38 using ::android::hardware::Return
;
39 using ::android::hardware::Void
;
42 struct Usb
: public IUsb
{
43 Return
<void> switchRole(const hidl_string
& portName
, const PortRole
& role
) override
;
44 Return
<void> setCallback(const sp
<V1_0::IUsbCallback
>& callback
) override
;
45 Return
<void> queryPortStatus() override
;
48 sp
<V1_0::IUsbCallback
> mCallback_1_0
;
49 // Protects mCallback variable
50 pthread_mutex_t mLock
= PTHREAD_MUTEX_INITIALIZER
;
51 // Protects roleSwitch operation
52 pthread_mutex_t mRoleSwitchLock
= PTHREAD_MUTEX_INITIALIZER
;
53 // Threads waiting for the partner to come back wait here
54 pthread_cond_t mPartnerCV
= PTHREAD_COND_INITIALIZER
;
55 // lock protecting mPartnerCV
56 pthread_mutex_t mPartnerLock
= PTHREAD_MUTEX_INITIALIZER
;
57 // Variable to signal partner coming back online after type switch
64 } // namespace implementation
67 } // namespace hardware
68 } // namespace android
70 #endif // ANDROID_HARDWARE_USB_V1_1_USB_H