@@ -57,40 +57,41 @@ ScopedAStatus Usb::enableUsbData(const string& in_portName, bool in_enable,
57
57
int64_t in_transactionId) {
58
58
bool result = true ;
59
59
std::vector<PortStatus> currentPortStatus;
60
+ string pullup;
60
61
61
62
ALOGI (" Userspace turn %s USB data signaling. opID:%ld" , in_enable ? " on" : " off" ,
62
63
in_transactionId);
63
64
64
65
if (in_enable) {
65
- if (!WriteStringToFile (" 1" , USB_DATA_PATH)) {
66
- ALOGE (" Not able to turn on usb connection notification" );
67
- result = false ;
66
+ if (ReadFileToString (PULLUP_PATH, &pullup)) {
67
+ pullup = Trim (pullup);
68
+ if (pullup != kGadgetName ) {
69
+ if (!WriteStringToFile (kGadgetName , PULLUP_PATH)) {
70
+ ALOGE (" Gadget cannot be pulled up" );
71
+ result = false ;
72
+ }
73
+ }
68
74
}
69
75
70
- if (!WriteStringToFile (kGadgetName , PULLUP_PATH )) {
71
- ALOGE (" Gadget cannot be pulled up " );
76
+ if (!WriteStringToFile (" 1 " , USB_DATA_PATH )) {
77
+ ALOGE (" Not able to turn on usb connection notification " );
72
78
result = false ;
73
79
}
74
80
} else {
75
- if (! WriteStringToFile ( " 1 " , ID_PATH )) {
76
- ALOGE ( " Not able to turn off host mode " );
77
- result = false ;
78
- }
79
-
80
- if (! WriteStringToFile ( " 0 " , VBUS_PATH)) {
81
- ALOGE ( " Not able to set Vbus state " );
82
- result = false ;
81
+ if (ReadFileToString (PULLUP_PATH, &pullup )) {
82
+ pullup = Trim (pullup );
83
+ if (pullup == kGadgetName ) {
84
+ if (! WriteStringToFile ( " none " , PULLUP_PATH)) {
85
+ ALOGE ( " Gadget cannot be pulled down " );
86
+ result = false ;
87
+ }
88
+ }
83
89
}
84
90
85
91
if (!WriteStringToFile (" 0" , USB_DATA_PATH)) {
86
92
ALOGE (" Not able to turn on usb connection notification" );
87
93
result = false ;
88
94
}
89
-
90
- if (!WriteStringToFile (" none" , PULLUP_PATH)) {
91
- ALOGE (" Gadget cannot be pulled down" );
92
- result = false ;
93
- }
94
95
}
95
96
96
97
if (result) {
@@ -322,7 +323,8 @@ Usb::Usb()
322
323
: mLock (PTHREAD_MUTEX_INITIALIZER),
323
324
mRoleSwitchLock (PTHREAD_MUTEX_INITIALIZER),
324
325
mPartnerLock(PTHREAD_MUTEX_INITIALIZER),
325
- mPartnerUp(false ) {
326
+ mPartnerUp(false ),
327
+ mUsbDataEnabled(true ) {
326
328
pthread_condattr_t attr;
327
329
if (pthread_condattr_init (&attr)) {
328
330
ALOGE (" pthread_condattr_init failed: %s" , strerror (errno));
0 commit comments