Commit c35c0fe3 authored by Matej Frančeškin's avatar Matej Frančeškin Committed by Lorenz Meier

Fix: Taisync didn't reconnect if the USB is not unplugged and plugged again

parent b363fbe3
...@@ -76,6 +76,7 @@ public class QGCActivity extends QtActivity ...@@ -76,6 +76,7 @@ public class QGCActivity extends QtActivity
private static final String ACTION_USB_PERMISSION = "org.mavlink.qgroundcontrol.action.USB_PERMISSION"; private static final String ACTION_USB_PERMISSION = "org.mavlink.qgroundcontrol.action.USB_PERMISSION";
private static PendingIntent _usbPermissionIntent = null; private static PendingIntent _usbPermissionIntent = null;
private TaiSync taiSync = null; private TaiSync taiSync = null;
private Timer probeAccessoriesTimer = null;
public static Context m_context; public static Context m_context;
...@@ -225,7 +226,15 @@ public class QGCActivity extends QtActivity ...@@ -225,7 +226,15 @@ public class QGCActivity extends QtActivity
IntentFilter accessoryFilter = new IntentFilter(ACTION_USB_PERMISSION); IntentFilter accessoryFilter = new IntentFilter(ACTION_USB_PERMISSION);
filter.addAction(UsbManager.ACTION_USB_ACCESSORY_DETACHED); filter.addAction(UsbManager.ACTION_USB_ACCESSORY_DETACHED);
registerReceiver(mOpenAccessoryReceiver, accessoryFilter); registerReceiver(mOpenAccessoryReceiver, accessoryFilter);
probeAccessories();
probeAccessoriesTimer = new Timer();
probeAccessoriesTimer.schedule(new TimerTask() {
@Override
public void run()
{
probeAccessories();
}
}, 0, 3000);
} catch(Exception e) { } catch(Exception e) {
Log.e(TAG, "Exception: " + e); Log.e(TAG, "Exception: " + e);
} }
...@@ -243,6 +252,9 @@ public class QGCActivity extends QtActivity ...@@ -243,6 +252,9 @@ public class QGCActivity extends QtActivity
@Override @Override
protected void onDestroy() protected void onDestroy()
{ {
if (probeAccessoriesTimer != null) {
probeAccessoriesTimer.cancel();
}
unregisterReceiver(mOpenAccessoryReceiver); unregisterReceiver(mOpenAccessoryReceiver);
try { try {
if(_wakeLock != null) { if(_wakeLock != null) {
...@@ -706,22 +718,26 @@ public class QGCActivity extends QtActivity ...@@ -706,22 +718,26 @@ public class QGCActivity extends QtActivity
} }
} }
Object probeAccessoriesLock = new Object();
private void probeAccessories() private void probeAccessories()
{ {
final PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, new Intent(ACTION_USB_PERMISSION), 0); final PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, new Intent(ACTION_USB_PERMISSION), 0);
new Thread(new Runnable() { new Thread(new Runnable() {
public void run() { public void run() {
Log.i(TAG, "probeAccessories"); synchronized(openAccessoryLock) {
UsbAccessory[] accessories = _usbManager.getAccessoryList(); Log.i(TAG, "probeAccessories");
if (accessories != null) { UsbAccessory[] accessories = _usbManager.getAccessoryList();
for (UsbAccessory usbAccessory : accessories) { if (accessories != null) {
if (_usbManager.hasPermission(usbAccessory)) { for (UsbAccessory usbAccessory : accessories) {
openAccessory(usbAccessory); if (_usbManager.hasPermission(usbAccessory)) {
} else { openAccessory(usbAccessory);
Log.i(TAG, "requestPermission"); } else {
_usbManager.requestPermission(usbAccessory, pendingIntent); Log.i(TAG, "requestPermission");
_usbManager.requestPermission(usbAccessory, pendingIntent);
}
} }
} }
} }
} }
}).start(); }).start();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment