diff --git a/androidgcs/AndroidManifest.xml b/androidgcs/AndroidManifest.xml
index 8fa646a95..d6d85d5e7 100644
--- a/androidgcs/AndroidManifest.xml
+++ b/androidgcs/AndroidManifest.xml
@@ -8,7 +8,8 @@
-
+
+
diff --git a/androidgcs/src/org/openpilot/androidgcs/Logger.java b/androidgcs/src/org/openpilot/androidgcs/Logger.java
index 43c9a9de7..9f9a17dd0 100644
--- a/androidgcs/src/org/openpilot/androidgcs/Logger.java
+++ b/androidgcs/src/org/openpilot/androidgcs/Logger.java
@@ -1,10 +1,16 @@
package org.openpilot.androidgcs;
-import java.util.List;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
import org.openpilot.uavtalk.UAVObject;
import android.os.Bundle;
+import android.os.Environment;
import android.util.Log;
@@ -12,6 +18,13 @@ public class Logger extends ObjectManagerActivity {
final String TAG = "Logger";
+ final boolean VERBOSE = false;
+ final boolean DEBUG = true;
+
+ private File file;
+ private boolean logging;
+ private BufferedWriter out;
+
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -19,19 +32,81 @@ public class Logger extends ObjectManagerActivity {
setContentView(R.layout.logger);
}
+ private void onStartLogging() {
+
+ File root = Environment.getExternalStorageDirectory();
+
+ Date d = new Date();
+ String date = (new SimpleDateFormat("yyyyMMdd_hhmmss")).format(d);
+ String fileName = "/logs/logs_" + date + ".uav";
+
+ file = new File(root, fileName);
+ if (DEBUG) Log.d(TAG, "Trying for file: " + file.getAbsolutePath());
+ try {
+ if (root.canWrite()){
+ FileWriter filewriter = new FileWriter(file);
+ out = new BufferedWriter(filewriter);
+ logging = true;
+ } else {
+ Log.e(TAG, "Unwriteable address");
+ }
+ } catch (IOException e) {
+ Log.e(TAG, "Could not write file " + e.getMessage());
+ }
+
+ // TODO: if logging succeeded then retrieve all settings
+ }
+
+ private void onStopLogging() {
+ if (DEBUG) Log.d(TAG, "Stop logging");
+ logging = false;
+ try {
+ out.close();
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
@Override
void onOPConnected() {
- Log.d(TAG, "onOPConnected()");
-
- List> allObjects = objMngr.getObjects();
- registerObjectUpdates(allObjects);
- }
-
+ if (DEBUG) Log.d(TAG, "onOPConnected()");
+ onStartLogging();
+ registerObjectUpdates(objMngr.getObjects());
+ }
+
+ @Override
+ void onOPDisconnected() {
+ if (DEBUG) Log.d(TAG, "onOPDisconnected()");
+ onStopLogging();
+ }
+
+ @Override
+ public void onPause()
+ {
+ super.onPause();
+ onStopLogging();
+ }
+
+ @Override
+ public void onResume()
+ {
+ super.onResume();
+ onStartLogging();
+ }
/**
* Called whenever any objects subscribed to via registerObjects
*/
@Override
protected void objectUpdated(UAVObject obj) {
- Log.d(TAG,"Updated: " + obj.toString());
+ if (logging) {
+ if (VERBOSE) Log.v(TAG,"Updated: " + obj.toString());
+ try {
+ out.write(obj + "\n");
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
}
}
diff --git a/androidgcs/src/org/openpilot/androidgcs/ObjectManagerActivity.java b/androidgcs/src/org/openpilot/androidgcs/ObjectManagerActivity.java
index ee24012d2..bfa76569f 100644
--- a/androidgcs/src/org/openpilot/androidgcs/ObjectManagerActivity.java
+++ b/androidgcs/src/org/openpilot/androidgcs/ObjectManagerActivity.java
@@ -165,12 +165,16 @@ public abstract class ObjectManagerActivity extends Activity {
bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
}
+ /**
+ * When stopping disconnect form the service and the broadcast receiver
+ */
@Override
public void onStop() {
super.onStop();
unbindService(mConnection);
unregisterReceiver(connectedReceiver);
}
+
public void onBind() {
}