altosdroid: Catch log file open failures and show an error dialog
[fw/altos] / altosdroid / app / src / main / java / org / altusmetrum / AltosDroid / TelemetryService.java
index 2c2095df68186847225e4480993754123be524a2..b0b82ab9c9673643f8fead134a8a9e9445a8a1d8 100644 (file)
@@ -20,6 +20,7 @@ package org.altusmetrum.AltosDroid;
 
 import java.lang.ref.WeakReference;
 import java.util.concurrent.TimeoutException;
+import java.io.*;
 import java.util.*;
 
 import android.app.*;
@@ -340,6 +341,21 @@ public class TelemetryService extends Service implements AltosIdleMonitorListene
                        send_idle_mode_to_client(client);
        }
 
+       private void send_file_failed_to_client(Messenger client, File f) {
+               Message m = Message.obtain(null, AltosDroid.MSG_FILE_FAILED, f);
+               try {
+                       client.send(m);
+               } catch (RemoteException e) {
+                       AltosDebug.error("Client %s disappeared", client.toString());
+                       remove_client(client);
+               }
+       }
+
+       public void send_file_failed_to_clients(File f) {
+               for (Messenger client : clients)
+                       send_file_failed_to_client(client, f);
+       }
+
        private void telemetry_start() {
                if (telemetry_reader == null && idle_monitor == null && !ignite_running) {
                        telemetry_reader = new TelemetryReader(altos_link, handler);